import random

# Classe per una partita
class Partita:
    def __init__(self, numero_max):
        self.numero_segreto = random.randint(1, numero_max)
        self.tentativi = []
        self.vittoria = False

    def fai_tentativo(self, numero):
        self.tentativi.append(numero)
        if numero == self.numero_segreto:
            self.vittoria = True
            return "Hai indovinato!"
        elif numero < self.numero_segreto:
            return "Troppo basso!"
        else:
            return "Troppo alto!"

    def punteggio(self):
        return len(self.tentativi)


# menu iniziale
def menu():
    print("Benvenuto 'Indovina il numero'!")
    print("Scegli la difficoltà:")
    print("1. Facile (1-10)")
    print("2. Media (1-50)")
    print("3. Difficile (1-100)")
    scelta = input("Inserisci 1, 2 o 3: ")
    if scelta == "1":
        return 10
    elif scelta == "2":
        return 50
    else:
        return 100


# gioco
def gioca():
    numero_max = menu()
    partita = Partita(numero_max)

    while not partita.vittoria:
        try:
            numero = int(input(f"\n Inserisci un numero tra 1 e {numero_max}: "))
            if numero < 1 or numero > numero_max:
                print("Numero fuori intervallo!")
                continue
            messaggio = partita.fai_tentativo(numero)
            print(messaggio)
        except ValueError:
            print("Inserisci solo numeri interi!")

    print(f"\n Hai indovinato in {partita.punteggio()} tentativi!")
    print(f"I tuoi tentativi: {partita.tentativi}")


# Avvia il gioco
if __name__ == "__main__":
    gioca()
