Ответы:
Существует много разных способов изготовления лабиринтов. Их огромный список и их описания здесь: http://www.astrolog.org/labyrnth/algrithm.htm
Я думаю, что использовал тот, который описан в разделе «Идеальный».
Я предпочитаю сильно намотанные лабиринты, которые создает алгоритм Крускала.
Стандартное описание алгоритма Крускала неуместно в том смысле, что оно не может отличить местоположения в графе от групп местоположений, в то же время полагаясь на каламбур в отношении выбора структуры данных, что приводит к неясностям описания, которые смущают новичков. Поэтому я отвергаю терминологию Крускала.
Я буду использовать следующие термины:
И из них мы получаем:
В Википедии есть большой ресурс по созданию лабиринтов . Я использовал алгоритм рандомизированных простых чисел с отличными результатами. Алгоритм деления выглядит интересно, но я никогда не использовал его.
Вот пример википедии о работе на компьютере.
Один простой способ - составить список северных и западных стен, а затем их переставить. Дайте каждой комнате номер. Затем взорвать одну из стен в списке, пока две комнаты не имеют одинаковое число, а затем распространить одно из номеров на все другие комнаты с одинаковым номером. Продолжайте, пока не выбежите из стен. Это работает для прямоугольных лабиринтов или, на самом деле, для любого другого лабиринта, где вы можете дать список «потенциально связанных комнат». Плюс, это довольно просто программировать.
Я также хотел бы взглянуть на некоторые алгоритмы, используемые в разработке Roguelike. В Rogue Basin есть хороший стартовый ресурс
Хороший прогон есть здесь: https://journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes/
Основные шаги были:
Вы спросили, какой я использовал, поэтому я обязательно отвечу на это. Я использовал Рекурсивный алгоритм Backtracker в моей игре-лабиринте на Rootbeer Games .
Это доказательство того, что я использовал алгоритм, пожалуйста, не рассматривайте его как рекламу моей работы.