/*
Crab Island
by: Daniel Nava
Sept 19 2016
Moving the cursor up and down will shift through a day (sun and clouds) and night (moon and stars) cycle.
It will also move the sail boat out of the frame at night.
Billy the crab will move up, down, left or right depending on the position of the cursor.
*/
void setup () {
size (400, 400);
}
void draw() {
//light blue to dark blue
background(106 - mouseY /3, 214 - mouseY/3, 255 - mouseY /3);
//SUN
fill(#FFFA64);
stroke(#FFFA64);
ellipse(60, 50 + mouseY / 2, 80, 80);
//MOON
fill(#DEDEDE);
stroke(#DEDEDE);
ellipse(320, 200 - mouseY / 3, 60, 60);
//CLOUDS
fill(#F2F2F2, 200 - mouseY);
stroke(#F2F2F2, 200 - mouseY);
ellipse(170, 50, 80, 30);
ellipse(210, 30, 80, 30);
ellipse(300, 60, 80, 30);
ellipse(335, 75, 40, 20);
//STARS
fill(255, 0 + mouseY/2);
stroke(255, 0 + mouseY/2);
ellipse(150, 60, 5, 5);
ellipse(200, 50, 5, 5);
ellipse(70, 80, 5, 5);
ellipse(30, 100, 5, 5);
ellipse(40, 20, 5, 5);
ellipse(15, 60, 5, 5);
ellipse(385, 60, 5, 5);
ellipse(110, 110, 5, 5);
ellipse(230, 18, 5, 5);
ellipse(295, 25, 5, 5);
ellipse(355, 15, 5, 5);
ellipse(275, 115, 5, 5);
ellipse(365, 110, 5, 5);
ellipse(150, 20, 5, 5);
ellipse(248, 78, 5, 5);
ellipse(95, 35, 5, 5);
//BOAT
fill(100 - mouseY/6, 71 - mouseY/7, 38 - mouseY/9);
stroke(100 - mouseY/6, 71 - mouseY/7, 38 - mouseY/9);
//main body of boat
beginShape();
vertex(40 + mouseY * 1.5, 130);
vertex(100 + mouseY * 1.5, 130);
vertex(90 + mouseY * 1.5, 150);
vertex(55 + mouseY * 1.5, 150);
endShape();
//flagpole
strokeWeight(4);
fill(255);
line(70 + mouseY * 1.5, 130, 70 + mouseY * 1.5, 110);
strokeWeight(1);
//flag
fill(242 - mouseY/6, 66 - mouseY/4, 56 - mouseY/4);
stroke(242 - mouseY/6, 66 - mouseY/4, 56 - mouseY/4);
triangle(70 + mouseY * 1.5, 110, 70 + mouseY * 1.5, 120, 85 + mouseY * 1.5, 115);
//WATER
fill(80 - mouseY/3, 230 - mouseY/3, 200 - mouseY/4);
stroke(80 - mouseY/3, 230 - mouseY/3, 200 - mouseY/4);
rectMode(CORNERS);
rect(-10, 145 - mouseY/65, 420, 420);
//ISLAND SAND
fill(252 - mouseY/3, 239 - mouseY/3, 173 - mouseY/4);
stroke(252 - mouseY/3, 239 - mouseY/3, 173 - mouseY/4);
ellipseMode(CENTER);
//right
ellipse(240, 240, 180, 100);
//left
ellipse(140, 240, 180, 100);
//top
ellipse(190, 210, 195, 60);
//mini chunk bottom center
rectMode(CENTER);
rect(190, 280, 20, 10);
//TREE TRUNK
fill(131 - mouseY/6, 91 - mouseY/7, 38 - mouseY/9);
stroke(131 - mouseY/6, 91 - mouseY/7, 38 - mouseY/9);
//bottom trunk
quad(178, 190, 198, 183, 210, 230, 190, 230);
//mid trunk
quad(175, 150, 195, 150, 200, 190, 178, 190);
//top trunk
quad(182, 120, 200, 120, 195, 155, 175, 155);
//TREE LEAVES
fill(61 - mouseY/4, 144 - mouseY/8, 20 - mouseY/4);
stroke(61 - mouseY/4, 144 - mouseY/8, 20 - mouseY/4);
//Leaf 1
beginShape();
// inital points at the top
vertex(190, 125);
vertex(190, 105);
//right side points
vertex(220, 135);
vertex(225, 145);
vertex(230, 170);
//final point at bottom
vertex(227, 190);
//left side points
vertex(216, 160);
vertex(205, 142);
endShape(CLOSE);
//Leaf 2
beginShape();
// inital points at the top
vertex(190, 125);
vertex(190, 105);
//left side points
vertex(148, 135);
vertex(140, 145);
vertex(135, 170);
//final point at bottom
vertex(138, 190);
//right side points
vertex(150, 160);
vertex(160, 142);
endShape(CLOSE);
//Leaf 3
beginShape();
// inital points at the top
vertex(190, 115);
vertex(190, 95);
//left side points
vertex(148, 105);
vertex(140, 110);
vertex(135, 115);
//final point at bottom
vertex(120, 140);
//right side points
vertex(150, 122);
vertex(160, 118);
endShape(CLOSE);
//Leaf 4
beginShape();
// inital points at the top
vertex(190, 115);
vertex(190, 95);
//right side points
vertex(230, 110);
vertex(235, 112);
vertex(240, 115);
//final point at bottom
vertex(260, 140);
//left side points
vertex(230, 125);
vertex(220, 122);
endShape(CLOSE);
//Leaf 5
beginShape();
// inital points at the top
vertex(190, 105);
vertex(200, 100);
//left side points
vertex(180, 85);
vertex(160, 80);
vertex(135, 85);
//final point at bottom
vertex(120, 90);
//right side points
vertex(150, 90);
vertex(160, 93);
endShape(CLOSE);
//CRAB
fill(242 - mouseY/6, 66 - mouseY/4, 56 - mouseY/4);
stroke(242 - mouseY/6, 66 - mouseY/4, 56 - mouseY/4);
//body
ellipse(mouseX/3 + 130, 260 - mouseY/25, 40, 20);
//legs
strokeWeight(3);
line(mouseX/3 +114, 256- mouseY/25, mouseX/3 +106, 260- mouseY/25);
line(mouseX/3 +114, 262- mouseY/25, mouseX/3 +105, 264- mouseY/25);
line(mouseX/3 +120, 266- mouseY/25, mouseX/3 +106, 269- mouseY/25);
line(mouseX/3 +148, 256- mouseY/25, mouseX/3 +155, 260- mouseY/25);
line(mouseX/3 +148, 262- mouseY/25, mouseX/3 +156, 264- mouseY/25);
line(mouseX/3 +142, 266- mouseY/25, mouseX/3 +157, 269- mouseY/25);
//left + right eye
strokeWeight(2);
fill(255 - mouseY/6);
stroke(255 - mouseY/6);
ellipse(mouseX/3 +125, 250- mouseY/25, 10, 10);
ellipse(mouseX/3 +135, 250- mouseY/25, 10, 10);
//left + right pupil
fill(0);
stroke(0);
ellipse(mouseX/3 +125, 250- mouseY/25, 5, 5);
ellipse(mouseX/3 +135, 250- mouseY/25, 5, 5);
//mouth
strokeWeight(1);
line(mouseX/3 +125, 265- mouseY/25, mouseX/3 +135, 265- mouseY/25);
}