我正在尝试用 Python 编写冒险游戏程序的一部分,尽管我已经完成了大部分工作,但我仍然坚持尝试在函数链的一个分支的末尾返回一个声明为“True”的值。基本上,这是一场与怪物的战斗,如果你选择了正确的选项,你就可以获胜。如果你赢了,你会得到他所守护的弓。以下是战斗代码:
#The first line imports all the text displayed in the game, saved in gametext.py
#For purposes of clarity, all text has been saved to variables imported by the file.
#Any variable that is not "HaveBow", "why" or declared by a raw_input() is actually text.
from gametext import *
def BG_fight():
print BowGuardIntro
print InitOptions
BGfirstmove = raw_input('> ')
if BGfirstmove == "1":
spearfight()
elif BGfirstmove == "2":
dead(BGUnarmed1)
else:
dead(BGUnarmed2)
def spearfight():
print GotSpear
print SpearFight
spearact = raw_input("> ")
if spearact == "1":
blindfight()
elif spearact == "2":
dead(SeeChest)
elif spearact == "3":
dead(SeeArms)
else:
dead(NoUseSpear)
def blindfight():
print BlindFight
followblow = raw_input("> ")
if followblow == "1":
print Victory
HaveBow = True
return HaveBow
elif followblow == "2":
dead(BlindArms)
else:
dead(BlindNoKill)
def dead(why):
print why
exit(0)
BG_fight()
(如果人们有兴趣,我也可以生成游戏文本文件的内容,虽然我不想这样做,因为它很长并且与我遇到的问题无关)
如您所见,那里只有一个分支提供获胜条件(这将给出我想要返回的 HaveBow = True 值),并且它嵌套了两个函数,并且是 if 语句的一部分。我想知道的是如何将“HaveBow = True”值返回到函数链之外,以便可以在游戏的其他部分使用?如果我尝试编码:
HaveBow = blindfight()
print HaveBow
在代码末尾并尝试运行它,它只会让我在声明“True”之前重复该部分的游戏两次。如果我尝试 BG_fight() 而不是blindfight() 也是如此。但我不想要那个;我只想要“HaveBow”的“True”,这样我就可以在游戏的其他部分使用条件“HaveBow = True”。
简而言之,我的问题是是否可以从嵌套函数链返回一个值而不重复该链的代码,如果可以,如何?
谢谢。