nylira-maze
Version:
A library for generating mazes.
103 lines (80 loc) • 6.89 kB
Markdown
# nylira-maze
A JavaScript library for generating maze data.
_________________________________________________________________________________
|█|█|█|█|█|█|█|█|█|█|__ | |█|█|█|█|█|█|█|█| | __ | |█|█|█| ______ |█|█|█|
|█|█|█|█|█|█|█|█| __ |___|________ |█|█|█|█| |___|█| | |_________|█|█|█| |█|█|█|
|█|█|█|█|█|█|█|█|___|______ |█|█|█|____ |█|█| |█|█|█|___|█|█|█| __ |█|█| |█| |
|█|█|█|█|█|█|█|█|█|█|█|█| _| ____ | _|█|█| |█|█|█| | _____| _| ___| _| |
| |█|█|█|█|█|█|█|█|█|█|_____|█| |__ |█|█| |█|█|█| |___|█| ___|█|____ | | _|
| | |█|█|█|█|█|█|█|█|█|█|█|█|█|█| | |█|_______|█|█| _|█|█| _|█|█|█| | | | |█|
| |______ | |█|█|█|█|█|█|█|█|█| |________ |█|█|█|______ |___________| |___| |█|
| |█| |___| |█|█|█|█|█|█|█|█|█| |█|█|█|█| | ________ |__ |█|█|█|█|█|__ |█|__ |
| |█| | |█|█|________________ |█| |█|█|█|█|___|█|█|█|█|_____|█|█|█|█|█|█| | | |
|_____|______ |█|█|█|█| _____|█| |█|█|█|█|█|█|█| ________ |█|█|█|█|█|█| | | | |
| __ |█|█|█| |█|█|█|█| | __ |█| |█|█|█|█|█|█|█|____ |█|█|______ |█|█|█|___| | |
|__ | | _____|█|█| | | |█|_____| |█|█|█|█|█|█|█| |█|█| _____|█|█|█|█|█| | |
| _|___| _________| |___|█| __ | |__________ | | |█|█| |█| |█|_________| |
|______ | |█|█|█|█|█| | |█| | _| |█|█|█|█|█| | |___|█|█|_____| |█|█|█|█|█| _|
| _____| |█|█|█|█|█| | | |█| |_____|█|█|█|█|█| | |█|█|█|█| _____|█|█|█|█|█|__ |
| _______|█|█|█|█|█| | |__ |__ |█|█|█|█|█|█|█| | |█|█|█|█| |█|█|█|█|█|█|█|█|█| |
|__ |█|█|█|█|█|█|█|█|___|█| |█|______ |█|█|█|█| | |█|█|█|█|__________ |█|█|█|█| |
| _|█|█|█|█|█|█|█|█|█|█|█| |█|█| ___| |█|█|___|█| |█|█|█|█|█| ___|█|█| | |
| | | ___|█|█|█|█|█|█|█| |█|█|____ | | |█|█|█| | |█|█|█|█|█|___________| | |
|___|___|█|█|█|█|█|█|█|█|█|_____________|_________|___|█|█|█|█|█|█|█|█|█|█|█|___|
## Installation
npm i nylira-maze --save
## Usage
Basic usage:
var maze = require('nylira-maze')
// returns a 2d array of values for a 10x10 maze
maze()
// returns a 2d array of values for a 20x20 maze
maze(20)
// returns a 2d array of values for a 15x23 maze
maze(15, 23)
## Parameters
maze(31, 23, 'growing-tree:newest', 0.65, undefined, true)
* **Parameter 1:** Width.
* **Parameter 2:** Height.
* **Parameter 3:** The maze generation algorithm. Options:
* `"growing-tree"`: The Growing Tree algorithm. Defaults to `random`.
* `"growing-tree:random"`: Lots of dead ends, similar to Prim's Algorithm
* `"growing-tree:newest"`: Long windy passages, similar to `"backtracker"`
* `"growing-tree:middle"`: Lots of long straight passages.
* `"growing-tree:oldest"`: Only long straight passages.
* `"backtracker"`: The Recursive Backtracker algorithm. Tends towards long and twisted passages.
* **Parameter 4:** Sparseness. A sparse maze will have some of its nodes removed. If you type in a value less than 1, e.g. 0.25, the maze will be 25% sparse. If you enter an integer value more than 1, e.g. 5, the maze will remove 5 nodes from each of its dead ends.
* **Parameter 5:** The integer seed for the maze. Putting a value here will guaranteee you can recreate the maze over and over again.
* **Parameter 6:** You can preview the grid by passing in `true` as the fifth parameter.
That function call above will generate the following:
_______________________________________________________________
|█|█|█|____________________ |█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|
|█|█|█|█|█|█|█|█|█|█|█|█|█|__ | _|█|█|█|█|█| |█|█|█|█|█|█|█|█|
|█|█|█|█|█|█|█|█|█|█|█|█|█|█|__ |█|█|█|█|█| _|█|█|█|█|█|█|█|█|
|█|█|█|____ |█|█|█|█|█|█|█|█|█| |█|█|█|█| _|█|█|█|█| ___|█|█|
|█|█|█|█|█|________ |█|█|__ |█| |█|█|█|█| |█|█|█|█| _|█|█|█|█|
|█|█|█|█|█|█|█|█|█| |█|█|█|__ |____ | ________ ___|█|█|█|█|█|
|█|█|█|█|█| |█|█| ______ | ______ _|█|█|█|█|_____|█|█|█|█|█|
|█|█|█|█|█|__ | |█|█|█|___|█|█| ____ |█|█|█|█|█|█|█|█|█|█|
|█|____ ____ _| |█|█|█|█|█| __ |█|█| |____ |█|█|█|█|█|█|█|█|
|█|█| _|█|█| |█|_|█|█|█|█| _|█| |█| |█|█| _________|█|█|█|
|█|___|█|█|█| |█|█|█| __ _|█|█| | |█|__ |█| |█|█|█|█|█|█|█|█|
|█|█|█|█|█|█|_|█|█|█| |█|_|█|█| _| |█|█| |█|__ |█|█|█|█|█|█|█|
|█|█|█|█|█|█|█|█|█| _|█|█|█|█| |█| |█|█|____ |__ __________ |
|█|█|█|█|█|█|█|█|█| |█|█|█|█|█| |█| |█|█|█| _|█|__ |█|█| |
|█|█|█|█|█|█| |█| _|█|█|█| ___|█| |█|█| |█|█|█| | |█|█| | |
|█|█|█|__ ______ |█|█|█|█| |█|█|█| | |█|█| |█|█|█| | |█|█| | |
|█|█|█|█| |█|█|█| |█|█|█|█| |█|█| _| |█|█| |█|█|█| | |█|█| |_|
|█| _____|█|█|█| |█|█|_____|█| _|█| |█|█| |█|█| _| |█|█| |█|
|█|_|█|█| __ | |█|█|█|█|█|█| |█|█|_____|____ | |█|_|█|█|_|█|
|█|█|█|___|█|___|_|█|█|█|█|█| __ |█|█|█|█|█| |_|█|█|█|█|█|█|
|█|█|█|█|█|█|█|█|█|█|█|█|█|█|_|_|█|_|█|█|█|█|█|_|█|█|█|█|█|█|█|
|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|
|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|█|
The maze at the top of the README was generated with this function:
maze(40, 20, 'growingtree:newest', 0.47, undefined, true)
## Test
Check out a demo.
npm test
## License
MIT