/* /////////////////////////////////////////////////////////////////////////
Athos the Boxer, made my Andreea Pop in Processing. The mouse can be moved
left and right to move the clouds, and the sky lightly changes colours
depending on where the mouse is. Up and down movements control the eyebrows,
and the eyes will follow the mouse. Clicking the image will have Athos lightly
borf at you.
Total Shapes: 61
Total Shapes (with lines included): 72
////////////////////////////////////////////////////////////////////////// */
void setup() {
//window size 400x400 px
size(400, 400);
//background colour
background(157, 135, 135);
}
void draw() {
//basic setup
//framerate
frameRate(30);
//no outlines for shapes
noStroke();
//define the two corner points of the rect
rectMode(CORNERS);
//define the center of the ellipse
ellipseMode(CENTER);
//bottom of dog bed
fill(211, 179, 179);
rect(0, 200, 400, 400);
//top border of bed
fill(234, 199, 199);
rect(0, 310, 400, 340);
//sky outside
fill(100+mouseX*0.1, 100+mouseX*0.1, 255);
rect(40, 0, 180, 140);
/* #+mouseX the number represents how far
away it is from the X axis, the *0.2 slows
the movement down to half the mouse speed */
//cloud 1
fill(255);
ellipse(60+mouseX*0.3, 90, 80, 20);
ellipse(20+mouseX*0.3, 80, 40, 40);
ellipse(40+mouseX*0.3, 80, 30, 20);
ellipse(10+mouseX*0.3, 90, 30, 20);
//cloud 1 shade; duplicate cloud, but translucent
fill(255, 255, 255, 150);
ellipse(50+mouseX*0.3, 90, 80, 20);
ellipse(10+mouseX*0.3, 80, 40, 40);
ellipse(30+mouseX*0.3, 80, 30, 20);
ellipse(mouseX*0.3, 90, 30, 20);
//cloud 2
fill(255);
ellipse(120+mouseX*0.2, 30, 80, 40);
ellipse(80+mouseX*0.2, 40, 60, 20);
ellipse(140+mouseX*0.2, 50, 40, 20);
//cloud 2 shade
fill(255, 255, 255, 150);
ellipse(110+mouseX*0.2, 30, 80, 40);
ellipse(70+mouseX*0.2, 40, 60, 20);
ellipse(130+mouseX*0.2, 50, 40, 20);
//cloud 3
fill(255);
ellipse(10+mouseX*0.1, 130, 60, 20);
ellipse(mouseX*0.1, 120, 60, 20);
//window sill
fill(234, 199, 199);
rect(40, 130, 180, 140);
//left curtain
fill(152, 92, 92);
rect(0, 0, 40, 160);
//left curtain shade
fill(108, 55, 55);
triangle(30, 160, 30, 80, 40, 160);
//right curtain
fill(152, 92, 92);
rect(180, 0, 260, 160);
//right curtain shade
fill(108, 55, 55);
triangle(180, 160, 200, 90, 200, 160);
triangle(220, 160, 220, 60, 230, 160);
//painting
strokeWeight(10);
stroke(67, 52, 35);
rectMode(CENTER);
rect(400, 0, 140, 160);
//remove changes to rectMode,stroke and stroke weight
noStroke();
rectMode(CORNERS);
strokeWeight(1);
//dog body
fill(184, 143, 89);
rect(80, 180, 180, 300);
triangle(80, 180, 80, 300, 20, 240);
//back legs
fill(203, 164, 111);
ellipse(80, 240, 90, 90);
rect(60, 280, 120, 300);
//back toes
fill(255);
triangle(120, 280, 140, 300, 110, 300);
stroke(216);
line(120, 280, 130, 299);
noStroke();
//front legs
fill(203, 164, 111);
ellipse(160, 220, 70, 80);
rect(140, 240, 180, 300);
triangle(330, 200, 360, 280, 330, 280);
//head
noStroke();
fill(184, 143, 89);
rect(180, 160, 330, 300, 15);
//front toes left side
fill(255);
quad(140, 280, 130, 300, 190, 300, 180, 280);
stroke(216);
line(140, 280, 130, 299);
line(140, 280, 140, 299);
line(160, 280, 160, 299);
line(180, 280, 180, 299);
noStroke();
//front toes right side
quad(330, 280, 330, 300, 390, 300, 380, 280);
stroke(216);
line(340, 279, 340, 299);
line(360, 279, 360, 299);
line(380, 279, 380, 299);
noStroke();
//eyes
fill(255);
ellipse(220, 220, 45, 45);
ellipse(300, 220, 45, 45);
//irises
fill(103, 71, 37);
ellipse(210+mouseX*0.05, 210+mouseY*0.05, 20, 20);
ellipse(290+mouseX*0.05, 210+mouseY*0.05, 20, 20);
fill(0);
ellipse(210+mouseX*0.05, 210+mouseY*0.05, 10, 10);
ellipse(290+mouseX*0.05, 210+mouseY*0.05, 10, 10);
//eyeshine
fill(255);
ellipse(205+mouseX*0.05, 205+mouseY*0.05, 5, 5);
ellipse(285+mouseX*0.05, 205+mouseY*0.05, 5, 5);
//eyebrows/eyelids
fill(184, 143, 89);
rectMode(CORNER);
rect(190, 187+mouseY*0.025, 55, 20);
rect(270, 187+mouseY*0.025, 55, 20);
rectMode(CORNERS);
//eyebrows emphasis
strokeWeight(3);
stroke(85, 47, 21);
line(200, 206+mouseY*0.025, 240, 206+mouseY*0.025);
line(280, 206+mouseY*0.025, 320, 206+mouseY*0.025);
noStroke();
//mouth
fill(23, 20, 17);
quad(250, 240, 280, 240, 340, 300, 200, 300);
rect(195, 280, 345, 300, 15);
fill(8);
quad(250, 240, 280, 240, 270, 250, 260, 250);
strokeWeight(2);
stroke(8);
line(265, 250, 265, 298);
noStroke();
//ears
fill(52, 36, 19);
quad(180, 140, 200, 140, 220, 160, 180, 190);
triangle(300, 160, 330, 200, 330, 150);
fill(28, 20, 11);
quad(160, 140, 200, 140, 170, 200, 160, 200);
quad(330, 150, 350, 180, 350, 200, 330, 180);
//white pattern
fill(255);
triangle(260, 180, 280, 240, 250, 240);
//dog bed arm
fill(234, 199, 199);
ellipse(0, 270, 140, 140);
fill(211, 179, 179);
ellipse(0, 270, 100, 100);
}
void mousePressed() {
frameRate(5);
fill(234, 173, 200);
quad(250, 280, 280, 280, 290, 300, 240, 300);
fill(255);
triangle(250, 280, 260, 280, 255, 290);
triangle(260, 280, 270, 280, 265, 290);
triangle(270, 280, 280, 280, 275, 290);
println("Borf.");
}