Как выбрать соседние плитки на доске 5 на 5 (6 на 6, не важно)? Делаю задание, стоит задача отобрать все соседние клетки для доски 5 на 5Сначала просто отбираю всех соседей// Вертикальные соседи
$nord = $blockIdFromClick - $n;
$south = $blockIdFromClick + $n;
// Горизонтальные
$west = $blockIdFromClick - 1;
$east = $blockIdFromClick + 1;
// По диагонали (из правого верхнего угла)
$nordEast = $blockIdFromClick - ($n-1);
$southWest = $blockIdFromClick + ($n-1);
// По диагонали (из левого верхнего угла)
$nordWest = $blockIdFromClick - ($n+1);
$southEast = $blockIdFromClick + ($n+1)
Как быть с клетками по краям ? Есть ли какой алгоритм?
А то приходит в голову только сравнение остатка от деления числа на разрядность сетки (в данном случае 5) :)

21 Авг 2019 в 06:07
203 +1
0
Ответы
1

Да, можно использовать остаток от деления для определения клеток по краям доски. Например, для доски 5 на 5:

Вертикальные соседи:

Для верхнего ряда: не учитывать клетки с индексами $n и меньшеДля нижнего ряда: не учитывать клетки с индексами больше $n^2 - $n

Горизонтальные соседи:

Для левого столбца: не учитывать клетки с индексами кратными $nДля правого столбца: не учитывать клетки с индексами кратными $n + 1

Диагональные соседи:

Для верхнего левого угла: не учитывать клетки с индексами $n-1 и меньшеДля верхнего правого угла: не учитывать клетки с индексами кратными $n + 1Для нижнего левого угла: не учитывать клетки с индексами $n^2 - $n и меньшеДля нижнего правого угла: не учитывать клетки с индексами больше $n^2

Таким образом, используя остаток от деления, можно определить правильно соседние клетки на краях доски.

20 Апр 2024 в 13:23
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир