Trago-lhes um simples jogo da velha feito em C.
O jogo consiste em você jogar contra o computador. Na função main há um loop que, analogamente, é o "coração" do jogo.
A função init_matriz inicializa a matriz 3x3 com espaços, para que assim fique melhor sua exibição. A função disp_matriz mostra o "tabuleiro" formatado na tela do console. A função move_jogador e move_cpu são, respectivamente, para a sua jogada e a jogada do computador. A função check_vencedor verifica se alguém ganhou o jogo, pela linha, coluna ou diagonal.
Como o programa foi desenvolvido apenas de forma didática, o computador não possui nenhuma "inteligência", sendo assim, na sua vez ele simplesmente procura um espaço em branco e joga nele. Para implementar algum tipo de IA, é necessário apenas modificar a função move_cpu.
12/10/11:
Você pode ver o código do jogo completo no meu repositório no GitHub:
Jogo da Velha
22/10/11:
Código no repositório adaptado para rodar tanto em Windows quanto em Linux.
-----
#include <stdio.h>
char matriz[3][3];
void init_matriz(){
int i, j;
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++) matriz[i][j] = ' ';
}
void disp_matriz(){
int i, j;
printf(" --- --- --- \n");
for(i = 0; i < 3; i++){
printf("|");
for(j = 0; j < 3; j++) printf(" %c |", matriz[i][j]);
printf("\n|---|---|---|\n");
}
}
void move_jogador(){
int x, y;
printf("\n\nDigite em qual pos(x, y) deseja jogar: ");
scanf("%d%d", &x, &y);
x--;
y--;
if(matriz[x][y] != ' '){
printf("Posicao invalida ou ja jogada, tente novamente...\n\n");
move_jogador();
}
else matriz[x][y] = 'X';
}
void move_cpu(){
int i, j;
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++)
if(matriz[i][j] == ' ') break;
if(matriz[i][j] == ' ') break;
}
if(i*j == 9){
printf("\nEMPATE");
getchar();
exit(0);
}
else matriz[i][j] = 'O';
}
char check_vencedor(){
int i;
for(i = 0; i < 3; i++)
if( (matriz[i][0] == matriz[i][1]) && (matriz[i][0] == matriz[i][2]) )
return matriz[i][0];
for(i = 0; i < 3; i++)
if( (matriz[0][i] == matriz[1][i]) && (matriz[0][i] == matriz[2][i]) )
return matriz[0][i];
if( (matriz[0][0] == matriz[2][2]) && (matriz[1][1] == matriz[2][2]) )
return matriz[1][1];
if( (matriz[1][1] == matriz[0][2]) && (matriz[1][1] == matriz[2][0]) )
return matriz[1][1];
return ' ';
}
int main(){
char terminado = ' ';
printf("\t\tJogo da Velha :)\n");
printf("Modo: vs cpu\n\n");
init_matriz();
do{
disp_matriz();
move_jogador();
terminado = check_vencedor();
if(terminado != ' ') break;
move_cpu();
terminado = check_vencedor();
}while( terminado == ' ');
if(terminado == 'X') printf("\n\nParabens, voce venceu!\n");
else printf("\n\nQue pena, voce perdeu!\n");
disp_matriz();
fflush(stdin);
getchar();
return 0;
}
-----
Divirtam-se, façam modificações e code it! :)