Это можно сделать с помощью структуры данных для поиска объединения, аналогичной использованию алгоритма Крускала для создания лабиринта:
- Выбор начальной и конечной точек
- Отметка каждой ячейки, кроменачать и закончить как заблокированный, и поместить каждую ячейку в свой собственный набор
- Случайно разблокировать ячейки.Когда вы разблокируете ячейку, объедините ее набор с наборами любых разблокированных ячеек, к которым она подключена.
- Остановитесь, когда набор начальной ячейки объединится с набором конечной ячейки.
Тамтеперь будет путь от начала до конца.Если вы хотите убедиться, что лабиринт немного более открыт, вы можете случайно разблокировать ячейки, пока, скажем, не будет разблокировано, по крайней мере, 70%.
Результат не будет похож на традиционныйлабиринт, но это, вероятно, будет хорошо для A * тестирования.