Boa tarde pessoal!
Tenho a tarefa de fazer um joguinho de batalha naval, mas estou empacado em alguns pontos:
Quando eu acerto todos os alvos o programa n encerra, só encerra se eu der +1 tiro;
Gerar alvo em Colunas/Vertical;
tentei usar o Try/Catch, porém quando o usuario digita por exemplo uma letra, ele encera o código, como se tivesse ganhado;
tentei criar um metodo para jogar(), porem n teve geito de conseguir chamar o metodo para o main:expressionless: ;
o meu campo mostra aonde estão os navios, gostaria que mostra-se só dps de acertar;
/**
*
* @author ACER
*/publicclassBatalhaNaval{publicstaticvoid main(String[] args){Integer[][] campo =newInteger[20][20];Random r =newRandom();Integer qntTiros =0;IntegerAcertos=0;for(int linha =0; linha <20; linha++){for(int coluna =0; coluna <20; coluna++){
campo[linha][coluna]=0;}}Integer qtAlvosLinha =0;Integer qtAlvosColuna =0;while(qtAlvosLinha <2){Integer linhaAleatoria = r.nextInt(20);Integer colunaAleatoria = r.nextInt(18);if(campo[linhaAleatoria][colunaAleatoria]==1|| campo[linhaAleatoria][colunaAleatoria +1]==1|| campo[linhaAleatoria][colunaAleatoria]+2==1){System.out.println("Alvo já existe "+ linhaAleatoria +", "+ colunaAleatoria);continue;}
qtAlvosLinha++;
campo[linhaAleatoria][colunaAleatoria]=1;
campo[linhaAleatoria][colunaAleatoria +1]=1;
campo[linhaAleatoria][colunaAleatoria +2]=1;System.out.println("Alvo "+ linhaAleatoria +", "+ colunaAleatoria);}while(qtAlvosColuna <2){Integer linhaAleatoria = r.nextInt(18);Integer colunaAleatoria = r.nextInt(20);if(campo[colunaAleatoria][linhaAleatoria]==1|| campo[colunaAleatoria][linhaAleatoria +1]==1|| campo[colunaAleatoria][linhaAleatoria +2]==1){System.out.println("Alvo já existe "+ colunaAleatoria +", "+ linhaAleatoria);continue;}
qtAlvosColuna++;
campo[colunaAleatoria][linhaAleatoria]=1;
campo[colunaAleatoria][linhaAleatoria +1]=1;
campo[colunaAleatoria][linhaAleatoria +2]=1;System.out.println("Alvo Linha: "+ colunaAleatoria +", Coluna : "+ linhaAleatoria);}
boolean possuiAlvo =false;do{try{
imprimeMatriz(campo);Integer coluna =Integer.valueOf(JOptionPane.showInputDialog("Digite uma coluna"));Integer linha =Integer.valueOf(JOptionPane.showInputDialog("Digite uma linha"));
possuiAlvo = matrizPossuiAlvo(campo);if(campo[linha][coluna]<=20){if(campo[linha][coluna]==1){JOptionPane.showMessageDialog(null,"Barco Atingido!");
campo[linha][coluna]=0;Acertos++;
qntTiros++;}else{if(campo[linha][coluna]==0){JOptionPane.showMessageDialog(null,"Tiro na agua!");
qntTiros++;}}}else{JOptionPane.showMessageDialog(null,"Coordenada Invalida");}}catch(Exception e){}}while(possuiAlvo);JOptionPane.showMessageDialog(null,"Parabéns você afundou todos os Barcos, com "+ qntTiros +" Tiros");}publicstatic boolean matrizPossuiAlvo(Integer[][] matriz){for(int linha =0; linha <20; linha++){for(int coluna =0; coluna <20; coluna++){if(matriz[linha][coluna]==1){returntrue;}}}returnfalse;}publicstaticvoid imprimeMatriz(Integer[][] matrizQualquer){System.out.println(" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19");System.out.println(" ________________________________________________________________________________________________________________________");for(int l =0; l <20; l++){System.out.print(l +"");for(int c =0; c <20; c++){System.out.print(" | "+ matrizQualquer[l][c]+" ");}System.out.println("|");System.out.println(" ________________________________________________________________________________________________________________________");}}}
já procurei aqui no forum, e também e varios outros, mais os modelos que encontrei n consegui entender como funciona. Estou na primeira fase cursando Algoritimo.
Pergunta
xAcer
Boa tarde pessoal!
Tenho a tarefa de fazer um joguinho de batalha naval, mas estou empacado em alguns pontos:
Quando eu acerto todos os alvos o programa n encerra, só encerra se eu der +1 tiro;
Gerar alvo em Colunas/Vertical;
tentei usar o Try/Catch, porém quando o usuario digita por exemplo uma letra, ele encera o código, como se tivesse ganhado;
tentei criar um metodo para jogar(), porem n teve geito de conseguir chamar o metodo para o main:expressionless: ;
o meu campo mostra aonde estão os navios, gostaria que mostra-se só dps de acertar;
já procurei aqui no forum, e também e varios outros, mais os modelos que encontrei n consegui entender como funciona. Estou na primeira fase cursando Algoritimo.
Desde já Agradeço!
Editado por xAceratt. Ascer
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.