Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать сложный лабиринт?

Радиоактивный изотоп Мастер (1543), закрыт 13 лет назад
Как сделать такой лабиринт, чтобы его нельзя было пройти по принципу "всегда налево" или "всегда направо". Такой принцип означает, что держась вдоль левой\правой стены и поворачивая налево\направо, вы полностью обойдёте обычный лабиринт и попадёте к второму выходу (финишу). Возможно ли сделать лабиринт, чтобы этот метод не помог пройти его?
Лучший ответ
Shamissio Профи (998) 13 лет назад
Рандомайзер+рекурсия. И будет вам щастье, а вашим врагам (попавшим в лабиринт) горе)

Для генерации можно использовать простейшее построение случайного прохода, затем допостроения к нему таких же случайных ходов, продолжающееся до тех пор, пока не будет "забито" все пространство выделяемое под лабиринт.

Если лимит M и N небольшой, можно сделать рекурсиями. Устанавливаем точку входа. Сначала генерится основной ход. Движемся по клеточкам, "прогрызая" "ходы" в "камне", изменяя вектор движения случайно по или против часовой стрелке, в завасимости от значения случайного числа, и с проверкой касания края (если коснулись, то ставим выход) . С каждым шагом запоминаем координаты "прогрызенной точки" и увеличиваем уровень рекурсии. Итак, предположим, выход достигнут. Когда достигаем выхода, начинаем понижение уровня рекурсии с восстановлением координат вышеупомянутой точки, и в зависимости от случайности (например 50%) по тому-же алгоритму генерируем боковой ход. Тогда, при создании основного хода, концом генерации у нас служило достижение края лабиринта.
Источник: Denton & Bilge Xan
Остальные ответы
Sam Nothing Мастер (2031) 13 лет назад
Сделать его трехмерным =)
abap01 Мастер (1914) 13 лет назад
Вполне.. .
Коридор по периметру)) )
И по любой руке возвращаетесь к входу
ЧЛ Христос Мыслитель (8048) 13 лет назад
Да такой принцип не всегда и работает. Возьмите лист в клеточку, поэксперементируйте.
Алисса Кларк Ученик (5) 8 лет назад
Мне тоже кажется сначала можно попробовать ручкой на черновике
Похожие вопросы