Path: blob/main/static/src/gs/public/astray/maze.js
1330 views
function generateSquareMaze(dimension) {12function iterate(field, x, y) {3field[x][y] = false;4while(true) {5directions = [];6if(x > 1 && field[x-2][y] == true) {7directions.push([-1, 0]);8}9if(x < field.dimension - 2 && field[x+2][y] == true) {10directions.push([1, 0]);11}12if(y > 1 && field[x][y-2] == true) {13directions.push([0, -1]);14}15if(y < field.dimension - 2 && field[x][y+2] == true) {16directions.push([0, 1]);17}18if(directions.length == 0) {19return field;20}21dir = directions[Math.floor(Math.random()*directions.length)];22field[x+dir[0]][y+dir[1]] = false;23field = iterate(field, x+dir[0]*2, y+dir[1]*2);24}25}2627// Initialize the field.28var field = new Array(dimension);29field.dimension = dimension;30for(var i = 0; i < dimension; i++) {31field[i] = new Array(dimension);32for (var j = 0; j < dimension; j++) {33field[i][j] = true;34}35}3637// Gnerate the maze recursively.38field = iterate(field, 1, 1);3940return field;4142}4344454647