From cb14f6543bcf41dd440f888bb39043aaa34fe16a Mon Sep 17 00:00:00 2001 From: Rokas Puzonas Date: Mon, 5 Feb 2024 20:40:30 +0200 Subject: [PATCH] complete exercise 0.3 --- 0. Randomness/3. Mouse Walker/index.html | 15 +++++++++ 0. Randomness/3. Mouse Walker/sketch.js | 43 ++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 0. Randomness/3. Mouse Walker/index.html create mode 100644 0. Randomness/3. Mouse Walker/sketch.js 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(); +}