重新执行程序并从程序本身恢复变量(Python)

时间:2015-10-20 19:41:51

标签: python variables exception

所以main()是一个运行游戏的游戏循环。每当在游戏循环中引发GameOver异常时(例如,当你在战斗中死亡时),我想提示玩家退出游戏或开始新游戏。如果你开始一个新的游戏,它运作良好,除了一个主要缺陷 - 迄今为止所有变化的变量都保持不变。基本上从异常开始,main()循环被重新运行,但它不会重置变量,因为它们在程序执行期间已被更改。

有没有办法重置变量的值,在某种程度上,重新读取所有python文件而不必重新执行脚本本身?

我有这段代码:

while True:
    try:
        main()
    except GameOver:
        a = game_over_prompt()
        if a == "quit":
            quit()
        else:
            print("\n" * 50)
            print("┌──────────────────────┐")
            print("│ Starting a new game! │")
            print("└──────────────────────┘")
            print()
            loading(30)

1 个答案:

答案 0 :(得分:0)

解决方案是创建一个重置所有变量的函数,然后在开始游戏之前调用它。就这么简单。

为了获得一点点发烧友,并且为了让这更容易,请使用特殊目的类来保存所有游戏数据。然后,对于每个游戏,您将创建此类的新实例并丢弃旧实例。

class GameData(object):
    def __init__(self):
        self.board_size = (100,100)
        self.score = 0
        ...

def main():
    gamedata = GameData()
    ...
    if (something):
        gamedata.score += 1
    ...