Если у меня есть игровая доска 4x4, которую я представляю в своей программе как целочисленный массив 1d размера 16.
Как я могу получить индексы квадратов выше, ниже, слева и справа от любого заданного индекса?
Так, например:
A = { 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 }
Который представляет эту доску
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
Допустим, я в настоящее время нахожусь в индексе № 8 на доске (значение = 7). Как я могу получить индекс для 4 (значение = 3), 5 (значение = 6), 10 (значение = 11) и понять, что справа нет квадрата, потому что он находится на правом краю доски.
Я знаю, что мне нужно использовать некоторую модульную математику, но я не могу найти правильный способ получить индексы для соседних квадратов.
Я думаю что-то вроде ...
if ((i % 4) + 1 < 3) right = i + 1;
if ((i % 4) - 1 > 0) left = i - 1;
if ((i % 4) + 4 < 15) bottom = i + 4;
if ((i % 4) - 4 > 0 ) top = i - 4;
Похоже, это правильный подход?