Jump to content
AninhasSilva

Projeto escolar - Jogo do Galo

Recommended Posts

AninhasSilva

Olá,muito boa noite.

Eu tenho um dúvida, neste momento estou a fazer um projeto escolar em que o objetivo é implantar o jogo do galo.

A minha dúvida é como eu faço para que o computador jogue contra mim.

O professor também nos colocou um desafio que era: fazer com que o jogo guardasse e que o pudesse abrir a qualquer momento, isso também é uma das coisas que não sei fazer.

Espero que me consigam ajudar.

Até breve.

Beijinho

Aqui se encontra o meu código:

#include
#include
#include
#include

#define NORTE 72
#define SUL 80
#define ESTE 77
#define OESTE 75
#define ESC 27
#define SAIDA 26
#define ENTER 13

// *************************************************************************************
// * C�digo de cores *
// *************************************************************************************
enum DOS_COLORS
{
preto, azul, verde, CYAN, vermelho, MAGENTA, castanho,
cizento_claro, cizento_escuro, azul_claro, verde_claro, CYAN_claro,
vermelho_claro, MAGENTA_claro, amarelo, branco
};

void textcolor(int iColor)
{
HANDLE hl = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO bufferInfo;
BOOL b = GetConsoleScreenBufferInfo(hl, &bufferInfo);
bufferInfo.wAttributes &= 0x00F0;
SetConsoleTextAttribute (hl, bufferInfo.wAttributes |= iColor);
}

void gotoxy(int x, int y)
{
COORD coord;// sao cordenadas
coord.X = x;// sao cordenadas
coord.Y = y;// sao cordenadas
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
// *************************************************************************************
// * Fun��o Menu *
// *************************************************************************************

Menu()
{
int opcao,escolha=1;
int i;
system("color 8F");
do
{
system("CLS");
textcolor(CYAN_claro);
gotoxy(16,1);
printf("%c",201);//canto esquerdo topo
for(i=0;i<55;i++)
printf("%c",205);//horizontal
printf("%c",187);//canto direito topo//186 188 200 201 205 185 203 204 202
gotoxy(16,2);
printf("%c",186);//vertical
gotoxy(37,2);
textcolor( MAGENTA_claro);
printf("Menu Jogo do Galo");
textcolor(CYAN_claro);
gotoxy(72,2);
printf("%c",186);//vertical
gotoxy(16,3);
printf("%c",200);//canto esquerdo inferior
for(i=0;i<55;i++)
printf("%c",205);//horizontal
gotoxy(72,3);
printf("%c",188);//canto direito inferior
textcolor(CYAN_claro);
gotoxy(20,5);
printf("*************************************************\n");
gotoxy(20,6);
printf("* ");
textcolor(amarelo);
printf("Menu");
textcolor(CYAN_claro);
printf(" *\n");
gotoxy(20,7);
printf("* ");
if(escolha==1)
{
textcolor(branco);
printf(" %c Jogar com um amigo ",26);
textcolor(CYAN_claro);
}
else
printf(" Jogar com um amigo ");
printf("*\n");
gotoxy(20,8);
printf("* ");
if(escolha==2)
{
textcolor(branco);
printf(" %c Jogar com o PC ",26);
textcolor(CYAN_claro);
}
else
printf(" Jogar com o PC ");
printf("*\n");
gotoxy(20,9);
printf("* ");
if(escolha==3)
{
textcolor(branco);
printf(" %c Mostrar pontuacoes ",26,135,228);
textcolor(CYAN_claro);
}
else
printf(" Mostrar Pontuacoes ",135,228);
printf("*\n");
gotoxy(20,10);
printf("* ");
if(escolha==4)
{
textcolor(branco);
printf(" %c Guardar Jogo ",26,135,228);
textcolor(CYAN_claro);
}
else
printf(" Guardar Jogo ",135,228);
printf("*\n");
gotoxy(20,11);
printf("* ");
if(escolha==5)
{
textcolor(branco);
printf(" %c Sair ",26);
textcolor(CYAN_claro);
}
else
printf(" Sair ");
printf("*\n");
gotoxy(20,12);
printf("*************************************************\n");
printf("\t\t\tEscolha uma op%c%co\n",135,198);

opcao=getch();

if(opcao==NORTE && escolha >1)
escolha--;
if(opcao==SUL && escolha <5)
escolha++;
}while(opcao!=ENTER);
return escolha;
}

// *************************************************************************************
// * Fun��o Jogar com um amigo *
// *************************************************************************************
int Amigo()
{
int i,j,l=0,num,opcao=0;
char tabuleiro[3][3];//divis�o do tabuleiro
char O='O', X='X'; // o jogador 1 = 0 jogador 2 X

printf("\n\n\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
tabuleiro[i][j]=' ';

while(l<=9)
{
system ("CLS");
for(i=0;i<3;i++)
{
printf("\t\t %c \xBA %c \xBA %c\n",tabuleiro[i][0],tabuleiro[i][1],tabuleiro[i][2]);
if(i<3-1)
{
printf("\t\t ---\xCE---\xCE---\n");
}
}

printf("\n\n\nInisra as coordenadas, ");
if(l%2)printf("Jogador 2\nLINHA: ");
else printf("Jogador 1\nLinha: ");

scanf("%d",&i);
printf("Coluna: ");
scanf("%d",&j);

if(tabuleiro[i-1][j-1]==' ')
{
if(l%2)tabuleiro[i-1][j-1]=X;
else tabuleiro[i-1][j-1]=O;
l++;
}

//hipoteses do jogador 1 ganhar
if((tabuleiro[0][0]==O && tabuleiro[0][1]==O && tabuleiro[0][2]==O)||
(tabuleiro[1][0]==O && tabuleiro[1][1]==O && tabuleiro[1][2]==O)||
(tabuleiro[2][0]==O && tabuleiro[2][1]==O && tabuleiro[2][2]==O)||
(tabuleiro[0][0]==O && tabuleiro[1][0]==O && tabuleiro[2][0]==O)||
(tabuleiro[0][1]==O && tabuleiro[1][1]==O && tabuleiro[2][1]==O)||
(tabuleiro[0][2]==O && tabuleiro[1][2]==O && tabuleiro[2][2]==O)||
(tabuleiro[0][0]==O && tabuleiro[1][1]==O && tabuleiro[2][2]==O)||
(tabuleiro[0][2]==O && tabuleiro[1][1]==O && tabuleiro[2][0]==O))
{
printf("\n\a\t\tJogador 1, VOCE GANHOU!!!");
break;
}
//hipoteses do jogador 1 ganhar
if((tabuleiro[0][0]==X && tabuleiro[0][1]==X && tabuleiro[0][2]==X)||
(tabuleiro[1][0]==X && tabuleiro[1][1]==X && tabuleiro[1][2]==X)||
(tabuleiro[2][0]==X && tabuleiro[2][1]==X && tabuleiro[2][2]==X)||
(tabuleiro[0][0]==X && tabuleiro[1][0]==X && tabuleiro[2][0]==X)||
(tabuleiro[0][1]==X && tabuleiro[1][1]==X && tabuleiro[2][1]==X)||
(tabuleiro[0][2]==X && tabuleiro[1][2]==X && tabuleiro[2][2]==X)||
(tabuleiro[0][0]==X && tabuleiro[1][1]==X && tabuleiro[2][2]==X)||
(tabuleiro[0][2]==X && tabuleiro[1][1]==X && tabuleiro[2][0]==X))
{
printf("\n\n\n\n\a\t\tJogador 2, VOCE GANHOU!!!");
break;
}

if(l==9)
{
printf("PARTIDA EMPATADA");
break;
}

}
getch();
}



// *************************************************************************************
// * Fun��o Jogar com o pc *
// *************************************************************************************
int PC()
{

}

// *************************************************************************************
// * Fun��o Mostrar Pontua��es *
// *************************************************************************************
int MostrarPontuacao()
{

}

// *************************************************************************************
// * Fun��o Guardar Jogo *
// *************************************************************************************
int Guardar()
{

}
int main(int argc, char *argv[])
{
int opcao=0;

while (opcao != 5) //ciclo que tem 4 op�oes de escolha
{
opcao=Menu();//as opcoes sao do menu
switch(opcao)//
{
case 1:
Amigo();
break;

case 2:
PC();
break;
case 3:
MostrarPontuacao();
break;
case 4:
Guardar();
break;
}
}

system("PAUSE");
return 0;
}

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other sites
pwseo

Guardar o jogo e voltar a abri-lo a qualquer momento é simples... Basta guardar a posição dos X e os O.

Quanto a questão da inteligência artificial: https://en.wikipedia.org/wiki/Tic-tac-toe#Strategy

Obviamente, um computador que jogue com uma estratégia perfeita não tem piada, mas podes sempre introduzir falhas no seu raciocínio (ex.: alterar a ordem dos passos mencionados na wiki) ou então introduzir uma variável aleatória que determina se o computador vai jogar bem ou mal (ou, em último caso, podes colocar o computador a jogar ao acaso).

Share this post


Link to post
Share on other sites
AninhasSilva

Sim,mas como é que eu guardo as posições?

Em relação ao jogo contra o pc,eu nao percebo muito do site porque tá em inglês,e eu não percebo grande coisa...

Share this post


Link to post
Share on other sites
pwseo

Em último caso podes sempre considerar cada uma das 9 posições como um inteiro e escrevê-los num ficheiro (e podes lê-los de volta com fscanf).

Quanto à wiki, podes escolher a opção para ver a versão portuguesa, também tem lá a estratégia para o "jogo perfeito".

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.