- 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()