/* built with Studio Sketchpad: * https://sketchpad.cc * * observe the evolution of this sketch: * https://studio.sketchpad.cc/sp/pad/view/ro.vT6HNVifIzz/rev.16 * * authors: * GoToLoop * * license (unless otherwise specified): * creative commons attribution-share alike 3.0 license. * https://creativecommons.org/licenses/by-sa/3.0/ */ /** * Stamp-a-Pup (v3.04) * by ChalupaBatmans (2014/Jan) * mod Asimes & GoToLoop * * Forum.Processing.org/two/discussion/2396/how-to-turn-this-into-an-arraylist * Forum.Processing.org/two/discussion/3919/confusion-with-the-pvector#Item_5 * * Studio.ProcessingTogether.com/sp/pad/export/ro.9jCT0UHalHCI3 * Studio.ProcessingTogether.com/sp/pad/export/ro.93n3OpWs89REU */ import java.util.List; final List<Dog> puppies = new ArrayList<Dog>(); static final color BG = #4168F0; void setup() { size(1000, 650); noLoop(); smooth(3); noStroke(); ellipseMode(CENTER); } void draw() { background(BG); for (final Dog p : puppies) p.render(); } void mousePressed() { if (mouseButton == LEFT) puppies.add(new Dog(mouseX, mouseY)); else if (!puppies.isEmpty()) puppies.remove(0); redraw(); } class Dog { static final color FUR = #7E2C06; static final short DIM = 0100; final short x, y; Dog(final int xx, final int yy) { x = (short) xx; y = (short) yy; } void render() { // Head & Body: fill(FUR); ellipse(x, y, DIM, DIM); ellipse(x, y + DIM, DIM*1.2, DIM*1.2); // Ears: fill(0); ellipse(x - DIM*.44, y + DIM*.1, DIM*.3, DIM*.8); ellipse(x + DIM*.44, y + DIM*.1, DIM*.3, DIM*.8); // Mouth & Eyes: fill(-1); ellipse(x, y + DIM*.2, DIM*.3, DIM*.3); ellipse(x - DIM*.2, y - DIM*.1, DIM*.2, DIM*.2); ellipse(x + DIM*.2, y - DIM*.1, DIM*.2, DIM*.2); // Nose & Irides: fill(0); ellipse(x, y + DIM*.1, DIM*.16, DIM*.16); ellipse(x - DIM*.14, y - DIM*.16, DIM*.1, DIM*.1); ellipse(x + DIM*.26, y - DIM*.16, DIM*.1, DIM*.1); } }