Genera laberintos de diferentes formas y tamaños arbitrarios.
El generador de laberintos puede crear laberintos rectangulares, hexagonales, en forma de panal y circulares. La generación de laberintos se puede realizar utilizando el algoritmo de Kruskal, la búsqueda en profundidad, la búsqueda en amplitud, el paseo aleatorio con borrado de bucle o el algoritmo de Prim. Los laberintos se pueden representar en formato svg o png (usando gnuplot como intermedio en el último caso).
El generador de laberintos utiliza gnuplot (con una llamada al sistema gnuplot
) para representar laberintos png. Así que asegúrese de que gnuplot 5.0+
esté instalado con soporte para terminal pngcairo
y esté en la ruta si desea usar png.
El código está escrito en C++ 11, necesitarás un compilador de C++ no muy antiguo para compilarlo.
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)
Los arcos en los laberintos circulares se trazan como curvas paramétricas en gnuplot, y png puede tardar bastante en renderizarse para laberintos grandes.