package leccion2;

import java.util.Random;
import java.util.Scanner;

public class PiedraPapelTijera {
	public static void main(String[] args) {
		// Jugador 1. Tú (Pedir Nombre).
		// Jugador 2. CPU (Genera automáticamente la elección de la opción).

		// Variables
		String nombreUsuario1;
		String nombreUsuario2 = "CPU";
		int opcionUsuario1;
		int opcionUsuario2;
		String conversionOpcionUsuario1 = "";
		String conversionOpcionUsuario2 = "";
		int victoriasUsuario1 = 0;
		int victoriasUsuario2 = 0;
		int totalVictoriasUsuario1 = 0;
		int totalVictoriasUsuario2 = 0;
		char respuestaContinuar = 'a';
		int vidasExtra = 0;
		
	
		// CONSTANTES
		final String PIEDRA = "PIEDRA", PAPEL = "PAPEL", TIJERA = "TIJERA";
		final int VICTORIAS_FIN_PARTIDA = 3;

		// Objetos
		Random rd = new Random();
		Scanner sc = new Scanner(System.in);

		// MECÁNICA DEL JUEGO
		System.out.println("A continuacion escribe tu nombre: ");
		nombreUsuario1 = sc.nextLine();
		do {
			victoriasUsuario1 = 0;
			victoriasUsuario2 = 0;
			System.out.println("A continuacion dime cuantas vidas extra quieres que tenga "+nombreUsuario1+":");
			vidasExtra = sc.nextInt();
		do { // ITERACIONES DE JUGADAS.
			
			System.out.println("A continuacion di elige una opcion para tu jugada en piedra, papel o tijera: ");
			System.out.println("\n\n1.Piedra\n" + "2.Papel\n" + "3.Tijeras");
			opcionUsuario1 = sc.nextInt();
			// ELECCIÓN JUGADOR 2.
			opcionUsuario2 = rd.nextInt(3) + 1; // 0..2 => 1..3

			switch (opcionUsuario1) {
			case 1:
				conversionOpcionUsuario1 = PIEDRA;
				break;
			case 2:
				conversionOpcionUsuario1 = PAPEL;
				break;
			case 3:
				conversionOpcionUsuario1 = TIJERA;
				break;

			default:
				System.out.println("opcion invalida");
				break;
			}

			switch (opcionUsuario2) {
			case 1:
				conversionOpcionUsuario2 = PIEDRA;
				break;
			case 2:
				conversionOpcionUsuario2 = PAPEL;
				break;
			case 3:
				conversionOpcionUsuario2 = TIJERA;
				break;

			}
			//ENFRENTAMIENTO [Pepito (Piedra) vs (Tijera) CPU]
			System.out.println("ENFRENTAMIENTO:");
			System.out.println(nombreUsuario1+" "+conversionOpcionUsuario1+" contra "+nombreUsuario2+" "+conversionOpcionUsuario2);
			if (conversionOpcionUsuario1.equals(TIJERA) && conversionOpcionUsuario2.equals(PIEDRA)) {
				victoriasUsuario2++;
				
				System.out.println(nombreUsuario2+" "+conversionOpcionUsuario2+" gana a "+nombreUsuario1+" "+conversionOpcionUsuario1);
				
			} else if (conversionOpcionUsuario1.equals(TIJERA) && conversionOpcionUsuario2.equals(PAPEL)) {
				victoriasUsuario1++;
				
				System.out.println(nombreUsuario1+" "+conversionOpcionUsuario1+" gana a "+nombreUsuario2+" "+conversionOpcionUsuario2);
				
			} else

			if (conversionOpcionUsuario1.equals(PIEDRA) && conversionOpcionUsuario2.equals(TIJERA)) {
				victoriasUsuario1++;
				
				System.out.println(nombreUsuario1+" "+conversionOpcionUsuario1+" gana a "+nombreUsuario2+" "+conversionOpcionUsuario2);
				
			} else if (conversionOpcionUsuario1.equals(PIEDRA) && conversionOpcionUsuario2.equals(PAPEL)) {
				victoriasUsuario2++;
				
				System.out.println(nombreUsuario2+" "+conversionOpcionUsuario2+" gana a "+nombreUsuario1+" "+conversionOpcionUsuario1);
				
			} else if (conversionOpcionUsuario1.equals(PAPEL) && conversionOpcionUsuario2.equals(TIJERA)) {
				victoriasUsuario2++;
				
				System.out.println(nombreUsuario2+" "+conversionOpcionUsuario2+" gana a "+nombreUsuario1+" "+conversionOpcionUsuario1);
				
			} else if (conversionOpcionUsuario1.equals(PAPEL) && conversionOpcionUsuario2.equals(PIEDRA)) {
				victoriasUsuario1++;
				
				System.out.println(nombreUsuario1+" "+conversionOpcionUsuario1+" gana a "+nombreUsuario2+" "+conversionOpcionUsuario2);
				
			} else {
				System.out.println(nombreUsuario1+" "+conversionOpcionUsuario1+" empata a "+nombreUsuario2+" "+conversionOpcionUsuario2);
				
			}
			System.out.println("\n\nRESULTADOS:");
			System.out.println(nombreUsuario1+" lleva "+victoriasUsuario1+" victoria/s y "+nombreUsuario2+" lleva "+victoriasUsuario2+" victorias.\n\n\n");

		} while (victoriasUsuario1 < VICTORIAS_FIN_PARTIDA && victoriasUsuario2 < (VICTORIAS_FIN_PARTIDA+vidasExtra));
		if(victoriasUsuario1>(victoriasUsuario2-vidasExtra)) {
			System.out.println("El usuario "+nombreUsuario1+" ha ganado, el usuario "+nombreUsuario2+" se ha quedado con solo "+victoriasUsuario2+" victorias.");
			totalVictoriasUsuario1++;
		}else {
			System.out.println("El usuario "+nombreUsuario2+" ha ganado, el usuario "+nombreUsuario1+" se ha quedado con solo "+victoriasUsuario1+" victorias.");
			totalVictoriasUsuario2++;
		}
		
		System.out.println("Si deseas continuar con la partida escribe 's' a continuacion: ");
		sc.nextLine();
		respuestaContinuar = sc.nextLine().charAt(0);
		
		
		
		}while(respuestaContinuar=='s');
		
		System.out.println("RESULTADOS FINALES");
		System.out.println("EL USUARIO "+nombreUsuario1+" A TERMINADO CON "+totalVictoriasUsuario1+" VICTORIAS.");
		System.out.println("EL USUARIO "+nombreUsuario2+" A TERMINADO CON "+totalVictoriasUsuario2+" VICTORIAS.");
		System.out.println("EN TOTAL SE HAN JUGADO "+(totalVictoriasUsuario1+totalVictoriasUsuario2)+" PARTIDAS.");
		
	}

}
