2011-08-23 67 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