41 lines
735 B
JavaScript
41 lines
735 B
JavaScript
function clamp(x, min_x, max_x) {
|
|
return min(max(x, min_x), max_x)
|
|
}
|
|
|
|
class Walker {
|
|
constructor(x = 0, y = 0) {
|
|
this.pos = createVector(x, y)
|
|
}
|
|
|
|
step() {
|
|
let vel = createVector(0, 0)
|
|
if (random(1) < 0.5) {
|
|
vel.x = clamp(mouseX - this.pos.x, -1, 1)
|
|
vel.y = clamp(mouseY - this.pos.y, -1, 1)
|
|
} else {
|
|
vel.x = floor(random(3)) - 1
|
|
vel.y = floor(random(3)) - 1
|
|
}
|
|
|
|
this.pos.add(vel)
|
|
}
|
|
|
|
draw() {
|
|
stroke(0)
|
|
point(this.pos)
|
|
}
|
|
}
|
|
|
|
let walker
|
|
|
|
function setup() {
|
|
createCanvas(640, 240)
|
|
background(255)
|
|
walker = new Walker(320, 120)
|
|
}
|
|
|
|
function draw() {
|
|
walker.step();
|
|
walker.draw();
|
|
}
|