
Rafael AB
Membros-
Total de itens
7 -
Registro em
-
Última visita
Sobre Rafael AB

Rafael AB's Achievements
0
Reputação
-
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.
-
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. Você 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...
-
Eu li a pouco tempo o livro Programação de Jogos com C++ e DirectX do André Santee. Muito interessante para você que deseja programar jogos em C++. Espero ter ajudado.
-
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]