2016-03-02 70 views
0

我現在正在製作遊戲一個星期,我希望能夠「重置」遊戲。在應用程序啓動時,使每個變量恢復到其原始值。重置所有變量項目範圍的最佳方法? ---(Java)

是否有任何內置的方法來完成此任務?我大概有20個類和幾百個變量。我可以在每個類中創建一個reset()方法,然後在嘗試重置時調用每個方法。

有沒有比這更簡單的方法呢?

+0

除了在代碼中明確提供重置功能之外,沒有辦法做到這一點。 –

+0

只是重新初始化你的遊戲對象'game = new Game();' – svarog

+0

如果你想讓它變得複雜,可以製作一個自定義註釋,用這個註解標記你的類,用這個註解列出所有的類,使用反射來重置這些類的屬性。 – Kartic

回答

2

我會這樣做:對於每一個類,初始化所有實例變量,而不是在構造函數中,但是在一個單獨的方法中(如initializeVariables()),然後從構造函數中調用它。像這樣,您可以隨時使用此方法重置所有變量。當然,你必須分別爲每個班級做到這一點。

+0

是的,這正是我正在談論的事情,只是想知道是否有更快的方法來實現這一點。我想沒有。 –

0

您可以利用這一事實,即您使用Java編寫遊戲以獲得優勢。如果你想「重置」你的類,你可以只是重新初始化它們像這樣

game.doSomething(); 
.... 
game = new Game(); 

Java將然後採取老遊戲,並使其通過GC,所以基本上你讓你的類的構造函數的reset()方法(爲什麼它不是?這是建設者的工作)。您還應該重置使用Game生成的任何其他對象。關於它的巧妙之處在於,當您修改遊戲對象時,您不必「記住」默認值。

如果您的遊戲使用系統資源(SQL連接,FileBuffers等),您當然需要在重置遊戲之前關閉它們。在這種情況下,你可以在你的遊戲中定義一個狀態(沒有視圖),當用戶重置遊戲時將被訪問。

這個'重置狀態'將負責釋放系統資源,並在完成後將用戶轉移到主菜單狀態,您也可以使用此機會保存您想要保留的任何數據。

+0

舊的遊戲仍然會在系統內存中,但是,對嗎?它會收集垃圾嗎?如果不是=空?雖然這將是我認爲的最佳解決方案?遊戲game2 =新遊戲(); game1 = null; –

+0

舊的遊戲對象將被垃圾收集,只要它不被任何東西或項目中的任何其他地方引用。 – svarog