A JavaScript library for generating maze data.
_________________________________________________________________________________
|█|█|█|█|█|█|█|█|█|█|__ | |█|█|█|█|█|█|█|█| | __ | |█|█|█| ______ |█|█|█|
|█|█|█|█|█|█|█|█| __ |___|________ |█|█|█|█| |___|█| | |_________|█|█|█| |█|█|█|
|█|█|█|█|█|█|█|█|___|______ |█|█|█|____ |█|█| |█|█|█|___|█|█|█| __ |█|█| |█| |
|█|█|█|█|█|█|█|█|█|█|█|█| _| ____ | _|█|█| |█|█|█| | _____| _| ___| _| |
| |█|█|█|█|█|█|█|█|█|█|_____|█| |__ |█|█| |█|█|█| |___|█| ___|█|____ | | _|
| | |█|█|█|█|█|█|█|█|█|█|█|█|█|█| | |█|_______|█|█| _|█|█| _|█|█|█| | | | |█|
| |______ | |█|█|█|█|█|█|█|█|█| |________ |█|█|█|______ |___________| |___| |█|
| |█| |___| |█|█|█|█|█|█|█|█|█| |█|█|█|█| | ________ |__ |█|█|█|█|█|__ |█|__ |
| |█| | |█|█|________________ |█| |█|█|█|█|___|█|█|█|█|_____|█|█|█|█|█|█| | | |
|_____|______ |█|█|█|█| _____|█| |█|█|█|█|█|█|█| ________ |█|█|█|█|█|█| | | | |
| __ |█|█|█| |█|█|█|█| | __ |█| |█|█|█|█|█|█|█|____ |█|█|______ |█|█|█|___| | |
|__ | | _____|█|█| | | |█|_____| |█|█|█|█|█|█|█| |█|█| _____|█|█|█|█|█| | |
| _|___| _________| |___|█| __ | |__________ | | |█|█| |█| |█|_________| |
|______ | |█|█|█|█|█| | |█| | _| |█|█|█|█|█| | |___|█|█|_____| |█|█|█|█|█| _|
| _____| |█|█|█|█|█| | | |█| |_____|█|█|█|█|█| | |█|█|█|█| _____|█|█|█|█|█|__ |
| _______|█|█|█|█|█| | |__ |__ |█|█|█|█|█|█|█| | |█|█|█|█| |█|█|█|█|█|█|█|█|█| |
|__ |█|█|█|█|█|█|█|█|___|█| |█|______ |█|█|█|█| | |█|█|█|█|__________ |█|█|█|█| |
| _|█|█|█|█|█|█|█|█|█|█|█| |█|█| ___| |█|█|___|█| |█|█|█|█|█| ___|█|█| | |
| | | ___|█|█|█|█|█|█|█| |█|█|____ | | |█|█|█| | |█|█|█|█|█|___________| | |
|___|___|█|█|█|█|█|█|█|█|█|_____________|_________|___|█|█|█|█|█|█|█|█|█|█|█|___|
npm i nylira-maze --save
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)
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)
Check out a demo.
npm test
MIT