所以我有一个有效的getNeighbors函数:
(它的静态基于我的地图有多大,还没有让它变得动态......虽然那不应该是个问题)
其19x12
public int [] getNeighbors(int i){
int[] neighbors = new int[6]; if (((i % xlength) % 2) == 0) { neighbors[0] = (i - 19); neighbors[1] = (i - 18); neighbors[2] = (i + 1); neighbors[3] = (i + 19); neighbors[4] = (i - 1); neighbors[5] = (i - 20); } else { neighbors[0] = (i - 19); neighbors[1] = (i + 1); neighbors[2] = (i + 20); neighbors[3] = (i + 19); neighbors[4] = (i + 18); neighbors[5] = (i - 1); }
}
一切都很好,花花公子,但当我在边缘时挂起。
我不知道我是否应该逐案处理,或者我是否过度思考它。现在我有一个自动脚本,用于随机地从十六进制到十六进制移动点,有时它将它视为圆环网格并跳到另一边(不是我想要的,但我期望它与当前代码)或只是挂起在我寻找的无限循环中。
答案 0 :(得分:3)
在这样的情况下,算法存在问题,使得电路板在边缘周围的一块瓷砖更加简单可能要简单得多。你当然会限制它们用于位置,但你的邻居逻辑不需要在边缘不同。