Доброго времени суток,
В этой статье вы научитесь лёгкому алгоритму поиска пусти. Пусть ширина клетки будет 5 а диагональ приблизительно 7. Итак, у нас есть какое-то поле, точка отправления и точка прибытия. Предположим что зелёный маркер - начало пути, а красный - конец.
Теперь перебираем все клетки которые стоят рядом с нашей зелёной точкой и заносим их в очередь на рассмотрение. К значению клетки прибавляем 5 либо 7 в зависимости от того, что за путь, диагональ либо прямая. После перебора всех рядом стоящих клеток выносим исходную из очереди. Далее делаем то же самое для каждой клетки из нашей очереди. Прибавляя в соседней клетке её значение + 5 либо 7. Если две клетки ссылаются на одну соседнюю то ищем меньшее значение между ними, записываем. Через несколько шагов Вы должны получить такую картину.

В следующем шаге в клетке нашего красного круга появится первое значение. После него цикл заканчивается. Далее создаём новый массив и записываем в него номер соседней клетки с минимальным значением. Затем переходим к ней и делаем то же самое, дополняя наш массив, пока не достигнем отправной зелёной точки. Если на пути будут 2 клетки с одинаковыми значениями, то записываем любую из них. Наш путь найден. Зелёной точке осталось только передвигаться по клеткам из массива в цикле от последнего индекса массива к первому.
Надеюсь я Вам помог, всего хорошего, TagumPlay.
Автор: TagumPlay.
|