2010-04-05 91 views
0

我正在寫一個遊戲,需要一張地圖,我想存儲地圖。我能想到的第一件事就是使用2D陣列。但問題是我應該在2D陣列中存儲哪些數據。玩家可以點擊不同的地方以產生不同的反應。所以,我想在玩家點擊某個位置時,用對象存儲2D數組,然後在數組中找到它,並使用該數組中的對象執行cmd。但我擔心存儲大量對象可能會佔用大量內存。所以,我認爲只存儲char/int。但對我來說這似乎還不夠。我希望將數據存儲這樣的:哪種方式來存儲這些數據是有效的?

{ 
Type:1 
Color:Green 
} 

不管是什麼顏色,如果他們都是類型1,在邏輯相同的反應,但視覺效果是基於色彩。所以,這是不容易的使用普魯字符/ int數據存儲,除非我做這樣的事情:

1-5 --> all type 1. 1=color green , 
2=color red, 3 = color yellow.... ... 
6-10 --> all type 2. 2 = color green, 
2 = color red ... ... 

那麼,你對如何儘量減少RAM使用的任何想法,但還難不倒我閱讀...... THX

+0

你是說你可能想通過合併相同的數據點來優化存儲空間嗎?對我而言,當數據發生變化時,合併和取消合併的額外CPU工作將不值得保存RAM。當然,這取決於你是如何做到的,但如果你想要任何體面的反應時間,我認爲這是不合理的。 – MJB 2010-04-05 14:12:40

回答

0

來吧,存儲了一堆數組中的對象,但與這兩個改進:

  • Store中指針的對象,而不是對象本身。 (目標C可能會自動爲您處理;我不知道)

  • 請記住,指向單個對象的指針可以出現在數組的多個位置中。所有共享相同顏色和行爲的方塊都可以共享一個對象。

如果你做數學上的數組的大小和不同平方數,所以我們可以知道你到底有多少RAM談論它也將有所幫助。

+0

這是約10 * 10的陣列,但你可能知道它不僅是吃掉我的記憶,還有圖像,效果,布布布... ... – Tattat 2010-04-05 14:18:06

+0

如果它只有10x10瓷磚,我不會擔心記憶。是的,當你將一個對象存儲在一個Objective-C數組中時,你只需要存儲指針(並且該數組保留該對象)。也就是說,我可能仍然會考慮使用普通的C 2D數組和存儲結構,因爲它具有更好的可擴展性。但是,如果現在感覺像是一種痛苦,那麼就用最簡單的解決方案吧。 100個物體不會造成任何問題。 – Felixyz 2010-04-05 18:36:01