package EstructurasControl;

import java.util.Random;
import java.util.Scanner;

public class Practica_Profesor_2 {
    final static String PIEDRA = "Piedra", PAPEL = "Papel", TIJERA = "Tijera";
    static Scanner sc = new Scanner(System.in);


    public static void main(String[] args) {
        //DECLARACIÓN DE VARIABLES
        int[] contadorVictorias = {0, 0};
        String[] palabraJugadores = {"", ""};
        String[] nombresJugadores = {"", "CPU"};
        int contadorRondas = 0;

        //DECLARACIÓN DE OBJETOS
        Random rd = new Random();

        //DECLARACIÓN DE CONSTANTES
        final String[] OPCIONES = {PIEDRA, PAPEL, TIJERA}; //Opcional.


        System.out.println("Inserta tu nombre: ");
        nombresJugadores[0] = sc.next();


        do {
            contadorRondas++;
            palabraJugadores[1] = "";

            int opcionElegida = rd.nextInt(1, 3 + 1);

            palabraJugadores[1] = conversionInt2String(opcionElegida); //AMG v2. IMPLEMENTACIÓN DE FUNCIÓN / MÉTODO / PROCEDIMIENTO.

            int opcionSolicitadaJ1 = elegirOpcion(nombresJugadores, 0);
            palabraJugadores[0] = conversionInt2String(opcionSolicitadaJ1);


            System.out.println("(" + nombresJugadores[0] + ") " + palabraJugadores[0] + " vs " + palabraJugadores[1] + " (" + nombresJugadores[1] + ") ");

            mecanicaEnfrentamientos(nombresJugadores,palabraJugadores,contadorVictorias);
            //Imprimimos las estadísticas

            System.out.println("\n");
            System.out.println("ESTADÍSTICAS GENERALES");
            System.out.println("Victorias " + nombresJugadores[0] + " " + contadorVictorias[0]);
            System.out.println("Victorias " + nombresJugadores[1] + " " + contadorVictorias[1]);
            System.out.println("Rondas Totales " + contadorRondas);
            System.out.println("\n\n");

        } while (contadorVictorias[0] < 3 && contadorVictorias[1] < 3);

        if (contadorVictorias[0] == 3) {
            System.out.println("Ha ganado " + nombresJugadores[0]);
        } else {
            System.out.println("Ha ganado " + nombresJugadores[1]);
        }


    }

    public static String conversionInt2String(int eleccion) { //En el contexto de PIEDRA, PAPEL, TIJERA.
        switch (eleccion) {
            case 1:
                return PIEDRA;
            //break;
            case 2:
                return PAPEL;
            //break;
            case 3:
                return TIJERA;
            //break;
            default:
                return PIEDRA;
            //break;
        }
    }

    public static int elegirOpcion(String[] arrayNombres, int indice) {
        int opcion = -1;
        while (!rangoNumeros(1,3,opcion)) {
            System.out.println(arrayNombres[indice] + " Elija una opción:\n1. " + PIEDRA + "\n2. " +
                    PAPEL + "\n3. " + TIJERA);

            opcion = sc.nextInt();
        }
        return opcion;

    }
    public static boolean rangoNumeros(int limite1, int limite2, int numero){
        return numero>=limite1 && numero<=limite2; //[1,3] (1,3)
    }
    public static void mecanicaEnfrentamientos(String[] arrayNombres, String[] eleccionesString, int[] contadorEstadisticas){
        if (eleccionesString[0].equalsIgnoreCase("Piedra") && eleccionesString[1].equalsIgnoreCase("Papel")) {
            contadorEstadisticas[1]++;
            System.out.println("Victoria de " + arrayNombres[1]);
        } else if (eleccionesString[0].equalsIgnoreCase("Piedra") && eleccionesString[1].equalsIgnoreCase("Tijera")) {
            contadorEstadisticas[0]++;
            System.out.println("Victoria de " + arrayNombres[0]);

        } else if (eleccionesString[0].equalsIgnoreCase("Papel") && eleccionesString[1].equalsIgnoreCase("Tijera")) {
            contadorEstadisticas[1]++;
            System.out.println("Victoria de " + arrayNombres[1]);
        } else if (eleccionesString[0].equalsIgnoreCase("Papel") && eleccionesString[1].equalsIgnoreCase("Piedra")) {
            contadorEstadisticas[0]++;
            System.out.println("Victoria de " + arrayNombres[0]);
        } else if (eleccionesString[0].equalsIgnoreCase("Tijera") && eleccionesString[1].equalsIgnoreCase("Papel")) {
            contadorEstadisticas[0]++;
            System.out.println("Victoria de " + arrayNombres[0]);
        } else if (eleccionesString[0].equalsIgnoreCase("Tijera") && eleccionesString[1].equalsIgnoreCase("Piedra")) {
            contadorEstadisticas[1]++;
            System.out.println("Victoria de " + arrayNombres[1]);
        } else {
            System.out.println("Empate!!!");
        }
        //return contadorEstadisticas;
    }
}
