/*
D Nordlund
PROG14998 Interactive Drawing - "Robin Red Boots"
21 September 2016
As the grub goes up, everything gets brighter.
As the grub goes back into hiding, everything darkens.
The bird moves its beak and tail as the user moves the grub around the screen.
The hills, clouds, and sun/moon also move as the user moves the grub around the screen.
Click for the bug to say something positive!
Press any key for the bug to say something negative!
*/
void setup()
{
size(400, 400);
noCursor();
}
void draw()
{
//Background gets darker as mouseY increases
background(198, 244-mouseY/15, 255);
//Sun/Moon, Clouds
//Sun/Moon
fill(255, 251, 235-mouseY/30);
ellipse(60, 60-mouseY/100, 60, 60);
//Clouds
fill(255-mouseY/70);
ellipse(50-mouseX/50, 180-mouseY/30, 70+mouseX/50, 70+mouseY/50);
fill(255-mouseY/70);
ellipse(100-mouseX/50, 160-mouseY/30, 100+mouseX/50, 100+mouseY/50);
fill(255-mouseY/70);
ellipse(210-mouseX/30, 90-mouseY/30, 75+mouseX/50, 75+mouseY/50);
fill(255-mouseY/70);
ellipse(260-mouseX/30, 79-mouseY/30, 100+mouseX/50, 100+mouseY/50);
fill(255-mouseY/70);
ellipse(300-mouseX/30, 100-mouseY/30, 50+mouseX/50, 50+mouseY/50);
fill(255-mouseY/70);
ellipse(310-mouseX/30, 50-mouseY/30, 60+mouseX/50, 60+mouseY/50);
fill(255-mouseY/70);
ellipse(345-mouseX/30, 85-mouseY/30, 80+mouseX/50, 80+mouseY/50);
//Background Hills
//furthest hill
fill(162-mouseY/10, 208, 114);
ellipse(360-mouseX/100, 370-mouseY/100, 480, 200);
//middle hill
fill(134, 201, 141-mouseY/30);
ellipse(150-mouseX/100, 370-mouseY/100, 480, 200);
//standing hill
fill(173-mouseY/15, 211, 113);
ellipse(200-mouseX/50-mouseY/50, 410, 530, 200);
//Bird
//legs
stroke(0);
strokeWeight(6);
line(170, 240, 180, 300);
line(215, 240, 225, 300);
//boots
noStroke();
fill(241-mouseY/10, 92, 97);
quad(170, 300, 167, 330, 185, 330, 190, 300);
ellipse(165, 330, 40, 15);
quad(215, 300, 212, 330, 230, 330, 235, 300);
ellipse(210, 330, 40, 15);
//body
noStroke();
fill(255, 231, 209-mouseY/30);
ellipse(200, 210, 170, 150);
fill(252, 151, 151-mouseY/10);
ellipse(176, 220, 111, 120);
//tail
fill(255, 231, 209-mouseY/30);
triangle(280, 200, 270, 250, 390, 200+mouseY/30);
triangle(240, 250, 290, 220, 330, 290+mouseY/30);
//wings
fill(205, 183-mouseY/50, 158);
//chunk1
ellipse(190, 160, 50, 50);
quad(163, 160, 200, 160, 210, 190, 184, 210);
ellipse(201, 205, 35, 35);
quad(185, 210, 199, 250, 225, 240, 218, 210);
ellipse(213, 245, 30, 30);
//rest of the wing
ellipse(200, 160, 40, 50);
ellipse(240, 200, 100, 100);
ellipse(240, 243, 30, 30);
ellipse(262, 235, 30, 30);
ellipse(280, 220, 30, 30);
ellipse(295, 200, 30, 30);
triangle(200, 135, 260, 154, 230, 170);
triangle(202, 135, 253, 152, 230, 170);
triangle(265, 157, 290, 190, 307, 190);
//head
fill(205, 183-mouseY/50, 158);
ellipse(125, 125, 100, 100);
fill(255, 231, 209-mouseY/30);
ellipse(117, 130, 85, 85);
//bow
stroke(238, 38, 52);
fill(241-mouseY/10, 92, 97);
triangle(120, 60, 110, 95, 150, 90);
triangle(150, 90, 186, 115, 195, 80);
ellipse(150, 90, 20, 20);
//eye
noStroke();
fill(95, 48, 16);
ellipse(135, 118, 25, 25);
fill(0);
ellipse(135, 118, 15, 15);
fill(255);
ellipse(138, 115, 3, 3);
//bottom beak
fill(95, 48, 16);
triangle(32, 130+mouseY/30, 90, 140, 100, 130);
//top beak
fill(80, 48, 16);
triangle(30, 130-mouseY/50, 90, 110, 100, 130);
//Grub
//body
noStroke();
fill(113, 73, 28);
ellipse(mouseX, mouseY, 20, 40);
//antennae
ellipse(mouseX-5, mouseY-20, 2, 20);
ellipse(mouseX+5, mouseY-20, 2, 20);
//legs left
ellipse(mouseX-5, mouseY-10, sin(frameCount*3)*20, 2);
ellipse(mouseX-7, mouseY, sin(frameCount*3)*20, 2);
ellipse(mouseX-5, mouseY+10, sin(frameCount*3)*20, 2);
//legs right
ellipse(mouseX+5, mouseY-10, sin(frameCount*3)*20, 2);
ellipse(mouseX+7, mouseY, sin(frameCount*3)*20, 2);
ellipse(mouseX+5, mouseY+10, sin(frameCount*3)*20, 2);
//frontmost hill
fill(134, 201, 141-mouseY/10);
ellipse(200+mouseX/100, 450+mouseY/100, 570, 200);
}
void mousePressed()
{
println("Grubbo: What a nice day!");
}
void keyPressed()
{
println("Grubbo: to be eaten by a bird");
}