Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/05/2013, 05:18
gbarretop
 
Fecha de Ingreso: mayo-2012
Mensajes: 6
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Sistema Experto tipo akinator

Muchas gracias por las respuestas.. Termine haciéndolo con IF ELSE condicionados a las respuestas que debería tener para que sea el anfibio correspondiente, pondré de igual manera el código aquí para que lo evalúen y me puedan decir para la próxima que podría cambiar o como se hace realmente.

Código:
/*
public class SistemaExperto {//clase del sistemaexperto

    public static void main (String[] args){ 
    SistemaExperto_inicio();
    }
    
    public static void SistemaExperto_inicio(){
    int op;//inicializacion de la variable op 
    BufferedReader lee = new BufferedReader(new InputStreamReader( System.in)); 
        try{ 
            System.out.println("Bienvenido al sistema experto de adivinanzas\n\nLa dinamica es la siguiente:\n     *Te presentare 5 anfibios del genero urodelo.\n     *Debes memorizar uno de ellos recordando siempre sus caracteristicas, y yo tratare de adivinar\n      mediante preguntas en cual estas pensando.\n     *Si tu respuesta es afirmativa responde con: 1, si es negativa responde con: 0\n\nElige una opción para comenzar:\n1.- Iniciar sistema experto\n2.- Salir\n\nRespuesta:" ); 
            op = Integer.parseInt(lee.readLine());
            if (op == 1 || op == 2) {//Creo condición si escribio 1 o 2
                switch (op){
                    case 1:
                    Adivinar();
                    break;
                    case 2:
                    System.out.println("\n*******-Nos vemos luego-*******\n" );
                    System.exit(op);
                    break;
                }
            }else{
            System.out.println("\n*******-Ups.. parece que has ingresado un valor no valido-*******\n\n            *******-Intentemoslo nuevamente-*******\n");
            SistemaExperto_inicio();
            }
        }catch(IOException e){
            System.out.println("\n*******-Ups.. parece que has ingresado un valor no valido-*******\n\n            *******-Intentemoslo nuevamente-*******\n");
            SistemaExperto_inicio();
        }catch (Exception e){ 
            System.out.println("\n*******-Ups.. parece que has ingresado un valor no valido-*******\n\n            *******-Intentemoslo nuevamente-*******\n");
            SistemaExperto_inicio();
        }
    }
    
    public static void Adivinar (){//clase Adivinar
        int p;
        int p1;
        int p2;
        int p3;
        int p4;
        int p5;
        int p6;
        int p7;
        int p8;
        int p9;
        int p10;
        int p11;
        BufferedReader leep = new BufferedReader(new InputStreamReader( System.in));
        try{
            Informacion();
            System.out.println("\nElije una opción:\n1- Comenzar\n2.- Me arrepenti, no quiero jugar más\n\nRespuesta:" );
            p = Integer.parseInt(leep.readLine()); 
        switch (p){
        case 1:
        System.out.println("\n- ¿Tu anfibio tiene como caracteristica especial, sensores en su cabeza, la cual utiliza para cazar a sus presas?" );
        p1 = Integer.parseInt(leep.readLine());
        if (p1 == 1 || p1 == 0){
            System.out.println("\n- ¿Tu anfibio pasa por una etapa de metamorfosis?" );
            p2 = Integer.parseInt(leep.readLine());
            if (p2 == 0 || p2 == 1){
                System.out.println("\n- ¿Tu anfibio tiene 5 dedos en sus patas posteriores y 4 en las patas inferiores?" );
                p3 = Integer.parseInt(leep.readLine());
            if (p3 == 0 || p3 == 1){
                System.out.println("\n- ¿Tu anfibio carece de pulmones y respira a través de su piel?" );
                p4 = Integer.parseInt(leep.readLine());/*se cambia el valor de lee a adiv*/
            if (p4 == 0 || p4 == 1){
                System.out.println("\n- ¿Tu anfibio tiene habilidades para cazar en la noche?" );
                p5 = Integer.parseInt(leep.readLine());/*se cambia el valor de lee a adiv*/
            if (p5 == 0 || p5 == 1){
                System.out.println("\n- ¿Tu anfibio realiza su fecundación de manera externa?" );
                p6 = Integer.parseInt(leep.readLine());/*se cambia el valor de lee a adiv*/
            if (p6 == 0 || p6 == 1){
                System.out.println("\n- ¿Tu anfibio tiene dientes angulosos?" );
                p7 = Integer.parseInt(leep.readLine());/*se cambia el valor de lee a adiv*/
            if (p7 == 0 || p7 == 1){
                System.out.println("\n- ¿Tu anfibio muda su cola cada 6 meses?" );
                p8 = Integer.parseInt(leep.readLine());/*se cambia el valor de lee a adiv*/
            if (p8 == 0 || p8 == 1){
                System.out.println("\n- ¿Tu anfibio tiene una caracteristica que posee patrones cromáticos para defensa contra su depredador?" );
                p9 = Integer.parseInt(leep.readLine());/*se cambia el valor de lee a adiv*/
            if (p9 == 0 || p9 == 1){
                System.out.println("\n- ¿Tu anfibio es completamente acuatico?" );
                p10 = Integer.parseInt(leep.readLine());/*se cambia el valor de lee a adiv*/
            if (p10 == 0 || p10 == 1){
                System.out.println("\n- ¿Tu anfibio es de 4 patas?" );
                p11 = Integer.parseInt(leep.readLine());/*se cambia el valor de lee a adiv*/
            if (p11 == 0 || p11 == 1){
                if (p1 == 1 && p2 == 0 && p3 == 0 && p4 == 0 && p5 == 1 && p6 == 1 && p7 == 0 && p8 == 0 && p9 == 0 && p10 == 0 && p11 == 1){
                System.out.println("\n*******-Salamandra Gigante-*******\n" );
                JuguemosNuevamente();
                }else if (p1 == 0 && p2 == 1 && p3 == 0 && p4 == 0 && p5 == 0 && p6 == 1 && p7 == 0 && p8 == 0 && p9 == 0 && p10 == 0 && p11 == 1){
                    System.out.println("\n*******-Salamandra Asiatica-*******\n" );
                    JuguemosNuevamente();
                }else if (p1 == 0 && p2 == 0 && p3 == 0 && p4 == 1 && p5 == 0 && p6 == 0 && p7 == 0 && p8 == 0 && p9 == 0 && p10 == 0 && p11 == 1){
                    System.out.println("\n*******-Salamandra Apulmonada-*******\n" );
                    JuguemosNuevamente();
                }else if (p1 == 0 && p2 == 0 && p3 == 1 && p4 == 0 && p5 == 0 && p6 == 1 && p7 == 0 && p8 == 1 && p9 == 1 && p10 == 0 && p11 == 1){
                    System.out.println("\n*******-Salamándrinos-*******\n" );
                    JuguemosNuevamente();
                }else if (p1 == 0 && p2 == 0 && p3 == 0 && p4 == 0 && p5 == 1 && p6 == 1 && p7 == 0 && p8 == 0 && p9 == 0 && p10 == 1 && p11 == 0){
                    System.out.println("\n*******-Anfiumas-*******\n" );
                    JuguemosNuevamente();
                }else{
                    System.out.println("Estoy seguro que no has memorizado bien las caracteristicas del anfibio que seleccionastes.\nIntentemoslo una vez más" );   
                }
            }}}}}}}}}}}else{
                System.out.println("\n*******-Ups.. parece que has ingresado un valor no valido, recuerda que si tu respuesta\n        es afirmativa debes responder con 1, y si es negativa debes responder con 0-*******\n\n                          *******-Intentemoslo nuevamente-*******");   
                Adivinar();
        }
        break;
        case 2:
        System.out.println("\n*******-Nos vemos luego-*******\n" );
        System.exit(p);
        break;
        }
        }catch(IOException e){
            System.out.println("\n*******-Ups.. parece que has ingresado un valor no valido, recuerda que si tu respuesta\n        es afirmativa debes responder con 1, y si es negativa debes responder con 0-*******\n\n                          *******-Intentemoslo nuevamente-*******");
            Adivinar();
        }catch (Exception e){ 
            System.out.println("\n*******-Ups.. parece que has ingresado un valor no valido, recuerda que si tu respuesta\n        es afirmativa debes responder con 1, y si es negativa debes responder con 0-*******\n\n                          *******-Intentemoslo nuevamente-*******");
            Adivinar();
        } 
    }
    
    public static void Informacion(){
        System.out.println("\n*******-Memoriza las caracteristicas de los siguientes anfibios y comienza el juego-*******" );
        System.out.println("\n*Las anfiumas (Amphiuma): Exhiben un estilo de vida completamente acuático, un cuerpo alargado, sin extremidades.\n Exhiben, además, hábitos nocturnos para cazar, siendo depredadores generalistas. Fecundación externa.\n" );
        System.out.println("*La salamandra gigante del Japón (Andrias japonicus) es una especie de anfibio urodelo de la familia Cryptobranchidae.\n Debido a su escaso sentido de la vista, usa sensores en su cabeza para cazar a su presa en las noches.\n Fecundación de manera externa, es una especie de 4 patas.\n" );
        System.out.println("*Las salamandras asiáticas (Hynobiidae) son un clado de anfibios caudados primitivos.\n Presentan dientes angulosos, fecundación externa (siendo los huevos depositados en bolsas) y una metamorfosis completa, es una especie de 4 patas.\n" );
        System.out.println("*Las salamandras apulmonadas (Plethodontidae) las especies de esta familia son de tamaño reducido,\n careciendo de pulmones. Al no poseer pulmones respiran a través de la piel y los epitelios ubicados en la cavidad bucofaríngea.\n La fecundación es interna y es una especie de 4 patas.\n" );
        System.out.println("*Los salamándridos (Salamandridae) son también conocidos como salamandras o tritones.\n Presentan cuatro extremidades con cinco dedos en las posteriores y cuatro en las anteriores, una cola cada 6 meses y\n por lo general patrones cromáticos llamativos en la piel como medio de disuasión ante potenciales depredadores. Es una especie de 4 patas.\n" );
    }
}