python 中的高级函数返回低级函数?
High-level function returning low-level function in python?
基本上,我正在制作一个基于文本的 python 游戏并且遇到了障碍。
玩家可以进入战斗,和往常一样,你有可能会死(hp 为 0)。我想做的是打破游戏的主循环,这是几个功能,大约 5-6(从主要到战斗系统功能),分散在不同的文件中。
结构如下:
core()
while True:
main()
game_over()
- 核心 - 运行s 主函数和 While 循环中的 game_over()
- 主要功能运行游戏
- 主要调用事件函数
- 事件函数根据 conditions/circumstances 做一些事情(如果满足 none 则什么都不做)
-> 每当玩家写入 'battle'
时,该函数就会调用战斗循环
- 战斗循环中使用了相当多的函数,但循环最终做的是检查玩家的生命值是否大于0。
我想做的是,每当玩家的 hp 变为 0(或什至更低)时,main() 函数就会被破坏,这样玩家就可以被提示退出游戏或 运行 主要功能再次出现。我希望这种情况不同于必须在每个函数后键入 return 和一个值。
game_over 函数提示玩家输入 "new" 并再次启动 main() 因为该函数根本不会做任何事情,或者 "quit" 并且该函数将调用退出() 并退出游戏。
TL:DR - 我怎样才能从一个较小的函数中完全脱离一个函数?试图避免 returns?
的数组
您可以提出异常
例如
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
基本上,我正在制作一个基于文本的 python 游戏并且遇到了障碍。
玩家可以进入战斗,和往常一样,你有可能会死(hp 为 0)。我想做的是打破游戏的主循环,这是几个功能,大约 5-6(从主要到战斗系统功能),分散在不同的文件中。
结构如下:
core()
while True:
main()
game_over()
- 核心 - 运行s 主函数和 While 循环中的 game_over()
- 主要功能运行游戏
- 主要调用事件函数
- 事件函数根据 conditions/circumstances 做一些事情(如果满足 none 则什么都不做) -> 每当玩家写入 'battle' 时,该函数就会调用战斗循环
- 战斗循环中使用了相当多的函数,但循环最终做的是检查玩家的生命值是否大于0。
我想做的是,每当玩家的 hp 变为 0(或什至更低)时,main() 函数就会被破坏,这样玩家就可以被提示退出游戏或 运行 主要功能再次出现。我希望这种情况不同于必须在每个函数后键入 return 和一个值。
game_over 函数提示玩家输入 "new" 并再次启动 main() 因为该函数根本不会做任何事情,或者 "quit" 并且该函数将调用退出() 并退出游戏。
TL:DR - 我怎样才能从一个较小的函数中完全脱离一个函数?试图避免 returns?
的数组您可以提出异常
例如
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