# Lezione 14 - Esercizio 1 - Il gioco di Nim

# In questo gioco, due giocatori prelevano alternativamente biglie da un mucchietto.
# Ad ogni mossa, un giocatore sceglie quante biglie prendere: almeno una e al
# massimo metà delle biglie disponibili. Il giocatore che prende l’ultima biglia
# perde la partita.

# Scrivere un programma che consenta all’utente di giocare contro il computer.
# Il programma deve:
# - generare un numero intero casuale compreso tra 10 e 100 da usare come dimensione
#   iniziale del mucchietto di biglie;
# - generare un numero intero casuale, o 0 o 1, da usare per decidere se sarà
#   l’utente o il computer a giocare per primo;
# - generare un numero intero casuale, o 0 o 1, da usare per decidere se il computer
#   giocherà in modo intelligente o stupido:
#    * giocando in modo stupido, ad ogni sua mossa il computer semplicemente preleva
#      dal mucchietto un numero di biglie casuale (ma valido, cioè compreso tra 1 e
#      n/2, se nel mucchietto sono rimaste n biglie);
#    * giocando in modalità intelligente, invece, preleva un numero di biglie tale
#      che il numero di quelle che rimangono nel mucchio sia una potenza di due
#      diminuita di un’unità, cioè 3, 7, 15, 31 o 63. Quest’ultima è sempre una mossa
#      valida, tranne quando la dimensione del mucchio è uguale a una potenza di due
#      diminuita di un’unità. In tal caso, il computer fa una mossa scelta a caso
#      (ovviamente tra quelle valide).

# Come potrete verificare sperimentalmente, il computer non può essere battuto quando
# gioca in modalità intelligente e fa la prima mossa, a meno che la dimensione
# iniziale del mucchio non sia 15, 31 o 63. Analogamente, un giocatore umano che faccia
# la prima mossa e conosca la strategia qui descritta è in grado di battere il calcolatore.

import random
numero_iniziale_biglie = int(random.randint(10,100))
print("il mucchietto di biglie iniziale sarà pari ad", numero_iniziale_biglie)

modalità = random.randint(0,1)

if modalità == 1:
    print("il gioco gioca in modalità stupida")
else:
    print("Il gioco gioca in modalità intelligente")

turno = random.randint(0,1)

while numero_iniziale_biglie > 1:
    if turno == 0:
        print(f"Ci sono {numero_iniziale_biglie} biglie. Tocca al computer.")
        biglie = random.randint(0, numero_iniziale_biglie // 2)
        numero_iniziale_biglie = numero_iniziale_biglie - biglie
        turno = 1
    else:
        print("il turno è del giocatore")
        print(f"Ci sono {numero_iniziale_biglie} biglie. Tocca a te.")

        biglie = -1
        while not (0 < biglie <= numero_iniziale_biglie // 2):
            biglie = int(input("quante biglie vuoi prendere considerando che deve essere comprese tra 1 e n/2?"))

        numero_iniziale_biglie -= biglie
        print("ti sono rimaste", numero_iniziale_biglie, "biglie")
        turno = 0

if turno == 1:
    print("Sei costretto a prendere l'ultima biglia. Hai perso!")
else:
    print("Il computer ha preso l'ultima biglia. Hai vinto!")
    






#     biglie_da_prelevare = random.randint(1,50)
#     biglieprelevate = int(biglie_da_prelevare / 2)
#     for biglie_da_prelevare in numero_iniziale_biglie:
#         biglierimaste = numero_iniziale_biglie - biglieprelevate
#         if biglierimaste < biglie_da_prelevare:
#             print("numero di biglie da prelevare impossibile, riprovare")
#         else:
#             print("le biglie da prelevare sono:", biglie_da_prelevare , "e le biglie rimanenti sono", biglierimaste)
# if modalità == 0:



# IL GIOCO VA AVANTI FINCHÈ CI SONO ANCORA BIGLIE DA PESCARE
# SE È IL TUO TURNO
#  - SI CHIEDE ALL'UTENTE QUANTE BIGLIE VUOLE PESCARE
#  - SI VERIFICA SE LA SCELTA DELL'UTENTE È VALIDA IN BASE ALLE REGOLE DEL GIOCO
#  - SI FINALIZZA LA SCELTA MODIFICANDO IL NUMERO DI BIGLIE PRESENTI
#  - SI CAMBIA IL TURNO
# ALTRIMENTI, SE È IL TURNO DEL COMPUTER
#  - SE IL COMPUTER GIOCA IN MODALITA' STUPIDA:
#     * SI IMPOSTA LA SCELTA DI BIGLIE DA PESCARE DEL COMPUTER RANDOMICAMENTE
#     * SI FINALIZZA LA SCELTA MODIFICANDO IL NUMERO DI BIGLIE
#     * SI CAMBIA IL TURNOù
#  - ALTRIMENTI, SE IL COMPUTER GIOCA IN MODALITA' INTELLIGENTE:
#     * DEVO CAPIRLO ANCORA PURE IO


