В двумерном массиве ячейка может иметь четырех соседей. Например, вот сетка 4x4:
0 1 2 3
-----------------
0 | | | N | |
-----------------
1 | | W | C | E |
-----------------
2 | | | S | |
-----------------
3 | | | | |
-----------------
Ячейка, помеченная "C" в позиции (x = 2, y = 1), строка 1, имеет четырех соседей, которые я обозначил N , E, S и W. Если ячейка в Вас получает соседей по:
. Северный сосед находится на позиции (x, y-1)
. Восточный сосед находится на позиции (x+1, y)
. Южный сосед находится на позиции (x, y+1)
. Западный сосед находится в позиции (x-1, y)
Однако вы должны быть осторожны, потому что, если эти вычисления не будут охраняться, вы можете выполнить индексирование за пределами массива. Чтобы проверить направления, вам нужно что-то сделать например:
// check North neighbor
if (y > 0 && isNotOpen(a[y-1, x])) {
...
}
Проверка y > 0
не позволяет вам пытаться проверить ячейку a[x, -1]
, когда y == 0
. Вы должны написать аналогичные проверки для других направлений, чтобы предотвратить неправильную индексацию.