Jogo do Galo em C – Versão 1.06
Posted by admin on 8 de Abril de 2012 | Filed under Exercícios, Línguagens de Programação, Programação
Tenho continuado a tentar evoluir e incorporar novas funcionalidades neste meu projecto, desta vez implementei um MENU recorrendo ao Switch Case, assim como coloquei um contador de jogos vencidos de modo a saber as estatísticas do Jogo.
Aqui fica o código:
/************************************************************** Nome: Nuno Santos Data: 06-04-2012 Projecto: Jogo do Galo_1.06 **************************************************************/ #include<stdio.h> #include<stdlib.h> #define DIM 3 int matriz[DIM][DIM]; int contapc = 0, contahumano = 0; void iniciar_matriz(); void coordenadas(); void coordenadas_pc(); int verifica_vencedor(); void apresenta_matriz(); void apresenta_estatisticas(int contahumano, int contapc); int main() { printf("\t\t\t\t Jogo do Galo \n\n\n"); int escolha = 0; do { printf("\t\t\t\t*MENU*\n\n\n"); printf("1 - Jogar Jogo do Galo:\n"); printf("2 - Consultar Estatísticas de Jogo:\n"); printf("3 - SAIR\n"); printf("Opção: "); scanf("%d", &escolha); switch(escolha) { case 1: { iniciar_matriz(matriz); apresenta_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"); contahumano = contahumano + 1; break; } coordenadas_pc(); //Verifica o vencedor após a jogada do Computador if (verifica_vencedor() == 1) { printf("\n\nO Vencedor é o Computador!\n\n"); contapc = contapc + 1; break; } apresenta_matriz(); }while(1); // Apresentar a Matriz após a verificação do vencedor apresenta_matriz(); break; } case 2: { printf("\t\t\t*Estatisticas do Jogo*\n\n\n"); apresenta_estatisticas(contahumano, contapc); break; } case 3: { printf("Deseja Sair!"); exit(0); } default: { printf("Opção Inválida"); return main; } } } while(escolha != 3); 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; } } } //Função para calculo das estatísticas e apresentação void apresenta_estatisticas(int contahumano, int contapc) { printf("Numero de jogos Ganhos pelo Humano: %d\n\n", contahumano); printf("Numero de Jogos Ganhos Pelo Computador: %d\n\n", contapc); }
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