javascript(clever-dots): Make rendering loop async
Signed-off-by: prescientmoon <git@moonythm.dev>
This commit is contained in:
parent
9bdc46e524
commit
43beb60e21
|
@ -1,40 +1,61 @@
|
||||||
function game(){
|
function game() {
|
||||||
this.size = [500,500];
|
this.size = [500, 500];
|
||||||
|
|
||||||
this.clear = function(){
|
this.clear = function () {
|
||||||
setTimeout(function(){
|
var c = document.getElementById("can");
|
||||||
var c = document.getElementById("can");
|
var ctx = c.getContext("2d");
|
||||||
var ctx = c.getContext("2d");
|
ctx.fillStyle = "#000000";
|
||||||
ctx.fillStyle="#000000";
|
ctx.fillRect(0, 0, 1000, 1000);
|
||||||
ctx.fillRect(0,0,1000,1000);
|
//console.log("clearing");
|
||||||
//console.log("clearing");
|
};
|
||||||
},1);
|
|
||||||
}
|
this.draw = function (x, y) {
|
||||||
|
var c = document.getElementById("can");
|
||||||
this.draw = function(x,y){
|
var ctx = c.getContext("2d");
|
||||||
setTimeout(function(){
|
ctx.fillStyle = "#FFFFFF";
|
||||||
var c = document.getElementById("can");
|
ctx.fillRect(x, y, 1, 1);
|
||||||
var ctx = c.getContext("2d");
|
//console.log(y+"drawing"+x);
|
||||||
ctx.fillStyle="#FFFFFF";
|
//console.log("finished drawing");
|
||||||
ctx.fillRect(x,y,1,1);
|
};
|
||||||
//console.log(y+"drawing"+x);
|
|
||||||
},1);
|
|
||||||
//console.log("finished drawing");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
var a = new game();
|
var a = new game();
|
||||||
a.clear();
|
a.clear();
|
||||||
var b = new population(a);
|
var b = new population(a);
|
||||||
b.reset();
|
b.reset();
|
||||||
b.create_population();
|
b.create_population();
|
||||||
for (var k = 0;k < 20;k++){
|
|
||||||
a.clear();
|
function redraw() {
|
||||||
console.log("thinking");
|
let done = false;
|
||||||
for (var i = 0;i < 500;i++){
|
let callback = null;
|
||||||
for (var j = 0;j < b.Population.length;j++){
|
requestAnimationFrame(() => {
|
||||||
b.think(b.Population[j]);
|
done = true;
|
||||||
a.draw(b.Population[j].x,b.Population[j].y);
|
if (callback !== null) callback();
|
||||||
}
|
});
|
||||||
}
|
|
||||||
b.evolve();
|
return new Promise((res) => {
|
||||||
}
|
if (done) res();
|
||||||
|
else callback = () => res();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const iterationsPerFrame = 10;
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
for (let k = 0; k < 1000; k++) {
|
||||||
|
await redraw();
|
||||||
|
a.clear();
|
||||||
|
console.log(`thinking: ${k}`);
|
||||||
|
for (let i = 0; i < 500; i++) {
|
||||||
|
if (i % iterationsPerFrame === 0) await redraw();
|
||||||
|
for (let j = 0; j < b.Population.length; j++) {
|
||||||
|
b.think(b.Population[j]);
|
||||||
|
a.draw(b.Population[j].x, b.Population[j].y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
b.evolve();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue