2015-10-20 23 views
0

所以main()是一個運行遊戲的遊戲循環。無論何時在遊戲循環內部引發GameOver異常(例如在戰鬥中死亡時),我都會提示玩家退出遊戲或開始新遊戲。如果你開始一款新遊戲,那麼它運行良好,除了一個主要缺陷 - 迄今爲止所有變化的變化都保持不變。基本上從例外情況來說,main()循環會重新運行,但它不會重置變量,因爲它們在程序執行過程中已經被更改了。重新執行程序並從程序本身恢復變量(Python)

有沒有辦法重置變量的值和幾乎所有的方式重讀所有的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

什麼是「加載」?聽起來像'main'不會初始化遊戲狀態,否則這將工作正常 –

+1

重新將它們初始化爲默認值,在每次調用新遊戲時運行的方法中。 – Dan

+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 
    ...