xxxxxxxxxx
71
let pslider, fslider, sslider;
let pslider_label;
const flock = [];
function setup() {
createCanvas(640, 360);
for (let i = 0; i < 100; i++) {
flock.push(new Boid());
}
pslider = createSlider(0, 200, 50);
fslider = createSlider(0, 200, 20);
sslider = createSlider(0, 10, 4);
pslider_label = createP('Perception');
pslider_label.position(pslider.width / 2 - 30, height + 15);
pslider_label.style('color: white; font-family: sans-serif;');
fslider_label = createP('Force');
fslider_label.position(20 + pslider.width, height + 15);
fslider_label.style('color: white; font-family: sans-serif;');
sslider_label = createP('Speed');
sslider_label.position(25 + pslider.width * 2, height + 15);
sslider_label.style('color: white; font-family: sans-serif;');
for (let boid of flock) {
boid.perceptionRadius = pslider.value();
boid.maxForce = fslider.value() / 100;
boid.maxSpeed = sslider.value();
}
pslider.changed(() => {
for (let boid of flock) {
boid.perceptionRadius = pslider.value();
}
});
fslider.changed(() => {
for (let boid of flock) {
boid.maxForce = fslider.value() / 100;
}
});
sslider.changed(() => {
for (let boid of flock) {
boid.maxSpeed = sslider.value();
}
});
}
function draw() {
background(51);
for (let boid of flock) {
boid.show();
boid.edges();
boid.update();
boid.flock(flock);
}
fill(255, 0, 0, 200);
strokeWeight(0);
textSize(30);
textAlign(CENTER)
text(pslider.value(), pslider.width / 2, height - 5);
text(fslider.value() / 100, fslider.width * 1.5 + 5, height - 5);
text(sslider.value(), sslider.width * 2.5 + 10, height - 5);
}