Advertisement
Drowze

Preparando-se para a prova: Batalha Naval

May 17th, 2014
324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.76 KB | None | 0 0
  1.  /*
  2. Batalha Naval 1.1
  3. 17/Maio/2014
  4.  
  5. 1.1: Correção no sistema de dicas
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <time.h>
  11. #define FILE 9
  12. #define COLU 9
  13. #define TENTATIVAS 20
  14.  
  15. void main(){
  16.     char mar[FILE][COLU]; //mar vazio
  17.     char resp[FILE][COLU]; //respostas
  18.     int i,j;
  19.     int tent=TENTATIVAS; //contador de balas
  20.     int cont=0,cont_i=0,cont_j=0; //contadores de barcos
  21.     srand(time(NULL)); //muda o seed do aleatorio
  22.  
  23.  
  24.     //Respostas do jogo
  25.     for(i=0;i<FILE;i++){
  26.         for(j=0;j<COLU;j++) {
  27.             if((rand()+1)%10>7) { //aleatorio de 0 a 10. 30% de chance do espaço ser um barco (linha abaixo)
  28.                 resp[i][j] = '1'; //isso é um barco
  29.                 cont++; //aumentando o contador de barcos
  30.             }
  31.             else resp[i][j] = '0'; //isso é um espaço vazio
  32.         }
  33.     }
  34.  
  35.     //Declaracao dos espacos desconhecidos
  36.     for(i=0;i<FILE;i++)
  37.         for(j=0;j<COLU;j++) mar[i][j] = '~';       
  38.    
  39.     //-------------//
  40.  
  41.  
  42.     do{
  43.         cont_i=0; //reset
  44.         cont_j=0; //reset
  45.         //interface principal
  46.         printf("        BATALHA NAVAL\n\n    ");
  47.  
  48.         for(j=0;j<COLU;j++) printf("%d  ",j+1); //numeracao das colunas
  49.  
  50.         for(i=0;i<FILE;i++){
  51.             printf("\n");
  52.             printf("%d : ",i+1); //numeracao das fileiras
  53.             for(j=0;j<COLU;j++) {
  54.                 printf("%c  ",mar[i][j]); //mostra o mar (espacos vazios)
  55.             }
  56.         }
  57.  
  58.         //verificacoes da entrada do usuario
  59.         printf("\nDeseja atirar em qual espaco?\n");
  60.         do{
  61.             printf("Linha: "); scanf("%d",&i);
  62.         }while(i<1 && i!=99);
  63.         do{
  64.             printf("Coluna: "); scanf("%d",&j);
  65.         }while(j>COLU && j!=99);
  66.        
  67.         //verificacao de acerto
  68.         if(i!=99 && j!=99 ){
  69.             if(mar[i-1][j-1]=='~' && resp[i-1][j-1]=='1'){
  70.                 cont--;
  71.                 printf("BOOM! Barco afundado! %d barcos restantes!\n",cont);
  72.                 mar[i-1][j-1]=resp[i-1][j-1];
  73.                 resp[i-1][j-1]='0'; //essa linha é desnecessaria caso nao queira o bloco extra
  74.             }
  75.             else if(mar[i-1][j-1]=='~' && resp[i-1][j-1]=='0'){
  76.                 mar[i-1][j-1]=resp[i-1][j-1];
  77.                 tent--;
  78.                 printf("SPLASH! Voce acertou a agua! %d tentativas restantes!\n",tent);
  79.             }
  80.             else if(mar[i-1][j-1]=='0' || mar[i-1][j-1]=='1') printf("Voce ja atirou neste local\n");
  81.             else printf("Erro\n");
  82.         }
  83.         if(i==99 && j==99){
  84.             for(i=0;i<FILE;i++){ //CODIGO ULTRA SECRETO
  85.                 printf("\n");
  86.                 for(j=0;j<COLU;j++) printf("%c ",resp[i][j]);
  87.             }
  88.             i=99;
  89.             j=99;
  90.         }
  91.         printf("\n");
  92.        
  93.  
  94.         //BLOCO EXTRA: contador de barcos na linha/coluna
  95.         if(i!=99 && j!=99) {
  96.             for(j=0;j<COLU;j++) if(resp[i-1][j]=='1') cont_j++;
  97.             printf("Dica:\nRestam %d barcos nesta linha e ",cont_j);
  98.             for(i=0;i<FILE;i++) if(resp[i][j-1]=='1') cont_i++;
  99.             printf("%d barcos nesta coluna\n",cont_i);
  100.         }
  101.  
  102.         system("Pause");
  103.         fflush(stdin); //para evitar erro caso o usuario digite uma letra
  104.         system("cls");
  105.     }while(tent>0 && cont>0);
  106.  
  107.  
  108.  
  109.     printf("\n");
  110.     system("Pause");
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement