gpt4 book ai didi

Java:存储无限游戏世界的坐标图的好数据结构是什么?

转载 作者:IT老高 更新时间:2023-10-28 20:38:56 24 4
gpt4 key购买 nike

我习惯于使用 PHP 进行编码,但我对 Java 并不精通,这已经成为一个问题已有一段时间了。我希望它是一个相当简单的解决方案,但是我无法以任何方式搜索到任何好的示例代码,所以这里是:

我正在编写一个游戏,该游戏发生在基于图 block 的 map 上的 2d 随机生成的无限世界中(吹毛求疵:我知道它不会是真正的无限。我只是希望世界会很大)。 map[x][y] 多维数组的常用方法最初是一个基本思想,但由于 Java 没有像 PHP 那样为非整数(即负数)数组键恶作剧提供方法,所以我不能正确地拥有 (- x,+x,-y,+y) 坐标系与数组键。

我需要能够在特定 x,y 坐标的图 block 上找到对象,以及找到某个图 block 的“相邻图 block ”。 (如果我可以 getObjectAt(x,y),我可以 get(x+1,y) 等等,这很简单)

我读过有关四叉树和 R-tree 等的内容。这个概念令人兴奋,但是我还没有看到任何好的、简单的 Java 示例实现。此外,我不确定这是否正是我需要的。

欢迎任何建议

谢谢

最佳答案

1) 您可以使用 Map<Integer, Map<Integer, Tile>> 来代替数组或 Map<Point, Tile> , 这当然允许负索引

2) 如果您从一开始就知道您的世界的维度,您可以修改您的 getter 以允许 API 接受负数并将它们[线性] 转换为正数。因此,例如,如果您的世界是 100x1000 瓷砖并且您想要 (-5,-100),您将拥有 WorldMap.getTile(-5,-100)这将转换为 return tileArray[x+mapWidth/2][y+mapHeight/2];即 (45,400)

关于Java:存储无限游戏世界的坐标图的好数据结构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5226043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com