Foro de elhacker.net

Programación => Java => Mensaje iniciado por: sheiking en 1 Abril 2019, 18:30 pm



Título: ayuda con recursividad juego de adivinar animales
Publicado por: sheiking en 1 Abril 2019, 18:30 pm
hola que tal estoy haciendo un juego de adivinar animales pero necesito hacerlo recursivo pero no tengo idea de como aplicar la recursion
aquí les comparto el código 

Código
  1. package evidencia;
  2.  
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.ObjectInputStream;
  8. import java.io.ObjectOutputStream;
  9. import java.io.Serializable;
  10.  
  11.  
  12. public class Juego implements Serializable {
  13.  
  14.  
  15.    public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
  16.  
  17.        FileInputStream Fi = new FileInputStream("respuestas.txt");
  18.        ObjectInputStream in = new ObjectInputStream(Fi);
  19.        Memoria memory = (Memoria)in.readObject();
  20.        memory.iniciar("vaca");
  21.  
  22.        FileOutputStream out = new FileOutputStream("respuestas.txt");
  23.        ObjectOutputStream os = new ObjectOutputStream(out);
  24.        os.writeObject(memory);
  25.  
  26.  
  27.    }
  28.  
  29. }
  30.  

Código
  1. package evidencia;
  2.  
  3. import java.io.Serializable;
  4.  
  5.  
  6. public class Arbol<E> implements Serializable {
  7.    public Arbol izquierda;
  8.    public Arbol derecha;
  9.    public E carga;
  10.  
  11.    public Arbol() {
  12.    }
  13.  
  14.  
  15.    public Arbol(Arbol izquierda,Arbol derecha, E carga){
  16.        this.izquierda = izquierda;
  17.        this.derecha = derecha;
  18.        this.carga = carga;
  19.    }
  20.    public Arbol(E cargar){
  21.        this.izquierda = null;
  22.        this.derecha = null;
  23.        this.carga = cargar;
  24.    }
  25.    @Override
  26.    public String toString(){
  27.        return carga.toString();
  28.    }
  29. }
  30.  
  31.  

Código
  1. package evidencia;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.Serializable;
  7.  
  8.  
  9.  
  10. public class Memoria implements Serializable {
  11.    private Arbol raiz;
  12.    static BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
  13.  
  14.    public boolean si(String pregunta) throws IOException{
  15.        System.out.println(pregunta);
  16.  
  17.        String respuesta = sc.readLine();
  18.  
  19.        return "si".equals(respuesta.toLowerCase());
  20.    }
  21.  
  22.    public void iniciar(String firstAnimal) throws IOException{
  23.        boolean bucle = true;
  24.        if(raiz == null){
  25.        raiz = new Arbol(firstAnimal);
  26.        }
  27.        while(bucle){
  28.            if (!si("¿Estas pensando en un Animal?")) {
  29.                break;
  30.            }
  31.            Arbol arbol = raiz;
  32.            while(arbol.izquierda !=null){
  33.                if (si(arbol.carga+"?")) {
  34.                    arbol = arbol.izquierda;
  35.                }else{
  36.                    arbol = arbol.derecha;
  37.                }
  38.            }
  39.            String animal = (String) arbol.carga;
  40.            if (si("Es un "+animal+"?")) {
  41.                System.out.println("Adivine!!");
  42.                continue;
  43.            }
  44.            if(arbol.derecha == null){
  45.            System.out.println("¿Que animal era?");
  46.            String nuevo = sc.readLine();
  47.            System.out.println("que diferencia a un(a) " +animal+ " de un "+nuevo+"?");
  48.            String info = sc.readLine();
  49.            String indicador = "Si el animal fuera un(a) "+animal+" cual seria la respuesta";
  50.            arbol.carga = info;
  51.  
  52.            if (si(indicador)) {
  53.                arbol.izquierda = new Arbol(animal);
  54.                arbol.derecha = new Arbol(nuevo);
  55.            }else{
  56.                arbol.derecha = new Arbol(animal);
  57.                arbol.izquierda = new Arbol(nuevo);
  58.            }
  59.            }else{
  60.                System.out.println(arbol.derecha);
  61.            }
  62.        }
  63.    }
  64. }
  65.