O jogo tem que ser feito com alocação dinâmica e os mapas dos jogadores tem que estar em arquivos externos porem a interface do usuário (saída) será um arquivo no formato html, o usuário irá entrar com os comandos em um terminal e observar o resultado no navegador.
Como posso fazer isso?
#include <stdio.h>
#include <stdlib.h>
int **jogar(char **pc, char **mj1, int linha, int coluna){
int i, j;
int cont1=0, cont2=0; // variaveis
int conts=0, contp=0, contn=0, contc=0;
FILE *arq, *arq1, *arq2;
char tabuleiro_visto[linha][coluna];
arq1 = fopen("Jogador.txt","r"); // abre o arquivo que contém o mapa do usuario
arq = fopen("Computador.txt","r"); // abre o arquivo que contém o mapa do computador
for(i = 0; i < linha; i++){
for(j = 0; j < coluna; j++){ // percore a matriz e lê os dados do arquivo do computador
fscanf(arq1," %c ",&pc[i][j]);
}
}
for(i = 0; i < linha; i++){
for(j = 0; j < coluna; j++){ // percore a matriz e lê os dados do arquivo do usuario
fscanf(arq," %c ",&mj1[i][j]);
}
}
do{ // inicia o ciclo de jogo
printf(" Mapa do Computador \n\n");
for(i = 0; i < linha; i++){
for(j = 0; j < coluna; j++){ // imprime na tela o mapa do computador
printf(" %c ",mj1[i][j]);
}
printf("\n\n");
}
printf("\nLINHA QUE DESEJA ATACAR(0-9): ");
scanf("\n%d", &i); // pede para o usuario qual cordenada ele vai ataca
printf("\nCOLUNA QUE DESEJA ATACAR(0-9): ");
scanf("\n%d", &j);
if(mj1[i][j] == 'o'){
printf("\nERROUUUU!!\n\n");
mj1[i][j] = '~'; // faz as verificações dos tiros
}
else if(mj1[i][j]=='x' || mj1[i][j]=='~'){
printf("\n\nVOCE já ATACOU NESSA POSICAO!!\n");
}
else if(mj1[i][j] == 's' || mj1[i][j] == 'c' || mj1[i][j] == 'p' || mj1[i][j] == 'n'){
printf("\n\nACERTOUUU!!\n\n");
mj1[i][j] = 'x';
cont1++;
}
printf(" Mapa do Computador \n\n");
for(i = 0; i < linha; i++){
for(j = 0; j < coluna; j++){ // imprime o mapa com as modificações
printf(" %c ",mj1[i][j]);
}
printf("\n\n");
}
printf("\nHORA DO SEU INIMIGO ATACAR!\n");
// vez do computador
printf(" Mapa do Jogador \n\n");
for(i = 0; i < linha; i++){
for(j = 0; j < coluna; j++){ // imprime na tela o mapa do usuario
printf(" %c ",pc[i][j]);
}
printf("\n\n");
}
i=rand() %9; // gera um numero randomico para a valor da linha de ataque
printf("\nLINHA QUE DESEJA ATACAR(0-9): %d\n", i);
j=rand()%9; // gera um numero randomico para o valor da coluna de ataque
printf("\nCOLUNA QUE DESEJA ATACAR(0-9): %d\n", j);
if(pc[i][j] == 'o'){
printf("\nERROUUUU!!\n\n");
pc[i][j] = '~'; // faz as verificaçõe de tiro
}
else if(pc[i][j]=='x' || pc[i][j]=='~'){
printf("\n VOCE já ATACOU NESSA POSICAO!\n\n");
}
else if(pc[i][j] == 's' || pc[i][j] == 'c' || pc[i][j] == 'p' || pc[i][j] == 'n' ){
printf("\nACERTOUUUUU!!\n\n");
pc[i][j] = 'x';
cont2++;
}
printf(" Mapa do Jogador \n\n");
for(i = 0; i < linha; i++){
for(j = 0; j < coluna; j++){ // imprime o mapa com as modificações
printf(" %c ", pc[i][j]);
}
printf("\n\n");
}
}while(cont1 != 14 || cont2 != 14); // fim do ciclo de jogo
if(cont1 > cont2){
printf("\nVOCE GANHOU :) !!");
} // verifica quem foi o vencedor
else{
printf("\nVOCE PERDEU :( !!");
}
return 0;
}
int main(){
int i;
int linha=10, coluna=10;
char **pc = (char**)malloc(linha*sizeof(char*)); // aloca o mapa do computado
for(i=0;i<linha;i++){
pc[i]=(char*)malloc(coluna*sizeof(char));
}
char **mj1=(char**)malloc(linha*sizeof(char*)); // aloca o mapa do usuario
for(i=0;i<linha;i++){
mj1[i]=(char*)malloc(coluna*sizeof(char));
}
jogar(pc, mj1, linha, coluna); // chama a função que inicia o jogo
return 0;
}