我知道有很多关于像素和六边形的问题,但我仍然难以理解其中某些方面。此外,我不确定这会有多大的区别,但我正在使用Java进行开发。
首先,我理解笛卡尔坐标系可以存储在一个二维数组中,使得棋盘上的每个坐标都是二维数组中的一个条目。但是,我想使用一种六边形的网格来创建更好的游戏网格,就像Amit的页面http://www.redblobgames.com/grids/hexagons/中描述的那样。
我理解在创建六边形网格之后的概念(使用x、y、z获取相邻坐标),但是我无法存储我的坐标。以前,每个坐标对应于二维数组中的一个条目(笛卡尔坐标系)。现在,我不确定如何使其对应以获得坐标之间的六边形关系。
按照指南,我尝试在每行偏移坐标(特别是尝试链接中的偶数行偏移示例),如下所示: 在这个例子中,上方是坐标,下方是数组的可视化表示(空格是具有“跳过”哨兵的条目,1是与坐标相对应的条目)。
每个坐标的邻居是{{-1,1},{1,1},{1,-1},{-1,-1},{0,2},{0,-2}}。然而,我认为这并不正确?我想到了其他实现六边形网格的方法,其中之一是使用双向链表结构从中间开始,并将坐标关联为“节点”,或硬编码地图(这几乎是不可能的,因为我计划制作一个大地图)。但是,我宁愿坚持偏移量的想法,因为它更容易使用。
我认为我的问题在于每一行都应该偏移1/2,但我给它们“洞”(哨兵条目)。也许我应该使用六边形的几何来将坐标转换为六边形。但是,除非将它们存储在某些数据结构中,否则我无法在路径查找时使用这些单独的六边形。任何代码或帮助都将不胜感激。
首先,我理解笛卡尔坐标系可以存储在一个二维数组中,使得棋盘上的每个坐标都是二维数组中的一个条目。但是,我想使用一种六边形的网格来创建更好的游戏网格,就像Amit的页面http://www.redblobgames.com/grids/hexagons/中描述的那样。
我理解在创建六边形网格之后的概念(使用x、y、z获取相邻坐标),但是我无法存储我的坐标。以前,每个坐标对应于二维数组中的一个条目(笛卡尔坐标系)。现在,我不确定如何使其对应以获得坐标之间的六边形关系。
按照指南,我尝试在每行偏移坐标(特别是尝试链接中的偶数行偏移示例),如下所示: 在这个例子中,上方是坐标,下方是数组的可视化表示(空格是具有“跳过”哨兵的条目,1是与坐标相对应的条目)。
每个坐标的邻居是{{-1,1},{1,1},{1,-1},{-1,-1},{0,2},{0,-2}}。然而,我认为这并不正确?我想到了其他实现六边形网格的方法,其中之一是使用双向链表结构从中间开始,并将坐标关联为“节点”,或硬编码地图(这几乎是不可能的,因为我计划制作一个大地图)。但是,我宁愿坚持偏移量的想法,因为它更容易使用。
我认为我的问题在于每一行都应该偏移1/2,但我给它们“洞”(哨兵条目)。也许我应该使用六边形的几何来将坐标转换为六边形。但是,除非将它们存储在某些数据结构中,否则我无法在路径查找时使用这些单独的六边形。任何代码或帮助都将不胜感激。