Ir ao conteúdo
  • Cadastre-se

Batalha Naval em C


Posts recomendados

Olá, estou tentando fazer um jogo de batalha naval em C, porém no laço de repetição no final do programa onde o t tem que ir ate 30, que seria o numero de tentativas de jogadas ele não soma de um em um, pulando algumas repetições, por favor alguem pode me ajudar

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void gera_rand()
{
  int stime;
  int ltime;

  ltime=time(NULL);
  stime=(unsigned) ltime/2;
  srand(stime);

}
 
void inicialtabuleiro(char tabuleiro[10][10]){
    
    int i,j,k,cont=0,c=0,u=0,a=0,horizonta_vertical=0,segunda,terceira,quarta;
    
    
for(i=0;i<10;i++){           //Inicia todas as posições do tabuleiro com "-"
    for(j=0;j<10;j++){
        tabuleiro[j]='-';
    }
}
 
for(i=0;i<3;i++){
    
    do{
    cont=0;
    j =    rand() % 11;        // sorteia uma posição da matriz para colocar um dos 3 barcos que ocupam tres posições cada
    k = rand() % 11;
    
    c= k+1;
    a= c-1;    
    u= c+1;
    //printf("%d",j);
    //printf("%d",k);
    horizonta_vertical =    rand() % 2; // verifica se a posição do barco vai ser na horizontal ou na vertical
    if(horizonta_vertical==0){
    
    if(tabuleiro[j][k]=='-' && tabuleiro[j][c]=='-' && c<10 && u<10 &&tabuleiro[j]!='X' && tabuleiro[j][a]!='X'){
        cont++;
        tabuleiro[j][k] = 'X';
        tabuleiro[j][c] = 'X';
        tabuleiro[j] = 'X';
    }
    
    }else{
        c= j+1;
        a= c-1;    
        u= c+1;
        
        if(tabuleiro[j][k]=='-' && tabuleiro[c][k]=='-' && c<10 && u<10 &&tabuleiro[k]!='X' && tabuleiro[a][j]!='X'){
            cont++;
            tabuleiro[j][k] = 'X';
            tabuleiro[j+1][k] = 'X';
            tabuleiro[j+2][k] = 'X';
    }    
    }
    
    
    
    }while(cont==0);
}
 
for(i=0;i<1;i++){
    
    do{
    cont=0;
    j =    rand() % 11;        // sorteia uma posição da matriz para colocar um dos 3 barcos que ocupam tres posições cada
    k = rand() % 11;
    
    c= k+1;
    segunda = c+1;
    terceira = segunda + 1;
    quarta = terceira + 1;
    u= quarta+1;
    a= c-1;    
    
    //printf("%d",j);
    //printf("%d",k);
    horizonta_vertical=rand() % 2; // verifica se a posição do barco vai ser na horizontal ou na vertical
    if(horizonta_vertical==0){
    
    if(tabuleiro[j][k]=='-' && tabuleiro[j][c]=='-' && tabuleiro[j][segunda]=='-'&& tabuleiro[j][terceira]=='-'&& tabuleiro[j][quarta]=='-' && tabuleiro[j]=='-' && u<10){
        cont++;
        tabuleiro[j][k]='A';
        tabuleiro[j][c]='A';
        tabuleiro[j][segunda]='A';
        tabuleiro[j][terceira]='A';
        tabuleiro[j][quarta]='A';
        tabuleiro[j]='A';
        
    }
    
    }else{
        c= j+1;
        segunda = c+1;
        terceira = segunda + 1;
        quarta = terceira + 1;
        u= quarta+1;
        a= c-1;
        
        if(tabuleiro[j][k]=='-' && tabuleiro[c][k]=='-' && tabuleiro[segunda][k]=='-'&& tabuleiro[terceira][k]=='-'&& tabuleiro[quarta][k]=='-' && tabuleiro[k]=='-' && u<10){
            cont++;
    
            tabuleiro[j][k]='A';
            tabuleiro[c][k]='A';
            tabuleiro[segunda][k]='A';
            tabuleiro[terceira][k]='A';
            tabuleiro[quarta][k]='A';
             tabuleiro[k]='A';
    }    
    }
    
    
    
    }while(cont==0);
}
 
for(i=0;i<3;i++){        // coloca na matriz os tres submarinos
    
    do{
    cont=0;
    j =    rand() % 11;
    k = rand() % 11;
    a= c-1;    
    c= k+1;
    u= c+1;
    //printf("%d",j);
    //printf("%d",k);
    
    if(tabuleiro[j][k]=='-' && tabuleiro[j][c]=='-' && c<10 && tabuleiro[j]!='X' && tabuleiro[j][a]!='X'){
    cont++;
    tabuleiro[j][k] = 'O';
    }
    
    }while(cont==0);
}
 
//A portir daqui apenas identa o tabuleiro
}
 
 
void printartabuleiro(char matriz[10][10]){
    int i,k,j;
    
    system("cls");
    printf("BATALHA NAVAL\n");
    
 
printf("  ");
for(i=1;i<=10;i++)
    printf("%d   ", i);
    
printf("\n");
for(k=65,i=0;k<= 74;k++,i++){
    
       printf("%c ",k);
       for(j=0;j<10;j++){
            printf("%c   ", matriz[j]);
       }
     
     printf("\n\n");    
}
}
 
 
 
int main(){
 
 
int linha,coluna,i,j,k,jogada=0,t,venceu=0;
char matriz[10][10],tabuleiro[10][10],l;
gera_rand();


 
printf("---voce tem 30 tentativas para derrubar 3 submarinos, 3 barcos e 1 cargueiro da tropa inimiga\n");
printf("---Cada submarino ocupa um espaço\n");
printf("---Cada barco ocupa tres espaços\n");
printf("---O cargueiro ocupa um espaço\n");
 
for(i=0;i<10;i++){           //Inicia todas as posições do tabuleiro com "-"
    for(j=0;j<10;j++){
        matriz[j]='-';
    }
}
 
inicialtabuleiro(tabuleiro);
printartabuleiro(matriz);
 
//A portir daqui apenas identa o tabuleiro
t=0;
for(t=0;t<30;t++){
printf("JOGADA %d \n", t);
printf("Digite a coordenada\n");
scanf("%c %d", &l, &coluna);
coluna= coluna - 1;
 
if(l=='A')
 linha=0;
if(l=='B')
 linha=1;
if(l=='C')
 linha=2;
if(l=='D')
 linha=3;
if(l=='E')
 linha=4;
if(l=='F')
 linha=5;
if(l=='G')
 linha=6;
if(l=='H')
 linha=7;
if(l=='I')
 linha=8;
if(l=='J')
 linha=9;
 
if(tabuleiro[linha][coluna]!='-'){
    matriz[linha][coluna]=tabuleiro[linha][coluna];
}
 
printf("\n\n\n");
printartabuleiro(matriz);
}
 
//verifica se o jogador ganhou
for(i=0;i<10;i++){           
    for(j=0;j<10;j++){
        if(matriz[j]=='-'){
            matriz[j]='I';
        }
        if(matriz[j]==tabuleiro[j]){
            venceu++;    
        }
    }
}
 
if(venceu==17){
    printf("Parabens, voce eliminou a tropa inimiga!");
}else{
    printf("Gracas a voce a tropa inimiga nos destruiu!");
}
 
 
    
return(0);
}

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...