diff --git a/0. Randomness/3. Mouse Walker/index.html b/0. Randomness/3. Mouse Walker/index.html new file mode 100644 index 0000000..c390616 --- /dev/null +++ b/0. Randomness/3. Mouse Walker/index.html @@ -0,0 +1,15 @@ + + + + + + + +
+
+ + diff --git a/0. Randomness/3. Mouse Walker/sketch.js b/0. Randomness/3. Mouse Walker/sketch.js new file mode 100644 index 0000000..6eda5f7 --- /dev/null +++ b/0. Randomness/3. Mouse Walker/sketch.js @@ -0,0 +1,43 @@ +function clamp(x, min_x, max_x) { + return min(max(x, min_x), max_x) +} + +class Walker { + constructor(x = 0, y = 0) { + this.x = x + this.y = y + } + + step() { + let dx = 0 + let dy = 0 + if (random(1) < 0.5) { + dx = clamp(mouseX - this.x, -1, 1) + dy = clamp(mouseY - this.y, -1, 1) + } else { + dx = floor(random(3)) - 1 + dy = floor(random(3)) - 1 + } + + this.x += dx + this.y += dy + } + + draw() { + stroke(0) + point(this.x, this.y) + } +} + +let walker + +function setup() { + createCanvas(640, 240) + background(255) + walker = new Walker(320, 120) +} + +function draw() { + walker.step(); + walker.draw(); +}