[英]How to make a game with lives in Python?
I want to make a game that includes the component of 'lives'. 我想制作一款包含“生活”内容的游戏。 I would like to start the game with 3 lives.
我想从3个生命开始游戏。 Each time the user dies, the lives remaining decreases by 1 and the game restarts with the new number of lives remaining.
每次用户死亡,剩余寿命会减少1,并且游戏会以新的剩余寿命重新开始。
PROBLEM: If I play the game and lose a life, it always says "2 lives remaining" even if I only have 1 or 9 lives. 问题:如果我玩游戏而丧命,即使我只有1或9条命,它总是说“还剩2条命”。 Why doesn't the number of lives remaining never go below 2?
为什么剩余生命数从未低于2?
This is portion of my code: 这是我的代码的一部分:
import random
def main():
livesRemaining = 3
print "Welcome to Escape From The Shackles! "
print "3 transparent vials with liquid lie in front of you on a table. One of them is green, another is yellow, yet another is red."
colors = ["green", "red", "yellow"]
random.shuffle(colors)
color = raw_input("Which one of the three colors do you choose to drink?")
color = color.lower()
if color == (colors[0]):
print "The liquid seeps into your system and poisons you. You die!"
livesRemaining = livesRemaining - 1
print "You have " + str(livesRemaining) + " lives remaining."
main()
elif color == (colors[1]):
print "Your head begins to spin and you become unconscious! Next thing you know, you're in a raft in a river. No soul is present nearby..."
print "After paddling for 15 minutes in the river, you encounter a crossroads! "
right_or_left = raw_input("Do you choose to paddle right or left?")
right_or_left = yellow_right_or_left.lower()
if yellow_right_or_left == "right":
print "You take a right turn and continue to paddle. A mighty waterfall confronts you."
print "You die!"
livesRemaining = livesRemaining - 1
print "You have " + str(livesRemaining) + " lives remaining."
main()
You want to wrap it into a while loop instead of calling itself\\ 您想将其包装到while循环中,而不是调用自身\\
import random
livesRemaining = 3
def main():
global livesRemaining
print "Welcome to Escape From The Shackles! "
while True:
if livesRemaining == 0:
break
print "3 transparent vials with liquid lie in front of you on a table. One of them is green, another is yellow, yet another is red."
colors = ["green", "red", "yellow"]
random.shuffle(colors)
color = raw_input("Which one of the three colors do you choose to drink?")
color = color.lower()
if color == (colors[0]):
print "The liquid seeps into your system and poisons you. You die!"
livesRemaining -= 1
print "You have " + str(livesRemaining) + " lives remaining."
main()
elif color == (colors[1]):
print "Your head begins to spin and you become unconscious! Next thing you know, you're in a raft in a river. No soul is present nearby..."
print "After paddling for 15 minutes in the river, you encounter a crossroads! "
right_or_left = raw_input("Do you choose to paddle right or left?")
right_or_left = yellow_right_or_left.lower()
if yellow_right_or_left == "right":
print "You take a right turn and continue to paddle. A mighty waterfall confronts you."
print "You die!"
livesRemaining -= 1
print "You have " + str(livesRemaining) + " lives remaining."
print "Game Over"
I would re-organize the code something like this: 我将重新组织代码,如下所示:
def welcome_message(livesRemaining):
print "Welcome to Escape From The Shackles!"
print "You have", livesRemaining, "lives remaining."
def vial_scene():
print "3 transparent vials with liquid lie in front of you on a table." \
" One of them is green, another is yellow, yet another is red."
colors = ["green", "red", "yellow"]
random.shuffle(colors)
color = raw_input("Which one of the three colors do you choose to drink?")
color = color.lower()
if color == colors[0]:
print "The liquid seeps into your system and poisons you. You die!"
return 'dies'
elif color == colors[1]:
print "Your head begins to spin and you become unconscious!"
return 'head_spin'
def river_scene():
print "Next thing you know, you're in a raft in a river." \
" No soul is present nearby ..."
print "After paddling for 15 minutes in the river, you encounter" \
" a crossroads!"
right_or_left = raw_input("Do you choose to paddle right or left?")
right_or_left = right_or_left.lower()
if right_or_left == "right":
print "You take a right turn and continue to paddle." \
" A mighty waterfall confronts you."
print "You die!"
return 'dies'
def main():
livesRemaining = 3
while livesRemaining > 0:
welcome_message(livesRemaining)
vial_result = vial_scene()
if vial_result == 'dies':
livesRemaining -= 1
continue # jump to beginning of while loop
elif vial_result == 'head_spin':
river_result = river_scene()
if river_result == 'dies':
livesRemaining -= 1
continue # jump to beginning of while loop
else:
print "The river doesn't kill you."
else:
print "The vial doesn't kill you and gives you no head spin."
print "You survived the two problems (vial and river)."
break # to leave the while loop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.