Ir para conteúdo
Fórum Script Brasil
  • 0

Batalha naval em c


Jaguar's Den

Pergunta

 

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;
}
 
Editado por Jaguar's Den
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...