Ну, самый простой способ, который я могу придумать, начинается с того, что все комнаты соединены хотя бы одним коридором:
- Начните с последней или первой комнаты.
- Возьмите случайную комнату на расстоянии 1 расстояние, которое еще не связано с какой-либо комнатой (все комнаты начинают отключаться, поэтому вы будете следить за этим по ходу дела).
- Если такой комнаты нет, пройдите на расстояние +1. Если можно проложить туннель над / под другой комнатой, это проще, если вы не хотите соединять коридоры.
- Проходите псевдослучайно, пока все комнаты не соединятся.
Теперь мы знаем, что вы можете добраться до всех комнат, но теперь, если вы хотите больше, чем этот строго линейный лабиринт, вы можете просто пройти через ваши комнаты и случайным образом найти новый путь, соединяющий комнаты, до ограничения на комнату 2-3, или пока определенный процент номеров не достигнет максимального количества соединений - и т. д.
В качестве последнего шага вы можете добавить правила, которые бы изменили ваши результаты для соответствия различным ситуациям. Например, вы можете заметить, что любая комната с одним коридором по определению является тупиком; Вы можете сделать больше тупиков, или вы можете устранить их все, убедившись, что у всего есть как минимум 2 соединения. Вы можете сделать тупики иметь секретный проход. Вы могли бы убедиться, что комната босса - тупик. Вы можете убедиться, что ваша начальная комната тупиковая, но затем убедитесь, что вторая комната имеет минимум X соединений. До бесконечности.
Каждое предположение и правило могут радикально изменить внешний вид ваших уровней, но это часть веселья! Это должно, по крайней мере, дать вам комнаты, похожие на улья / пещеры.