Creating mazes using prims' algorithm for the stara project
Project description
Stara Maze Generator
A Python package for generating, solving, and visualizing mazes using a modified version of Prim's algorithm. The mazes are represented as NumPy arrays and can be exported as HTML visualizations.
Features
- Generate random mazes using a modified Prim's algorithm
- Configurable maze size and minimum number of valid paths
- Reproducible maze generation using seeds
- Pathfinding using Breadth-First Search (BFS)
- Export mazes as HTML visualizations with optional solution paths
- Efficient maze representation using NumPy arrays
Installation
The package can be installed using pip:
pip install stara-maze-generator
Or using Poetry:
poetry add stara-maze-generator
Usage
Command Line Interface
The package provides a command-line interface for quick maze generation:
# Generate a default 40x40 maze
generate-maze
# Generate a 20x20 maze with custom start/goal positions
generate-maze --size 20 --start 0 0 --goal 19 19
# Generate a maze with a specific seed and show solution
generate-maze --seed 123 --draw-solution
# Generate a maze with more paths
generate-maze --min-valid-paths 5
Python API
from pathlib import Path
import numpy as np
from stara_maze_generator.vmaze import VMaze
from stara_maze_generator.pathfinder import Pathfinder
# Create a 20x20 maze
maze = VMaze(
seed=42, # Random seed for reproducibility
size=20, # Creates a 20x20 grid
start=(1, 1), # Starting position
goal=(18, 18), # Goal position
min_valid_paths=3 # Minimum number of valid paths
)
# Generate the maze structure
maze.generate_maze(pathfinding_algorithm=Pathfinder.BFS)
# Find a path from start to goal
path = maze.find_path()
# Export as HTML visualization
maze.export_html(Path("maze.html"), draw_solution=True)
Maze Representation
The maze is represented as a 2D NumPy array where:
0represents walls1represents passages- The maze is guaranteed to have at least
min_valid_pathsdifferent paths from start to goal
HTML Visualization
The exported HTML visualization includes:
- Color-coded cells (walls, passages, start, goal)
- Optional solution path highlighting
- Responsive grid layout
- Maze information (size, seed, algorithm used)
Development
To set up the development environment:
# Clone the repository
git clone https://github.com/yourusername/stara-maze-generator.git
cd stara-maze-generator
# Install dependencies with Poetry
poetry install
# Run tests
poetry run pytest
License
This project is licensed under the MIT License - see the LICENSE file for details.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stara_maze_generator-0.2.2.tar.gz.
File metadata
- Download URL: stara_maze_generator-0.2.2.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.0.0 CPython/3.12.1 Linux/6.5.0-1025-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f66d786833bbed6cf63e56e984465abece3c7bbd678160434648d3737d93934
|
|
| MD5 |
6fe5ac6a986fb6ae28b65c54fce310d4
|
|
| BLAKE2b-256 |
a50ed15a823f3b1e7865cacd2c9c6ef7e467af814096082ad2c0aa2e75bcdc18
|
File details
Details for the file stara_maze_generator-0.2.2-py3-none-any.whl.
File metadata
- Download URL: stara_maze_generator-0.2.2-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.0.0 CPython/3.12.1 Linux/6.5.0-1025-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca574bd41d44cead066e523ab673b88d55a60f47bad951d031a777c5c407d4f0
|
|
| MD5 |
8ad980203c072342e815ca06b6f15707
|
|
| BLAKE2b-256 |
5696a59d317824aa3764cf1a955f4dd255aed57d0c3a66516c546efe1efef4a0
|