Jump to content
Fórum Script Brasil
  • 0

Batalha naval em c


Question

 

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;
}
 
Edited by Jaguar's Den
Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148682
    • Total Posts
      644515
×
×
  • Create New...