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 torandom
. -
"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