Skip to main content

A python package for generating and visualizing n-dimensional mazes.

Project description

A woodsy maze

maze-nd

A python package for generating n-dimensional mazes via randomized Prim's Algorithm

Initial implementation in 2D from: https://github.com/ArneStenkrona/MazeFun

Getting Started

Prerequisites

Poetry: https://python-poetry.org/docs/#installation

Installation

Clone the repository:

git clone https://github.com/dthuff/maze-nd

and install dependencies:

cd maze-nd/
poetry install

Or, install via pip:

pip install maze-nd

Usage

Generating maze structures

The MazeND class defines a maze data structure represented by a boolean array of arbitrary shape maze.grid.

A 2D maze of 40 rows and 40 columns can be generated with:

from maze_nd.maze_nd import MazeND
maze = MazeND([40, 40])

Note that maze dimensions must be odd to ensure a solid outer border. If even shape args are passed, they will be forced to be odd.

maze = MazeND([40, 40])

>>> maze.grid.shape
(39, 39)

A 3D maze of 40 rows, 40 columns, and 20 slices can be generated with:

maze = MazeND([40, 40, 20])

A 7D maze:

maze = MazeND([20, 20, 20, 10, 10, 20, 5])

Caution: generation time is proportional to np.prod(maze.grid.shape). This can quickly blow up for mazes with more than 4 dimensions.

Visualizing maze structures

The maze generation process can be visualized using examples/draw_maze.py:

poetry run python draw_maze.py 40 40

By default, this will save an image of the maze at examples/maze_image.png

Any number of shape dimensions can be passed. A 3D maze can be generated via:

poetry run python draw_maze.py 20 20 20

For mazes with dimension N > 2, 2D planes of the maze will be drawn separated by a vertical border. For an N-D maze, N-1 planes are shown.

The animation can be turned off using --skip-animation:

poetry run python draw_maze.py 40 40 --skip-animation

Fun color themes can be applied via --theme:

poetry run python draw_maze.py --theme beachy 40 40

Available themes are: default A boring, default maze

beachy, A beachy maze

woodsy, A woodsy maze

christmas, A festive, christmas maze

and kaboom. An explosive, kaboom maze

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

maze_nd-0.1.1.tar.gz (6.0 kB view hashes)

Uploaded Source

Built Distribution

maze_nd-0.1.1-py3-none-any.whl (7.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page