Я начинаю изучать Python. Недавно наш школьный учитель попросил нас сделать проект со следующими требованиями:
Случайным образом выберите число от 1 до 6 для двух игроков.
Каждый игрок начинает со 100 очками.
Каждый игрок бросает один кубик. Игрок с меньшим броском теряет количество очков, указанное на более высоком кубике.
Играйте до тех пор, пока счет одного из игроков не станет меньше или равен нулю.
Запускается Python 3.7.2, и вот код:
import random
dice1 = random.randint(1,6)
dice2 = random.randint(1,6) #random number
player1 = 100
player2 = 100 #the initial marks for both players
While player1 > 0 or player2 > 0:
if dice1 > dice2: #when the player1 has the higher number
player2 = player2 - dice1
print("player1", player1, "player2", player2)
elif dice2 > dice1: #when the player 2 has the higher number
player1 = player1 - dice2
print("player1", player1, "player2", player2)
elif dice1 == dice2: #when two player get the same number
print("It's a tie.")
if player1 <= 0:
print("player2 win")
break
elif player2 <= 0:
print("player1 win")
break
Я пытался несколько раз. Когда я запускал его, было две проблемы:
Один из баллов все время сохраняет 100, а другой постоянно меняется, пока не станет меньше или равен нулю.
Результат просто продолжает придумывать "Ничья".
Я был смущен результатом и понятия не имел, как это исправить... Очень ценю любую помощь! Спасибо|ू・ω・` )
Спасибо!! Только что исправил!(❁´◡`❁)*✲゚*
Ваш код бросает кости (получает набор случайных чисел) только один раз. Переместите бросок кубика внутри цикла while следующим образом:
import random
player1 = 100
player2 = 100 #the initial marks for both players
while (player1 > 0 and player2 > 0):
dice1 = random.randint(1, 6)
dice2 = random.randint(1, 6)
if dice1 > dice2: #when the player1 has the higher number
player2 = player2 - dice1
print("player1", player1, "player2", player2)
elif dice2 > dice1: #when the player 2 has the higher number
player1 = player1 - dice2
print("player1", player1, "player2", player2)
elif dice1 == dice2: #when two player get the same number
print("It's a tie.")
if player1 <= 0:
print("player2 win")
break
elif player2 <= 0:
print("player1 win")
break
while
состояние также должно быть исправлено. Должно быть player1 > 0 and player2 > 0
.
Пожалуйста. Вы можете принять ответ как правильный, чтобы помочь другим.
Вы не кубики катящийся в каждой итерации. Поместите
dice1=...;dice2=...
внутрь циклаwhile
, и он отлично работает :)