@Sterio23400
Начинающий разработчик Unity.

Как генерировать тета-лабиринт?

Добрый день, недавно начал работать над игрой, где игроку в общих словах необходимо искать выход в лабиринте. Решил реализовать несколько их видов, удалось сделать прямоугольный и омега-лабиринт в виде треугольника. Наткнулся также на статью про виды лабиринт, среди них был тета-лабиринт в виде окружности, однако далее в статье не приводится описание алгоритма по его построению. Не подскажите ли каким образом можно реализовать подобное?
638b56b9d5f4f587621664.png
https://habr.com/ru/post/445378/
  • Вопрос задан
  • 310 просмотров
Решения вопроса 1
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
Примерно так же, как строятся классические лабиринты:
1) Разбить круг на окружности и секторы, образуется сетка узловых точек
2) Начинать на любой пустой узловой точке(которая не имеет пересечения с готовым лабиринтом), двигаться в случайном направлении (в пределах сетки).
3) Двигаться пока не упрёшься в стену
4) Перейти на п.2 и повторять пока не останется пустых узловых точек (или по таймауту)
Делал на Pascal в 8м классе игру "Лабиринт" на этом принципе, вполне работало.
PS: запустил этот древний код, вот такие лабиринты строит:

638be3acadd95783460813.png
638be3b8cc426371515084.png
638be3bf16a36105718727.png
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Griboks
@Griboks
Как вариант вы можете использовать уже реализованный вам алгоритм для прямоугольника, просто замкнуть его по горизонтали. После генерации выполнить преобразование координат вершин.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Здесь правда подходит любой алгоритм генерации лабиринтов с одним условием. Беря во внимание полярные координаты, ширина проходов в центральной части лабиринта должна быть примерно соизмерима с шириной проходов у края круга. Этого нельзя добиться просто заменив один прямоугольник на боковую поверхность цилиндра (бублика). Нужна коррекция. Корреция с учотом дистанции к центру этого бублика.

Это мне кажется интересная часть задачи которую можно обсудить. Остальное - уже решено.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы