/*Project inspired by past students:SELINA MURIEL (http://www-acad.sheridanc.on.ca/PROG14998/2016/interactive-toy/ selina_muriel_interactive_toy/index.html) and Peter Francis (http://www-acad.sheridanc.on.ca/PROG14998/2016/ interactive-toy/peter_francis_interactive_toy/index.html */ //Button variables defined float outfitButton= 0; float earsButton= 0; float eyesButton=0; float mouthButton = 0; float noseButton= 0; float facialFeaturesButton =0; float spazzX; void setup () { size(400, 400); } void draw () { background (255); // Draw sky noStroke(); fill (#8FF5FC); rect (-20, -20, 400, 280); // Draw sun noStroke (); fill (155); ellipse (spazzX, 50, 40, -30); spazzX = spazzX + random (1,-2); ellipse (60, 60, - 20, -20); fill ( #FFDAB9); ellipse ( 80, 80, - 40, -40); fill (#FFFACD); ellipse (60, 60, - 20, -20); // Draw grass fill (#9ACD32); rect (0, 400, 400, 280); // Draw shadow fill (155); ellipseMode (CORNERS); ellipse (40, 310, 160, 360); //Draw the default animal character //Draw default ears strokeWeight (2); stroke (#DEB600); fill (#FFF4C2); triangle (60, 60, 65, 140, 120, 120); triangle (90, 120, 140, 60, 140, 120); //Draw arms strokeWeight (2); fill (#FFF4C2); ellipseMode(CORNERS); ellipse (170, 190, 30, 210); //Draw legs strokeWeight (2); stroke(#DEB600); fill (#FFF4C2); ellipseMode (CENTER); ellipse (80, 280, 30, 120); ellipseMode (CENTER); ellipse (120, 280, 30, 120); //Draw body strokeWeight (2); stroke (0); fill (255); ellipseMode (CORNERS); ellipse (60, 175, 140, 290); //Draw head strokeWeight (2); stroke (#DEB600); fill (#FFF4C2); ellipseMode(CORNERS); ellipse (50, 90, 150, 190); fill (255); //Draw default eyes (white) stroke (0); fill (255); ellipseMode(CORNERS); ellipse(65, 125, 95, 155); ellipse(105, 125, 135, 155); //Draw default eyes (blacks) stroke (0); ellipseMode(CORNERS); ellipse (70, 130, 90, 150); ellipseMode (CORNERS); ellipse(110, 130, 130, 150); //Draw mouth strokeWeight(2); stroke(0); line (90, 175, 115, 175); strokeWeight (1); //Draw nose fill (#68570A); stroke (0); triangle(100, 150, 95, 160, 105, 160); fill (255); //Draw background of character customization UI strokeWeight(10); stroke(#9B6700); fill (#FFC859); rect(200, 360, 400, 100, 10); strokeWeight(1); for (int i = 100; i < 355; i = i+5) { line(200, i, 400, i); } //Draw buttons (activated through mousePressed) //Eye Buttons stroke(0); fill (#FFE8A0); rectMode(CORNERS); strokeWeight (2); rect(220, 120, 280, 160, 10); strokeWeight (1); //Draw Eye button icon ellipseMode(CORNERS); fill(255); ellipse(230, 130, 250, 150); ellipse (250, 130, 270, 150); fill(0); ellipse(235, 135, 245, 145); ellipse (255, 135, 265, 145); //Nose button fill (#FFE8A0); stroke(0); strokeWeight (2); rectMode(CORNERS); rect(220, 180, 280, 220, 10); //Draw nose button icon fill (255); triangle (250, 190, 240, 210, 260, 210); strokeWeight (1); //Mouth button fill (#FFE8A0); stroke(0); strokeWeight (2); rectMode(CORNERS); rect(220, 240, 280, 280, 10); //Draw mouth button icon stroke(0); line (230, 260, 270, 260); strokeWeight (1); //Facial features button fill (#FFE8A0); strokeWeight (2); rectMode(CORNERS); rect(220, 300, 280, 340, 10); //Draw Facial features icon //left cheek fill (255); strokeWeight (1); ellipseMode(CORNERS); ellipse (235, 310, 240, 315); ellipse (230, 320, 235, 325); ellipse (240, 320, 245, 325); //right cheek ellipse (260, 320, 265, 325); ellipse (270, 320, 275, 325); ellipse (265, 310, 270, 315); strokeWeight (1); //ear accessory button fill (#FFE8A0); strokeWeight (2); rectMode(CORNERS); rect(320, 120, 380, 160, 10); strokeWeight (1); //ear button icon fill (255); quad (330, 130, 370, 155, 370, 130, 330, 150); strokeWeight (1); //random button fill (#FFE8A0); strokeWeight (2); rectMode(CORNERS); rect(320, 180, 380, 220, 10); //random button icon fill (255); strokeWeight (1); ellipseMode(CORNERS); triangle(335, 200, 345, 190, 335, 185); triangle (350, 190, 365, 183, 365, 200); ellipse(335, 215, 365, 190); strokeWeight (1); //outfit button fill (#FFE8A0); strokeWeight (2); rectMode(CORNERS); rect(320, 240, 380, 280, 10); //outfit button icon fill (255); rectMode(CORNERS); rect(340, 270, 360, 250); rect(330, 260, 340, 250); rect(360, 260, 370, 250); triangle(340, 250, 350, 260, 360, 250); strokeWeight (1); drawAnimalEars(); drawAnimalEyes(); drawAnimalOutfit(); drawAnimalMouth(); drawAnimalNose(); drawAnimalFacialFeatures(); } void drawAnimalEyes() { if (eyesButton==0) { fill (255); ellipseMode(CORNERS); ellipse(65, 125, 95, 155); ellipse(105, 125, 135, 155); fill (0); ellipseMode(CORNERS); ellipse (70, 130, 90, 150); ellipseMode (CORNERS); ellipse(110, 130, 130, 150); fill (255); } else if (eyesButton==1) { fill(0); ellipseMode (CORNERS); ellipse(65, 125, 95, 155); ellipse(105, 125, 135, 155); fill(255); ellipse (70, 140, 80, 130); ellipse (110, 130, 120, 140); } else if (eyesButton==2) { fill(255); ellipseMode(CORNERS); ellipse(65, 125, 95, 155); ellipse(105, 125, 135, 155); fill(0); ellipse (90, 150, 80, 140); ellipse (120, 150, 130, 140); fill(255); } } void drawAnimalOutfit() { if (outfitButton==0) { //sleeves quad (40, 190, 75, 190, 65, 210, 35, 220); quad (125, 190, 160, 190, 160, 220, 135, 210); line (125, 195, 160, 195); line (120, 200, 160, 200); line (115, 205, 160, 205); line (40, 200, 90, 200); line (40, 195, 90, 195); line (40, 205, 90, 205); //shirt quad (75, 190, 130, 190, 135, 260, 65, 260); triangle (75, 185, 40, 260, 70, 260);//left triangle triangle (130, 190, 130, 260, 160, 260); line (60, 220, 60, 260); line (140, 210, 140, 260); //designs fill(#ff0000); quad(80, 190, 80, 220, 120, 190, 120, 220); fill(0); ellipse (90, 220, 95, 230); ellipse (90, 240, 95, 250); strokeWeight(2); line(100, 190, 100, 260); line (65, 260, 135, 260); strokeWeight(1); } else if (outfitButton==1) { stroke(0); strokeWeight(5); line(70, 200, 70, 260); line (90, 190, 90, 260); line (110, 190, 110, 260); line (67, 263, 133, 263); line (125, 190, 125, 260); strokeWeight(1); } else if (outfitButton==2) { //sleeves fill (0); quad (40, 190, 75, 190, 65, 210, 35, 220); quad (125, 190, 160, 190, 160, 220, 135, 210); line (125, 195, 160, 195); line (120, 200, 160, 200); line (115, 205, 160, 205); line (40, 200, 90, 200); line (40, 195, 90, 195); line (40, 205, 90, 205); //shirt fill (0); quad (75, 190, 130, 190, 135, 260, 65, 260); triangle (75, 185, 40, 260, 70, 260);//left triangle triangle (130, 190, 130, 260, 160, 260); line (60, 220, 60, 260); line (140, 210, 140, 260); //designs fill(#ff0000); quad(80, 190, 80, 220, 120, 190, 120, 220); fill(0); ellipse (90, 220, 95, 230); ellipse (90, 240, 95, 250); strokeWeight(2); line(100, 190, 100, 260); line (65, 260, 135, 260); strokeWeight(1); } } void drawAnimalFacialFeatures () { noStroke(); fill (#98E6FF); if (facialFeaturesButton==0) { ellipse (75, 160, 80, 170); ellipse (120, 160, 125, 170); } else if (facialFeaturesButton==1) { fill (#FFC3DC); ellipse (70, 160, 85, 170); ellipse (120, 160, 135, 170); } else if (facialFeaturesButton==2) { fill (0); ellipse (70, 160, 75, 165); } } void drawAnimalNose () { if (noseButton==0) { strokeWeight (2); fill (#68570A); triangle(100, 150, 95, 160, 105, 160); } else if (noseButton==1) { strokeWeight (2); fill (#68570A); triangle (90, 160, 110, 170, 100, 150); } else if (noseButton==2) { strokeWeight (2); fill (#68570A); ellipse (120, 150, 80, 160); } else if (noseButton == 3) { strokeWeight (2); fill (#68570A); ellipse (90, 140, 110, 160); } } void drawAnimalMouth () { if (mouthButton==0) { stroke(0); strokeWeight(2); line (90, 175, 115, 175); strokeWeight (1); } else if (mouthButton==1) { strokeWeight (2); line (90, 170, 90, 180); strokeWeight (1); } else if (mouthButton==2) { strokeWeight(2); line (90, 170, 90, 180); line (100, 170, 100, 180); line (110, 170, 110, 180); line (115, 170, 115, 180); strokeWeight (1); } else if (mouthButton==3) { strokeWeight (2); fill (255); ellipse (90, 170, 115, 180); strokeWeight (0); } else if (mouthButton==4) { } } void drawAnimalEars () { if (earsButton==0) { fill(#ff90f8); quad(160, 60, 150, 80, 120, 60, 110, 80); } else if (earsButton==1) { fill(#f9f000); ellipse(140, 70, 150, 60); ellipse (140, 80, 150, 70); } else if (earsButton==2) { strokeWeight(6); line (175, 190, 140, 290); strokeWeight (1); } } void mousePressed () { if (mouseX>220 && mouseX<280 && mouseY>120 && mouseY<160) { if (eyesButton==0) { } eyesButton++; if (eyesButton==3) { eyesButton=0; } } if (mouseX>320 && mouseX<380 &&mouseY<160 && mouseY>120) { if (earsButton==0) { } earsButton++; if (earsButton==3) { earsButton=0; } } if (mouseX>320 && mouseX<380 && mouseY<280 && mouseY>240) { if (outfitButton==0) { } outfitButton++; if (outfitButton==3) { outfitButton=0; } } if (mouseX>220 && mouseX<280 && mouseY<280 && mouseY>240) { if (mouthButton==0) { } mouthButton++; if (mouthButton==5) { mouthButton=0; } } if (mouseX>220 && mouseX<280 && mouseY<220 && mouseY>180) { if (noseButton==0) { } noseButton++; if (noseButton==4) { noseButton=0; } } if (mouseX>220 && mouseX<280 && mouseY<340 && mouseY>280) { if (facialFeaturesButton==0) { } facialFeaturesButton++; if (facialFeaturesButton==3) facialFeaturesButton=0; } }