package GUI;

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class GUI_1 extends JFrame  {

    //Crear Ejercicio de adivinar una palabra.
    JPanel panelEstadisticas = new JPanel();
    JPanel panelJuego = new JPanel();
    JPanel panelBotones = new JPanel();

    Container panelPrincipal = this.getContentPane();

    String[] palabras = {"SALTAR", "CORRER", "CAMINAR", "JUGAR", "NADAR"};

    ArrayList<String> letras = new ArrayList();
    
    
    //Variables de estadísticas
    int numLetrasDichas = 0;
    int numCantidadLetrasPalabra = 0;
    int numLetrasRestantes = 0;

    //Variables importantes
    static String palabra = "", palabraEncriptada = "";

    //Variables de Etiquetas
    JLabel estadistica1 = new JLabel("Número de Letras Dichas: " + numLetrasDichas);

    JLabel estadistica2 = new JLabel("Número de Letras DE PALABRA: " + numCantidadLetrasPalabra);

    JLabel estadistica3 = new JLabel("");

    static JLabel palabraBloqueada = new JLabel();
    static JLabel palabraCompleta = new JLabel();

    String[] abecedario = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "Ñ", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
    JButton[] letrasBotones = new JButton[abecedario.length];

    GUI_1() {
        //Se define el tamaño del JFRAME
        this.setBounds(250, 50, 850, 600);
        //Se define el título del JFRAME.
        this.setTitle("Juego de la ADIVINANZA");
        //Se define la imagen de icono de JFRAME.
        this.setIconImage(new ImageIcon("C:\\Users\\Diurno\\Desktop\\tres.png").getImage());

        // SUPERIMPORTANTE, PORQUE SI NO, LO MISMO NO FUNCIONA
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);

        panelEstadisticas.setBackground(Color.RED);
        panelJuego.setBackground(Color.LIGHT_GRAY);
        panelBotones.setBackground(Color.PINK);

        //JLabel de ESTADÍSTICAS
        estadistica1.setFont(new Font("Roboto", Font.BOLD, 20));
        estadistica2.setFont(new Font("Roboto", Font.BOLD, 20));
        estadistica3.setFont(new Font("Roboto", Font.BOLD, 20));
        
        //PANEL DE ESTADÍSTICAS.
        panelEstadisticas.setLayout(new GridLayout(3, 1));
        panelEstadisticas.add(estadistica1);
        panelEstadisticas.add(estadistica2);
        panelEstadisticas.add(estadistica3);

        //PANEL DE JUEGO
        Random rd = new Random();
        palabra = palabras[rd.nextInt(palabras.length)];

        //Encriptando palabra
        for (int i = 0; i < palabra.length(); i++) {
            palabraEncriptada += "_ ";
        }
        palabraBloqueada.setText(palabraEncriptada);
        panelJuego.add(palabraBloqueada);
        
        //CUANDO TENGO LA PALABRAS
        numLetrasRestantes = palabra.length();
        estadistica3.setText("Número de Letras RESTANTES: " + numLetrasRestantes);

        palabraBloqueada.setFont(new Font("Roboto", Font.BOLD, 30));

        palabraCompleta.setText(palabra);
        //panelJuego.add(palabraCompleta);

        for (int i = 0; i < letrasBotones.length; i++) {
            JButton boton = new JButton(abecedario[i]);
            letrasBotones[i] = boton;
            boton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    //Eventos que se produce al dar click al botón.
                    boton.setEnabled(false);

                    descubrirPalabra(e.getActionCommand());
                }
            });

            panelBotones.add(boton);

            //Acciones de botón.
        }

        //Se visibiliza los paneles
        panelEstadisticas.setVisible(true);
        panelJuego.setVisible(true);
        panelBotones.setVisible(true);

        panelPrincipal.setLayout(new GridLayout(3, 0));
        panelPrincipal.add(panelEstadisticas);
        panelPrincipal.add(panelJuego);
        panelPrincipal.add(panelBotones);
    }

    public void descubrirPalabra(String letra) {

        if (palabraCompleta.getText().contains(letra)) {
            letras.add(letra);
            
            palabraBloqueada.setText("");
            String resultado = "";
            boolean existeLetra = false;
            for (int i = 0; i < palabraCompleta.getText().length(); i++) {
                //Existe búscame la letra para descubrirla
                existeLetra = false;
                for (int j = 0; j < letras.size(); j++) {
                    
                    if ((palabraCompleta.getText().charAt(i) + "").equals(letras.get(j))) {
                        existeLetra = true;

                    }
                }

                    if (existeLetra) {
                        resultado += palabraCompleta.getText().charAt(i);
                        

                        
                    } else {
                        resultado += "_ ";
                    }
                
            }
            
            //Para calcular cantidadLetras.
            System.out.println(palabraBloqueada.getText());
            numLetrasRestantes = 0;
            System.out.println(palabraBloqueada.getText());
            numCantidadLetrasPalabra=0;
            numLetrasRestantes=0;
            for (int i = 0; i < resultado.length(); i++) {
                
                
                if (resultado.charAt(i) == '_'){
                    numLetrasRestantes++;
                }
                if (resultado.charAt(i) != ' ' && resultado.charAt(i) != '_')
                numCantidadLetrasPalabra++;
            }
            
            palabraBloqueada.setText(resultado);
            numLetrasDichas++;
            
                estadistica1.setText("Número de Letras Dichas: " + numLetrasDichas);

    estadistica2.setText("Número de Letras DE PALABRA: " + numCantidadLetrasPalabra);

    estadistica3.setText("Número de Letras RESTANTES: " + numLetrasRestantes);
            
            
            
            //Significa que hemos ganado.
            if (!palabraBloqueada.getText().contains("_")){
                for (JButton boton : letrasBotones) {
                    boton.setEnabled(false);
                    
                }
            }
           

        }
    }

    public static void main(String[] args) {
        GUI_1 g = new GUI_1();
    }



}
