/* Faun on Panflute By: Porter Crease A musical faun with an idle tapping hoof is chilling out in the forest. The forest critters will scurry from the left to the right of the screen according to the position of the mouse. Click to watch the faun play on his panflute! */ void setup() { size(400, 400); } void draw() { //return the framerate to normal after a mouse click frameRate(60); background(67, 74, 81); noStroke(); // pink, faraway light fill(250, 175, 212); ellipse(width/2, 100, 500, 300); //farthest trees fill(120, 114, 134); rect(50, 0, 40, height); rect(230, 0, 40, height); rect(350, 0, 40, height); //ground fill(125, 189, 189); rect(0, 280, width, 120); fill(174, 215, 190); ellipse(220, 350, 280, 80); //background trees fill(83, 72, 91); rect(20, 0, 40, 305); rect (120, 0, 50, 305); rect (280, 0, 50, 285); fill(59, 60, 73); rect (370, 0, 50, 295); rect (200, 0, 50, 295); //bunny, moves with x cordinates of mouse, fastest animal to move from left to right. fill(255); //body arc((mouseX-120)*3, 310, 50, 50, PI, TWO_PI); //legs ellipse((mouseX-113)*3, 311, 10, 20); ellipse((mouseX-127)*3, 312, 10, 20); //tail ellipse((mouseX-129)*3, 300, 10, 10); //head ellipse((mouseX-110)*3, 300, 25, 15); //ear ellipse((mouseX-112)*3, 285, 10, 20); //rock fill(111, 105, 127); arc(130, 330, 180, 180, PI, TWO_PI); //right leg fill(200, 122, 100); ellipse(130, 220, 90, 50); quad(160, 230, 145, 260, 160, 260, 175, 220); //ankle area of leg moves in an arc quad(160, 248, 160, 260, 205+abs(3*sin(frameCount*0.1)), 260+10*cos(frameCount*0.1), 210+abs(3*sin(frameCount*0.1)), 250+10*cos(frameCount*0.1)); //hoof fill(218, 205, 205); arc(205+abs(3*sin(frameCount*0.1)), 270+10*cos(frameCount*0.1), 28, 44, PI+0.2, TWO_PI+0.2); //right arm //shoulder fill(152, 130, 186); ellipse(147, 143, 30, 30); //arm rect(137, 143, 15, 50); rect(140, 200, 40, 20); //tail fill(153, 109, 97); ellipse(65, 220, 25, 25); stroke(153, 109, 97); strokeWeight(6); noFill(); arc(60, 215, 20, 30, PI+HALF_PI+0.4, TWO_PI+HALF_PI-0.4); noStroke(); //tummy fill(188, 167, 212); ellipse(105, 225, 70, 50); //back arc(130, 230, 119, 200, PI, PI+HALF_PI); //chest ellipse(125, 160, 40, 60); //left leg fill(200, 122, 100); ellipse(90, 250, 50, 80); rect(90, 279, 19, 10); //ankle quad(80, 310, 90, 320, 120, 280, 110, 280); //hoof fill(200, 200, 200); arc(89, 325, 36, 38, PI-0.8, TWO_PI-0.8); //panflute fill(255, 232, 200); quad(123, 186, 135, 186, 135, 230, 123, 230); fill(206, 183, 151); quad(135, 186, 145, 186, 145, 230, 135, 230); fill(230, 221, 177); quad(145, 186, 155, 186, 155, 230, 145, 230); //other visible pipes are shorter fill(217, 200, 154); quad(155, 186, 165, 186, 165, 220, 155, 220); fill(233, 221, 190); quad(165, 186, 175, 186, 175, 210, 165, 210); //righthand fill(159, 143, 184); ellipse(183, 210, 30, 35); //armleft fill(217, 200, 225); //bicep quad(80, 170, 95, 170, 95, 212, 80, 212); //forearm quad(80, 212, 130, 212, 130, 235, 80, 235); //shoulder fill(233, 208, 238); ellipse(90, 170, 30, 30); //hand ellipse(135, 220, 30, 35); //horns stroke(255); strokeWeight(13); line(75, 80, 152, 80); strokeWeight(10); noFill(); arc(152, 67, 20, 30, PI+HALF_PI+0.4, TWO_PI+HALF_PI-0.4); arc(78, 67, 20, 30, HALF_PI+0.4, PI+HALF_PI-0.4); noStroke(); fill(217, 200, 225); //ears arc(160, 100, 40, 20, 0, PI); arc(160-85, 100, 40, 20, 0, PI); //head ellipse(115, 100, 63, 60); //chin arc(135-20, 143, 28, 100, PI+0.5, TWO_PI); //left cheek arc(126-12, 129-19, 45, 65, 0, PI+0.9); //right cheek arc(126-3, 129-19, 45, 65, PI, TWO_PI+HALF_PI); //hair fill(153, 109, 97); ellipse(118, 70, 25, 25); stroke(153, 109, 97); strokeWeight(10); noFill(); arc(120, 67, 20, 30, PI+HALF_PI+0.4, TWO_PI+HALF_PI-0.4); //eyes strokeCap(ROUND); strokeWeight(3); stroke(141, 154, 197); line(113, 94, 113, 104); line(130, 94, 130, 104); noStroke(); //mouse scurries left to right, starts off in the middle of the screen but moves slowest //body noFill(); stroke(161, 143, 169); strokeWeight(15); arc((mouseX+30)*1.5, 375, 30, 10, PI, TWO_PI); //tail strokeWeight(3); arc((mouseX+05)*1.5, 375, 30, 10, 0, PI); //mouse head noStroke(); fill(161, 143, 169); triangle((mouseX+43)*1.5, 383, (mouseX+43)*1.5, 358, (mouseX+55)*1.5, 374); //ear ellipse((mouseX+43)*1.5, 361, 15, 20); noStroke(); //squirrel scurries left to right noFill(); stroke(150, 120, 100); strokeWeight(15); arc((mouseX-100)*2, 340, 40, 20, PI, TWO_PI); //legs strokeWeight(4); line((mouseX-112)*2, 346, (mouseX-114)*2, 352); line((mouseX-108)*2, 345, (mouseX-110)*2, 351); line((mouseX-89)*2, 342, (mouseX-86)*2, 352); line((mouseX-87)*2, 338, (mouseX-84)*2, 344); noStroke(); //head fill(150, 120, 100); ellipse((mouseX-85)*2, 328, 25, 25); //tail arc((mouseX-111)*2, 326, 20, 30, HALF_PI, PI+HALF_PI); //ears ellipse((mouseX-89)*2, 314, 7, 10); ellipse((mouseX-84)*2, 314, 7, 10); //foreground tree fill(21, 20, 23); rect(0, 0, 40, height); quad(40, 75, 40, 40, 100, 0, 110, 0); } void mousePressed() { frameRate(1); //redraw the scene // faraway light fill(250, 175, 212); ellipse(width/2, 100, 500, 300); //super back trees fill(120, 114, 134); rect(50, 0, 40, height); rect(230, 0, 40, height); rect(350, 0, 40, height); //ground fill(125, 189, 189); rect(0, 280, width, 120); fill(174, 215, 190); ellipse(220, 350, 280, 80); //back trees fill(83, 72, 91); rect(20, 0, 40, 305); rect (120, 0, 50, 305); rect (280, 0, 50, 285); fill(59, 60, 73); rect (370, 0, 50, 295); rect (200, 0, 50, 295); //bunny fill(255); //body arc((mouseX-120)*3, 310, 50, 50, PI, TWO_PI); //legs ellipse((mouseX-113)*3, 311, 10, 20); ellipse((mouseX-127)*3, 312, 10, 20); //tail ellipse((mouseX-129)*3, 300, 10, 10); //head ellipse((mouseX-110)*3, 300, 25, 15); //ear ellipse((mouseX-112)*3, 285, 10, 20); //rock fill(111, 105, 127); arc(130, 330, 180, 180, PI, TWO_PI); //leggy right fill(200, 122, 100); ellipse(130, 220, 90, 50); //joint1 quad(160, 230, 145, 260, 160, 260, 175, 220); //ankley part-- moves in an arc quad(160, 248, 160, 260, 205+abs(5*sin(frameCount*0.1)), 260+10*cos(frameCount*0.1), 210+abs(5*sin(frameCount*0.1)), 250+10*cos(frameCount*0.1)); //hoof fill(218, 205, 205); arc(205+abs(5*sin(frameCount*0.1)), 270+10*cos(frameCount*0.1), 28, 44, PI+0.2, TWO_PI+0.2); //armright //shoulder fill(152, 130, 186); ellipse(147, 143, 30, 30); //arm quad(143, 153, 159, 139,191,155,195,176); quad(185, 124, 212, 124,195,176,185,154); //righthand fill(159, 143, 184); ellipse(200, 118, 30, 35); //tail fill(153, 109, 97); ellipse(65, 220, 25, 25); stroke(153, 109, 97); strokeWeight(6); noFill(); arc(60, 215, 20, 30, PI+HALF_PI+0.4, TWO_PI+HALF_PI-0.4); noStroke(); //tummy fill(188, 167, 212); ellipse(105, 225, 70, 50); //back arc(130, 230, 119, 200, PI, PI+HALF_PI); //chest ellipse(125, 160, 40, 60); //leggyleft fill(200, 122, 100); ellipse(90, 250, 50, 80); //joint // rect(); rect(90, 279, 19, 10); //ankley bit quad(80, 310, 90, 320, 120, 280, 110, 280); //hoof fill(200, 200, 200); arc(89, 325, 36, 38, PI-0.8, TWO_PI-0.8); //hair behind head fill(123, 89, 77); ellipse(98, 79, 25, 25); stroke(123, 89, 77); strokeWeight(10); noFill(); arc(98, 79, 20, 30, PI+HALF_PI+0.4, TWO_PI+HALF_PI-0.4); noStroke(); //horn to the right stroke(255); strokeWeight(13); line(90, 113, 150, 78); strokeWeight(10); noFill(); arc(150, 65, 10, 30, PI+HALF_PI+0.4, TWO_PI+HALF_PI-0.4); noStroke(); fill(217, 200, 225); //ears ++ TILTED arc(155, 90, 40, 20, 0-1, PI-1); arc(80, 120, 40, 20, 0-1, PI-1); //face fill(217, 200, 225); //head ellipse(120, 105, 63, 60); //cheeks arc(135, 143, 28, 100, PI+0.5, TWO_PI); arc(126, 129, 45, 30, 0, PI+0.3); //horn overlapping head stroke(255); line(90, 113, 100, 100); arc(90, 100, 10, 30, HALF_PI+0.4, PI+HALF_PI-0.4); //eyes noFill(); strokeWeight(2); stroke(0, 0, 0); arc(117, 120, 20, 10, 0, HALF_PI); arc(140, 112, 20, 10, 0, HALF_PI); noStroke(); //hair ++ side of mohawk showing fill(143, 99, 87); ellipse(116, 75, 25, 25); fill(153, 109, 97); ellipse(128, 89, 25, 25); stroke(153, 109, 97); strokeWeight(10); noFill(); arc(128, 87, 20, 30, PI+HALF_PI+0.4, TWO_PI+HALF_PI-0.4); noStroke(); //panflute (90x63 pixels) smallest (90x23)// each individual pipe is 10p wide //coordinates = (top left, top right, bottom right, bottom left) fill(255, 232, 200); quad(138, 138, 146, 130, 162, 155, 154, 164); fill(206, 183, 151); quad(146, 130, 154, 122, 178, 154, 167, 163); fill(230, 221, 177); quad(154, 122, 163, 114, 192, 152, 184, 163); fill(217, 200, 154); quad(163, 114, 172, 106, 195, 136, 186, 145); fill(233, 221, 190); quad(172, 106, 180, 98, 194, 121, 186, 127); //armleft fill(217, 200, 225); //bicep (15 wide, 42 high) quad(86, 181, 92, 166, 121, 197, 110, 207); //forearm quad(110, 207, 128, 225, 144, 180, 132, 165); //shoulder fill(233, 208, 238); ellipse(90, 170, 30, 30); //hand ellipse(142, 170, 30, 35); //shadows fill(0, 0, 20, 75); triangle(0, 58, 81, 350, 0, 350); quad(362, 350, 100, 0, 400, 0, 400, 350); rect(0, 350, width, 50); //spotlight fill(174, 215, 190); arc(220, 350, 280, 80, 0, PI); //mouse //body noFill(); stroke(161, 143, 169); strokeWeight(15); arc((mouseX+30)*1.5, 375, 30, 10, PI, TWO_PI); //tail strokeWeight(3); arc((mouseX+05)*1.5, 375, 30, 10, 0, PI); //mouse head noStroke(); fill(161, 143, 169); triangle((mouseX+43)*1.5, 383, (mouseX+43)*1.5, 358, (mouseX+55)*1.5, 374); //ear ellipse((mouseX+43)*1.5, 361, 15, 20); noStroke(); //squirrel noFill(); stroke(150, 120, 100); strokeWeight(15); arc((mouseX-100)*2, 340, 40, 20, PI, TWO_PI); strokeWeight(4); line((mouseX-112)*2, 346, (mouseX-114)*2, 352); line((mouseX-108)*2, 345, (mouseX-110)*2, 351); line((mouseX-89)*2, 342, (mouseX-86)*2, 352); line((mouseX-87)*2, 338, (mouseX-84)*2, 344); noStroke(); //head fill(150, 120, 100); ellipse((mouseX-85)*2, 328, 25, 25); //tail arc((mouseX-111)*2, 326, 20, 30, HALF_PI, PI+HALF_PI); //ears ellipse((mouseX-89)*2, 314, 7, 10); ellipse((mouseX-84)*2, 314, 7, 10); //foreground trees fill(21, 20, 23); rect(0, 0, 40, height); quad(40, 75, 40, 40, 100, 0, 110, 0); }