2013-03-09 87 views
1

我想提出一个2D瓷砖基于游戏在Java中,我想知道什么是最好的方式来存储世界的项目了。在过去,我一直使用数组的世界同样大小,但我想使真正的大的世界,我知道一个事实,这将是一个坏主意。所以我只是想知道最好的方法是什么?项目在一个基于2D瓷砖游戏

+0

的java.util.List或java.util.Map这取决于你想怎么看东西 – MadProgrammer 2013-03-09 10:12:01

回答

1

如果如定义瓷砖的类型由INT,你可以使用一个位的它表明,如果有一个项目。 你在用x坐标排序的列表存储项目本身(如果x坐标是一样的,不是使用y坐标为第二顺序属性)。

这种方式可以检测,如果有图块上的速度非常快(一个项目O(1)和比List<Item>只搜索,如果有一个项目。在列表中,您可以使用二进制搜索(第一相关的x坐标,并在所有项目的子列表中具有相同的x坐标使用二进制搜索所需的y坐标)O(log(n)) [n =项数]

如果你要节省内存,我会考虑使用Elementar公司的数据类型指定瓷砖(例如int)和存储您的世界如在int[][]

0

项目,以及这些(X,Y)的列表坐标应该可以正常工作了真正巨大的世界也是如此。

+1

即使阵列的99%设置为null,它仍然占据尽可能多的内存,如果他们都满了,所以我希望的东西高效 – user2103959 2013-03-09 10:15:18

+0

存储列表使用容器之一java.util中如java.util.ArrayList或java.util.List – uba 2013-03-09 10:17:58