Ir para conteúdo
Fórum Script Brasil

xAcer

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre xAcer

xAcer's Achievements

0

Reputação

  1. 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 */ public class BatalhaNaval { public static void main(String[] args) { Integer[][] campo = new Integer[20][20]; Random r = new Random(); Integer qntTiros = 0; Integer Acertos = 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"); } public static boolean matrizPossuiAlvo(Integer[][] matriz) { for (int linha = 0; linha < 20; linha++) { for (int coluna = 0; coluna < 20; coluna++) { if (matriz[linha][coluna] == 1) { return true; } } } return false; } public static void 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. Desde já Agradeço! att. Ascer
×
×
  • Criar Novo...