Jon*_*anb 10 python grid tiles hexagonal-tiles
编辑:在代码块中包装示例映射,以便格式正确.
好吧,我正在尝试在六边形网格上编写一个非常简单的A*算法.我明白了,可以做A*部分.事实上,我的A*适用于方格网格.我无法包裹我的大脑是找到六边形的邻居.这是海格网格的布局
0101 0301
0201 0401
0102 0302
0202 0402
Run Code Online (Sandbox Code Playgroud)
等等
所以,我需要帮助的是编写一个Hexagon类,给定它的十六进制坐标,可以生成一个邻居列表.它需要能够生成会从网格中"掉落"的邻居(如20x20网格中的0000或2101),因为这就是我的A*轨道并排放置在多个地图上的方式.所以可以使用这段代码片段:
planet = Hex('0214')print(planet.neighbors())['Hex 0213','Hex 0215','Hex 0115','Hex 0315','Hex 0116','Hex 0316']
这取决于您如何定义六角形瓷砖的坐标.
让我们来看看.
, , , ,
/ \ / \ / \ / \
| A1| A2| A3| A4|
\ / \ / \ / \ /
| B1| B2| B3|
/ \ / \ / \ / \
| C1| C2| C3| C4|
\ / \ / \ / \ /
' ' ' '
Run Code Online (Sandbox Code Playgroud)
在这种情况下,偶数和奇数行的邻居定义是不同的.
对于Y为偶数的单元格(X,Y),邻域为:(X,Y-1),(X + 1,Y-1),(X-1,Y),(X + 1,Y) ,(X,Y + 1),(X + 1,Y + 1)
对于Y为奇数的单元格(X,Y),邻域为:(X-1,Y-1),(X,Y-1),(X-1,Y),(X + 1,Y) ,(X-1,Y + 1),(X,Y + 1)