import java.util.Random;
import java.util.Scanner;

public class PiedraPapelTijera {
	public static void main(String[] args) {
		// 3.1.Escribe un algoritmo que simule el juego de Piedra, Papel, Tijera.
		// Debe incluir: Sistema de turnos, contador de victorias por jugador, cuando el
		// contador de uno de los 2 jugadores sea igual a 3, no debe reproducir más
		// partidas y debe poner quien ha ganado y quien ha perdido.
		// Opcionalmente puede incluir el nombre del jugador A, el B se llamará CPU, y
		// cuando ponga el ganador mostrar “Ha ganado {nombre jugador} / CPU”.
		String nombreJugador1, nombreJugador2;
		Scanner scanner = new Scanner(System.in);

		Random rd = new Random();

		final String OPCIONES = "\n1. Piedra\n2. Papel\n3. Tijera";
		final String TIJERA = "✂️";
		final String PIEDRA = "🪨";
		final String PAPEL = "🧻";

		nombreJugador2 = "CPU";
		int victoriasJugador1 = 0;
		int victoriasJugador2 = 0;

		int opcionJugador1;
		int opcionJugador2;
		System.out.println("Introduce el nombre del Jugador 1");

		nombreJugador1 = scanner.nextLine();

		// COMIENZO DE PARTIDA. [N jugadas]
		boolean finalizaPartida = false;

		while (!finalizaPartida) { // Mientras que la condicion que pongamos se repite. | Estructura de la partida.
			System.out.println("¿Que opcion eliges? " + OPCIONES);
			// 1 = TIJERA
			// 2 = PIEDRA
			// 3 = PAPEL
			opcionJugador1 = scanner.nextInt();
			opcionJugador2 = rd.nextInt(1, 4);

			String traduccionOpcionJugador1 = "";
			String traduccionOpcionJugador2 = "";
			switch (opcionJugador1) {
			case 1:
				traduccionOpcionJugador1 = TIJERA;
				break;
			case 2:
				traduccionOpcionJugador1 = PIEDRA;
				break;
			case 3:
				traduccionOpcionJugador1 = PAPEL;
				break;

			default:
				break;
			}

			switch (opcionJugador2) {
			case 1:
				traduccionOpcionJugador2 = TIJERA;
				break;
			case 2:
				traduccionOpcionJugador2 = PIEDRA;
				break;
			case 3:
				traduccionOpcionJugador2 = PAPEL;
				break;

			default:
				break;
			}

			System.out.println("\n" + nombreJugador1 + ": " + traduccionOpcionJugador1 + " VS " + nombreJugador2 + ": "
					+ traduccionOpcionJugador2 + "\n");

			// Cuando el jugador1 saca Tijera
			if (opcionJugador1 == 1 && opcionJugador2 == 2) { // Jugador2 ha sacado Piedra
				victoriasJugador2++;
				System.out.println("👑 " + nombreJugador2);
				System.out.println(traduccionOpcionJugador1 + " es vencido por " + traduccionOpcionJugador2);
			} else if (opcionJugador1 == 1 && opcionJugador2 == 3) { // Jugador2 ha sacado Papel
				victoriasJugador1++;
				System.out.println("👑 " + nombreJugador1);
				System.out.println(traduccionOpcionJugador1 + " vence a " + traduccionOpcionJugador2);

				// Cuando el jugaddor saca Piedra
			} else if (opcionJugador1 == 2 && opcionJugador2 == 1) { // Jugador2 ha sacado Tijera
				victoriasJugador1++;
				System.out.println("👑 " + nombreJugador1);
				System.out.println(traduccionOpcionJugador1 + " vence a " + traduccionOpcionJugador2);

			} else if (opcionJugador1 == 2 && opcionJugador2 == 3) { // Jugador2 ha sacado Papel
				victoriasJugador2++;
				System.out.println("👑 " + nombreJugador2);
				System.out.println(traduccionOpcionJugador1 + " es vencido por " + traduccionOpcionJugador2);

				// Cuando el jugador saca Papel
			} else if (opcionJugador1 == 3 && opcionJugador2 == 1) { // Jugador2 ha sacado Tijera
				victoriasJugador2++;
				System.out.println("👑 " + nombreJugador2);
				System.out.println(traduccionOpcionJugador1 + " es vencido por " + traduccionOpcionJugador2);

			} else if (opcionJugador1 == 3 && opcionJugador2 == 2) { // Jugador2 ha sacado Piedra
				victoriasJugador1++;
				System.out.println("👑 " + nombreJugador1);
				System.out.println(traduccionOpcionJugador1 + " vence a " + traduccionOpcionJugador2);

			}

			// ESTADÍSTICAS DE LA PARTIDA.
			System.out.println("\n--- ESTADÍSTICAS GENERALES ---");
			System.out.println(nombreJugador1 + " tiene " + victoriasJugador1 + " victoria(s)");
			System.out.println(nombreJugador2 + " tiene " + victoriasJugador2 + " victoria(s)\n");

			if (victoriasJugador1 >= 3 || victoriasJugador2 >= 3) {
				finalizaPartida = true;
			}
		}
		System.out.println("Ha finalizado la partida");
		// QUIEN GANA
		if (victoriasJugador1 > victoriasJugador2) {
			System.out.println("Enhorabuena jugador 1 ha ganado!");
		} else {
			System.out.println("Enhorabuena jugador 2 ha ganado!");

		}
	}
}
