
import generala

def juego_generala():
    #print("Ahora sí! buena suerte :)")

    '''
    Este ejercicio representa ya un problema que forma parte de un juego
    Lo que se desea realizar es una parte del juego "la generala".
    El enunciado está armado a modo de guía, pueden resolver el problema
    de otra forma.
    Si tienen dudas sobre el enunciado o alguno de los puntos por favor
    comuníquelo por el campus y lo discutiremos entre todos, ya que siempre
    puede haber varias interpretaciones de un mismo enunciado.
    Deberá realizar una lista para guardar 5 dados, guardar los números
    sacados en esa tirada de dados (son 5 números del 1 al 6)
    1) El jugador tira la dados y sacar 5 números aleatorios, puede usar
    la función de "lista_aleatoria" para generar dichos números.
    2) Luego debe analizar los 5 números y ver cual es el número que
    más se repitio entre los 5 dados.
    Debe usar la función de Python max con la key de list.count para
    determinar cual fue el número que más se repitió. Consultar los ejemplos
    vistos en clase o el ejercicio anterior de esta guia.
    3) Una vez reconocido el número más repetido entre los 5, debe
    guardar en una lista esos números.
    Si por ejemplo salió 4-4-2-1-4, debe quedarse con esos tres "4"
    Debe extrarlos de la lista, quedándole una lista separada
    dados_guardados = [4,4,4]
    Debe realizar un bucle para recorrer la lista de dados_tirados
    y guardar los "4" en nuestra nueva lista dados_guardados
    Utilie append para ir sumando a dados_guardados los valores
    4) Debe volver a tirar los dados, generar nuevos
    números aleatorios.
    Si en la lista "dados_guardados" tengo 3 dados guardados
    significa que ahora deberé tirar dos dados. Puede usar la función
    "len" para ver cuantos elementos hay en "dados_guardados"
    Es decir que en este caso debería generar dos números
    aleatorios nuevos con "lista_generica"
    Ahora tendré una nueva lista de "dados_tirados" en este caso
    de dos nuevos números aleatorios entre 1 y 6 representando a los dados
    tirados.
    5) Luego de tirar nuevamente los datos, por ejemplo digamos
    que salieron los números: 4-1
    Debo volver a quedarme con el "4" ya que es el número que estoy
    buscando.
    Sino salió el "4" vuelvo a tirar todos los dados.
    Si salió un "4" me lo quedo y lo guardo en "dados_guardados".
    5) Debe repetir este proceso hasta que en su lista de "dados
    guardados" tenga "generala", es decir, 5 números iguales.
    '''
   #------------------comenzar el juego---------------
           
    print('Bienvenido al juego: "La Generala".')
    print('El juego tiene una ronda de tres lanzamientos, suerte!')
        
    contador = 3 #Contador para controlar el maximo de tres lanzamientos
    dados_guardados = [] #Lista de numeros que se repiten en cada lanzamiento, el objetivo es que agrupe 5 iguales y se gana.

    while True: # bucle para repetir el proceso de lanzamientos tres veces
        usuario = int(input('Ingresa 1, para el lanzamiento número {} de dados. \nIngresa 2, para salir del programa.\n'.format(contador)))  

        if usuario == 1 :
            
            dados_tirados = generala.lista_aleatoria(inicio=1, fin=6, cantidad= 5-len(dados_guardados)) #variable que guarda los lanzamientos de nros
            print('Resultados {}'.format(dados_tirados))
            
            #-----------------------------------Bloque donde se verifica el numero repetido, este se guarda en el 1er lanzamiento.
            if len(dados_guardados) == 0:
                numero_repetido = max(dados_tirados, key=dados_tirados.count)
                print('El número más repetido es:', numero_repetido)
            else:
                numero_repetido = dados_guardados[0] #ya para el 2do lanzamiento se informa que numero_repetido debe ser igual a los nros que estan guardados.
                    
            
            #-----------------------------------Bucle para agregar los numeros repetidos.        

            for i in dados_tirados: 

                if (len(dados_guardados) == 0 and i == numero_repetido):
                    dados_guardados.append(i) 
                
                else:
                    if (len(dados_guardados) != 0 and dados_guardados[0] in dados_tirados and i == dados_guardados[0]):
                        dados_guardados.append(i)
                   
                                            
            print('Dados guardados:', dados_guardados)

            evaluando_resultados = generala.evaluar_dados(dados_guardados, numero_repetido)
            if evaluando_resultados == True:
                print('Ganaste!!! Es Generala!')
            
            elif contador == 1:
                print('Perdiste, ha finalizado el juego. Lo siento :-(')
                break

            else:
                contador -= 1  
                print('Te quedan {} lanzamientos'.format(contador))
                            
        elif usuario == 2:
            print('Ha salido del programa, adiós.')
            break

        else: 
            print('El valor ingresado no corresponde con los números indicados. Intente nuevamente')
            

if __name__ == '__main__':
    print('Comienza el juego, suerte!')
    juego_generala()