sexta-feira, 24 de outubro de 2008

Jogo da "#" Velha em C

Quem nunca jogou o jogo da Velha???
O jogo da Velha é um jogo simples muito conhecido no mundo inteiro, sua origem é egípcia, esse jogo tem seu nome originado na Inglaterra, as mulheres naquela época bordavam todas as tardes, as mulheres mais velhas por sua vez, por não terem condições de bordar jogavam esse jogo que ficou popularmente conhecido como jogo da velha.
Nosso objetivo é mostrar um simples código feito artesanalmente em linguagem C, simulando esse joga interativo.
Segue abaixo o simples código.

#include
#include
#include
int lin,col,jogador,vitoria,resultado; /*declara variaveis */


main(){
int mat[3][3]={{0,0,0},{0,0,0},{0,0,0}}; /* declara uma matriz e prenche ela com 0*/
int fim=1;
jogador=1;
int empate=0;
do{ /* do while faz pelo menos uma vez depois testa condição*/
mostra(mat); /* chama função mostra*/
if((jogada_correta())&&(posicao_vazia(mat))){ /* chama 2 funções jogada_correta e posição vazia e compara se for j &j */
mat[lin-1][col-1]=jogador; /* pega as variaveis lin e col e decrementa 1 e iguala a jogador*/
troca(); /* chama a função troca*/
printf("\n jogou correto");
empate=empate+1;
}else{
printf("\n jogou errado");
};
if((soma(mat))==1){
printf(" \n parabens vc ganhou \n");
resultado=1;
break;
}
if(empate==9){
printf("\n empatou \n");
break;
}
getch();
}while (fim);
if(resultado==1){
troca();
printf("\n jogador %d ganhou \n",jogador);
}
else{
printf("\n jogo sem vencedores \n");
}
getch();
};

mostra (int m[3][3]){ /* função mostra*/
system("cls"); /* limpa tela*/
printf("\n JOGO DA VELHA"); /* imprime jogo da velha*/
printf("\n");
printf("\n 1 2 3");
printf("\n ");
printf("\n 1 %d | %d | %d ",m[0][0],m[0][1],m[0][2]); /* imprime conteudo dos endereços da matriz*/
printf("\n -----+-----+-----");
printf("\n 2 %d | %d | %d ",m[1][0],m[1][1],m[1][2]);
printf("\n -----+-----+-----");
printf("\n 3 %d | %d | %d ",m[2][0],m[2][1],m[2][2]);
printf("\n ");
printf("\n\n");
printf("\nJogador %d\n",jogador); /* imprime jogador*/
printf("\nDigite a linha[1-3]: ");scanf("%d",&lin); /* pede um numero e atribui a lin*/
printf("\nDigite a coluna[1-3]: ");scanf("%d",&col); /* pede um numero e atribui a col*/
};

int jogada_correta(){ /* função jogada correta*/
int j=0; /* atribui j a 0*/
if((lin>=1)&&(lin<=3)) /*testa se linha é maior igual a 1 e se é menor igual a 3*/
if(( col>=1)&&(col<=3)) /*testa se coluna é maior igual a 1 e se é menor igual a 3*/
j=1; /* condição for certa atribui j a 1*/
return j; /*e retorna j*/

};
int posicao_vazia(int m[3][3]){/* função posição vazia*/
int j=0;
if(m[lin-1][col-1]==0)/* testa se linha e coluna for igual a 0*/
j=1;
return j;/* retorna j*/
};

troca(){ /* função troca*/
if (jogador==1)/* testa se jogador for igual a 1*/
jogador=5; /*iguala jogador a 5*/
else
jogador=1; /*se não iguala a 1*/
};
int soma(int m[3][3])
{

if((m[0][0]+m[0][1]+m[0][2]==3)^(m[0][0]+m[0][1]+m[0][2]==15))
return 1;
if((m[1][0]+m[1][1]+m[1][2]==3)^(m[1][0]+m[1][1]+m[1][2]==15))
return 1;
if((m[2][0]+m[2][1]+m[2][2]==3)^(m[2][0]+m[2][1]+m[2][2]==15))
return 1;
if((m[0][0]+m[1][0]+m[2][0]==3)^(m[0][0]+m[1][0]+m[2][0]==15))
return 1;
if((m[0][1]+m[1][1]+m[2][1]==3)^(m[0][1]+m[1][1]+m[2][1]==15))
return 1;
if((m[0][2]+m[1][2]+m[2][2]==3)^(m[0][2]+m[1][2]+m[2][2]==15))
return 1;
if((m[0][0]+m[1][1]+m[2][2]==3)^(m[0][0]+m[1][1]+m[2][2]==15))
return 1;
if((m[0][2]+m[1][1]+m[2][0]==3)^(m[0][2]+m[1][1]+m[2][0]==15))
return 1;
}

sexta-feira, 22 de agosto de 2008

Inicio dos Trabalhos

olá,
estamos trabalhando para que esse blog seja referência, é nosso primeiro post de muitos.
Aguarde......