Added more user control over the maze generation.

This commit is contained in:
2020-05-19 13:52:51 -05:00
parent 6e8c700b9b
commit 3c25596a01
2 changed files with 16 additions and 9 deletions
+3 -1
View File
@@ -41,6 +41,8 @@
} }
function rerun(){ function rerun(){
if (!document.getElementById("reuseMaze").checked)
createNewMaze(document.getElementById("cellWidthInput").value);
algo = {}; algo = {};
maze.resetMazeState(); maze.resetMazeState();
maze.updateMazeDisplay(); maze.updateMazeDisplay();
@@ -65,7 +67,7 @@
<label for="canvasWidthTextbox" >Canvas Size Width: </label><input type="number" id="canvasWidthTextbox" value="500" onchange="updateCanvasWidth()"/> <label for="canvasWidthTextbox" >Canvas Size Width: </label><input type="number" id="canvasWidthTextbox" value="500" onchange="updateCanvasWidth()"/>
<label for="canvasHeightTextbox"> Height: </label><input type="number" id="canavasHeightTextbox" value="500" onchange="updateCanvasHeight()"/><br/> <label for="canvasHeightTextbox"> Height: </label><input type="number" id="canavasHeightTextbox" value="500" onchange="updateCanvasHeight()"/><br/>
<label for="genFrameRate">Framerate During Maze Generation: </label><input type="number" id="genFrameRate" min="1" max="144" step="1" value="30" /><br /> <label for="genFrameRate">Framerate During Maze Generation: </label><input type="number" id="genFrameRate" min="1" max="144" step="1" value="30" /><br />
<label for="solvingFrameRate">Framerate During Maze Solving: </label><input type="number" id="solvingFrameRate" min="1" max="144" step="1" value="30" /><br /> <label for="solvingFrameRate">Framerate During Maze Solving: </label><input type="number" id="solvingFrameRate" min="1" max="144" step="1" value="15" /><br />
<input id="reuseMaze" type="checkbox" checked="true" /><label for="reuseMaze">Reuse current maze on next run (uncheck to generate a new maze)</label> <input id="reuseMaze" type="checkbox" checked="true" /><label for="reuseMaze">Reuse current maze on next run (uncheck to generate a new maze)</label>
</fieldset> </fieldset>
<fieldset id="algo" name="algo" disabled="disabled"> <fieldset id="algo" name="algo" disabled="disabled">
+13 -8
View File
@@ -1,4 +1,3 @@
var cellWidth = 50;
var frontier = []; var frontier = [];
var explored = []; var explored = [];
var currentNode = {}; var currentNode = {};
@@ -6,10 +5,16 @@ var maze = {};
var algo = {}; var algo = {};
function setup() { function setup() {
var canvas = createCanvas(500, 500); var canvas = createCanvas(500, 500);
canvas.parent('sketch-holder'); canvas.parent('sketch-holder');
maze = new Maze(width, height, cellWidth, "Depth");
frameRate(30); createNewMaze(document.getElementById("cellWidthInput").value);
frameRate(Number(document.getElementById("genFrameRate").value));
}
function createNewMaze(cellWidth){
maze = new Maze(width, height, Number(cellWidth));
} }
function draw() { function draw() {
@@ -24,17 +29,17 @@ function draw() {
maze.resetMazeState(); maze.resetMazeState();
//maze.updateMazeDisplay(); //maze.updateMazeDisplay();
let selectedAlgo = document.getElementById("searchAlgo").value; let selectedAlgo = document.getElementById("searchAlgo").value;
let solvingFramerate = document.getElementById("solvingFrameRate").value;
if(selectedAlgo == "depthFirst") if(selectedAlgo == "depthFirst")
algo = new DepthFirstSolver(maze.grid[0], maze.grid[maze.index(7, 7)]); algo = new DepthFirstSolver(maze.grid[0], maze.grid[maze.index(7, 7)]);
else if(selectedAlgo == "breadthFirst") else if(selectedAlgo == "breadthFirst")
algo = new BreadthFirstSolver(maze.grid[0], maze.grid[maze.index(7,7)]); algo = new BreadthFirstSolver(maze.grid[0], maze.grid[maze.index(7,7)]);
//else if(selectedAlgo == "a*") //else if(selectedAlgo == "a*")
print("Maze generation done"); print("Maze generation done");
frameRate(10); frameRate(Number(solvingFramerate));
} }
else if (maze.mazeGenDone && algo.frontier.length > 0){ else if (maze.mazeGenDone && algo.frontier.length > 0){
//algo.breadthFirstNextCell(maze);
algo.solve(maze); algo.solve(maze);
} }
else{ else{