Preciso criar um jogo de Batalha Naval, o jogo já está rodando mas tem umas coisas que não consigo implementar, como:
O jogo tem que ter 4 navios pro usuario e pro computador, mas os navios tem de ocupar 2 células cada na horizontal.
Dois arquivos devem ser informados pelo usuário. Os arquivos deverão conter as posições dos navios do usuário e do computador.
Cada linha do arquivo deve informar a posição de um navio. Por exemplo, para definir as posições dos navios apresentados na Figura 1, teríamos um arquivo com o seguinte formato:
A1 A2
B4 B5
C1 C2
E3 E4
● Dica
O usuário informa uma posição e o programa indica se existe algum navio na linha ou coluna informada (No máximo 3 dicas por jogo).
Se alguém puder me ajudar, agradeço. Segue o programa até agora em anexo tbm:
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]
int main ()
{
char mata [5][5], matb [5][5],matc[5][5],matd[5][5];
srand (time(NULL));
system ("color 1f");
int i,j,linha,col,z,cont=0,contpc=0,ale,contale=0;
printf ("\nDeseja Inserir os barcos Aleatoriamente? 1)Sim 0)Nao\n");
scanf ("%d",&ale);
// MATRIZ JOGADOR --------------------------------------------------------------
printf ("Matriz Jogador: \n\n");
// Deixando todas matrizes com o caracter 'x'
for (i=0;i<5;i++)
{
for (j=0;j<5;j++)
{
mata[j] = 'x';
matb[j] = 'x';
matc[j] = 'x';
matd[j] = 'x';
}
}
// testando matriz
printf (" A B C D E\n");
for (i=0;i<5;i++)
{
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ", mata[j]);
}
printf ("\n");
}
// INSERINDO BARCOS -------------------------------------------------------
if (ale==1)
{
// INSERINDO BARCOS ALEATORIAMENTE ------------------------------------------------------------
while (contale< 4)
{
linha = rand() %5;
col = rand() %5;
if (matb [linha][col] == 'B')
{
printf ("-");
}
else
{
matb [linha][col] = 'B';
contale ++;
}
}
printf ("\n\n --------- Posicao dos Seus Barcos -------- \n\n");
printf (" A B C D E\n");
for (i=0;i<5;i++)
{
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ", matb[j]);
}
printf ("\n");
}
system ("pause");
}
else
{
for (z=0;z<4;z++)
{
printf ("\nInsira o Barco n %d: \n", z+1);
printf ("Numero da Linha: ");
scanf ("%d", &linha);
printf ("Numero da Coluna: ");
scanf ("%d", &col);
//Verificando se é uma cordenada valida
while ((linha <= 0 || linha >5) || (col <= 0 || col >5))
{
printf ("Valor Invalido! Digite outro!\n");
printf ("Numero da Linha: ");
scanf ("%d", &linha);
printf ("letra da Coluna: ");
scanf ("%d", &col);
while (matb[linha-1][col-1] == 'B')
{
printf ("Voce ja iseriu um barco ai! Digite outra Cordenada!\n");
printf ("Numero da Linha: ");
scanf ("%d", &linha);
printf ("letra da Coluna: ");
scanf ("%d", &col);
}
}
//Verificando se ja iseriu um barco na cordenada
while (matb[linha-1][col-1] == 'B')
{
printf ("Voce ja iseriu um barco ai! Digite outra Cordenada!\n");
printf ("Numero da Linha: ");
scanf ("%d", &linha);
printf ("letra da Coluna: ");
scanf ("%d", &col);
while ((linha <= 0 || linha >5) || (col <= 0 || col >5))
{
printf ("Valor Invalido! Digite outro!\n");
printf ("Numero da Linha: ");
scanf ("%d", &linha);
printf ("letra da Coluna: ");
scanf ("%d", &col);
}
}
system("cls");
matb [linha-1][col-1] = 'B';
printf ("\n\n --------- Posicao dos Seus Barcos -------- \n\n");
printf (" 1 2 3 4 5\n");
for (i=0;i<5;i++)
{
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ", matb[j]);
}
printf ("\n");
}
}
}
// INSERINDO BARCOS PC ------------------------------------------------------------
int contb=0;
while (contb< 4)
{
linha = rand() %5;
col = rand() %5;
if (matd [linha][col] == 'B')
{
printf ("-"); // só pra poder verificar quando pc atira no mesmo lugar
}
else
{
matd [linha][col] = 'B';
contb ++;
}
}
//------------------------ TESTE IMPRIMINDO BARCOS DO PC
system("cls");
printf ("\n\n --------- Posicao dos Barcos PC para verificacao -------- \n\n");
printf (" A B C D E\n");
for (i=0;i<5;i++)
{
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ", matd[j]);
}
printf ("\n");
}
// ---------------------- tabuleiro --------------------------
printf ("\n Seu Campo\t Campo PC\n");
printf (" A B C D E\t A B C D E\n");
for (i=0;i<5;i++)
{
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ", mata[j]);
}
printf ("\t ");
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ",matc[j]);
}
printf ("\n");
}
//EU ATIRANDO ----------------------------------------------------------------------------
int numtiro=0,numtiropc=0;
// while para controlar o encerramento do jogo
while (cont < 5 || contpc < 5)
{
int tiro =0,tiropc =0;
while (tiro<=0)
{
printf ("\nSua vez de atirar!\n");
printf ("\nCordenadas do Tiro: \n");
printf ("Numero da Linha: ");
scanf ("%d", &linha);
printf ("Numero da Coluna: ");
scanf ("%d", &col);
// Verificando se já atirou na cordenada
while (matc[linha-1][col-1] == '1' || matc[linha-1][col-1] == '0')
{
printf ("\nVoce ja atirou neste local\n");
printf ("Escolha outra cordenada\n");
printf ("Numero da Linha: ");
scanf ("%d", &linha);
printf ("Numero da Coluna: ");
scanf ("%d", &col);
while ((linha <= 0 || linha >5) || (col <= 0 || col >5))
{
printf ("Valor Invalido! Digite outro!\n");
printf ("Numero da Linha: ");
scanf ("%d", &linha);
printf ("Numero da Coluna: ");
scanf ("%d", &col);
}
}
// Verificando se é uma cordenada valida
while ((linha <= 0 || linha >5) || (col <= 0 || col >5))
{
printf ("Valor Invalido! Digite outro!\n");
printf ("Numero da Linha: ");
scanf ("%d", &linha);
printf ("Numero da Coluna: ");
scanf ("%d", &col);
while (matc[linha-1][col-1] == '1' || matc[linha-1][col-1] == '0')
{
printf ("\nVoce ja atirou neste local\n");
printf ("Escolha outra cordenada\n");
printf ("Numero da Linha: ");
scanf ("%d", &linha);
printf ("Numero da Coluna: ");
scanf ("%d", &col);
}
}
system ("cls");
//Consultando se errou ou acertou o tiro
if (matd[linha-1][col-1] == 'x')
{
matc [linha-1][col-1] = '0';
tiro=1;
numtiro++;
system("cls");
printf ("\nVoce errou o Tiro!\n");
printf ("Voce ja acertou %d de 10 navios", cont);
printf ("\nNumero de Tiros Jogador: %d\n",numtiro);
//onde vc atirou
printf ("\nSeu tiro: \n");
printf ("Cordenadas do seu tiro.\nLinha: %d Coluna: %d\n",linha,col);
printf ("\n Seu Campo\t Campo PC\n");
printf (" A B C D E\t A B C D E\n");
for (i=0;i<5;i++)
{
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ", mata[j]);
}
printf ("\t ");
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ",matc[j]);
}
printf ("\n");
}
system ("pause");
system ("cls");
}
else
{
numtiro++;
system("cls");
matc [linha-1][col-1] = '1';
tiro=0;
cont++;
system ("color 4f");
system ("color 8c");
printf ("\nVoce acertou o Tiro! Jogue Novamente!\n");
system ("color 1f");
printf ("Voce ja acertou %d de 10 navios", cont);
printf ("\nNumero de Tiros Jogador: %d\n",numtiro);
printf ("\nSeu tiro: \n");
printf ("Cordenadas do seu tiro.\nLinha: %d Coluna: %d\n",linha,col);
printf ("\n Seu Campo\t Campo PC\n");
printf (" 1 2 3 4 5\t 1 2 3 4 5\n");
for (i=0;i<5;i++)
{
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ", mata[j]);
}
printf ("\t ");
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ",matc[j]);
}
printf ("\n");
}
system ("pause");
// Encerrando jogo quando você ganhou
if (cont==10)
{
printf ("\nVoce Ganhou o Jogo! Parabens!\n");
printf ("Voce Atirou %d tiros e Pc Atirou %d tiros\n",numtiro,numtiropc);
system ("pause");
return 0;
}
}
}
// PC ATIRANDO --------------------------------------------
while (tiropc<=0)
{
//pc atirando aleatoriamente
linha = rand() %5;
col = rand() %5;
// caso pc atire no mesmo local
while (mata[linha][col] == '0' || mata[linha][col] == '1')
{
linha = rand() %5;
col = rand() %5;
}
//verificando se pc acertou ou errou o tiro
if (matb[linha][col] == 'x')
{
numtiropc++;
mata [linha][col] = '0';
tiropc=1;
printf ("\nPC errou o Tiro!\n");
printf ("O PC ja acertou %d de 10 navios", contpc);
printf ("\nNumero de Tiros PC: %d\n",numtiropc);
//imprimindo tiro
printf ("\nOnde o pc atirou: \n");
printf ("Linha: %d Coluna: %d\n", linha+1,col+1);
printf ("\n Seu Campo\t Campo PC\n");
printf (" 1 2 3 4 5\t 1 2 3 4 5\n");
for (i=0;i<5;i++)
{
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ", mata[j]);
}
printf ("\t ");
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ",matc[j]);
}
printf ("\n");
}
system ("pause");
}
else
{
numtiropc++;
mata [linha][col] = '1';
tiropc=0;
contpc++;
system ("color 4f");
system ("color 8c");
system("cls");
printf ("\nPC acertou o Tiro!\n");
printf ("O PC ja acertou %d de 10 navios", contpc);
printf ("\nNumero de Tiros PC: %d\n",numtiropc);
system ("color 1f");
//imprimindo tiro
printf ("\nOnde o pc atirou: \n");
printf ("Linha: %d Coluna: %d\n", linha+1,col+1);
printf ("\n Seu Campo\t Campo PC\n");
printf (" 1 2 3 4 5\t 1 2 3 4 5\n");
for (i=0;i<5;i++)
{
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ", mata[j]);
}
printf ("\t ");
printf (" %d ",i+1);
for (j=0;j<5;j++)
{
printf (" %c ",matc[j]);
}
printf ("\n");
}
system ("pause");
system ("cls");
}
// Encerrando o jogo pq PC ganhou
if (contpc==10)
{
printf ("\nVoce Perdeu o Jogo!\n");
printf ("Voce Atirou %d tiros e Pc Atirou %d tiros\n",numtiro,numtiropc);
system ("pause");
return 0;
}
}
}
system ("pause");
}
TiMo
Novo Membro
Registrado
6 Mensagens
0 Curtidas
Batalha Naval
#1 Por TiMo
16/06/2015 - 10:36