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 exemplo velha.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.
#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á!