65 lines
1.8 KiB
JavaScript
65 lines
1.8 KiB
JavaScript
var maze = {};
|
|
var algo = {};
|
|
var targetCell = {};
|
|
|
|
function mouseClicked(){
|
|
if(mouseX > width || mouseY > height) return;
|
|
//let x = floor(maze.columns * maze.cellWidth / mouseX);
|
|
//let y = floor(maze.rows * maze.cellWidth / mouseY);
|
|
let x = floor(mouseX / maze.cellWidth);
|
|
let y = floor(mouseY / maze.cellWidth);
|
|
|
|
maze.grid[maze.index(x, y)].color = [0, 0, 0];
|
|
redraw();
|
|
}
|
|
|
|
function setup() {
|
|
var canvas = createCanvas(500, 500);
|
|
document.getElementById('canvasWidthTextbox').value = 500;
|
|
document.getElementById('canavasHeightTextbox').value = 500;
|
|
canvas.parent('sketch-holder');
|
|
|
|
createNewMaze(document.getElementById("cellWidthInput").value);
|
|
|
|
frameRate(Number(document.getElementById("genFrameRate").value));
|
|
}
|
|
|
|
function createNewMaze(cellWidth){
|
|
maze = new Maze(width, height, Number(cellWidth));
|
|
}
|
|
|
|
function draw() {
|
|
background(220);
|
|
|
|
maze.updateMazeDisplay();
|
|
|
|
if(!maze.mazeGenDone){
|
|
maze.buildNextCell();
|
|
}
|
|
else if (maze.mazeGenDone && algo.frontier == undefined){
|
|
maze.resetMazeState();
|
|
|
|
let selectedAlgo = document.getElementById("searchAlgo").value;
|
|
|
|
if(selectedAlgo == "depthFirst")
|
|
algo = new DepthFirstSolver(maze.grid[0], maze.grid[maze.index(7, 7)]);
|
|
else if(selectedAlgo == "breadthFirst")
|
|
algo = new BreadthFirstSolver(maze.grid[0], maze.grid[maze.index(7,7)]);
|
|
else if(selectedAlgo == "greedy")
|
|
algo = new GreedyDepthFirstSolver(maze.grid[0], maze.grid[maze.index(7,7)]);
|
|
print("Maze generation done");
|
|
frameRate(Number(document.getElementById("solvingFrameRate").value));
|
|
}
|
|
else if (maze.mazeGenDone && algo.frontier.length > 0){
|
|
algo.solve(maze);
|
|
}
|
|
else{
|
|
algo.highlightFinalPath(maze);
|
|
|
|
let label = document.getElementById('information').innerHTML = `Maze Finished. Explored ${algo.statesExplored} states to find the answer.`;
|
|
print("Maze search done");
|
|
noLoop();
|
|
toggleForm(true);
|
|
}
|
|
}
|