所以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)
答案 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
...