3

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

}

它工作得很好,花花公子,但当我在边缘时挂起。

我不知道我是否应该逐案进行,或者我是否想得太多。现在我有一个自动脚本,用于将点从十六进制随机移动到十六进制,有时它会将其视为圆环网格并跳到另一侧(不是我想要的,但我希望使用当前代码)或者只是挂起在我正在寻找的无限循环中。

4

1 回答 1

3

在这种情况下,如果您的算法有问题,将电路板在边缘处变大一格会简单得多。您当然会限制它们用于位置,但是您的邻居逻辑不需要在边缘有所不同。

于 2012-12-30T07:29:52.110 回答