Jump to content
noorders

Jogo da Batalha Naval Simplificado [AJUDA]

Recommended Posts

noorders

Boa tarde.

Eu tenho que fazer um jogo da Batalha Naval Simplificado onde só existem 3 barcos para afundar do computador cada um de 3 e o utilizador tem de acertar neles escrevendo as suas coordenadas. Mas eu estou com alguns problemas:

1) Consigo arrancar com o programa, inserir uma coordenada e o programa diz-me se acertei ou falhei no alvo. Mas o problema aqui é que quando eu disparo ele diz 3 vezes se acertei ou se falhei quando só deveria dizer uma.*

2) Depois o programa pergunta-me se quero finalizar o jogo o jogo ou continuar.Se escolher finalizar o jogo ele termina mas verifico que tenho mais que 3 coordenadas para cada barco, e além disso as coordenadas são iguais em todos os barcos. O problema da alínea 1) será causado por isto?

3) Se escolher tentar novamente o programa dá o seguinte erro:

run:

Exception in thread "main" java.lang.NullPointerException

at TesteBatalhaNaval.main(TesteBatalhaNaval.java:65)

Java Result: 1

BUILD SUCCESSFUL (total time: 32 seconds)

Neste erro não entendo porque é que neste excerto de código:

//incrementatação das tentativas em coordenadas ainda não atingidas
            String cU = "";
            for (int i = 0; i < numTentativas; i++) {
                cU = coordenadasUtilizadas[i];
                if (cU.equalsIgnoreCase(cd)) {//erro aqui... a variável cU fica-me sempre a null
                    numTentativas++;
                } else {
                    k++;
                    coordenadasUtilizadas[k] = cd;
                }
            }

A variável "cU" me contínua sempre a "null" sem receber o valor. Já tentei com o próprio array e sucedeu o mesmo erro.

Será que me podiam dar uma ajuda?

Fico agradecido pela vossa colaboração.

Cumprimentos

Classe Main TesteBatalhaNaval

import javax.swing.JOptionPane;

public class TesteBatalhaNaval {

    public static void main(String[] args) {
        //instância de um vector de três barcos
        Barco vec[] = new Barco[3];

        //instância da Classe Grelha
        Grelha g1 = new Grelha();

        //mapa onde serão colocados os barcos aleatóriamente
        Object mapa[][] = new Object[7][7];

        //instânciação de 3 barcos da Classe Barco
        Barco b1 = new Barco("E.U.A.");
        Barco b2 = new Barco("AFEGANISTÃO");
        Barco b3 = new Barco("VENEZUELA");

        vec[0] = b1;
        vec[1] = b2;
        vec[2] = b3;

        mapa = g1.colocarBarcos(vec);//mapa com os barcos colocados aleatóriamente

        String finalizar = "";
        String coordenadasUtilizadas[] = new String[100];
        int k = 0;
        int numTentativas = 1;

        //consola
        while ((vec[0].getEstadoDoBarco() > 0 && vec[1].getEstadoDoBarco() > 0 && vec[2].getEstadoDoBarco() > 0) || finalizar.equalsIgnoreCase("F")) {
            String coordenadas = JOptionPane.showInputDialog("Combinações de coordenadas possíveis:"
                    + "\nLinhas:    A B C D E F G"
                    + "\nColinhas:  0 1 2 3 4 5 6"
                    + "\nDigite as coordenadas do alvo a abater: ");
            String cd = coordenadas;
            char coord1 = coordenadas.charAt(0);
            char coord2 = coordenadas.charAt(1);
            String txt = "";
            //disparar nos barcos
            for (int i = 0; i < vec.length; i++) {
                if (vec[i].getEstadoDoBarco() > 0) {
                    txt = vec[i].disparar(coord1, coord2, mapa);
                    JOptionPane.showMessageDialog(null, txt, "\nNúmero de tentativas utilizadas: %d", numTentativas);//o programa no output nao escreve o valor desta variavel e fica simplesmente %d
                }
            }


            finalizar = JOptionPane.showInputDialog("Deseja tentar novamente ou terminar o jogo?\nT - Tentar Novamente\nF - Finalizar Jogo");
            if (finalizar.equalsIgnoreCase("F")) {
                JOptionPane.showMessageDialog(null, "Jogo finalizado!\n"
                        + "Coordenadas dos barcos:\n"
                        + vec[0].getNome() + " Coordenadas: " + vec[0].getCoordenadas(mapa) + "\n"
                        + vec[1].getNome() + " Coordenadas: " + vec[1].getCoordenadas(mapa) + "\n"
                        + vec[2].getNome() + " Coordenadas: " + vec[2].getCoordenadas(mapa) + "\n"
                        + "Tentativas utilizadas: " + numTentativas);
            }

            //incrementatação das tentativas em coordenadas ainda não atingidas
            String cU = "";
            for (int i = 0; i < numTentativas; i++) {
                cU = coordenadasUtilizadas[i];
                if (cU.equalsIgnoreCase(cd)) {//erro aqui... a variável cU fica-me sempre a null
                    numTentativas++;
                } else {
                    k++;
                    coordenadasUtilizadas[k] = cd;
                }
            }

        }
    }
}

Classe Barco:

public class Barco {
    //váriável de classe

    //instãncias da Classe Barco
    private String nome;
    private boolean acerto;
    private String coordenadas;
    private int estadoDoBarco;
    private boolean afundou;

    //construtores
    public Barco(String nome) {
        this.nome = nome;
        this.acerto = false;
        this.coordenadas = "";
        this.estadoDoBarco = 3;
        this.afundou = false;
    }

    //Getter && Setter
    public boolean getAcerto() {
        return acerto;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCoordenadas(Object[][] mat) {
        for (int i = 0; i < mat.length; i++) {
            for (int j = 0; j < mat[i].length; j++) {
                if (mat[i][j] != null) {
                    coordenadas += converterCoordenadas(i) + j+" ";
                }
            }
        }
        return coordenadas;
    }

    public int getEstadoDoBarco() {
        return estadoDoBarco;
    }

//métodos
    //método para disparar
    public String disparar(char coord1, char coord2, Object[][] mapa) {
        int lin=0;
        //conversão das coordenadas para int
        switch (coord1) {
            case 'A':
            case 'a':
                lin = 0;
                break;
            case 'B':
            case 'b':
                lin = 1;
                break;
            case 'C':
            case 'c':
                lin = 2;
                break;
            case 'D':
            case 'd':
                lin = 3;
                break;
            case 'E':
            case 'e':
                lin = 4;
                break;
            case 'F':
            case 'f':
                lin = 5;
                break;
            case 'G':
            case 'g':
                lin = 6;
                break;
            default:
                String.format("Erro! Coordenada inválida. Coordenada 0 colocada por omissão");
                coord1 = 0;
        }
        String txt_col = String.valueOf(coord2);//converter char para String
        int col = Integer.parseInt(txt_col);//converter String para int
        String txt = "";
        acerto = verificarDisparo(lin, col, mapa);
        if (acerto == true) {
            estadoDoBarco--;
            txt = String.format("ACERTOU no barco %s",nome,"!");
            if (estadoDoBarco == 0) {
                afundou = true;
                txt = String.format("AFUNDOU o barco %s",nome,"!");
            }
        } else {
            txt = String.format("FALHOU!");
        }
        return txt;
    }

    //método para verificar o disparo
    private boolean verificarDisparo(int lin, int col, Object mapa[][]) {
        boolean flag = false;
        if (mapa[lin][col] != null) {
            flag = true;
        }
        return flag;
    }

    //método para converter as coordenadas
    private String converterCoordenadas(int i) {
        String txt = "";
        switch (i) {
            case 0:
                txt = "A";
                break;
            case 1:
                txt = "B";
                break;
            case 2:
                txt = "C";
                break;
            case 3:
                txt = "D";
                break;
            case 4:
                txt = "E";
                break;
            case 5:
                txt = "F";
                break;
            case 6:
                txt = "G";
                break;
        }
        return txt;
    }
}

Classe Grelha:

# public class Grelha {  
#     //instância da Classe Grelha  
#   
#     private Object[][] mat = new Object[7][7];  
#   
#     //método para colocar barcos  
#     public Object[][] colocarBarcos(Barco b[]) {  
#         int lin, col, lin1 = 0, col1 = 0, lin2 = 0, col2 = 0;  
#         //atribuir aleatoriamente as coordenadas dos barcos  
#         for (int i = 0; i < b.length; i++) {  
#             lin = 0 + (int) (6 * Math.random());  
#             col = 0 + (int) (6 * Math.random());  
#             //para fazer o barco ocupar 3 posições na grelha  
#             switch (lin) {//para as linhas  
#                 case 0:  
#                     lin1 = lin + 1;  
#                     lin2 = lin + 2;  
#                     break;  
#                 case 1:  
#                     lin1 = lin - 1;  
#                     lin2 = lin + 1;  
#                     break;  
#                 case 2:  
#                     lin1 = lin - 1;  
#                     lin2 = lin + 1;  
#                     break;  
#                 case 3:  
#                     lin1 = lin - 1;  
#                     lin2 = lin + 1;  
#                     break;  
#                 case 4:  
#                     lin1 = lin - 1;  
#                     lin2 = lin + 1;  
#                     break;  
#                 case 5:  
#                     lin1 = lin - 1;  
#                     lin2 = lin + 1;  
#                     break;  
#                 case 6:  
#                     lin1 = lin - 1;  
#                     lin2 = lin - 2;  
#                     break;  
#             }  
#             switch (col) {//para as colunas  
#                 case 0:  
#                     col1 = col + 1;  
#                     col2 = col + 2;  
#                     break;  
#                 case 1:  
#                     col1 = col - 1;  
#                     col2 = col + 1;  
#                     break;  
#                 case 2:  
#                     col1 = col + 1;  
#                     col2 = col + 1;  
#                     break;  
#                 case 3:  
#                     col1 = col + 1;  
#                     col2 = col + 1;  
#                     break;  
#                 case 4:  
#                     col1 = col + 1;  
#                     col2 = col + 1;  
#                     break;  
#                 case 5:  
#                     col1 = col + 1;  
#                     col2 = col + 1;  
#                     break;  
#                 case 6:  
#                     col1 = col - 1;  
#                     col2 = col - 2;  
#                     break;  
#             }  
#             //o mapa recebe as 3 partes do barco aletoriamente colocado  
#             mat[lin][col] = b[i];  
#             mat[lin1][col1] = b[i];  
#             mat[lin2][col2] = b[i];  
#         }  
#         return mat;  
#     }  
# }

Share this post


Link to post
Share on other sites
rippp


//incrementatação das tentativas em coordenadas ainda não atingidas
            String cU = new String();
            for (int i = 0; i < numTentativas; i++) {
                cU = coordenadasUtilizadas[i].toString();
                if (cU.equalsIgnoreCase(cd)) {//erro aqui... a variável cU fica-me sempre a null
                    numTentativas++;
                } else {
                    k++;
                    coordenadasUtilizadas[k] = cd;
                }
            }

maybe...

Exception in thread "main" java.lang.NullPointerException  <-- acho que é por nao teres inicialisado a sting...

at TesteBatalhaNaval.main(TesteBatalhaNaval.java:65)

Java Result: 1


Java, Android developerhttp://minimalcode.net

Share this post


Link to post
Share on other sites
noorders

Viva.

Obrigado aos dois pela vossa participação. Esse erro da variável "cU" já está resolvido.

Mas por exemplo, nesta linha da Main Classe TesteBatalhaNaval:

JOptionPane.showMessageDialog(null, txt, "\nNúmero de tentativas utilizadas: %d", numTentativas);//o programa no output nao escreve o valor desta variavel e fica simplesmente %d

E depois tenho o problema de ter bem mais de 3 posições por cada barco e elas serem todas iguais (os barcos têm o mais de 3 posíções no mapa quando só deviam ter 3, e também têm a mesma localização).

Sugestões?

Cumprimentos

Share this post


Link to post
Share on other sites
noorders

Viva.

Já resolvi esse problema...

Agora onde estou à rasca é que cada barco tem de ter 3 posições, mas elas são bem mais de 3 e ainda por cima são todas iguais (os barcos têm o mais de 3 posições no mapa quando só deviam ter 3, e também têm a mesma localização).

Outra coisa que não entendo é no meu ciclo while() da classe Main TesteBatalhaNaval, quando eu primo "F" para finalizar o jogo ele não termina logo e roda mais uma vez voltando a pedir ao utilizador as coordenadas para um novo disparo.

Podem ajudar?

Cumprimentos

Share this post


Link to post
Share on other sites
rippp

a variavel finalizar aceita apenas 1 caracter?? se sim podes declara-la como char finalizar e assim por ser um tipo primitivo podes compara-la com == ao F.

Eu nao entendi é se o programa roda mais uma vez e termina ou se nao termina..


Java, Android developerhttp://minimalcode.net

Share this post


Link to post
Share on other sites
noorders

Boas...

ripp, essa variável aceita mais que um caracter mas eu só lhe introduzia o "F" e o programa continuava a roda como que se nada fosse. Resolvi o problema com esta linha de código quando se verificas-se a situação:

System.exit(0)

Adiante, o código está comentado, incluindo as zonas que precisam de ser melhoradas.

Por exemplo, quando falho um disparo em todos os barcos não haveria hipótese de em vez de estar a dizer para todos os barcos que falhei dizer um só vez falhou?(Classe Barco método disparar() )

Não sei se a variável numTentativas está a incrementar bem.(Main Classe)

Tenho lá um ciclo if() para quando o utilizador não introduz nenhuma coordenada que acho que o programa não está a passar por lá por causa de inserir coordenadas repetidas e o programa continuar sempre a rodar sem me notificar com o devido outup. (Main Classe)

Deixo em baixo as últimas alterações que fiz no meu código, Se me conseguirem ajudar mais muito obrigado.

Cumprimentos

Classe Barco:

public class Barco {
   //váriável de classe

   //instãncias da Classe Barco
   private String nome;
   private boolean acerto;
   private String coordenadas;
   private int estadoDoBarco;
   private boolean afundou;

   //construtores -------------------------------------------------------------
   public Barco(String nome) {
       this.nome = nome;
       this.acerto = false;
       this.coordenadas = "";
       this.estadoDoBarco = 3;
       this.afundou = false;
   }

   //Gets ---------------------------------------------------------------------
   public boolean getAcerto() {
       return acerto;
   }

   public String getNome() {
       return nome;
   }

   public String getCoordenadas() {
       return coordenadas;
   }

   public int getEstadoDoBarco() {
       return estadoDoBarco;
   }

   //Sets ---------------------------------------------------------------------
   public void setNome(String nome) {
       this.nome = nome;
   }

   public void setCoordenadas(String coordenadas) {
       this.coordenadas = coordenadas;
   }

//métodos ----------------------------------------------------------------------
   //método para disparar
   public String disparar(char coord1, char coord2, Object[][] mapa) {
       int lin = 0;
       //conversão das coordenadas para int
       switch (coord1) {
           case 'A':
           case 'a':
               lin = 0;
               break;
           case 'B':
           case 'b':
               lin = 1;
               break;
           case 'C':
           case 'c':
               lin = 2;
               break;
           case 'D':
           case 'd':
               lin = 3;
               break;
           case 'E':
           case 'e':
               lin = 4;
               break;
           case 'F':
           case 'f':
               lin = 5;
               break;
           case 'G':
           case 'g':
               lin = 6;
               break;
           default:
               String.format("Erro! Coordenada inválida. Coordenada 0 colocada por omissão");
               coord1 = 0;
       }
       String txt_col = String.valueOf(coord2);//converter char para String
       int col = Integer.parseInt(txt_col);//converter String para int
       String txt = "";
       acerto = verificarDisparo(lin, col);
       if (acerto == true) {
           estadoDoBarco--;
           txt = String.format("ACERTOU no barco %s", nome, "!");
           if (estadoDoBarco == 0) {
               afundou = true;
               txt = String.format("AFUNDOU o barco %s", nome, "!");
           }
       } else {
           txt = String.format("FALHOU o barco %s", nome, "!");
       }
       return txt;
   }

   //método para verificar o disparo
   private boolean verificarDisparo(int lin, int col) {
       boolean flag = false;
       String coordBarco [] = new String [3];
       String cb="";
       //transporte das coordenadas para um array de Strings
       for (int i = 0; i < coordBarco.length; i++) {
           cb = getCoordenadas();
           coordBarco = cb.split(",");
       }
       //verificação das coordenadas de cada barco
       String disp = converterCoordenadas(lin)+col;
       for (int i = 0; i < coordBarco.length; i++) {
           if(disp.equalsIgnoreCase(coordBarco[i])){
               flag=true;
           }
       }
       return flag;
   }

   //método para converter as coordenadas
   public String converterCoordenadas(int i) {
       String txt = "";
       switch (i) {
           case 0:
               txt = "A";
               break;
           case 1:
               txt = "B";
               break;
           case 2:
               txt = "C";
               break;
           case 3:
               txt = "D";
               break;
           case 4:
               txt = "E";
               break;
           case 5:
               txt = "F";
               break;
           case 6:
               txt = "G";
               break;
       }
       return txt;
   }
}

Classe Grelha:

public class Grelha {
   //instância da Classe Grelha

   private Object[][] mat = new Object[7][7];

   //método para colocar barcos
   public Object[][] colocarBarco(Barco[] b) {
       int lin, col, lin1 = 0, col1 = 0, lin2 = 0, col2 = 0;
       //atribuir aleatoriamente as coordenadas dos barcos
       for (int i = 0; i < 3; i++) {
           lin = 0 + (int) (6 * Math.random());
           col = 0 + (int) (6 * Math.random());
           //para fazer o barco ocupar 3 posições na grelha
           switch (lin) {//para as linhas
               case 0:
                   lin1 = lin + 1;
                   lin2 = lin + 2;
                   break;
               case 1:
                   lin1 = lin - 1;
                   lin2 = lin + 1;
                   break;
               case 2:
                   lin1 = lin - 1;
                   lin2 = lin + 1;
                   break;
               case 3:
                   lin1 = lin - 1;
                   lin2 = lin + 1;
                   break;
               case 4:
                   lin1 = lin - 1;
                   lin2 = lin + 1;
                   break;
               case 5:
                   lin1 = lin - 1;
                   lin2 = lin + 1;
                   break;
               case 6:
                   lin1 = lin - 1;
                   lin2 = lin - 2;
                   break;
           }
           switch (col) {//para as colunas
               case 0:
                   col1 = col + 1;
                   col2 = col + 2;
                   break;
               case 1:
                   col1 = col - 1;
                   col2 = col + 1;
                   break;
               case 2:
                   col1 = col + 1;
                   col2 = col + 1;
                   break;
               case 3:
                   col1 = col + 1;
                   col2 = col + 1;
                   break;
               case 4:
                   col1 = col + 1;
                   col2 = col + 1;
                   break;
               case 5:
                   col1 = col + 1;
                   col2 = col + 1;
                   break;
               case 6:
                   col1 = col - 1;
                   col2 = col - 2;
                   break;
           }
           //o mapa recebe as 3 partes do barco aletoriamente colocado
           //3 partes do barco na matriz
           mat[lin][col] = b[i];
           mat[lin1][col1] = b[i];
           mat[lin2][col2] = b[i];

           //3 partes do barco a serem convertidas
           String lin_txt = b[i].converterCoordenadas(lin);
           String lin_txt1 = b[i].converterCoordenadas(lin1);
           String lin_txt2 = b[i].converterCoordenadas(lin2);

           //envio das coordenadas para cada barco
           String coordenadasTotais_txt = lin_txt + col + "," + lin_txt1 + col1 + "," + lin_txt2 + col2;
           b[i].setCoordenadas(coordenadasTotais_txt);
       }
       return mat;
   }

   //método para converter as coordenadas
   public String converterCoordenadas(int i) {
       String txt = "";
       switch (i) {
           case 0:
               txt = "A";
               break;
           case 1:
               txt = "B";
               break;
           case 2:
               txt = "C";
               break;
           case 3:
               txt = "D";
               break;
           case 4:
               txt = "E";
               break;
           case 5:
               txt = "F";
               break;
           case 6:
               txt = "G";
               break;
       }
       return txt;
   }
}

Main Classe TesteBatalhaNaval:

import java.util.ArrayList;
import javax.swing.JOptionPane;

public class TesteBatalhaNaval {

   public static void main(String[] args) {
       //instância de um vector de três barcos
       Barco vec[] = new Barco[3];

       //instância da Classe Grelha
       Grelha g1 = new Grelha();

       //mapa onde serão colocados os barcos aleatóriamente
       Object mapa[][] = new Object[7][7];

       //instânciação de 3 barcos da Classe Barco
       Barco b1 = new Barco("E.U.A.");
       Barco b2 = new Barco("AFEGANISTÃO");
       Barco b3 = new Barco("VENEZUELA");

       vec[0] = b1;
       vec[1] = b2;
       vec[2] = b3;

       mapa = g1.colocarBarco(vec);//mapa com os barcos colocados aleatóriamente

       String opcao = "";
       boolean finalizar = false;
       boolean coordRep = false;
       int numTentativas = 1;
       ArrayList coordenadasUtilizadas = new ArrayList();
       String coordenadas = "";
       char coord1;
       char coord2;
       int h = 1;

       //output para o utilizador
       while ((b1.getEstadoDoBarco() > 0 && b2.getEstadoDoBarco() > 0 && b3.getEstadoDoBarco() > 0) || finalizar == true) {
           coordenadas = JOptionPane.showInputDialog("Combinações de coordenadas possíveis:"
                   + "\nLinhas:    A B C D E F G"
                   + "\nColunas:  0 1 2 3 4 5 6"
                   + "\nDigite as coordenadas do alvo a abater: ");
           coordenadasUtilizadas.add(coordenadas);


           if (h > 1) {
               //incrementatação das tentativas em coordenadas ainda não atingidas
               numTentativas = coordenadasRepetidas(numTentativas, coordenadas, coordenadasUtilizadas);
           }

           //se não forem inseridas coordenadas válidas
           //este if() não estão a funcionar
           if (coordenadas.equalsIgnoreCase("")) {
               JOptionPane.showMessageDialog(null, "Erro! Coordenada não inserida.\nPor omissão coordenada: A0");
               coordenadas = "A0";
           }

           //conversão variavel String coordenadas em duas variaveis char
           coord1 = coordenadas.charAt(0);
           coord2 = coordenadas.charAt(1);



           //disparar nos barcos
           String txt = "";
           for (int i = 0; i < vec.length; i++) {
               if (vec[i].getEstadoDoBarco() > 0) {
                   txt = vec[i].disparar(coord1, coord2, mapa);
                   JOptionPane.showMessageDialog(null, txt);
               }
           }

           //opção que condiciona o ciclo while onde o menu de jogo é exposto
           opcao = JOptionPane.showInputDialog("Deseja tentar novamente ou terminar o jogo?\nT - Tentar Novamente\nF - Finalizar Jogo\nC - Consultar estado dos barcos");

           //condição que termina o ciclo while()
           if (opcao.equalsIgnoreCase("F")) {
               JOptionPane.showMessageDialog(null, "Jogo finalizado!\n"
                       + "Coordenadas dos barcos:\n"
                       + b1.getNome() + " Coordenadas: " + b1.getCoordenadas() + "\n"
                       + b2.getNome() + " Coordenadas: " + b2.getCoordenadas() + "\n"
                       + b3.getNome() + " Coordenadas: " + b3.getCoordenadas() + "\n"
                       + "Tentativas utilizadas: " + numTentativas);
               finalizar = true;
               System.exit(0);//fecha a consola
           } else {
               //consultar o estado dos barcos
               while (opcao.equalsIgnoreCase("C")) {
                   if (opcao.equalsIgnoreCase("C")) {
                       JOptionPane.showMessageDialog(null, "Estado dos Barcos!\n"
                               + b1.getNome() + " Coordenadas: " + b1.getEstadoDoBarco() + "\n"
                               + b2.getNome() + " Coordenadas: " + b2.getEstadoDoBarco() + "\n"
                               + b3.getNome() + " Coordenadas: " + b3.getEstadoDoBarco() + "\n");
                       opcao = JOptionPane.showInputDialog("Deseja tentar novamente ou terminar o jogo?\nT - Tentar Novamente\nF - Finalizar Jogo\nC - Consultar estado dos barcos");
                   }
               }
           }
           h++;//variavel que aprova o acesso ao método coordenadasRepetidas() após o primeiro disparo
       }


   }

   //atribuir uma coordenada aletatoriamente
   public static int coordenadasRepetidas(int numTent, String coord, ArrayList coordUt) {
       coordUt = new ArrayList();
       String txt = "";
       do {
           for (Object obj : coordUt) {
               if (obj.equals(coord)) {//comparação do ArrayList com as coordenadas Inseridas.
                   JOptionPane.showMessageDialog(null, "Erro! Coordenada " + coord + " já inserida.");
                   //atribuição de um disparo aleatório
                   txt = coord;
                   coord = disparoAleatorio();
               } else {
                   coordUt.add(coord);
                   JOptionPane.showMessageDialog(null, "Cordenada inserida automáticamente: " + coord + "\nBoa sorte!");
               }
           }
       } while (coord.equalsIgnoreCase(txt));
       numTent++;
       return numTent;
   }

   //método para fazer disparo aleatório
   public static String disparoAleatorio() {
       String txt = "";
       int lin = 0 + (int) (6 * Math.random());
       int col = 0 + (int) (6 * Math.random());
       txt = converterCoordenadas(lin) + col;
       return txt;
   }

   //método para converter as coordenadas
   public static String converterCoordenadas(int i) {
       String txt = "";
       switch (i) {
           case 0:
               txt = "A";
               break;
           case 1:
               txt = "B";
               break;
           case 2:
               txt = "C";
               break;
           case 3:
               txt = "D";
               break;
           case 4:
               txt = "E";
               break;
           case 5:
               txt = "F";
               break;
           case 6:
               txt = "G";
               break;
       }
       return txt;
   }
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.