#include char char_at(int k); void mostra_tabuleiro(int t[4][4]); int valido(int t[4][4], int l, int c); int terminou(int t[4][4], int c); // variavel global onde vai ser armazenado tabuleiro int tab[4][4]; int main() { int cont, l, c; cont = 1; while (! terminou(tab, cont) ) { mostra_tabuleiro(tab); printf("Entre com seu lance (linha coluna) "); scanf("%d", &l); scanf("%d", &c); if ( valido(tab, l, c)) { tab[l][c] = cont % 2 + 1; cont++; } else printf("Movimento invalido\n"); } printf("Jogo terminou!!!\n"); mostra_tabuleiro(tab); } void mostra_tabuleiro(int t[4][4]) { int j; printf("\n\n %c | %c | %c\n", char_at(t[1][1]), char_at(t[1][2]), char_at(t[1][3])); printf("-----------\n"); printf(" %c | %c | %c\n", char_at(t[2][1]), char_at(t[2][2]), char_at(t[2][3])); printf("-----------\n"); printf(" %c | %c | %c\n", char_at(t[3][1]), char_at(t[3][2]), char_at(t[3][3])); } char char_at(int k) { if (k == 1) return 'O'; if (k == 2) return 'X'; return ' '; } int valido(int t[4][4], int l, int c) { if ( l < 1 || l > 3 || c < 1 || c > 3) return 0; if (t[l][c] != 0) return 0; return 1; } int terminou(int t[4][4], int c) { if (c > 9) return 1; if (t[1][1] == t[1][2] && t[1][2] == t[1][3] && t[1][3] != 0 ) return 1; if (t[2][1] == t[2][2] && t[2][2] == t[2][3] && t[2][3] != 0 ) return 1; if (t[3][1] == t[3][2] && t[3][2] == t[3][3] && t[3][3] != 0 ) return 1; if (t[1][1] == t[2][1] && t[2][1] == t[3][1] && t[3][1] != 0 ) return 1; if (t[1][2] == t[2][2] && t[2][2] == t[3][2] && t[3][2] != 0 ) return 1; if (t[1][3] == t[2][3] && t[2][3] == t[3][3] && t[3][3] != 0 ) return 1; if (t[1][1] == t[2][2] && t[2][2] == t[3][3] && t[3][3] != 0 ) return 1; if (t[1][3] == t[2][2] && t[2][2] == t[3][1] && t[3][1] != 0 ) return 1; return 0; }