2011-08-23 62 views
2

我即將在Java中編寫Mario的副本。我正在考慮關卡的2個表示/數據結構,但我不確定應該選擇哪一個:2D平臺遊戲的適當級別表示/數據結構?

  • 2D整數數組。
  • 四叉樹將水平分成幾部分。

它有什麼優點和缺點?

+0

你是什麼意思?你問如何劃分地圖?遊戲? –

+0

地圖。對不起,如果不清楚。 – Rama

+0

cross-post http://gamedev.stackexchange.com/q/16306/6588 – jhocking

回答

5

絕對是某種類型的二維數組。整數將是一個好主意,但是角色會是更好的主意。

考慮製作一個基本上是「地圖」的文本文件。它可以是10行10列的文本。一個非常簡單的地圖,在這種情況下。也許你可以用「a」來表示草,用「b」來表示磚。通過這種方式,您甚至可以在實施之前直觀地瞭解您的地圖。但你基本上可以編程你的應用程序來依賴這個地圖文本文件。

例如,考慮這個地圖:

bbbbbbbbbbbbbbbbb 
aaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaa 
aaaaaaaaaaaaaaaaa 

所以,這看起來像上述3個長草的排很長的磚路。想象一下,使這種方案更加複雜,使用各種字符a-z和A-Z,甚至像$或%或&這樣的標點符號。

然後,只需通過更改文本文件即可創建地圖。如果使用整數,則僅限於10個字符(或10個地圖對象本身)。例如,如果你有更多的10個對象,那麼你怎樣才能創建一個數字相鄰的文本文件。你不會知道如何分離數字。

四叉樹的缺點是它過於複雜,並且不允許快速訪問特定元素。

+1

'如果您使用整數,則僅限於10個字符(或10個地圖對象,本身)。「 - 這使我誤以爲一個int可以非常大,直到Integer.MAX_VALUE。 –

+0

,因爲如果您想在文本文件中使用可視地圖,您可能很容易混淆1位整數和多位數字整數。 – CodeGuy

+0

看到編輯答案。 – CodeGuy

2

真的,這取決於你。我能想到的一種方式是擁有一個2d的地圖圖塊陣列,無論是清晰還是對象。瓷磚會有一定的尺寸。當然,如果有些事情是半瓦的話,你就會有問題。另一個選項是內部包含對象數據和位置的對象數組。除非您對數據進行排序,否則效率較低。

如果你認爲你的地圖對象很重,我會建議一個2d的地圖。否則,我會用一組對象或並行數組(您的選擇)指定項目的位置和類型。

+0

謝謝你的回答:)順便問一下,我該如何解決「東西是半瓦」的問題? – Rama

+0

讓你的瓷磚更小?我不確定。也許你可以存儲一個「偏移」值。 –

+0

什麼是偏移值? – Rama