Jogo dos Animais

Meu nome é Bruno e estou tentando fazer esse exercicio como teste para começar a trabalhar com java
nao sou muito experiente com a linguagem e cheguei num ponto que nao sei como fazer gostaria de ver se vc pode me ajudar

peço por gentileza para me ajudar o projeto “jogo” até executa mas ele não está agrupando as característica de um animal
por exemplo na primeira vez que roda o jogo
ele pergunta se vive na agua
se não pergunta qual é o animal?
digamos que vc responde “gato” na proxima tela aparece um complete o gato ______“mia” o macaco nao e volta para o inicio do jogo
caso vc escolhe novamente a opção nao vive na agua
vai aparecer uma pergunto O animal mia? se sim pergunta se é gato se nao pede para informar o animal e sua caracteristica
na terceira vez que executa o programa se optar por nao viver na agua e o animal mia pergunta a caractertica do animal que escolheu anteriormente … e assim sucessivamente
porem eles vao agrupando as cararcteristicas por exemplo se o animal mia e nao for gato num segundo momento ele aparece só se a opão mia for selecionada …

falta na verdade agrupar todos os animais com a mesma caracteristica.
mas nao sei o q fazer

[code]package animalarvore;

/**
*

  • @author Bruno
    */
    public class Animal {

    private String nome, caracteristica, Pai;

    @Override
    public String toString() {
    return getNome();
    }

    @Override
    public boolean equals(Object obj) {
    return ((Animal) obj).Pai == this.Pai;
    }

    public String getNome() {
    return nome;
    }

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

    public String getCaracteristica() {
    return caracteristica;
    }

    public void setCaracteristica(String caracteristica) {
    this.caracteristica = caracteristica;
    }

    public String getPai() {
    return Pai;
    }

    public void setPai(String Pai) {
    this.Pai = Pai;
    }
    }[/code]

[code]package animalarvore;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

/**
*

  • @author Bruno
    */
    public class Jogo extends JFrame implements ActionListener {

    boolean chaveTerra, ChaveAgua = false;

    Jogo() {

     JLabel pergunta;
     JButton ok;
    
    
    
     setTitle("Animais");
     setSize(200, 100);
    
     pergunta = new JLabel("Pense em um animal!", JLabel.CENTER);
     pergunta.setForeground(Color.GRAY);
     ok = new JButton();
     ok.setText("Ok");
     ok.addActionListener(this);
     setLocationRelativeTo(null);
     setResizable(false);
     getContentPane().setLayout(new GridLayout(2, 1));
     getContentPane().setBackground(Color.white);
     getContentPane().add(pergunta);
     getContentPane().add(ok);
    

    }

    public static void main(String[] args) {

     JFrame janela = new Jogo();
    
     janela.setVisible(true);
     WindowListener x = new WindowAdapter() {
    
         @Override
         public void windowClosing(WindowEvent e) {
             System.exit(0);
         }
     };
     janela.addWindowListener((x));
    

    }

    @Override
    public void actionPerformed(ActionEvent e) {

     inicio();
    

    }
    Animal animal = new Animal();
    String TUBARAO = “Tubarão”;
    String MACACO = “Macaco”;
    String AGUA = “AGUA”, TERRA = “TERRA”;
    String resposta;
    int quantidadeAgua, quantidadeAguaTerra = 0;
    ArrayList ListAnimalPaiTerra = new ArrayList();
    ArrayList ListaAnimaisTerra = new ArrayList();
    ArrayList ListAnimalPaiAgua = new ArrayList();
    ArrayList ListAnimalAgua = new ArrayList();
    String tipo = “”;
    String venceu, AnimalEscolhido = “”;
    String resp, resp1 = “”;

    public void inicio() {

     venceu = "";
    
     resposta = Pergunta("O Animal que você pensou vive na água?");
     if (resposta.equals("sim")) {
         tipo = AGUA;
         AnimalEscolhido = TUBARAO;
    
         ListarAnimais();
         tubarao();
    
    
    
     } else {
         tipo = TERRA;
    
    
         ListarAnimais();
         macaco();
    
     }
    

    }

    public void tubarao() {
    if (!(ChaveAgua == true)) {

         resposta = Pergunta("O Animal que você pensou é um Tubarão?");
         if (resposta.equals("sim")) {
    
             vitoria();
             ChaveAgua = false;
         } else {
    
             Desisto(tipo, TUBARAO);
         }
    
     }
    

    }

    public void macaco() {
    if (!(chaveTerra == true)) {

         resposta = Pergunta("O Animal que você pensou é um Macaco?");
         if (resposta.equals("sim")) {
    
             vitoria();
             chaveTerra = false;
         } else {
             AnimalEscolhido = MACACO;
             Desisto(tipo, MACACO);
         }
     }
    

    }

    public String Pergunta(String Pergunta) {
    resposta = null;
    int opcoes;
    Object[] botoes = {“Sim”, “Não”};
    opcoes = JOptionPane.showOptionDialog(null, Pergunta, “Confirma”,
    JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, botoes, botoes[0]);
    if (opcoes == JOptionPane.YES_OPTION) {
    resposta = “sim”;

     } else {
         resposta = "não";
    
     }
     return resposta;
    

    }

    public void Desisto(String tipo, String Animal) {
    animal = new Animal();
    animal.setNome(JOptionPane.showInputDialog(null, “Qual Animal que você Pensou”, “Desisto”, 1));
    animal.setCaracteristica(JOptionPane.showInputDialog(null, “Um(a) " + animal.getNome() + " ___________ mas um(a) " + Animal + " não?”, “Complete!”, 1));
    animal.setAnimalPai(Animal);
    ListAnimalPaiTerra.add(animal);
    AnimalEscolhido = animal.getNome();

     if (tipo.equals(TERRA)) {
    
         ListAnimalPaiTerra.add(animal);
         AnimalEscolhido = animal.getNome();
    
     } else if (tipo.equals(AGUA)) {
    
         ListAnimalPaiAgua.add(animal);
         AnimalEscolhido = animal.getNome();
     }
    

    }

    public void ListarAnimais() {

     if (tipo.equals(TERRA)) {
         ListaAnimaisTerra = new ArrayList();
         animal.setNome(AnimalEscolhido);
         for (int i = 0; i < ListaAnimaisTerra.size(); i++) {
             if (ListAnimalPaiTerra.equals(ListaAnimaisTerra.get(i)));
             System.out.print(ListAnimalPaiTerra.get(i).toString());
         }
    
     }
    
     for (int i = 0; i < ListAnimalPaiTerra.size(); i++) {
         Animal animalcaracteristica;
         animalcaracteristica = (Animal) ListAnimalPaiTerra.get(i);
         String Caracteristica = animalcaracteristica.getCaracteristica();
    
         resp = Pergunta("O Animal que você pensou " + Caracteristica + "?");
         if (resp.equals("sim")) {
             Animal animalnome;
             animalnome = (Animal) ListAnimalPaiTerra.get(i);
             String nome = animalnome.getNome();
             resp1 = Pergunta("O Animal que você pensou é " + nome + "?");
    
    
    
             if (resp1.equals("sim")) {
                 chaveTerra = true;
                 vitoria();
                 break;
             } else {
                 Desisto(tipo, nome);
                 chaveTerra = true;
                 break;
    
             }
         } else {
             chaveTerra = false;
    
         }
     }
    

    }

    public void vitoria() {

     JOptionPane.showMessageDialog(null, "Acertei de Novo", "Acertei!", JOptionPane.INFORMATION_MESSAGE);
    

    }
    }
    [/code]

Bom, isso esta me cheirando teste para entrar em uma empresa :wink:

Ja fiz um desse para uma empresa, sem ajuda de nada e entreguei no prazo (2 dias)

se for isso mesmo, cara… tente resolver sozinho e consiga por merito proprio… é tão bom essa sensação :slight_smile:

mas uma dica, vai ter q usar recursividade, pra ir chamando o metodo ate achar o animal…

pense em arvore binaria…

isso que falei (recursividade, arvore binaria) já resolve metade da logica do problema…

pelo menos foi assim que fiz, mas tem N maneiras de fazer