Jogo do Galo em C – Versão 1.05
Posted by admin on 7 de Abril de 2012 | Filed under Exercícios, Línguagens de Programação, Programação
Continuando com a tentativa de criar o Jogo do Galo recorrendo a linguagem de programação C consegui fazer mais alguns progressos tendo agora também uma função para as jogadas efetuadas pelo computador e a verificação de quem ganhou o jogo, ou o Humano ou o Computador.
Aqui fica o código:
/************************************************************** Nome: Nuno Santos Data: 06-04-2012 Projecto: Jogo do Galo_1.05 **************************************************************/ #include<stdio.h> #include<stdlib.h> #define DIM 3 int matriz[DIM][DIM]; void iniciar_matriz(); void coordenadas(); void coordenadas_pc(); int verifica_vencedor(); void apresenta_matriz(); int main() { printf("\t\t\t\t Jogo do Galo \n\n\n"); iniciar_matriz(matriz); do { coordenadas(); //Verifica o vencedor após a Jogada do Humano if (verifica_vencedor() == 1) { printf("\n\nO Vencedor é o Jogador Humano!\n\n"); break; } coordenadas_pc(); //Verifica o vencedor após a jogada do Computador if (verifica_vencedor() == 1) { printf("\n\nO Vencedor é o Computador!\n\n"); break; } apresenta_matriz(); }while(1); // Apresentar a Matriz após a verificação do vencedor apresenta_matriz(); getchar(); } // Função que Incializa a matriz void iniciar_matriz() { int i, j; for(i = 0; i < DIM; i++) { for (j = 0; j < DIM; j++) { matriz[i][j] = ' '; } } } //Função para a coodenadas void coordenadas() { int x, y; printf("Insira a coordenada X: "); scanf("%d", &x); fflush(stdin); printf("\n\nInsira a coordenada Y: "); scanf("%d", &y); fflush(stdin); x--; y--; if (matriz[x][y] != ' ') { printf("\n Posição Ocupada! \n"); coordenadas(); } else { matriz[x][y] = 'X'; } } //Função para apresentar a matriz void apresenta_matriz() { int i; printf("\n"); for (i = 0; i < DIM; i++) { printf(" %c | %c | %c ", matriz[i][0], matriz[i][1], matriz[i][2]); if ( i != 2) { printf("\n"); printf("---|---|---"); printf("\n"); } } printf("\n"); } // Função para A Jogada do Computador void coordenadas_pc() { int i, j; for (i = 0; i < DIM; i++) { for(j = 0; j < DIM; j++) { if (matriz[i][j] == ' ') { matriz[i][j] = 'O'; return; } } } } //Função para verificar o Vencedor do jogo int verifica_vencedor() { int i; // Verificar Linhas e retorna o valor 1 caso seja verdadeiro for (i = 0; i < DIM; i++) { if (matriz[i][0] != ' ' && matriz[i][1] != ' ' && matriz[i][2] != ' ') { if(matriz[i][0] == matriz[i][1] && matriz[i][0] == matriz[i][2]) { return 1; } } } // Verificar Linhas e retorna o valor 1 caso seja verdadeiro for (i = 0; i < DIM; i++) { if (matriz[0][i] != ' ' && matriz[1][i] != ' ' && matriz[2][i] != ' ') { if (matriz[0][i] == matriz[1][i] && matriz[0][i] == matriz[2][i]) { return 1; } } } // Verificar as diagonais e retornar o valor 1 caso seja verdadeiro if(matriz[0][0] != ' ' && matriz[1][1] != ' ' && matriz[2][2] != ' ') { if (matriz[0][0] == matriz[1][1] && matriz[0][0] == matriz[2][2]) { return 1; } } if(matriz[0][2] != ' ' && matriz[1][1] != ' ' && matriz[2][0] != ' ') { if(matriz[0][2] == matriz[1][1] && matriz[0][2] == matriz[2][0]) { return 1; } } }
Sei que esta solução ainda não resolve o desafio e que pode muito bem ser melhorada, principalmente no modo em como o computador joga pois da forma que esta implementada é sempre possível ser o Humano a ganhar, pelo que estou aberto a todas as sugestões que me possam dar.
Share