Python novice here trying to trouble shoot my game of nim code. Basically the code removes stones 1, 2 or 3 stones until their is none left. I'm trying to prevent the user and AI from going into the negatives (if their is one stone left the AI/the user shouldn't be able remove two or three stones.) Here is my code so far:
import random
Stones = random.randint(15, 30)
User = 0
YourTurn = True
print("This is a game where players take turns taking stones from a pile of stones. The player who
takes the last stone loses.")
print("The current stone count is:", Stones)
while True:
while YourTurn == True and Stones > 0:
User = int(input("How many stones do you want to remove?"))
if User == 1:
Stones -= 1
print("You removed 1 stone! The current stone count is:", Stones)
YourTurn = not True
elif User == 2:
Stones -= 2
print("You removed 2 stone! The current stone count is:", Stones)
YourTurn = not True
elif User == 3:
Stones -= 3
YourTurn = not True
print("You removed 3 stone! The current stone count is:", Stones)
else:
print("You can only remove a maximum of 3 stones.")
while YourTurn == False and Stones > 0:
AI = random.randint(1, 3)
if AI == 1:
Stones -= 1
print("The A.I removed 1 stone! The current stone count is:", Stones)
YourTurn = not False
elif AI == 2:
Stones -= 2
print("The A.I removed 2 stone! The current stone count is:", Stones)
YourTurn = not False
elif AI == 3:
Stones -= 3
print("The A.I removed 3 stone! The current stone count is:", Stones)
YourTurn = not False
if Stones <= 0:
if YourTurn == True:
print("The A.I took the last stone it lost. You won the game!")
break
elif YourTurn == False:
print("You took the last stone you lost. The A.I won the game!")
break
I have no idea how you would make the code not go into the negatives, the if and elif statements I had before were being ignored by the code. I would appreciate any help.
import random
stonesLeft = random.randint(15, 30)
stonesToRemove = 0
userTurn = True
print("This is a game where players take turns taking stones from a pile of stones. The player who takes the last stone loses. The current stone count is: ", stonesLeft)
while stonesLeft > 0:
while userTurn == True and stonesLeft > 0:
stonesToRemove = int(input("How many stones do you want to remove?"))
if stonesToRemove > 3:
print( "You can't remove more than three stones at a time!
The current stone count is: " + str(stonesLeft) )
elif stonesLeft - stonesToRemove < 0:
print("There aren't that many stones left!") #Give user error!
else:
stonesLeft -= stonesToRemove
print( "You removed " + str(stonesToRemove) +
" stone(s)! The current stone count is: " + str(stonesLeft) )
userTurn = False
while userTurn == False and stonesLeft > 0:
aiRemoves = random.randint( 1, min(3, stonesLeft) ) #Take smaller value between 3 and the stones that are left
stonesLeft -= aiRemoves
print( "The A.I. removed " + str(aiRemoves) +
" stone(s)! The current stone count is: " + str(stonesLeft) )
userTurn = True
if userTurn == True:
print("The A.I took the last stone, it lost. You won the game!")
else:
print("You took the last stone, you lost. The A.I. won the game!")
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.