Gere labirintos de diferentes formas e tamanhos arbitrários
O gerador de labirinto pode criar labirintos retangulares, hexagonais, em favo de mel e circulares. A geração do labirinto pode ser feita usando o algoritmo de Kruskal, pesquisa em profundidade, pesquisa em largura, passeio aleatório apagado por loop ou algoritmo de Prim. Os labirintos podem ser renderizados em formato SVG ou PNG (usando gnuplot como intermediário neste último caso).
O gerador de labirinto usa gnuplot (com uma chamada de sistema gnuplot
) para renderizar labirintos png. Portanto, certifique-se de que gnuplot 5.0+
esteja instalado com suporte ao terminal pngcairo
e esteja no caminho se você deseja usar png.
O código é escrito em C++ 11, você precisará de um compilador C++ não muito antigo para construí-lo.
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)
Os arcos nos labirintos circulares são plotados como curvas paramétricas no gnuplot, e o png pode demorar muito para ser renderizado em labirintos grandes.