2D平台游戏的适当级别表示/数据结构?

时间:2011-08-23 00:18:11

标签: java data-structures 2d

我打算用Java编写Mario的副本。我正在考虑关于级别的2个表示/数据结构,但我不确定应该选择哪一个:

  • 2D整数数组。
  • 用于分割水平的四叉树。

它的优点和缺点是什么?

2 个答案:

答案 0 :(得分:5)

绝对是某种类型的二维数组。整数将是一个好主意,但字符将是一个更好的主意。

考虑制作一个基本上是“地图”的文本文件。它可以是10行×10列的文本。在这种情况下,一个非常简单的地图。也许你可以用“a”来表示草,用“b”来表示砖。通过这种方式,您甚至可以在将地图投入使用之前直观地了解地图。但您基本上可以编写应用程序以依赖此地图文本文件。

例如,请考虑这张地图:

bbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaa

所以,这看起来就像一条长长的砖路,长满了3排长草。想象一下,使用各种字符a-z和A-Z制作这个方案要复杂得多,甚至是像$或%或&的标点符号。

然后,您可以通过更改文本文件即时创建地图。如果使用整数,则仅限于10个字符(或10个地图对象本身)。例如,如果你有10个对象,那么如何制作一个数字彼此相邻的文本文件呢?你不会知道如何分开数字。

四叉树的缺点是它过于复杂,不允许快速访问特定元素。

答案 1 :(得分:2)

真的,这取决于你。我能想到的一种方法是拥有一个二维数组的地图图块,可以是清晰的,也可以是一个对象。瓷砖有一定的尺寸。当然,那么你有问题,如果有些东西是半个瓷砖。另一个选项是具有对象数据和位置的对象数组。除非您对数据进行排序,否则效率会降低。

如果您认为您的地图对象很重,我建议使用2d平铺地图。否则,我将使用一组对象或并行数组(您的选择)来指定项目的位置和类型。