package Proyecto;

import java.util.Random;
import java.util.Scanner;

public class PiedraPapelTijera_V2 {
	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”.
		 */
		
		//VARIABLES NECESARIAS
		Scanner sc=new Scanner(System.in);
		Random rd = new Random();
		
		//Nombres jugadores.
		String jugador1="USUARIO"; //Usuario
		String jugador2="CPU"; //CPU
		
		//Sistema de turnos.
		boolean esJugador1 = true;
		
		//Contador victorias
		int contadorVictorias1=0;
		int contadorVictorias2=0;
		
		//Contador de turnos
		int contadorTurnos=0;
		
		//Elección Jugadores
		int eleccionJugador1 = 0;
		int eleccionJugador2 = 0;
		
		//Elección Jugadores Traducida
		String eleccionTraducidaJugador1 = "";
		String eleccionTraducidaJugador2 = "";
		
		//[+] Lógica de partida
		while(contadorVictorias1<3 && contadorVictorias2<3) {
			//REINICIO DE VARIABLES
			eleccionJugador1 = 0; // Se reinicia la variable
			
			//Solicitud de la ELECCIÓN al USUARIO
			
			
			eleccionJugador1= obtenerEleccion();
			
			
			eleccionJugador2=rd.nextInt(1, 4); //[1-3]
			
			
			
			//1ª IDEA: En esta estructura concreta: IF es el condicional que mejor se adapta.
			//[SWITCH]
			
			//2ª IDEA: Obligar o forzar al usuario a que siempre nos de una opción correcta.
			
			
			
			eleccionTraducidaJugador1 = obtenerTraduccion(eleccionJugador1);
			
			
			eleccionTraducidaJugador2 = obtenerTraduccion(eleccionJugador2);

			
			//Usuario ha elegido ... VS CPU ha elegido ...

			System.out.println(jugador1 +" ha elegido "+ eleccionTraducidaJugador1);
			System.out.println(jugador2 +" ha elegido "+ eleccionTraducidaJugador2);
			
			//MATCH ¿Quién gana? 
			
			//Reglas de Juego
			
			//- Piedra[1] GANA A Tijera[3] OK
			//- Piedra[1] PIERDE CON Papel[2]
			
			//- Papel[2] GANA A Piedra[1] OK
			//- Papel[2] PIERDE CON Tijera[3]
			
			//- Tijera[3] GANA A Papel[2] OK
			//- Tijera[3] PIERDE CON Piedra[1] OK
			
			//TODAS LAS CONDICIONES EN LAS QUE J1 GANA
			if( haGanadoJ1(eleccionJugador1, eleccionJugador2) ) {
				contadorVictorias1++;
				System.out.println("Gana "+jugador1);
			

			}				//TODAS LAS CONDICINOES EN LAS QUE PIERDE

			else if ( haGanadoJ1(eleccionJugador2,eleccionJugador1 ) ) {
					contadorVictorias2++;
					System.out.println("Gana "+jugador2);
			}else {
				//EMPTATE
				System.out.println("Empate");
			}
			contadorTurnos++;
			
			System.out.println("\n\nESTADÍSTICAS:");
			System.out.println("Turnos Jugados: "+contadorTurnos);
			System.out.println("Victorias J1: "+contadorVictorias1);
			System.out.println("Victorias J2: "+contadorVictorias2+"\n\n");
			
			
		}
		
		
		
		
	}
	
	public static String obtenerTraduccion(int opcion) {
		if(opcion==1) {
			return "PIEDRA";
		}else if(opcion==2) {
			return "PAPEL";
		}else if(opcion==3) {
			return "TIJERA";
		}else {
			return "";
		}
	}
	
	public static boolean haGanadoJ1(int j1, int j2) {
		return (j1==1  &&  j2==3)|| (j1==2 && j2==1)|| 	(j1==3 && j2==2);
	}
	
	public static int obtenerEleccion() {
		int eleccionJugador1=0;
		Scanner sc = new Scanner(System.in);
		
		while (eleccionJugador1<1 || eleccionJugador1>3) {
			System.out.println(" Introduce una de las tres opciones:\n"
					+ "1. Piedra\n"
					+ "2. Papel\n"
					+ "3. Tijera");
			eleccionJugador1=sc.nextInt();
		}
		return eleccionJugador1;
	}
	
	
}
