在2D六边形网格上查找邻居

时间:2012-12-30 05:17:41

标签: java

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

}

一切都很好,花花公子,但当我在边缘时挂起。

我不知道我是否应该逐案处理,或者我是否过度思考它。现在我有一个自动脚本,用于随机地从十六进制到十六进制移动点,有时它将它视为圆环网格并跳到另一边(不是我想要的,但我期望它与当前代码)或只是挂起在我寻找的无限循环中。

1 个答案:

答案 0 :(得分:3)

在这样的情况下,算法存在问题,使得电路板在边缘周围的一块瓷砖更加简单可能要简单得多。你当然会限制它们用于位置,但你的邻居逻辑不需要在边缘不同。