from random import * def main() : finish = True while finish : print("Benvenuto nel gioco di Nim.") count = 0 player = randomBoolean() numBalls = randint(10,100) master = randint(1, 2) computerPlayerIsExpert = False if master == 1: computerPlayerIsExpert = True print("Computer intelligente") else : print("Computer stupido") print("Le biglie totali sono: ", numBalls) while numBalls >1 : rimaste = 0 if player : print("Tocca al giocatore") newnumBalls = askUserBalls(numBalls) else: print("Tocca al computer") newnumBalls = takeComputerBalls(computerPlayerIsExpert,numBalls) rimaste = numBalls - newnumBalls numBalls = newnumBalls print("Sono state prese:" , rimaste ,"biglie. Ora le biglie sono:" , numBalls) player = not player if player : print("Hai perso") else : print("Hai vinto") finish = playAgain() def askUserBalls(numBalls) : repeat = True while repeat : balls = int(input("Quante biglie vuoi prendere? ")) if balls < 1 or balls > numBalls//2 : print("Errore! Il valore delle biglie deve essere compreso tra uno e la metà del totale delle biglie esclusa. Riprova!") else : numBalls -= balls repeat = False return numBalls def takeComputerBalls(computerPlayerIsExpert,numBalls) : if computerPlayerIsExpert : if numBalls == 3 or numBalls == 7 or numBalls == 15 or numBalls == 31 or numBalls == 63: balls = randint(1, numBalls // 2) numBalls -= balls elif numBalls > 63: balls = numBalls - 63 elif numBalls > 31: balls = numBalls - 31 elif numBalls > 15: balls = numBalls - 15 elif numBalls > 7: balls = numBalls - 7 elif numBalls > 3: balls = numBalls - 3 else: balls = 1 else : balls = randint(1, numBalls // 2) numBalls -= balls return numBalls def playAgain() : playagain = input("Vuoi giocare ancora? ""s"" per il sì oppure ""n"" per il no: ") if playagain == "n" : return False elif playagain == "s" : return True def randomBoolean() : x = randint(1,2) if x == 1 : return True else : return False main()