Escolar Documentos
Profissional Documentos
Cultura Documentos
h>
#include <stdlib.h>
#include <time.h>
#define Lado 3
void init_matriz();
void imprime_matriz();
int jogador_joga(int a, int b);
void clrscr(void);
void pega_valores(void);
int checar(void);
int pc_joga();
void gera_rand();
ltime=time(NULL);
stime=(unsigned) ltime/2;
srand(stime);
int pc_joga()
{
int x,y,mx,my;
int k,j,i;
int erro=0;
x=(rand()%3);
y=(rand()%3);
if(matriz[x][y]!=' ')
{
pc_joga();
return(1);
}
else
{
/**************************************
O Computador gerará 2 números aleatórios X e Y.
E verificará se as coordenadas do ponto (X,Y) estão livre.
Se estiverem livres (matriz[x][y]==' ') então ele criará um
"backup" da matriz original, e vai começas a jogar em cima delas.
*/
for(i=0;i<3;i++)
for(j=0;j<3;j++)
matriza[i][j]=matriz[i][j];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if (matriz[i][j]==' ')
{
/*Neste primeiro trecho de codigo, o computador
já criou uma nova matriz. Aqui, ele marca O num ponto
qualquer e depois verifica se com este ponto ele consegue ganhar o jogo*/
matriz[i][j]='O';
if((checar()!=0))
{
mx=i;
my=j;
erro=2;
}
else
{/*Caso o computador não possa marcar zero neste ponto, ele
fará o teste para ver se o jogador pode ganhar o jogo. Caso ele consiga vencer o
jogo, o computador
marca esta posição para evitar a vitória adversária.
matriz[i][j]=' ';
}
}
//Restaura Matriz
for(i=0;i<3;i++)
for(j=0;j<3;j++)
matriz[i][j]=matriza[i][j];
if (erro==0)
matriz[x][y]='O';
if (erro!=0)
matriz[mx][my]='O';
}
}
int i;
//Caso a diagonal esteja vencida
if ((matriz[0][0]==matriz[1][1])&&(matriz[1][1]==matriz[2][2])&&(matriz[0][0]!='
'))
{
erro=1;
vitoria=matriz[0][0];
}
return(erro);
}
pega_valores();
}
else if(matriz[a-1][b-1]!=' ')
{
printf("Casa já foi preenchida %d,%d \n\n",a,b);
imprime_matriz();
pega_valores();
}
else
matriz[a-1][b-1]='X';
/*Inicia a Matriz*/
void init_matriz()
{
int k,j;
for (k=0;k < Lado;k++)
for(j=0;j < Lado;j++)
matriz[k][j]=' ';
}
int main(void)
{
int jogadas;
gera_rand(); // Coloca semente randomica no sistema
init_matriz();
jogadas = 0; //Zera o numero de jogadas.
do
{
imprime_matriz();
pega_valores();
jogadas++;
if((checar()==0)&&(jogadas<9)) // Verifica se não houve vitórias ou se
acabaram
{ // ou se acabaram o numero de jogadas.
pc_joga(); // Caso contrário, o computador joga e numero de
jogadas
jogadas++; // Aumenta um
}
}while((checar()==0)&&(jogadas<9)); //Repere a verificação
imprime_matriz(); // Imprime matriz final na tela
return(0);
}