Вы ищете Алгоритмы создания лабиринта ( больше )? У вас проблемы с алгоритмами или графикой?
Типичные алгоритмы работают, рассматривая каждую «клетку» в лабиринте как вершину графа, начинаются со всех «стен» и удаляют набор стен, который соответствует остовному дереву. (Таким образом, чтобы рандомизировать его, многие из них начинают со случайных весов и находят минимальное остовное дерево.) По крайней мере, для небольших лабиринтов вам не нужна особая структура данных для представления ячеек; Вы можете просто думать о каждой ячейке как о паре (x,y)
(ее координаты). И вам не нужна какая-либо структура данных (матрица смежности / список смежности) для хранения ребер графа, потому что соседи (x,y)
просто (x,y±1)
и (x±1,y)
(игнорируя те, которые выходят за границы) .
В любом случае, если у вас есть связующее дерево, вы точно знаете, какие из стен «существуют», а какие нет, поэтому у вас есть полное описание лабиринта. Если вы собираетесь рисовать лабиринт, вы знаете, какие рисовать.
Чтобы рисовать символами ASCII, вы просто проходите через каждый ряд один за другим: рисуете «верхние стены» (поставьте «--
», если стена между (x,y)
и (x,y+1)
существует), затем нарисуйте фактическая строка (поставить «|
», если стена между (x,y)
и (x+1,y)
существует). Наконец нарисуйте нижнюю границу.