2012-08-30 77 views
5

這不是一個技術問題,因爲它是一個風格問題。我正在對Android的peg solitaire進行概括,並且會有不同的級別可以玩。他們每個人都有不同的棋盤開始配置,你可以做不同的棋步等等。現在我已經用單一基本級別編程了,所有這些變量都是初始化的。如何在Android遊戲中存儲關卡?

我是否添加了具有所有不同種類層次的文本文件,並對其進行編程以從文本文件中讀取?我是否在每個級別添加了一個包含所有這些信息的Level類,並在初始化時創建了多個Level對象?我是否創建一個Level類,但是通過讀取文本文件中的級別來初始化它?

我確定所有的方法都能正常工作,但是有沒有一種標準的方法來做到這一點?我從來沒有編寫過這樣的程序。

+1

我會通過XML來完成,然後將其加載到一個「Level」類中。但也許這只是我。 – Eric

+0

Android上的XML解析非常緩慢。 –

+0

避免XML,我不知道Android,但應該有另一種方法來序列化您的Level級別,獲取更多的原始數據。 你沒有談論它,但你需要一個關卡編輯器,即使是一個簡單的。一旦擁有它,存儲數據和檢索並不困難。 – bokan

回答

4

真的沒有一個標準的方式來做你想做的事情,這取決於你需要存儲的數據的複雜性來做每個級別的初始化。這些數據會發生變化還是靜態的?將它正確組織並與代碼邏輯分離是否有意義?這些是你需要回答自己的問題,因爲這是你的遊戲,我們不知道所有的細節。

鑑於此,您決定是否應將該數據存儲在XML文件,TXT文件或其他文件中。真的沒有一個正確的答案。但你應該(IMO)總是有某種類型的Level類,這是在OOP上下文中的正確方法。構造函數可以具有必要的參數來從XML/TXT /任何數據構建關卡。它也可以具有所有的關卡參數,所以如果你需要出於某種原因,你可以通過代碼初始化所有的參數。當然,不要忘記所有這些級別屬性的getter/setter方法。

我認爲你的一件事不應該做是「在初始化時創建幾個Level對象」。你應該將你的遊戲邏輯和數據分開,你不應該這樣混淆。

可能不是您尋找的答案,但它主要取決於您。

+0

數據是靜態的。如果我在初始化時沒有製作對象,我什麼時候製作它們?你的意思是說,我不應該在初始化時明確寫入所有級別參數嗎?爲什麼我需要setter方法?我不會只使用構造函數嗎? – DanielLC

+0

我的意思是,你認爲我的意思;)你可以,對於雖然調試的目的,這很好。但是對於你的最終代碼,你應該將你的遊戲邏輯與數據分開。這只是一個好習慣。如果你不需要setter方法,不要使用它們,我是通用的。但是,如果您爲了調試目的而需要更換其他設備,他們可能會派上用場。這完全取決於你,沒有太大的區別。 –

2

在那麼一個數據庫取決於哪個級別的用戶選擇我和朋友正在做它存儲水平的方式屬性,我們讀取數據庫和加載到該用戶的遊戲創建水平我們的水平班!

編輯

我們是初學者一樣好,但它已經很容易使新的水平第一個提出後。 =]特別是因爲我們所要做的就是在數據庫中添加一行並填寫值。