Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

pereira010

jogo do galo

Recommended Posts

pereira010

Boa!

eu sei que isto já tá bem batido aqui no forum, pois ja tive a ver varias topicos sobre o galo.

tou a fazer um jogo de um só jogador,  ja tenho codigo praticamente feito só que o meu problema é que nao sei fazer com que o computador seja mais "inteligente" a jogar  :(

eu vou postar o codigo e se alguem me pudesse ajudar agradecia  :)

#include <stdio.h>
#include <stdlib.h>

char campo[3][3];  /* campo de jogo */

char verificar(void);       /* Verifica se exitste um vencedor */
void inic_campo(void);      /* inicializa o campo. */
void jogada_humano(void);   /* Jogada do jogador Humano */
void jogada_pc(void);    /* jogada do pc */
void imp_campo(void);    /* Imprime o campo */
char opcao;
char novo_jogo;


int main(void)
    {
    char final;

    system("color 9");
    printf("\t*** JOGO DO GALO ***\n");
    printf("\tjogador vs computador\n\n");

    opcao:    
    printf("\nQue tal um joguinho? (S/N):");
    scanf("%c", &opcao);
    if (opcao == 's' || opcao == 'S') goto jogo;
    if (opcao == 'n' || opcao == 'N') exit(opcao);
    if (opcao != 's' && opcao != 'S' && opcao != 'n' && opcao != 'N') printf("\n Introduza uma opcao valida!!");system("cls"); goto opcao;
    
    system("color 6");
    
    jogo:
       system("cls");
       printf("\t*** JOGO DO GALO ***\n");
       printf("\tjogador vs computador\n\n");
       
       final =  ' ';
       inic_campo();

       do {
           imp_campo();
           jogada_humano();
           final = verificar(); /* verifica se é vencedor */
           if(final!= ' ') break; /* vencedor!*/
           jogada_pc();
           final = verificar(); /* verifica se é vencedor */
           }

    while(final== ' ');
    
    imp_campo(); /* mostra as posiçoes finais */
    if(final=='X') printf("Epah! Ganhaste \n");
    else printf("yeah!! Ganhei aha aha\n");
    getchar();
    getchar();
    system("cls");
    goto novo_jogo;
    
    novo_jogo:
    printf("\n  Novo jogo? (S/N):");
    scanf("%c", &novo_jogo);
    if (opcao == 's' || opcao == 'S') goto jogo;
    if (opcao == 'n' || opcao == 'N') exit(novo_jogo);
    if (opcao != 's' && opcao != 'S' && opcao != 'n' && opcao != 'N') printf("\n Introduza uma opcao valida!!"); goto novo_jogo;
    return 0;
}

/* inicializa o campo. */
void inic_campo(void)
     {
     int i, j;

     for(i=0; i<3; i++)
     for(j=0; j<3; j++) campo[i][j] =  ' ';
     }

/* Jogada do jogador Humano */
void jogada_humano(void)
     {
     int x, y;

     printf("\n\nIntroduza a coordenada X: ");
     scanf("%d", &x);
     printf("Introduza a coordenada Y: ");
     scanf("%d", &y);
     ("%d%*c%d", &x, &y);
     x--; y--;

     if(campo[x][y]!= ' '){
     printf("hm.. tera que introduzir um jogada valida.\n");
     jogada_humano();
     }
  
  else campo[x][y] = 'X';
}

/* Jogada do computador */
void jogada_pc(void)
     {
     int i, j;
     for(i=0; i<3; i++){
                        for(j=0; j<3; j++)
                        if(campo[i][j]==' ') break;
                        if(campo[i][j]==' ') break;
                        }

     if(i*j==9)
               {
               printf("Bom.. temos um empate, prime ENTER para continuar\n");
               getchar();
               exit(0);
               }
               
               else
               campo[i][j] = 'O';
}

/* Imprime o campo */
void imp_campo(void)
     {
     int t, x;
     printf("\n\n 1   2   3 \n\n");
     printf("1\n\n2\n\n3\n\n");
     for(t=0; t<3; t++)
     {
     printf(" %c | %c | %c    ",campo[t][0], campo[t][1], campo [t][2]);
     if(t!=2) printf("\n---|---|---\n");
     }

printf("\n\n");

}

/* Verifica se exitste um vencedor */
char verificar(void)
     {
     int i;
     
     /* verifica as linhas */
     for(i=0; i<3; i++) 
     if(campo[i][0]==campo[i][1] &&
       campo[i][0]==campo[i][2]) return campo[i][0];
     
     /* verifica as colunas */
     for(i=0; i<3; i++)  
     if(campo[0][i]==campo[1][i] &&
     campo[0][i]==campo[2][i]) return campo[0][i];

     /* verifica as diagonais*/
     if(campo[0][0]==campo[1][1] &&
     campo[1][1]==campo[2][2])
     return campo[0][0];

     if(campo[0][2]==campo[1][1] &&
     campo[1][1]==campo[2][0])
     return campo[0][2];

     return ' ';
}

Share this post


Link to post
Share on other sites
Ferreira

Para começar por algoi simples podes pôr o computador a escolher uma posição aleatória (não é assim um jogador assim tão inteligente mas é um bom começo). Depois podes ir aperfeiçoando as jogadas, por exemplo, se tiver dois símbolos alinhados e o terceiro livre jogar lá e ganhar ou jogar numa posição que impeça o adversário de ganhar.

Share this post


Link to post
Share on other sites
pereira010

hm.. nao tou a consegui.. na verdade é que nao sei como o fazer lol tou a ir por hipoteses mas nenhuma dá

podias dar me uma ajuda?

Share this post


Link to post
Share on other sites
Ribamar

podes dar aqui uma olhada

pa eu ja fiz em Java o jogo do galo, e para a AI o esquema que usei foi: se o pc jogar 1º, joga sempre no meio ou nas pontas. depois depois volta a jogar novamente ou meio ou pontas, na terceira vez ja faz check se ha jogadas do adversario pa cortar, se nao ha procura fazer uma jogada de vitoria, se nao der joga aleatorio ou nao pa tentar na prox jogada ganhar.

acho que ajuda muito se pegares numa folha e fizeres 1 jogo passo a passo e pensares sempre "se fosse eu agora a jogar qual a minha estrategia?" e passas no fundo a estrategia po jogo

cumps

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

×

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.