Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
float bubbleY = 400;


void setup () {
  // set screen size
  size (400, 400);
  // draw ellipse from corner
  ellipseMode (CORNER);
  rectMode (CORNER);

}

void draw () {
  // change background to white
  background (96, 132, 173);
  
  // window
  noStroke ();
  fill (198, 143, 183);
  rect (40, 20, 150, 150);
  
  fill (232, 183, 105);
  ellipse(50, 30, 60, 60);
  
  //window frame
  stroke(225);
  strokeWeight(10);
  noFill ();
  rect (40, 20, 150, 150);
  noStroke ();
  fill (225);
  rect (40, 100, 150, 10);
  
  
  
  // pug ears
  noStroke();
  fill (55, 49, 46);
  ellipse (50, 70 + (mouseY * 0.03), 120, 100);
  ellipse (230, 70 + (mouseY * 0.03), 120, 100);
  triangle (50, 70 + (mouseY * 0.03), 50, 180 + (mouseY * 0.03), 130, 70 + (mouseY * 0.03));
  triangle (270, 70 + (mouseY * 0.03), 360, 70 + (mouseY * 0.03), 360, 180 + (mouseY * 0.03));
  
  //pug head
  noStroke();
  fill (202, 183, 168);
  ellipse (80 + (mouseX * 0.01), 80 + (mouseY * 0.01), 240, 240);
  ellipse (70 + (mouseX * 0.02), 170 + (mouseY * 0.02), 70, 100);
  ellipse (260 + (mouseX * 0.02), 170 + (mouseY * 0.02), 70, 100);
  
  // pug eye socket
  noStroke ();
  fill (163, 135, 128);
  ellipse (90 + (mouseX * 0.02), 120 + (mouseY * 0.02), 100, 80);
  ellipse (210 + (mouseX * 0.02), 120 + (mouseY * 0.02), 100, 80);
  
  // pug eye ball
  
  noStroke ();
  fill (121, 64, 51);
  ellipse (100 + (mouseX * 0.05), 150 + (mouseY * 0.05), 40, 40);
  ellipse (260 + (mouseX * 0.05), 150 + (mouseY * 0.05), 40, 40);
  
  noStroke ();
  fill (47, 37, 35);
  ellipse (100 + (mouseX * 0.05), 160 + (mouseY * 0.05), 30, 30);
  ellipse (270 + (mouseX * 0.05), 160 + (mouseY * 0.05), 30, 30);
  
  noStroke ();
  fill (255);
  ellipse (120 + (mouseX * 0.05), 160 + (mouseY * 0.05), 20, 20);
  ellipse (260 + (mouseX * 0.05), 160 + (mouseY * 0.05), 20, 20);
  
  // pug eyebrows
  noStroke ();
  fill (63, 50, 48);
  ellipse (110 + (mouseX * 0.03), 110 + (mouseY * 0.03), 60, 30);
  ellipse (230 + (mouseX * 0.03), 110 + (mouseY * 0.03), 60, 30);
  
  // pug snout and tounge
  noStroke ();
  fill (75, 60, 57);
  ellipse (130 + (mouseX * 0.05), 180 + (mouseY * 0.05), 140, 100);
  fill (215, 159, 159);
  ellipse (170 + (mouseX * 0.05), 230 + (mouseY * 0.05), 60, 40);
  fill (111, 77, 77);
  ellipse (199 + (mouseX * 0.05), 240 + (mouseY * 0.05), 2, 20);
  fill (91, 76, 72);
  ellipse (121 + (mouseX * 0.05), 180 + (mouseY * 0.05), 80, 80);
  ellipse (199 + (mouseX * 0.05), 180 + (mouseY * 0.05), 80, 80);
  fill (55, 49, 46);
  ellipse (160 + (mouseX * 0.05), 210 + (mouseY * 0.05), 10, 10);
  ellipse (160 + (mouseX * 0.05), 240 + (mouseY * 0.05), 10, 10);
  ellipse (140 + (mouseX * 0.05), 225 + (mouseY * 0.05), 10, 10);
  ellipse (230 + (mouseX * 0.05), 210 + (mouseY * 0.05), 10, 10);
  ellipse (230 + (mouseX * 0.05), 240 + (mouseY * 0.05), 10, 10);
  ellipse (250 + (mouseX * 0.05), 225 + (mouseY * 0.05), 10, 10);
  
  
  // pug nose
  noStroke ();
  fill (55, 49, 46);
  ellipse (170 + (mouseX * 0.05), 170 + (mouseY * 0.05), 60, 40);
  
  noStroke();
  fill (255, 255, 255, 180);
  ellipse (190 + (mouseX * 0.05), 175 + (mouseY * 0.05), 20, 10);
  
  // bubbles
  bubbleY = bubbleY - 0.5;
  noStroke ();
  fill (178, 205, 224, 200);
  ellipse (0, bubbleY, 50, 50);
  ellipse (50, bubbleY + 350, 50, 50);
  ellipse (100, bubbleY - 50, 50, 50);
  ellipse (150, bubbleY + 400, 50, 50);
  ellipse (200, bubbleY - 100, 50, 50);
  ellipse (250, bubbleY + 200, 50, 50);
  ellipse (300, bubbleY - 20, 50, 50);
  ellipse (350, bubbleY + 200, 50, 50);
  ellipse (120, bubbleY + 150, 50, 50);
  ellipse (210, bubbleY + 220, 50, 50);
  
  
  // soapy water
  noStroke ();
  fill (126, 174, 228);
  ellipse (160, 300, 110, 110);
  ellipse (80, 290, 120, 120);
  ellipse (-20, 280, 150, 150);
  ellipse (225, 290, 150, 150);
  ellipse (320, 300, 110, 110);
  ellipse (120, 380, 100, 100);
  
  // brush
  
  noStroke ();
  fill (230, 219, 191);
  ellipse (mouseX, mouseY, 120, 60);
  fill (115, 72, 66);
  ellipse (mouseX-10, mouseY-10, 140, 40);
  fill (178, 205, 224, 200);
  ellipse (mouseX-10, mouseY+30, 30, 30);
  ellipse (mouseX+10, mouseY+40, 20, 20);
  ellipse (mouseX+20, mouseY+40, 25, 25);
  ellipse (mouseX+40, mouseY+40, 30, 30);
  ellipse (mouseX+60, mouseY+40, 25, 25);
  ellipse (mouseX+80, mouseY+35, 30, 30);
  ellipse (mouseX+105, mouseY+35, 15, 15);
  ellipse (mouseX+110, mouseY+30, 20, 20);
  
}

 // speak when mouse clicked
  void mousePressed () {
  println ("I'm a dirty boy, make me clean!");
  }