xxxxxxxxxx
88
let walkers = [];
let totalWalkers = 5;
let extraCanvas;
let slider;
let speed = 1;
let occupiedColors = [];
function setup() {
createCanvas(500, 500);
background(0);
extraCanvas = createGraphics(width, height);
extraCanvas.background(0);
slider = createSlider(1, 1000, 1, 10);
createP('Click the mouse to calculate the score for every walker.');
createP('<= Speed of walkers').position(180,height-12);
createWalkers();
}
function draw() {
slider.input(() => speed = slider.value());
for (let w of walkers)
w.move();
image(extraCanvas, 0, 0);
walkerInfo();
checkCollision();
}
function inScreen(x, y) {
return (x > 10 &&
x < width - 10 &&
y > 20 &&
y < height - 10);
}
function createWalkers() {
let x, y, r, g ,b ,c;
for (let i = 0; i < totalWalkers; i++) {
x = random(20, width - 20);
y = random(20, height - 20);
r = floor(random(256));
g = floor(random(256));
b = floor(random(256));
c = color(r, g, b);
for (let i = 0; i < occupiedColors.length; i++) {
let col = occupiedColors[i];
while (red(col) == red(c) && green(col) == green(c) && blue(col) == blue(c)) {
r = floor(random(256));
g = floor(random(256));
b = floor(random(256));
c = color(r, g, b);
}
}
occupiedColors.push(c);
walkers[i] = new Walker(x, y, c);
}
}
function walkerInfo() {
for (let w of walkers) {
noFill();
stroke(255);
strokeWeight(2);
ellipse(w.pos.x, w.pos.y, 10, 10);
fill(255);
stroke(255);
strokeWeight(1);
text(nfc(w.score, 2), w.pos.x - 5, w.pos.y - 10);
}
}
function checkCollision() {
for (let i = 0; i < walkers.length; i++) {
for (let j = 0; j < walkers.length; j++) {
if (i != j && walkers[i].pos.x == walkers[j].pos.x && walkers[i].pos.y == walkers[j].pos.y) {
walkers[i].newWalker(walkers[j]);
}
}
}
}
function mousePressed() {
if (inScreen(mouseX, mouseY)) {
for(let w of walkers) {
w.evaluateScore();
}
}
}