所以我有一个工作的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);
  }
}

它可以很好地工作,但当我处于边缘时挂起。
我不知道我是否应该根据具体情况做事,或者我是否考虑过度。现在,我有一个自动脚本,可以将点从十六进制随机移动到十六进制,有时将其视为圆环网格并跳到另一侧(不是我想要的,但是我希望通过当前代码实现)或只是挂起我正在寻找一个无限循环。

最佳答案

在这种情况下,如果您的算法有问题,则使电路板的整个边缘变大一整块可能会容易得多。您当然会限制它们用于位置,但是您的邻居逻辑不必在边缘处有所不同。

10-06 09:57