だから私は実用的な 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); }
}
それはすべてうまく機能しますが、端にいるとハングします。
ケースバイケースでやるべきなのか、それとも考えすぎなのかわかりません。現在、ドットを 16 進数から 16 進数にランダムに移動するための自動化されたスクリプトがあり、それをトーラス グリッドとして扱い、反対側にホップすることがあります (私が望むものではありませんが、現在のコードでは期待していました)。探している無限ループで。