基本上,我正在制作一个基于文本的python游戏,并遇到了障碍。
玩家可以进入战斗,并且一如既往,你有可能会死(hp为0)。我想要做的是打破游戏的主循环,这是几个功能,大约5-6(从主系统到战斗系统功能),分散在不同的文件中。
结构如下:
core()
while True:
main()
game_over()
我想要做的是,每当玩家的hp变为0(或甚至低于)时,main()函数将被破坏,以便然后可以提示玩家退出游戏或再次运行主要功能。我希望这与在每个函数后输入return和值之后不同。
game_over功能提示玩家键入“new”并再次启动main(),因为该功能根本不会执行任何操作,或“退出”并且该功能将调用quit()并退出游戏。
TL:DR - 如何从较小的功能中完全摆脱功能?试图避免一系列的回报?
答案 0 :(得分:2)
你可以提出异常
例如
def main():
if condition:
raise StopIteration
else:
return value
while True:
main()
对于更复杂的逻辑,您可以引发自定义异常并捕获它们:
class GameOver(Exception):
pass
class Quit(Exception):
pass
def main():
if game_over:
raise GameOver
if quit:
raise Quit
else:
return value
while True:
try:
main()
except GameOver:
game_over()
except Quit:
break