Jogo da Velha Player VS CPU em C
#include
#define LINHAS 3
#define COLUNAS 3
#define CASAS 9
void init_tabuleiro(void); void mostra_tabuleiro(void); void jogada_player(void); void jogada_cpu(void); int update_tabuleiro(int x, int y); // retorna 0 se a operação for bem sucedida int testa_vencedor(void); // 2 - vitória cpu, 1 - vitória player, 0 - nada aconteceu int velha(void); // conta o número de casas vazias no tabuleiro
enum vez { PLAYER, CPU } jogador;
int tabuleiro[LINHAS][COLUNAS];
void main() { int escolha, status; jogador = PLAYER; // seta o primeiro jogador para player init_tabuleiro(); // inicia o tabuleiro com 0s
while(1) { if (jogador == PLAYER) { if (!velha()) break; mostra_tabuleiro(); jogada_player(); status = testa_vencedor(); if (status) break; } if (jogador == CPU) { if (!velha()) break; jogada_cpu(); status = testa_vencedor(); if (status) break; } }
mostra_tabuleiro();
if (status == 1) printf("\nParabéns, você venceu!\n"); else if (status == 2) printf("\nVocê perdeu!"); // \n"); else printf("\nDeu velha!\n");
while(1) { printf("\nJogar novamente? (1 = sim / 2 = não) : "); scanf("%d", &escolha); if (escolha == 1) main(); else if (escolha == 2) exit(0); else printf("\nEscolha invalida!"); }
}
void init_tabuleiro() { register int i; int *p; p = (int *) tabuleiro;
for (i = 0; i < CASAS; i++ ) *(p+i) = 0;
}
int velha() { register int i; int *p, zeros = 0; p = (int *) tabuleiro;
for (i = 0; i < CASAS; i++ ) if (*(p+i) == 0) zeros++;
if (!zeros) return 0; else return 1;
}
void mostra_tabuleiro() { register int i, j; printf("\n");
for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) {