// Spring Butterfly
/* When the user moves the butterfly around,
the human eyes follows it around. */
/* The butterfly supposed to be active and high flying during daytime. But
at night, the butterfly lands on the ground or on a flower and ends his day
of flying about. */
void setup() {
// Set the size of the window
size(400, 400);
frameRate(60);
}
void draw() {
// framerate
frameRate(60);
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// SCENERY
// sky background
background(39, 159, 255);
// Night Layer
fill(0, 10, 67, -75 + mouseY);
rect(200, 200, 400, 400);
// sun
noStroke();
fill(255, 226, 0);
ellipse(40, 40, 200, 200);
fill(250, 255, 0);
ellipse(40, 40, 180, 180);
// moon layer
noStroke();
fill(237, -75 + mouseY);
ellipse(40, 40, 200, 200);
fill(255, -75 + mouseY);
ellipse(40, 40, 180, 180);
// clouds
noStroke();
fill(255, 200);
ellipse(0 + mouseX, 60, 150, 20);
ellipse(77 + mouseX, 44, 150, 20);
ellipse(-103 + mouseX, 50, 150, 20);
//Draw grassy hill
noStroke();
fill(24, 134, 6);
ellipse(200, 400, 550, 150);
fill(22, 90, 10);
ellipse(200, 300, 550, 150);
//Flower stem and petals (foreground)
noFill();
stroke(6,255,0);
strokeWeight(6);
bezier(100, 400, 90, 360, 80, 320, 60, 280);
noStroke();
fill(232, 89, 173);
ellipse(40, 260, 35, 35);
ellipse(70, 260, 35, 35);
ellipse(40, 290, 35, 35);
fill(246, 255, 0);
ellipse(55, 275, 30, 30);
//Dandelion (background)
noFill();
stroke(57, 116, 55);
strokeWeight(2);
bezier(280, 372, 282, 362, 285, 342, 290, 332);
noStroke();
fill(193);
ellipse(290, 330, 12, 12);
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// HUMAN FIGURE
// set CENTER mode
ellipseMode(CENTER);
rectMode(CENTER);
strokeWeight(1);
// human head
noStroke();
fill(255, 193, 116);
ellipse(200, 140, 80, 80);
fill(255, 216, 167);
ellipse(197.5, 137.5, 73, 73);
// human eyes
noStroke();
fill(33, 19, 4);
ellipse(175 + (mouseX * .05), 125 + (mouseY * .07), 10, 10);
ellipse(205 + (mouseX * .05), 125 + (mouseY * .07), 10, 10);
// nose
stroke(0);
fill(250, 168, 91);
ellipse(190 + (mouseX * .05), 135 + (mouseY * .07), 10, 5);
// human body
noStroke();
fill(255, 128, 0);
rect(200, 245, 60, 130);
noStroke();
// brighter part
fill(255, 170, 0);
rect(198, 242.5, 55, 125);
// human arms + hands (R + L)
noStroke();
fill(255, 128, 0);
rect(160, 240, 20, 120);
rect(240, 240, 20, 120);
fill(255, 193, 116);
ellipse(160, 310, 20, 20);
ellipse(240, 310, 20, 20);
// brighter area
fill(255, 170, 0);
rect(157.5, 237.5, 15, 115);
rect(237.5, 237.5, 15, 115);
fill(255, 216, 167);
ellipse(159, 309, 17, 17);
ellipse(239, 309, 17, 17);
// human legs
noStroke();
fill(0, 25, 144);
rect(200, 355, 60, 90);
fill(0, 18, 93);
rect(200.5, 365, 16, 70);
stroke(0);
strokeWeight(1); // GOTTA MAKE IT FOR JUST THE ONE LINE!!
line(200, 400, 200, 330);
line(210, 330, 190, 330);
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// BUTTERFLY
// Butterfly (mouse follow cursor)
stroke(39);
bezier(-10 + mouseX, -25 + mouseY, -8 + mouseX, -30 + mouseY, -3 + mouseX, -10 + mouseY, -1 + mouseX, -5 + mouseY);
bezier(10 + mouseX, -25 + mouseY, 8 + mouseX, -30 + mouseY, 3 + mouseX, -10 + mouseY, 1 + mouseX, -5 + mouseY);
fill(39);
ellipse(-10 + mouseX, -25 + mouseY, 5, 5);
ellipse(10 + mouseX, -25 + mouseY, 5, 5);
stroke(255);
fill(255, 115, 0);
ellipse(-10 + mouseX, -7 + mouseY, 14, 15);
ellipse(-10 + mouseX, 7 + mouseY, 14, 15);
ellipse(10 + mouseX, -7 + mouseY, 14, 15);
ellipse(10 + mouseX, 7 + mouseY, 14, 15);
fill(39);
noStroke();
ellipse (mouseX, mouseY, 14, 19);
}
// PRESS THE LEFT MOUSE BUTTON FOR "OOOH, A BUTTERFLY."
void mousePressed() {
println("Oooh, a butterfly!");
}