所以我有一个有效的 getNeighbors 函数:
(它的静态基于我的地图有多大,还没有让它成为动态的......虽然这不应该是一个问题)
它的 19x12
公共 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); }
}
它工作得很好,花花公子,但当我在边缘时挂起。
我不知道我是否应该逐案进行,或者我是否想得太多。现在我有一个自动脚本,用于将点从十六进制随机移动到十六进制,有时它会将其视为圆环网格并跳到另一侧(不是我想要的,但我希望使用当前代码)或者只是挂起在我正在寻找的无限循环中。