我想制作一款包含“生活”内容的游戏。我想从3个生命开始游戏。每次用户死亡,剩余寿命都会减少1,并且游戏会以新的剩余寿命重新开始。
问题:如果我玩游戏而丧命,即使我只有1或9条命,它总是说“还剩2条命”。为什么剩余生命数从未低于2?
这是我的代码的一部分:
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()
答案 0 :(得分:0)
您想将其包装到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"
答案 1 :(得分:0)
我将重新组织代码,如下所示:
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