Files
snk/packages/demo/demo.getBestRoute.ts
2020-10-29 23:27:08 +01:00

42 lines
1.0 KiB
TypeScript

import "./menu";
import { createCanvas } from "./canvas";
import { getBestRoute } from "@snk/compute/getBestRoute";
import { Color, copyGrid } from "@snk/types/grid";
import { grid, snake } from "./sample";
import { step } from "@snk/compute/step";
const chain = getBestRoute(grid, snake)!;
//
// draw
let k = 0;
const { canvas, draw } = createCanvas(grid);
document.body.appendChild(canvas);
const onChange = () => {
const gridN = copyGrid(grid);
const stack: Color[] = [];
for (let i = 0; i <= k; i++) step(gridN, stack, chain[i]);
draw(gridN, chain[k], stack);
};
onChange();
const input = document.createElement("input") as any;
input.type = "range";
input.value = 0;
input.step = 1;
input.min = 0;
input.max = chain.length - 1;
input.style.width = "90%";
input.addEventListener("input", () => {
k = +input.value;
onChange();
});
document.body.append(input);
window.addEventListener("click", (e) => {
if (e.target === document.body || e.target === document.body.parentElement)
input.focus();
});