1 | (function(){
|
2 | 'use strict'
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | var MersenneTwister = require('mersenne-twister')
|
8 | var TwoDimensionalArray= require('nylira-2d-array')
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | var renderMaze = require('./lib/debug/renderMaze')
|
15 | var renderValues = require('./lib/debug/renderValues')
|
16 | var recursiveBacktracker = require('./lib/algorithms/recursiveBacktracker')
|
17 | var growingTree = require('./lib/algorithms/growingTree')
|
18 | var MazeSettings = require('./lib/MazeSettings')
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | function 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 |
|
32 |
|
33 |
|
34 |
|
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 |
|
54 | module.exports = maze
|
55 |
|
56 | }())
|