UNPKG

1.6 kBJavaScriptView Raw
1(function(){
2'use strict'
3
4//==============================================================================
5// external
6
7var MersenneTwister = require('mersenne-twister')
8var TwoDimensionalArray= require('nylira-2d-array')
9
10//==============================================================================
11// internal
12
13//var debugMaze = require('./lib/debugMaze')
14var renderMaze = require('./lib/debug/renderMaze')
15var renderValues = require('./lib/debug/renderValues')
16var recursiveBacktracker = require('./lib/algorithms/recursiveBacktracker')
17var growingTree = require('./lib/algorithms/growingTree')
18var MazeSettings = require('./lib/MazeSettings')
19
20//==============================================================================
21// functions
22
23function maze(width, height, algorithm, seed, debug) {
24 width = width !== undefined ? width : 10
25 height = height !== undefined ? height : width
26 algorithm = algorithm !== undefined ? algorithm : 'backtracker'
27 seed = seed !== undefined ? seed : Math.floor(Math.random() * 1000)
28
29 var settings = new MazeSettings(seed)
30
31 // NOTE: height and width are swapped here due to the structure of 2d arrays
32 // [ [x1, y1], [x2, y1], [x3, y1] ]
33 // [ [x1, y2], [x2, y2], [x3, y2] ]
34 // [ [x1, y3], [x2, y3], [x3, y3] ]
35 var grid = new TwoDimensionalArray(height, width)
36
37 switch(algorithm) {
38 case 'backtracker':
39 recursiveBacktracker(settings, grid)
40 break
41 case 'growingtree':
42 growingTree(settings, grid)
43 break
44 }
45
46 if(debug) {
47 renderMaze(grid)
48 renderValues(grid)
49 }
50
51 return grid
52}
53
54module.exports = maze
55
56}())