helloThere555 Ответов: 1

Обертывание близких "соседей" вокруг доски в пределах 2D-массива


Привет, в основном моя проблема выглядит примерно так.

Когда моя часть может быть окружена 8 другими частями, я могу определить их положение. Например,

.....
.....
..С..
.....
.....

Здесь я могу найти положение точек, окружающих "S", потому что если S-это массив[2][2], то точка к северу от него будет просто массивом[2][1].

Однако моя проблема возникает, когда моя фигура находится прямо в углу доски или внизу, поэтому у меня больше нет этого симметричного расположения 8 точек вокруг нее.

Надеюсь, эта картина сделает мой вопрос гораздо более ясным!

screeshot — Postimages[^]

screeshot — Postimages[^]

Как вы можете видеть, "соседи" выбранной фигуры теперь обернуты вокруг доски. Я просто не могу понять, как я могу определить местоположение этих частей сейчас.

Что я уже пробовал:

Я пробовал проверять с помощью таких условий, как

if (row - 1 < 0){

      neighbourRow = grid.getRow();      

  }


Это один из таких примеров типов условий, которые я реализовывал. Очевидно, однако, что довольно утомительно пытаться вручную предвидеть каждый вид позиции, в которой будет находиться выбранная фигура. Как бы вы, ребята, это сделали?

1 Ответов

Рейтинг:
0

OriginalGriff

Самое простое решение-держать "границу" вокруг четырех сторон вашей карты.
Поэтому, если вам нужна карта 3х3, вы объявляете ее как 5х5:

bbbbb
b...b
b...b
b...b
bbbbb
Точки-это те самые n x n "игровая площадка" и буква " Б " - это граница.
Затем для игры вы используете индексы от 1 до n включительно.
Установите всю границу пустой, и вы можете использовать "play location" плюс или минус один, не проверяя индексы на правильность.


helloThere555

А-а, понятно. Спасибо, но у меня есть один короткий вопрос. Скажем, я хотел бы создать соседний массив для текущего местоположения воспроизведения, тогда, конечно, мне пришлось бы переназначить значения границы исходному nxn. Например

(1,1) теперь будет частью массива neigbourhood места игры, так как (4,1) является частью пограничной версии района playlocations?