Olá galera, eu gostaria de saber se alguém conseguiria me ajudar na implementação dos prototypes do exercício abaixo, porque eu não domino muito arquivo e alocação dinâmica, sendo que o programa jogo da velha funciona da seguinte forma:
O Jogador1 inicia a primeira jogada escolhendo dentro de uma matriz 3x3 uma posição, por exemplovelha.matriz[2][2] = 1;.
O Jogador2 valida se o Jogador1 ganhou, caso tenha ganhado o mesmo retorna o valor diferente de 0 (zero), senão realiza a sua jogada diferente da jogada do Jogador1. Exemplovelha.matriz[0][0] = 2;
A cada rodada, os jogadores deverão ler e escrever em um arquivo a matriz do jogo da velha.
Ao final quem conseguir marcar primeiro um linha adjacente é o vencedor da rodada.
O jogo será em formato de melhor de três rodadas (desconsiderando velha [empate]).
Caso ocorram 5 (cinco) velhas consecutivas, o vencedor será o que estiver com maior quantidade de rodadas ganhas, caso o número de rodadas ganhas seja igual, será sorteado um dos dois jogadores para iniciar a primeira jogada manualmente, sendo que a jogada deverá ser diferente das jogadas iniciais que causaram as “velhas”, e o vencedor desta, será o ganhador da atual batalha.
Pergunta
Julia Emily
Olá galera, eu gostaria de saber se alguém conseguiria me ajudar na implementação dos prototypes do exercício abaixo, porque eu não domino muito arquivo e alocação dinâmica, sendo que o programa jogo da velha funciona da seguinte forma:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
struct tJogada {
int coluna;
int linha;
int quem;
};
typedef struct tJogada Jogada;
struct tVelha {
int matriz[3][3];
};
typedef struct tVelha Velha;
/* Voce dever implementar apenas um conjuntos de funcoes */
void imprimir34033 (int jogada, Velha * velha);
Velha * lerVelha34033 (char * nomeArquivo);
void criarJogada34033 (int quem, char * nomeArquivo, Jogada * jogada);
int validaJogada34033 (char * nomeArquivo, Jogada * jogada);
void salvarVelha34033 (Velha *velha);
/* Sera utilizado apenas para os seus testes */
void criarJogada2 (int quem, char * nomeArquivo, Jogada * jogada);
int validaJogada2 (char * nomeArquivo, Jogada * jogada);
void criarJogada1 (int quem, char * nomeArquivo, Jogada * jogada) {
criarJogada34033(quem, nomeArquivo, jogada);
}
int validaJogada1 (char * nomeArquivo, Jogada * jogada) {
return validaJogada34033(nomeArquivo, jogada);
}
void imprimirVelha (int jogada, char * nomeArquivo) {
Velha * velha = lerVelha34033(nomeArquivo);
imprimir34033(jogada, velha);
}
int main() {
char * nomeArquivo = "matriz.txt";
int jogada = 0;
int ganhou = 0;
int numero = 0;
while (jogada < 4) {
Jogada j1;
numero = 1;
criarJogada1(numero, nomeArquivo, &j1);
/* A funcao validaJogada deve fechar o programa
caso uma inconsistancia seja encontrada */
ganhou = validaJogada2(nomeArquivo, &j1);
imprimirVelha(jogada + 1, nomeArquivo);
if(ganhou) {
printf("\n GANHOU JOGADOR %i", numero);
break;
}
Jogada j2;
numero = 2;
criarJogada2(numero, nomeArquivo, &j2);
/* A funcao validaJogada deve fechar o programa
caso uma inconsistancia seja encontrada */
ganhou = validaJogada1(nomeArquivo, &j2);
imprimirVelha(jogada + 1, nomeArquivo);
if(ganhou) {
printf("\n GANHOU JOGADOR %i", numero);
break;
}
jogada++;
}
if(!ganhou) {
printf("\n EMPATE!");
}
return 0;
}
Agradeço já!
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.