/* built with Studio Sketchpad:
* https://sketchpad.cc
*
* observe the evolution of this sketch:
* https://studio.sketchpad.cc/sp/pad/view/ro.EbRajuV9e9O/rev.8
*
* 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 (Classless PVector Remix v1.02)
* by ChalupaBatmans (2014/Jan)
* mod Asimes & GoToLoop
*
* Forum.Processing.org/two/discussion/3919/confusion-with-the-pvector#Item_5
* Forum.Processing.org/two/discussion/2396/how-to-turn-this-into-an-arraylist
*
* Studio.ProcessingTogether.com/sp/pad/export/ro.93n3OpWs89REU
* Studio.ProcessingTogether.com/sp/pad/export/ro.9jCT0UHalHCI3
*/
import java.util.List;
final List<PVector> puppies = new ArrayList<PVector>();
static final color BG = #4168F0, FUR = #7E2C06;
static final short DIM = 0100;
void setup() {
size(1000, 650);
noLoop();
smooth(3);
noStroke();
ellipseMode(CENTER);
}
void draw() {
background(BG);
for (final PVector p : puppies) render(p);
}
void mousePressed() {
if (mouseButton == LEFT) puppies.add(new PVector(mouseX, mouseY));
else if (!puppies.isEmpty()) puppies.remove(0);
redraw();
}
void render(final PVector pup) {
final float x = pup.x, y = pup.y;
// 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);
}