我創造了一定的卡片比賽中的分數計算器。它在導航和視圖控制器方面變得相當複雜。基本上,我需要的是一種方法來跟蹤當前分數,4個玩家在啓動時實例化的對象和一種跟蹤遊戲進度的方式(遊戲有4種「級別」或「週期」) 。
可能的解決方案
所以我在想什麼做的是建立一個Singleton類分數經理。我還創建了一個玩家對象,我可能會在AppDelegate類中實例化它,並在新的VC加載時讓它們在數組中傳遞它們。
繼續上場比賽
我想應用存儲的最後一場比賽,如果應用程序已經終止,並恢復它在啓動時的選項。我將不得不跟蹤:球員的名字,每位球員的得分,以及每輪比賽的詳細得分表。
我的問題
是我的解決方案在AppDelegate中創建4個玩家對象,並在每個VC通過他們VC的推動好的解決辦法?如果不是,遊戲通常如何實現Player對象?過去我使用C++和Java創建了遊戲,但過於簡單,「遊戲管理器」只有一個類,所以我從來不必處理傳遞玩家對象。此外,如果玩家點擊「返回」並且導航控制器從其堆疊中彈出一個項目,玩家對象是否仍會在前一個VC中實例化?如果沒有,當「後退」按鈕被擊中時我是否也必須通過它?
我可能會將分數管理也跟蹤遊戲的進度,或者遊戲在使用Singleton類的地方。這是一個很好的設計決定嗎?
要存儲名稱,分數和整個記分表,建議只使用
NSUserDefault
還是使用plist更好?特別是因爲我需要跟蹤記分表?
任何實施建議非常感謝。
謝謝。是的,我已經有一個Player.m和Player.h,所以一個Player對象。但是,我是否必須在每次導航控制器推送時都傳遞它們?流行音樂怎麼樣?播放器對象是否保持活動狀態,還是需要在導航控制器被收回時再次通過播放器對象? – darksky
這完全取決於其範圍。我假設的是,你將完整的遊戲邏輯放在一個場景中。在那裏你需要創建一個你的播放器的實例。在全局聲明它,並在init()中初始化它。在不需要的時候,在init()中而不是在dealloc()中釋放它。因爲您可能會在同一場景中以其他方式重新使用它,所以您可以再次創建它。 – Nitish