Jump to content
Ze.C

[Ajuda] Batalha Naval

Recommended Posts

Ze.C

void Init_Tabuleiro()
{
int x, y;     

  for(y=0; y<=9; ++y)
  {
    for(x=0; x<=9; ++x)
    {
       tabuleiro[x][y] = ' ';
    }
  }
             
}

void DesenharTabuleiro()
{
int x, y, j;

    for(j=1; j <= 10; j++)
    {
      printf("    %d", j);
    }       
    printf("\n");    
           for(y = 0; y < 10; ++y)  
           {
             printf("%c ", 65+y);
                  for(x = 0; x < 10; ++x)
                  {
                    printf("%c %c %c",179,tabuleiro[y][x], 179);
                  }
                  
            printf("\n");
           }   
}

int Inserir_Porta_Avioes()
{
int posicao, x, y;

posicao= (rand()%3);


if(posicao==0)
{          
  x= (rand()%7);
  y= (rand()%7);
  tabuleiro[x][y]='P';
  tabuleiro[x][y+1]='P';
  tabuleiro[x][y+2]='P';
  tabuleiro[x+1][y+1]='P';
  tabuleiro[x+2][y+1]='P';
}

else if(posicao==1)
{  
  x= (rand()%7);
  y= (rand()%7);
  tabuleiro[x][y+1]='P';
  tabuleiro[x+1][y+1]='P';
  tabuleiro[x+2][y]='P';
  tabuleiro[x+2][y+1]='P';
  tabuleiro[x+2][y+2]='P';     
}

else if(posicao==2)
{ 
  x= (rand()%7);
  y= (rand()%7);
  tabuleiro[x][y]='P';
  tabuleiro[x+1][y]='P';
  tabuleiro[x+2][y]='P';
  tabuleiro[x+1][y+1]='P';
  tabuleiro[x+1][y+2]='P';    
}

else if(posicao==3)
{  
  x= (rand()%7);
  y= (rand()%7);
  tabuleiro[x][y+2]='P';
  tabuleiro[x+1][y]='P';
  tabuleiro[x+1][y+1]='P';
  tabuleiro[x+1][y+2]='P';
  tabuleiro[x+2][y+2]='P'; 
}
   
}

int Inserir_Cruzador()
{
int posicao, x, y, i;

posicao= (rand()%2);

for(i=1; i<=2; i++)
{
         if(posicao==0)
         {           
          x= (rand()%7);
          y= (rand()%7); 
          tabuleiro[x][y]='C';
          tabuleiro[x][y+1]='C';
          tabuleiro[x][y+2]='C';             
         }

         else if(posicao==1)
         {  
          x= (rand()%7);
          y= (rand()%7);
          tabuleiro[x][y]='C';
          tabuleiro[x+1][y]='C';
          tabuleiro[x+2][y]='C';
         }         
}
   
}

int Inserir_Submarino()
{
int posicao, x, y;


posicao= (rand()%2);

if(posicao==0)
{           
  x= (rand()%8);
  y= (rand()%8); 
  tabuleiro[x][y]='S';
  tabuleiro[x][y+1]='S';          
}

else if(posicao==1)
{  
  x= (rand()%8);
  y= (rand()%8);
  tabuleiro[x][y]='S';
  tabuleiro[x+1][y]='S';
}  
    
}

int Inserir_Navio()
{
int posicao, x, y;

srand(time(NULL));
posicao= (rand()%2);

if(posicao==0)
{                  
  x= (rand()%9);
  y= (rand()%6);
  tabuleiro[x][y]='N';
  tabuleiro[x][y+1]='N';
  tabuleiro[x][y+2]='N';
  tabuleiro[x][y+3]='N';
}
else 
if(posicao==1)      
{                 
  x= (rand()%6);
  y= (rand()%9);
  tabuleiro[x][y]='N';
  tabuleiro[x+1][y]='N';
  tabuleiro[x+2][y]='N';
  tabuleiro[x+3][y]='N';
}

}

int Inserir_Torpedo()
{
int posicao, x, y, i;

for(i=1; i<=4; i++)
{
  x= (rand()%9);

  y= (rand()%9);
  tabuleiro[x][y]='T';
}
}

Já tenho a função para inserir os barcos feita (penso eu) o problema que me está a dar é que às vezes alguns barcos metem se por cima de outros, será que alguém me podia ajudar a resolver esse problema ???

Share this post


Link to post
Share on other sites
Diutsu

Tens de verificar se o local ("quadrado" a "quadrado") onde vais colocar o barco já tem algum barco lá (ou se assim for pedido faz fronteira com algum barco (regras da batalha naval)).


XX SINFO - Semana Informática

Share this post


Link to post
Share on other sites
Ze.C
int play_game()
{
int x, y, i;
char c1;

printf("Insira as coordenadas:  ");
scanf("%c %d", &c1, &y);

y--;
x=c1-65;

    switch(tabuleiro[x][y])
    {
    case ' ': tabuleiro[x][y] = 'A'; break;
    case 'p': tabuleiro[x][y] = 'P'; break;
    case 'c': tabuleiro[x][y] = 'C'; break;
    case 's': tabuleiro[x][y] = 'S'; break;
    case 'n': tabuleiro[x][y] = 'N'; break;
    case 't': tabuleiro[x][y] = 'T'; break;
    }
             
}

Share this post


Link to post
Share on other sites
Diutsu

agora falta-te chamar essa função num ciclo, enquanto houver barcos para ir ao fundo.


XX SINFO - Semana Informática

Share this post


Link to post
Share on other sites
KTachyon

Estás a inserir maiúsculas no scanf() ?


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.