//
//

import java.lang.*;
import java.io.*;
import java.util.*;

class Ahorcado {

    private static Vector ListaPalabras = new Vector();

    public static void main(String args[]) throws IOException {
        int Fase = 1;
        boolean Fin = false;
        DataInputStream Entrada = new DataInputStream(System.in);
        char ch;
        
        String Acertadas = "";
        InicializarListaPalabras2();
        String Palabra = (String)ListaPalabras.elementAt((int)Math.round(Math.random() * (ListaPalabras.size() - 1)));
        while(!Fin) {
            dibuja(Fase);
            EscribirPalabra(Palabra, Acertadas);
            if(Fase == 6 || PalabraAcertada(Palabra, Acertadas)) {
                Fin = true;
            }
            else {
                do {
                    ch = (char) Entrada.readByte();
                }while(ch == '\n' || ch == '\r');
                if(Palabra.indexOf(ch) == -1 || Acertadas.indexOf(ch) != -1) {
                    Fase++;
                }
                if(Acertadas.indexOf(ch) == -1) {
                    Acertadas += String.valueOf(ch);
                }
            }
        }
        if(Fase < 6) {
            dibuja(Fase);
            EscribirPalabra(Palabra, Acertadas);
            System.out.println("\nFELICIDADES!!! Has acertado la palabra.\n");
        }
        else {
            System.out.println("\nNo has conseguido adivinar la palabra oculta: [" + Palabra + "]\n");
        }
    }
    
    public static void InicializarListaPalabras() {
        ListaPalabras.addElement("duque");
        ListaPalabras.addElement("lenguaje");
        ListaPalabras.addElement("programa");
        ListaPalabras.addElement("objeto");
        ListaPalabras.addElement("internet");
        ListaPalabras.addElement("excepcion");
        ListaPalabras.addElement("curso");
        ListaPalabras.addElement("navegador");
        ListaPalabras.addElement("java");
        ListaPalabras.addElement("seguridad");
    }
    
    
    // Lee las palabras de "palabras.txt"

    public static void InicializarListaPalabras2() throws FileNotFoundException, IOException {
        FileInputStream fi = new FileInputStream("palabras.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(fi));
        String buffer;
        
        while((buffer = br.readLine()) != null) {
            ListaPalabras.addElement(buffer);
        }
        br.close();
    }

    public static boolean PalabraAcertada(String Palabra, String Acertadas) {
        int i = 0;
        while(i < Palabra.length()) {
            if(Acertadas.indexOf(Palabra.charAt(i)) == -1) {
                return false;
            }
            i++;
        }
        return true;
    }
    
    public static void EscribirPalabra(String Palabra, String Acertadas) {
        String buffer = "";
        
        for(int i = 0; i < Palabra.length(); i++) {
            if(Acertadas.indexOf(Palabra.charAt(i)) == -1) {
                buffer += "-";
            }
            else {
                buffer += String.valueOf(Palabra.charAt(i));
            }
        }
        System.out.println("  Palabra: [" + buffer + "]    Letras elegidas: <" + Acertadas + ">");
    }
    
    public static void dibuja(int fase) {
        switch(fase) {
        case 1:
            System.out.println("");
            System.out.println("                     ");
            System.out.println("                     ");
            System.out.println("                     ");
            System.out.println("           ooo       ");
            System.out.println("           ooo       ");
            System.out.println("            o        ");
            System.out.println("          ooooo      ");
            System.out.println("         o  o  o     ");
            System.out.println("         o o o o     ");
            System.out.println("           o o       ");
            System.out.println("          o   o      ");
            System.out.println("         o     o     ");
            System.out.println("ooooooooooooooooooooo");
            System.out.println("");
            System.out.println("");
            break;

        case 2:
            System.out.println("");
            System.out.println("   o                 ");
            System.out.println("   o                 ");
            System.out.println("   o                 ");
            System.out.println("   o       ooo       ");
            System.out.println("   o       ooo       ");
            System.out.println("   o        o        ");
            System.out.println("   o      ooooo      ");
            System.out.println("   o     o  o  o     ");
            System.out.println("   o     o o o o     ");
            System.out.println("   o       o o       ");
            System.out.println("   o      o   o      ");
            System.out.println("   o     o     o     ");
            System.out.println("ooooooooooooooooooooo");
            System.out.println("");
            System.out.println("");
            break;

        case 3:
            System.out.println("");
            System.out.println("   oooooooooooo      ");
            System.out.println("   o                 ");
            System.out.println("   o                 ");
            System.out.println("   o       ooo       ");
            System.out.println("   o       ooo       ");
            System.out.println("   o        o        ");
            System.out.println("   o      ooooo      ");
            System.out.println("   o     o  o  o     ");
            System.out.println("   o     o o o o     ");
            System.out.println("   o       o o       ");
            System.out.println("   o      o   o      ");
            System.out.println("   o     o     o     ");
            System.out.println("ooooooooooooooooooooo");
            System.out.println("");
            System.out.println("");
            break;

        case 4:
            System.out.println("");
            System.out.println("   oooooooooooo      ");
            System.out.println("   o   o             ");
            System.out.println("   o  o              ");
            System.out.println("   o o     ooo       ");
            System.out.println("   oo      ooo       ");
            System.out.println("   o        o        ");
            System.out.println("   o      ooooo      ");
            System.out.println("   o     o  o  o     ");
            System.out.println("   o     o o o o     ");
            System.out.println("   o       o o       ");
            System.out.println("   o      o   o      ");
            System.out.println("   o     o     o     ");
            System.out.println("ooooooooooooooooooooo");
            System.out.println("");
            System.out.println("");
            break;

        case 5:
            System.out.println("");
            System.out.println("   oooooooooooo      ");
            System.out.println("   o   o    o        ");
            System.out.println("   o  o     o        ");
            System.out.println("   o o     ooo       ");
            System.out.println("   oo      ooo       ");
            System.out.println("   o        o        ");
            System.out.println("   o      ooooo      ");
            System.out.println("   o     o  o  o     ");
            System.out.println("   o     o o o o     ");
            System.out.println("   o       o o       ");
            System.out.println("   o      o   o      ");
            System.out.println("   o     o     o     ");
            System.out.println("ooooooooooooooooooooo");
            System.out.println("");
            System.out.println("");
            break;

        case 6:
            System.out.println("");
            System.out.println("   oooooooooooo      ");
            System.out.println("   o   o    o        ");
            System.out.println("   o  o     o        ");
            System.out.println("   o o     ooo       ");
            System.out.println("   oo      ooo       ARGGG !!!!!!!");
            System.out.println("   o        o        ");
            System.out.println("   o       ooo       ");
            System.out.println("   o      o o o      ");
            System.out.println("   o     o o o o     ");
            System.out.println("   o       o o       ");
            System.out.println("   o      o   o      ");
            System.out.println("   o      o   o      ");
            System.out.println("ooooooooo o   o ooooo");
            System.out.println("        o       o    ");
            System.out.println("        o       o    ");
            System.out.println("");
            System.out.println("");
        }
    }
}
