Задать вопрос
Lunali
@Lunali
скрытна.

Как сгенировать лабиринт со стенами, что бы в этом лабиринте всегда был путь?

Простой лабиринт генерируется из тайлов.
606f5f9c92af3928654573.png

Генерация лабиринта со стенами иметь отличия . Есть теоретически два решения ,но которые проблематично применить на практике.
Язык программирования не важен.
Важно само решение ....... Задача построить генерируемый лабиринт со стенами где всегда есть вход и выход ...
У вас есть тайлы вертикальный и перпендикулярные.
606f60cff23b5407525598.jpeg

проблема в том что у вас будет тупик ....
Как этого избежать и обеспечить поворот тайла ?

Нужно теоретическое решение ,которое реализуется программно ,с пошаговой пояснением теории
  • Вопрос задан
  • 311 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
Griboks
@Griboks
Есть довольно простой и понятный алгоритм:
1) Становимся в начальную точку, смежную со входом.
2) Генерируем случайный тайл (г, -, +, т, ...) таким образом, чтобы у него был соединён вход и не блокирован (стенками лабиринта и других тайлов) хотя бы один выход.
3) Если такого выхода нет, генерируем новый тайл, чтобы был. Если всё равно нет, то переходим к пункту 5.
4) Перемещаемся к выходу текущего тайла. Теперь пустое место - это наша текущая точка.
5) Повторяем до тех пор, пока не упрёмся в тупик, т.е. не будет свободного выхода из текущего тайла.
6) Возвращаемся назад до первого ветвления и повторяем алгоритм.
7) Если опять тупики во всех ветках, то возвращаемся ещё дальше назад.
8) Если мы всё-таки вернулись ко входу в лабиринт, значит всё стираем и запускаем алгоритм по новой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@cicatrix
было бы большой ошибкой думать
В своё время делал довольно прямолинейно. На лабиринте генерил сначала путь из точки А в точку Б случайным образом и помечал эти клетки как проходные. А уж потом вокруг генерировал случайным образом весь остальной лабиринт.
Ответ написан
@alexbprofit
Junior SE
Это задание а не вопрос
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы