xxxxxxxxxx
92
var currentGraph = new graph();
// var currentGrid = new grid();
var selected_node = null;
var arrival_node = null;
var speedSlider = null;
var holding_shift = false;
function setup() {
createCanvas(1000, 600);
speedSlider = createSlider(0, 299, 270);
speedSlider.center('horizontal');
graph_info = "10\n1 2\n1 3\n3 4\n3 5\n2 6\n2 7\n5 8\n5 9\n4 10";
// grid_info = "#..#\n....\n..##\n.###";
currentGraph.parse(graph_info);
currentGraph.bfs_format_graph();
// currentGrid.parse(grid_info);
}
function draw_call_stack()
{
push();
fill(220);
strokeWeight(0);
rect(width - 50, 0, width, height);
for (let i = 0; i < call_stack.length && i * 50 <= height; i++)
{
fill(50);
rect(width - 50, height - 50 * i - 50, 50, 50);
textAlign(CENTER, CENTER);
fill(255);
text(call_stack[i].id + 1, width - 25, height - 50 * i - 25);
}
pop();
}
function draw() {
speed = 300 - speedSlider.value();
background("#263238");
fill(255);
text("Component Count : " + currentGraph.parts, 10, 20);
currentGraph.draw();
draw_call_stack();
}
function mousePressed()
{
clear_error();
if (mouseX < 0 || mouseX > width || mouseY < 0 || mouseY > height)
return ;
if (holding_shift && selected_node)
{
let temp_node = currentGraph.select();
if (temp_node)
{
selected_node.adj.push(temp_node);
temp_node.adj.push(selected_node);
}
}
if (mouseButton === LEFT)
selected_node = currentGraph.select();
else if (mouseButton === CENTER)
arrival_node = currentGraph.select();
}
function keyPressed()
{
if (keyCode == SHIFT)
holding_shift = true;
}
function keyReleased()
{
console.log(keyCode);
if (keyCode == SHIFT)
holding_shift = false;
else if (keyCode == 32)
{
currentGraph.stop();
currentGraph.bfs_format_graph();
}
}
function mouseDragged()
{
if (mouseX < 0 || mouseX > width || mouseY < 0 || mouseY > height)
return ;
if (selected_node)
{
selected_node.x = mouseX;
selected_node.y = mouseY;
}
}