//Title: Kirby Interactive Toy //Creator: Richard Baldock //Description: Interactive toy using the character Kirby. Kirby will move left,right,up and down along the screen. //Instructions: Use the <>^v Arrow keys to move Kirby around the screen. //Kirby's Position float kirbyX = 200; float kirbyY = 323; float r = random(0,255); float g = random(0,255); float b = random(0,255); void setup(){ size(400,400); } void draw(){ background(0,150,255); smooth(); /////////////////////// //Call Draw Functions// ////////////////////// drawCurtain(); drawBorders(); drawDoors(); drawStars(); drawKirby(); if (keyPressed) { if (keyCode==LEFT) { kirbyX -= 5; } if (keyCode==RIGHT) { kirbyX += 5; } if (keyCode==UP){ kirbyY-=5; } if (keyCode==DOWN){ kirbyY+=5; } } } void drawKirby(){ ///////////////////// //Draw ***Kirby***/// //////////////////// //Kirby Outline stroke(247,84,84); fill(252,155,171); ellipse(kirbyX,kirbyY,35,35); //Kirby's Cheeks noStroke(); fill(242,92,115); ellipse(kirbyX+10,kirbyY+4,10,5); ellipse(kirbyX-10,kirbyY+4,10,5); //Kirby's Eyes noStroke(); fill(0); ellipse(kirbyX-8,kirbyY-5,5,12); ellipse(kirbyX+8,kirbyY-5,5,12); fill(255); ellipse(kirbyX-8,kirbyY-8,4,6); ellipse(kirbyX+8,kirbyY-8,4,6); //Kirby's mouth fill(250,100,115); ellipse(kirbyX,kirbyY+7,4,3); } /////////////////////// // DRAW THE CURTAINS // ////////////////////// void drawCurtain(){ stroke(0); fill(r,g,b); rect(60,0,10,10); rect(70,0,10,8); rect(80,0,10,10); rect(90,0,10,10); rect(100,0,10,8); rect(110,0,10,10); rect(120,0,10,10); rect(130,0,10,8); rect(140,0,10,10); rect(150,0,10,10); rect(160,0,10,8); rect(170,0,10,10); rect(180,0,10,10); rect(190,0,10,8); rect(200,0,10,10); rect(210,0,10,10); rect(220,0,10,8); rect(230,0,10,10); rect(240,0,10,10); rect(250,0,10,8); rect(260,0,10,10); rect(270,0,10,8); rect(280,0,10,10); rect(290,0,10,10); rect(300,0,10,8); rect(310,0,10,10); rect(320,0,10,10); rect(330,0,10,8); rect(340,0,10,10); } ///////////////////// //Draw Borders/////// //////////////////// void drawBorders(){ //Draw Top Left Border stroke(0); fill(189,82,20); rect(0,0,30,20); rect(30,0,30,20); rect(0,20,30,20); rect(30,20,30,20); rect(0,40,60,20); rect(0,60,30,20); rect(30,60,30,20); rect(0,100,30,20); rect(30,100,30,20); rect(0,120,40,20); rect(40,120,20,20); rect(0,80,60,20); rect(0,140,20,10); rect(0,150,20,10); // Draw Top Right Border rect(340,0,60,20); rect(340,20,60,20); rect(340,40,60,20); rect(340,60,40,20); rect(380,60,20,20); rect(340,80,60,20); rect(340,100,60,20); rect(340,120,30,20); rect(370,120,30,20); rect(380,140,20,10); rect(380,150,20,10); //Draw Bottom Left Border rect(0,280,80,20); rect(0,300,60,20); rect(60,300,20,20); rect(0,320,20,20); rect(20,320,40,20); rect(60,320,20,20); rect(0,340,80,20); rect(0,360,80,20); rect(0,380,40,20); rect(40,380,40,20); //Draw Bottom Middle Border rect(80,340,80,20); rect(80,360,60,20); rect(80,380,80,20); rect(160,340,120,20); rect(140,360,80,20); rect(160,380,40,20); rect(280,340,40,20); rect(220,360,20,20); rect(200,380,100,20); rect(240,360,80,20); rect(300,380,20,20); //Draw Bottom Right Border rect(320,280,60,20); rect(380,280,20,20); rect(320,300,60,20); rect(360,300,40,20); rect(320,320,50,20); rect(370,320,30,20); rect(320,340,80,20); rect(320,360,80,20); rect(320,380,80,10); rect(320,390,80,10); //Middle Platform rect(150,260,100,20); //Draw Dots On Left & Right Borders noStroke(); fill(0); ellipse(25,8,3,3); ellipse(25,16,3,3); ellipse(25,28,3,3); ellipse(25,36,3,3); ellipse(25,68,3,3); ellipse(25,76,3,3); ellipse(36,70,3,3); ellipse(56,70,3,3); ellipse(25,108,3,3); ellipse(25,116,3,3); ellipse(56,110,3,3); ellipse(36,126,3,3); ellipse(36,136,3,3); ellipse(56,130,3,3); ellipse(16,145,3,3); ellipse(345,10,3,3); ellipse(395,5,3,3); ellipse(395,15,3,3); ellipse(345,30,3,3); ellipse(376,65,3,3); ellipse(376,75,3,3); ellipse(390,85,3,3); ellipse(390,95,3,3); ellipse(345,110,3,3); ellipse(365,125,3,3); ellipse(365,135,3,3); ellipse(385,145,3,3); ellipse(385,155,3,3); //Draw Dots on Bottom Borders (Left to Right) ellipse(5,290,3,3); ellipse(75,285,3,3); ellipse(75,295,3,3); ellipse(25,325,3,3); ellipse(25,335,3,3); ellipse(55,325,3,3); ellipse(55,335,3,3); ellipse(5,350,3,3); ellipse(75,350,3,3); ellipse(75,365,3,3); ellipse(75,375,3,3); ellipse(35,385,3,3); ellipse(35,395,3,3); ellipse(45,390,3,3); ellipse(85,350,3,3); ellipse(155,345,3,3); ellipse(155,355,3,3); ellipse(135,365,3,3); ellipse(135,375,3,3); ellipse(165,350,3,3); ellipse(275,345,3,3); ellipse(275,355,3,3); ellipse(215,365,3,3); ellipse(215,375,3,3); ellipse(195,385,3,3); ellipse(195,395,3,3); ellipse(235,365,3,3); ellipse(235,375,3,3); ellipse(285,350,3,3); ellipse(315,350,3,3); ellipse(305,390,3,3); ellipse(325,290,3,3); ellipse(375,285,3,3); ellipse(375,295,3,3); ellipse(385,290,3,3); ellipse(325,305,3,3); ellipse(325,315,3,3); ellipse(375,325,3,3); ellipse(375,335,3,3); ellipse(325,350,3,3); ellipse(395,350,3,3); ellipse(325,370,3,3); ellipse(395,365,3,3); ellipse(395,375,3,3); ellipse(325,385,3,3); ellipse(325,395,3,3); } ////////////////// //Draw Doors////// ////////////////// void drawDoors(){ //Draw Wings on Rainbow noStroke(); fill(255); ellipse(210,190,30,5); ellipse(210,195,25,5); ellipse(190,190,30,5); ellipse(190,195,30,5); //Draw Rainbow fill(255,0,0); ellipse(200,200,40,30); fill(249,227,33); ellipse(200,200,30,25); fill(0,255,0); ellipse(200,200,20,20); fill(0,0,244); ellipse(200,200,10,15); //Draw Middle Door Border stroke(0); fill(151,17,17); rect(180,200,40,60); fill(249,227,33); rect(170,200,10,60); rect(220,200,10,60); //Draw Mirror Doors Yellow Border //Left Door Border noStroke(); fill(249,227,33); ellipse(40,240,40,40); rect(20,240,40,40); //Middle Door Border ellipse(200,230,40,60); //Right Door Border ellipse(360,240,40,40); rect(340,240,40,40); //Draw Mirror Doors Blue Mirror Area //Left Door Mirror noStroke(); fill(7,103,246); ellipse(40,241,34,37); rect(24,240,33,37); //Middle Door Mirror ellipse(200,230,35,55); //Right Door Mirror ellipse(360,241,34,37); rect(344,240,33,37); //////////////////////// //Draw Shine on mirror// /////////////////////// //Left Door stroke(255); fill(255,255,255); line(23,258,38,276); line(23,243,56,278); line(28,229,56,257); line(34,220,56,240); //Right Door line(343,258,358,276); line(343,243,376,276); line(348,229,376,257); line(354,220,376,240); //Middle Door line(200,203,190,210); line(200,203,210,210); line(190,210,200,220); line(210,210,200,220); line(200,220,190,230); line(200,220,210,230); line(210,230,190,250); line(190,230,210,250); line(190,250,200,257); line(210,250,200,257); } //////////////////////// //Draw Stars Over Doors// /////////////////////// void drawStars(){ //Draw Stars //Left Star //Draw Glow // THIS GLOW EFFECT IS NOT MY OWN, TAKEN FROM NICHOLAS PHAN'S DRAGON INTERACTIVE DRAWING //Glow 1 fill(249,227,50,75); ellipse(40,210, 40 + sin(frameCount * .08) * 5, 40 + sin(frameCount * .08) * 5); //Glow 2 fill(249,227,50,60); ellipse(40,210, 60 + cos(frameCount * .08) * 5, 60 + cos(frameCount * .08) * 5); noStroke(); fill(249,227,33); triangle(26,207,54,207,40,212); triangle(40,200,30,220,40,212); triangle(50,220,40,200,40,212); //Right Star triangle(346,207,374,207,360,212); triangle(360,200,350,220,360,212); triangle(370,220,360,200,360,212); //Glow 1 stroke(255); fill(249,227,50,75); ellipse(360,210, 40 + sin(frameCount * .08) * 5, 40 + sin(frameCount * .08) * 5); //Glow 2 fill(249,227,50,60); ellipse(360,210, 60 + cos(frameCount * .08) * 5, 60 + cos(frameCount * .08) * 5); }