1

我正在用 Java 制作一个基于 2d 瓷砖的游戏,我想知道在世界上存储物品的最佳方式是什么。过去我一直使用与世界大小相同的数组,但我想制作非常大的世界,而且我知道事实上这不是一个好主意。所以我只是想知道最好的方法是什么?

4

2 回答 2

1

如果你定义你的瓷砖的类型,例如通过一个int,你可以使用它的一位来指示是否有一个项目。您存储在按 x 坐标排序的 List 中的项目本身(如果 x 坐标相同,则使用 y 坐标作为第二个排序属性)。

这样,您可以非常快速地检测图块上是否有项目(O(1)并且List<Item>仅在有项目时才搜索。在列表中,您可以使用二进制搜索(首先与 x 坐标相关,并且在具有相同 x 坐标的所有项目的子列表中,对想要的 y 坐标使用二进制搜索)O(log(n)) [n = 项目数]。

如果您想节省内存,我会考虑使用基本数据类型来指定图块(例如 an int)并将您的世界存储在例如 an 中int[][]

于 2013-03-09T10:44:17.933 回答
0

项目列表及其 (x,y) 坐标也应该适用于非常大的世界。

于 2013-03-09T10:12:17.033 回答