基于2D图块的游戏中的项目

时间:2013-03-09 10:08:45

标签: java roguelike

我正在用Java制作一个基于2d瓦片的游戏,我想知道世界上存储物品的最佳方式是什么。在过去,我总是使用与世界相同大小的阵列,但我想创造一个非常大的世界,而且我知道这是一个坏主意。所以我只是想知道最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

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

通过这种方式,您可以检测到瓷砖上的物品是否非常快( O(1),而不是仅在有物品时才在List<Item>中搜索。列表您可以使用二进制搜索(首先与x坐标相关,并在具有相同x坐标的所有项目的子列表中使用所需y坐标的二进制搜索) O(log(n)) [ n =项目数量。

如果你想节省内存,我会考虑使用elementar数据类型来指定磁贴(例如int)并存储您的世界,例如在int[][]中。

答案 1 :(得分:0)

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