高级函数在python中返回低级函数?

时间:2015-10-20 16:29:04

标签: python function return

基本上,我正在制作一个基于文本的python游戏,并遇到了障碍。

玩家可以进入战斗,并且一如既往,你有可能会死(hp为0)。我想要做的是打破游戏的主循环,这是几个功能,大约5-6(从主系统到战斗系统功能),分散在不同的文件中。

结构如下:

core()
    while True:
        main()
        game_over()
  • core - 在While循环中运行main函数和game_over()
  • 主要功能运行游戏
  • 主要呼叫事件功能
  • 事件函数根据条件/情况执行某些操作(如果不满足,则执行任何操作) - >每当玩家写“战斗”时,该函数就会调用战斗循环
  • 在战斗循环中使用了很多功能,但循环的作用是最终检查玩家的hp是否大于0。

我想要做的是,每当玩家的hp变为0(或甚至低于)时,main()函数将被破坏,以便然后可以提示玩家退出游戏或再次运行主要功能。我希望这与在每个函数后输入return和值之后不同。

game_over功能提示玩家键入“new”并再次启动main(),因为该功能根本不会执行任何操作,或“退出”并且该功能将调用quit()并退出游戏。

TL:DR - 如何从较小的功能中完全摆脱功能?试图避免一系列的回报?

1 个答案:

答案 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