Создавайте лабиринты разных форм и произвольных размеров.
Генератор лабиринтов может создавать прямоугольные, шестиугольные, сотовые и круговые лабиринты. Генерация лабиринта может быть выполнена с использованием алгоритма Крускала, поиска в глубину, поиска в ширину, случайного блуждания со стиранием цикла или алгоритма Прима. Лабиринты можно визуализировать в формате svg или png (в последнем случае с использованием gnuplot в качестве промежуточного звена).
Генератор лабиринтов использует gnuplot (с системным вызовом gnuplot
) для рендеринга лабиринтов в формате PNG. Поэтому убедитесь, что gnuplot 5.0+
установлен с поддержкой терминала pngcairo
и указан в пути, если вы хотите использовать png.
Код написан на C++ 11, для его сборки вам понадобится не слишком древний компилятор C++.
cd src; make
Usage: mazegen [--help] [-m <maze type>] [-a <algorithm type>] [-s <size> | -w <width> -h <height>] [-t <output type] [-o <output prefix>] Optional arguments --help Show this message and exit -m Maze type 0: Rectangular (default) 1: Hexagonal (triangular lattice) 2: Honeycomb 3: Circular 4: Circular (triangular lattice) 5: User-defined -a Algorithm type 0: Kruskal's algorithm (default) 1: Depth-first search 2: Breadth-first search 3: Loop-erased random walk 4: Prim's algorithm -s Size (non-rectangular mazes, default: 20) -w,-h Width and height (rectangular maze, default: 20) -t Output type 0: svg output (default) 1: png output using gnuplot (.plt) intermediate -o Prefix for .svg, .plt and .png outputs (default: maze)
Дуги в круговых лабиринтах отображаются как параметрические кривые в gnuplot, а рендеринг png может занять довольно много времени для больших лабиринтов.