所以我有一个工作的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);
}
}它可以很好地工作,但当我处于边缘时挂起。
我不知道我是否应该根据具体情况做事,或者我是否考虑过度。现在,我有一个自动脚本,可以将点从十六进制随机移动到十六进制,有时将其视为圆环网格并跳到另一侧(不是我想要的,但是我希望通过当前代码实现)或只是挂起我正在寻找一个无限循环。
最佳答案
在这种情况下,如果您的算法有问题,则使电路板的整个边缘变大一整块可能会容易得多。您当然会限制它们用于位置,但是您的邻居逻辑不必在边缘处有所不同。