Rafael AB
-
Total de itens
7 -
Registro em
-
Última visita
Posts postados por Rafael AB
-
-
Pow já tentei de td e ainda não consegui implementar Inteligência Artificial nesse meu código... vou voltar o código ao normal sem minha tentativa de código de IA que só complicou mais ainda o q fiz, se alguém puder me ajudar a implementar a IA, eu pensei no seguinte, se um Barco for atingido por exemplo um Porta Aviao = PPPPPPP. O computador teria q ir tentando atingir o resto dele, por exemplo o porta avião foi atingido PPXPPPP o computador jogaria pra frente --> até atingir agua ou se chegasse em 7 o numero de acertos nesse Porta Avião, caso atingido agua, ele tentaria para trás <-- até atingir os 7, dps continuaria jogando normalmente até q outro barco fosse atingido, vou colocar meu código sem IA, se alguém tiver alguma ideia de como posso fazer posta ae, to prescisando fazer isso.
Desde de já agradeço.
-
Pow seguinte, já tinha resolvido aquele código de outra maneira, ia postar agora que tinha conseguido resolver já, mas teria como você me ajudar a entender qual o erro que ta dando nessa função que tentei criar agora?
Eu tentei criar uma função de AI pro pc chamada AI_PC, editei o código do post lá em cima pro meu código atual.
Me parece que não ta executando a função Computador_Joga q ta dentro da AI_PC. Mas n entendi porque, c você puder me ajudar.
E obrigado pela ajuda ai com o código do barco, vou salvar esse código, pra otimizar o joguinho lá ^^, mas o negócio é q é trabalho de escola não é?, n seria justo eu usar seu código pra ganhar pontos, mas foi de grande ajuda do mesmo jeito.
-
Já resolvi o problema de quando acertar a mina parar o programa e dar game over, só n entendi ainda porque as duas matrizes estão sendo preenchidas igualmente e o problema com o preenchimento tb de Sumarinos e Fragatas.
erro não da...só que ele passa pela funcao que coloca a fragata, mas ele sai dela antes de colocar... (as vezes) dependendo do random :PVocê sabe me dizer porque ta acontecendo isso?
Tem alguma ideia de como posso solucionar o problema das Fragatas e dos Submarinos? (Levando em conta que o código ta quase igual pros 2)
Desde de já agradeço.
-
if ( (i >=7 ) && (i <= 9) ) Verificador = true;
então, usei isso ai, porque pensei na seguinte hipotese, c o random do i for 7,8 ou 9 ele n conseguiria preencher levanto em conta q ele usa 3 espaços numa linha para escrever o 'FFF'
vou pesquisar sobre o q você me falou, ver c consigo aqui, mesmo assim, Obrigado pela ajuda.
Debuguei ele, compilei e mandei rodar em Dev-C++ e rodou tranquilamente sem acusar erro...
-
-
Estou tentando programar uma batalha naval e não consigo entender porque ao executar o programa com esse código anexado, as vezes as Fragatas "FFF" e os Submarinos "SSSSS" não estão sendo inseridos na matriz, eu n consigo achar o erro do código.
E também n entendo porque quando acerto uma mina o jogo não esta parando, sendo q coloquei um Contador como argumento nas funções de jogo do Jogador e do Computador para receber -50 no contador quando uma bomba fosse atingida e o while no main não está parando quando isso acontece, e tambem n entendo porque mesmo colocando uma função pro sorteio do Computador, e outra função para Jogador as matrizes estão iguais, mesmas posições de Minas e Embarcações.Gostaria que alguém me ajudasse com esses erros, ow pelo menos algum deles.
#include <stdio.h>
#include <conio.h>
#include <ctime>
#include <stdlib.h>
#include <time.h>
int O;
void Zerar_Matriz(char Matriz[][10])
{
int z,y;
for (y=0 ; y < 10; y++)
{
for (z=0 ; z < 10; z++)
{
Matriz[z][y] = 0;
}
}
}
void Zerar_Matriz_Camuflada(char Matriz[][10])
{
int z,y;
for (y=0 ; y < 10; y++)
{
for (z=0 ; z < 10; z++)
{
Matriz[z][y] = 'V';
}
}
}
void Insere_PortaAviao(char Matriz[][10])
{
int i,y,z,aux;
bool Verificador;
i = rand()%4;
y = rand()%10;
aux = i + 6;
for (z= i ; z <= aux; z++)
{
Matriz[z][y] = 'P';
}
}
void Insere_Submarino(char Matriz[][10])
{
int z,y,i,aux;
bool Verificador = true;
while (Verificador)
{
z = rand()%6;
y = rand()%10;
if (Matriz[z][y] == 0)
{
Verificador = false;
aux = z + 4;
i = z;
for (z ; z < aux ; z++)
{
if (Matriz[z][y] != 0)
{
Verificador = true;
break;
}
}
}
}
for (;i <= aux ; i++)
{
Matriz[i][y] = 'S';
}
}
void Insere_Fragata(char Matriz[][10])
{
int z,y,i,aux;
bool Verificador = true;
while (Verificador)
{
z = rand()%8;
y = rand()%10;
if (Matriz[z][y] == 0)
{
Verificador = false;
aux = z + 2;
i = z;
for (z ; z < aux ; z++)
{
if (Matriz[z][y] != 0)
{
Verificador = true;
break;
}
}
}
}
for (i ;i <= aux ;i++)
{
Matriz[i][y] = 'F';
}
}
void Insere_Mina(char Matriz[][10])
{
int z,y,i,aux;
bool Verificador = true;
while (Verificador)
{
z = rand()%10;
y = rand()%10;
if (Matriz[z][y] == 0)
{
Matriz[z][y] = 'M';
Verificador = false;
}
}
}
void Preencher_Matriz_Barco(char Matriz[][10])
{
Insere_PortaAviao(Matriz);
Insere_Submarino(Matriz);
Insere_Submarino(Matriz);
Insere_Fragata(Matriz);
Insere_Fragata(Matriz);
Insere_Mina(Matriz);
Insere_Mina(Matriz);
Insere_Mina(Matriz);
}
void Exibir_Matriz(char Matriz[][10])
{
int y,z;
printf (" Tabuleiro : Jogador \n\n");
printf (" 1 2 3 4 5 6 7 8 9 10\n");
for (y=0 ; y <= 9; y++)
{
if (y < 9) {printf ("%i ",y+1);}
if (y==9){printf ("%i",y+1);}
for (z=0 ; z <= 9; z++)
{
printf ("|_%c_|",Matriz[z][y]);
}
printf ("\n");
}
printf ("\n");
}
void Exibir_Matriz_Camuflada(char Matriz[][10])
{
int y,z;
printf (" Tabuleiro : Computador \n\n");
printf (" 1 2 3 4 5 6 7 8 9 10\n");
for (y=0 ; y <= 9; y++)
{
if (y < 9) {printf ("%i ",y+1);}
if (y==9) {printf ("%i",y+1);}
for (z=0 ; z <= 9; z++)
{
if (Matriz[z][y] != 'V')
{
if (Matriz[z][y] == 0)
{
printf ("|_ _|");
}
else
{
printf ("|_%c_|",Matriz[z][y]);
}
}
else
{
printf ("|_?_|");
}
}
printf ("\n");
}
printf ("\n");
}
void Computador_Joga(char Matriz[][10],char MatrizX[][10], int)
{
int z,y;
O = 0;
bool Verificador = true;
while (Verificador)
{
z = rand()%10;
y = rand()%10;
if ( MatrizX[z][y] == 'V')
{
if ( Matriz[z][y] != 0 )
{
if ( Matriz[z][y] == 'P' )
{
O++;
Matriz[z][y] = 'X';
printf ("O computador acertou parte de um Porta Aviao\n");
}
if ( Matriz[z][y] == 'S' )
{
Matriz[z][y] = 'X';
O++;
printf ("O computador acertou parte de um Submarino\n");
}
if ( Matriz[z][y] == 'F' )
{
Matriz[z][y] = 'X';
O++;
printf ("O computador acertou parte de uma Fragata\n");
}
if ( Matriz[z][y] == 'M' )
{
Matriz[z][y] = 'X';
O = -50;
printf ("O computador acertou uma Mina\n : Game Over, voce ganhou.\n");
}
}
else
{
Matriz[z][y] = 'A';
printf("O computador jogou : Agua\n");
}
MatrizX[z][y] = Matriz[z][y];
Verificador = false;
}
}
}
void Inicio(char Matriz[][10])
{
Zerar_Matriz(Matriz);
Preencher_Matriz_Barco(Matriz);
}
void Apostar(char Matriz[][10],char Matriz_Camuflada[][10], int)
{
int z,y;
O = 0;
srand (time(NULL));
bool Verificador = true;
while (Verificador)
{
printf ("Digite a coluna que voce deseja atacar (1-10) : ");
scanf ("%i", &z);
printf ("Digite a linha que voce deseja atacar (1-10) : ");
scanf ("%i", &y);
printf ("\n");
z = z - 1;
y = y - 1;
if (Matriz_Camuflada[z][y] == 'V')
{
if ( Matriz[z][y] != 0 )
{
if ( Matriz[z][y] == 'P' )
{
O++;
printf ("Voce acertou parte de um Porta Aviao\n");
}
if ( Matriz[z][y] == 'S' )
{
O++;
printf ("Voce acertou parte de um Submarino\n");
}
if ( Matriz[z][y] == 'F' )
{
O++;
printf ("Voce acertou parte de um Fragata\n");
}
if ( Matriz[z][y] == 'M' )
{
O = -50;
printf ("Voce acertou uma Mina\n Game Over, voce perdeu.\n");
}
}
else
{
printf("Agua\n");
}
Matriz_Camuflada[z][y] = Matriz[z][y];
Verificador = false;
}
else
{
printf ("Jogada invalida.\n\n");
}
}
}
main()
{
int Contador = 0;
int ContadorJogador = 0;
int ContadorComputador = 0;
char Computadorcm[10][10];
char Jogador[10][10];
char Computador[10][10];
char Jogadorcm[10][10];
Inicio(Jogador);
Inicio(Computador);
Exibir_Matriz(Jogador);
Zerar_Matriz_Camuflada(Computadorcm);
Zerar_Matriz_Camuflada(Jogadorcm);
Exibir_Matriz_Camuflada(Computadorcm);
while (Contador >= 0)
{
Contador = 0;
Apostar(Computador,Computadorcm,Contador);
_sleep(1500);
ContadorJogador += O;
if (ContadorJogador < 0) {exit(0); }
else if (ContadorJogador == 23) { printf ("Voce ganhou.\n Parabens."); getch(); exit(0); }
Contador = 0;
Computador_Joga(Jogador,Jogadorcm,Contador);
Exibir_Matriz(Jogador);
Exibir_Matriz_Camuflada(Computadorcm);
_sleep(1500);
ContadorComputador += O;
if (ContadorComputador < 0) {exit(0); }
else if (ContadorJogador == 23) { printf ("Voce perdeu.\n Mais sorte da proxima vez."); getch(); exit(0); }
}
getch();
}
[/codebox]
(Resolvido) Problema batalha naval
em C, C++
Postado
Deu pra tirar umas ideias do q você falou ^^
Ta quase td pronto aqui, falta só consertar alguns erros e tal, quando ficar pronto posto como fiz, usei if no lugar de FSM por ser um trabalho da escola e meu professor ainda n ter ensinado esse método, mas pelo q olhei na internet é tranquilo usar ele...
Mas é só pra ele n reclamar dps sabe...
Obrigado pela ajuda.
Depois quando puder fazer o código posta ae, ficarei agradecido.