pymazebuilder


Namepymazebuilder JSON
Version 1.4.3 PyPI version JSON
download
home_pagehttps://github.com/w4ffl35/PyMazeBuilder
SummaryRPG
upload_time2024-11-16 16:56:01
maintainerNone
docs_urlNone
authorw4ffl35
requires_pythonNone
licenseAGPL-3.0
keywords maze builder generator rpg game development
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PyMazeBuilder

Generate perfect mazes with Python using a growing tree algorithm and dungeons with rooms connected by corridors.

---

## Installation

```bash
pip install pymazebuilder
```

---

**Maze**

```bash
█████████████████████
█░░░░░░░░░█░░░░░░░░██
██░░░░░░░░█░█████░███
█░░░░░░░░░░░█░░██░░░█
█░░░░░░░░░█░█░█████░█
█░░░░░░░░░█░░░█░░░█░█
█░░░░░░░░░█████░█░█░█
███░░░░██░░░░░░░█░░░█
███░███████████████░█
█░░░█░░░░░█░░░░░░░░░█
█░███░███░█░█████████
█░█░░░███░█░█░░░░░░░█
█░█░███░█░█░█░█████░█
█░█░██░░█░█░░░█░░██░█
█░█░██░░█░█████░███░█
█░░░█░░░░░░░█░░░░░█░█
█░███░░░░░░░█░███░█░█
█░██░░█░░░░░█░█░░░█░█
█░███░█░█████░█░███░█
█░░░░░█░░░░░░░█░░░░░█
█████████████████████
```

**Dungeon**

```bash
█████████████████████
█████████████████████
█░░░░░░░░░░░░░░░░████
█░░░░██████████░░████
█░░░░█░░░░░░░░░░░████
█░░░░░░░░░░░░░█░░████
██░██████████░█░░████
██░██████████░█░░████
██░█████████░░░░░████
██░█████░░░░░░░██████
██░░░░░░░░██░░░██████
██░░██░░░░███████████
█░░░░░░░░░███████████
█░░░░░░░░░███████████
█░░░░░░░░░███████████
█░░░░░███████████████
█░░░░░███████████████
█░░░░░███████████████
█░░░░░███████████████
█████████████████████
█████████████████████
```

---

Generated data structure

```python
    {
        grid: [
          [
            Cell {
              x: 0,
              y: 0,
              exits: [],
              blocked: true,
              displayed: false,
              visited: false
            },
            ...
          ]
        ]
        rooms: [
            Room {
                x: 0,
                y: 0,
                width: 0,
                height: 0
            }
        ]
    }
```

---

## Quick use

### Example

Generate a maze

```bash
python main.py
```

Generate a dungeon

```bash
python main.py --type=dungeon
```

The built-in renderer is a simple ASCII renderer which prints the maze to the console.

```python
from pymazebuilder.generators.generator import Generator
from pymazebuilder.generators.maze import MazeGenerator
from pymazebuilder.renderer import Renderer
data = Generator([
    {
        'generator': MazeGenerator,
        'options': {
            'width': 10,
            'height': 10,
            'floors': 1
        }
    },
])
Renderer(data)
```

---

## Randomization

`utils.py` contains a random class which handles all random number generation and can be seeded.

---

### Generator classes

Generator classes can be passed as an optional array of objects to the maze generator.

The shape of this data structure is as follows:

```python
[
    {
        generator: <generator class>,
        options: <options object>
    },
    ...
]
```

`Generator` (`src/pymaze/generator.py`) will iterate over each generator class and instantiate it.

**Example**

The following example shows how to generate a maze with rooms using the provided room generator.

(also see `src/pymaze/main.py`)

```python
from pymazebuilder.generators.generator import Generator
from pymazebuilder.generators.renderer import Renderer

Generator([
    {
        'generator': MazeGenerator,
        'options': {
            ...
        }
    },
    {
        'generator': RoomGenerator,
        'options': {
            ...
        }
    },
    {
        'generator': StairsGenerator,
        'options': {
            ...
        }
    }
])

Renderer(generator)
```

#### Multi-floor maze

Use the `floors` option to generate a multi-floor maze.

Use the `src/generators/stairs.py` generator to connect the floors with stairs.

```bash
Floor 0
█████████████████████
█░██░░░░░██░░░░░░░░░█
█░███░█░███░░░░░█░█░█
█░░░█░█░░░░░█░░░█░█░█
███▼█░█░█████████░█░█
█░░░█░█░░░█░░░░░█░███
█░███░███░█░███░█░███
█░█░░░░██░█░█░░░█░░░█
█░█░█████░█░█░█░█░░░█
█░█░░░░░█░███░█░█░░░█
█░█░░██░█░███░█░█░░░█
█░█░░░█░█░░░░░█░░░█░█
█░███░█░███░░░░░█░█░█
█░██░░█░░░░░░░█░░░█░█
█░███████████░█░███░█
█░░░█░░░█░░░█░░░█░░░█
███░█░█░█░█░█████░█░█
███░░░█░█░█░░░░░░░█░█
█░█████░█░███░░░░░█░█
█░░░░░░░░░██░░░░░░░░█
█████████████████████
Floor 1
█████████████████████
█░░░░░░░░░█░░░░░░░░██
██░░░░░░░░█░█████░███
█░░░░░░░░░░░█░░██░░░█
█░░▲░░░░░░█░█░█████░█
█░░░░░░░░░█░░░█░░░█░█
█░░░░░░░░░█████░█░█░█
███░░░░██░░░░░░░█░░░█
███░███████████████░█
█░░░█░░░░░█░░░░░░░░░█
█░███░███░█░█████████
█░█░░░███░█░█░░░░░░░█
█░█░███░█░█░█░█████░█
█░█░██░░█░█░░░█░░██░█
█░█░██░░█░█████░███░█
█░░░█░░░░░░░█░░░░░█░█
█░███░░░░░░░█░███░█░█
█░██░░█░░░░░█░█░░░█░█
█░███░█░█████░█░███░█
█░░░░░█░░░░░░░█░░░░░█
█████████████████████

▲ = stairs going up
▼ = stairs going down
█ = wall
░ = floor
```
---

#### Custom generator classes

Custom generators should match the following pattern.

```python
class SomeGenerator:
    def __init__(data: dict, options: dict):
        # do something with the data object
        self.data = data
        self.data["some_property"] = "some value"
```

See `src/pymaze/room.py` and `src/pymaze/maze.py` for complete examples along with a list of optional arguments that each class takes.
    
---

## License

[GNU GPL 3](LICENSE)

---

## Contributors

  - [@w4ffl35](https://github.com/w4ffl35)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/w4ffl35/PyMazeBuilder",
    "name": "pymazebuilder",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "maze, builder, generator, rpg, game, development",
    "author": "w4ffl35",
    "author_email": "contact@capsizegames.com",
    "download_url": "https://files.pythonhosted.org/packages/a6/bf/a84d63e101113689e18c89debee3f0b8d7599297a176ca5aa477f59f538b/pymazebuilder-1.4.3.tar.gz",
    "platform": null,
    "description": "# PyMazeBuilder\n\nGenerate perfect mazes with Python using a growing tree algorithm and dungeons with rooms connected by corridors.\n\n---\n\n## Installation\n\n```bash\npip install pymazebuilder\n```\n\n---\n\n**Maze**\n\n```bash\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\n\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2588\u2588\u2591\u2591\u2591\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2588\n\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\n\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\n\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2588\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\n\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\n\u2588\u2591\u2588\u2591\u2588\u2588\u2591\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2588\u2588\u2591\u2588\n\u2588\u2591\u2588\u2591\u2588\u2588\u2591\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\n\u2588\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\n\u2588\u2591\u2588\u2588\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2588\n\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2588\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n```\n\n**Dungeon**\n\n```bash\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2588\u2588\u2588\u2588\n\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2591\u2588\u2588\u2588\u2588\n\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2591\u2588\u2588\u2588\u2588\n\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\n\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2588\u2591\u2591\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n```\n\n---\n\nGenerated data structure\n\n```python\n    {\n        grid: [\n          [\n            Cell {\n              x: 0,\n              y: 0,\n              exits: [],\n              blocked: true,\n              displayed: false,\n              visited: false\n            },\n            ...\n          ]\n        ]\n        rooms: [\n            Room {\n                x: 0,\n                y: 0,\n                width: 0,\n                height: 0\n            }\n        ]\n    }\n```\n\n---\n\n## Quick use\n\n### Example\n\nGenerate a maze\n\n```bash\npython main.py\n```\n\nGenerate a dungeon\n\n```bash\npython main.py --type=dungeon\n```\n\nThe built-in renderer is a simple ASCII renderer which prints the maze to the console.\n\n```python\nfrom pymazebuilder.generators.generator import Generator\nfrom pymazebuilder.generators.maze import MazeGenerator\nfrom pymazebuilder.renderer import Renderer\ndata = Generator([\n    {\n        'generator': MazeGenerator,\n        'options': {\n            'width': 10,\n            'height': 10,\n            'floors': 1\n        }\n    },\n])\nRenderer(data)\n```\n\n---\n\n## Randomization\n\n`utils.py` contains a random class which handles all random number generation and can be seeded.\n\n---\n\n### Generator classes\n\nGenerator classes can be passed as an optional array of objects to the maze generator.\n\nThe shape of this data structure is as follows:\n\n```python\n[\n    {\n        generator: <generator class>,\n        options: <options object>\n    },\n    ...\n]\n```\n\n`Generator` (`src/pymaze/generator.py`) will iterate over each generator class and instantiate it.\n\n**Example**\n\nThe following example shows how to generate a maze with rooms using the provided room generator.\n\n(also see `src/pymaze/main.py`)\n\n```python\nfrom pymazebuilder.generators.generator import Generator\nfrom pymazebuilder.generators.renderer import Renderer\n\nGenerator([\n    {\n        'generator': MazeGenerator,\n        'options': {\n            ...\n        }\n    },\n    {\n        'generator': RoomGenerator,\n        'options': {\n            ...\n        }\n    },\n    {\n        'generator': StairsGenerator,\n        'options': {\n            ...\n        }\n    }\n])\n\nRenderer(generator)\n```\n\n#### Multi-floor maze\n\nUse the `floors` option to generate a multi-floor maze.\n\nUse the `src/generators/stairs.py` generator to connect the floors with stairs.\n\n```bash\nFloor 0\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\n\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2588\u2591\u2588\n\u2588\u2588\u2588\u25bc\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\u2588\u2588\n\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\n\u2588\u2591\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\n\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2588\n\u2588\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2588\n\u2588\u2591\u2588\u2591\u2591\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2588\n\u2588\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2588\n\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\u2591\u2588\n\u2588\u2591\u2588\u2588\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2588\n\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\n\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2588\n\u2588\u2588\u2588\u2591\u2591\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\n\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\nFloor 1\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\n\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2588\u2588\u2591\u2591\u2591\u2588\n\u2588\u2591\u2591\u25b2\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2588\n\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2588\n\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\n\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\u2588\u2591\u2588\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\n\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\n\u2588\u2591\u2588\u2591\u2588\u2588\u2591\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2588\u2588\u2591\u2588\n\u2588\u2591\u2588\u2591\u2588\u2588\u2591\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\n\u2588\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\n\u2588\u2591\u2588\u2588\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2588\u2591\u2591\u2591\u2588\u2591\u2588\n\u2588\u2591\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2591\u2588\u2588\u2588\u2591\u2588\n\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2591\u2591\u2591\u2588\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\n\u25b2 = stairs going up\n\u25bc = stairs going down\n\u2588 = wall\n\u2591 = floor\n```\n---\n\n#### Custom generator classes\n\nCustom generators should match the following pattern.\n\n```python\nclass SomeGenerator:\n    def __init__(data: dict, options: dict):\n        # do something with the data object\n        self.data = data\n        self.data[\"some_property\"] = \"some value\"\n```\n\nSee `src/pymaze/room.py` and `src/pymaze/maze.py` for complete examples along with a list of optional arguments that each class takes.\n    \n---\n\n## License\n\n[GNU GPL 3](LICENSE)\n\n---\n\n## Contributors\n\n  - [@w4ffl35](https://github.com/w4ffl35)\n",
    "bugtrack_url": null,
    "license": "AGPL-3.0",
    "summary": "RPG",
    "version": "1.4.3",
    "project_urls": {
        "Homepage": "https://github.com/w4ffl35/PyMazeBuilder"
    },
    "split_keywords": [
        "maze",
        " builder",
        " generator",
        " rpg",
        " game",
        " development"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2b96fb50df9ec69304fc1e51b294788709c91f468e77833d7ab3ffd53d4c7da5",
                "md5": "596c41fdef4997c1a2a6c8988ce0027d",
                "sha256": "f7fc55481005faffd3940304233e277231600ec2b8baf5fa2725c0c8bf12dad1"
            },
            "downloads": -1,
            "filename": "pymazebuilder-1.4.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "596c41fdef4997c1a2a6c8988ce0027d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 23937,
            "upload_time": "2024-11-16T16:55:59",
            "upload_time_iso_8601": "2024-11-16T16:55:59.722895Z",
            "url": "https://files.pythonhosted.org/packages/2b/96/fb50df9ec69304fc1e51b294788709c91f468e77833d7ab3ffd53d4c7da5/pymazebuilder-1.4.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a6bfa84d63e101113689e18c89debee3f0b8d7599297a176ca5aa477f59f538b",
                "md5": "91afe72a99363170681b379c572cf2eb",
                "sha256": "e5befc764179fdc36f6e6b7fe87be4c16abbda8d0390a6da66726b0c3ae3fa2c"
            },
            "downloads": -1,
            "filename": "pymazebuilder-1.4.3.tar.gz",
            "has_sig": false,
            "md5_digest": "91afe72a99363170681b379c572cf2eb",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 21606,
            "upload_time": "2024-11-16T16:56:01",
            "upload_time_iso_8601": "2024-11-16T16:56:01.422887Z",
            "url": "https://files.pythonhosted.org/packages/a6/bf/a84d63e101113689e18c89debee3f0b8d7599297a176ca5aa477f59f538b/pymazebuilder-1.4.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-16 16:56:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "w4ffl35",
    "github_project": "PyMazeBuilder",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pymazebuilder"
}
        
Elapsed time: 0.59600s