/* Interactive Toy Oct. 1st, 2018 "Complete the Cupcake" by Liana Valdez ABOUT: You've been asked to finish making some cupcakes. Whether you succeed or fail- and how badly- is up to you. HOW TO PLAY: Add ingredients to the bowl by clicking on them. The ingredients that can be added are milk, an egg, dog food, and the plant. Clicking the bake button will show the result of the mixture. There is one way to succeed and there are six ways to fail. In all cases, text will appear commenting on the user's results. TO SUCCEED, add milk and an egg to the bowl and click the bake button. TO FAIL, do any of the following and click the bake button: 1. Add the dog food and the plant (does not matter if milk and/or egg is added) 2. Add the dog food, but not the plant (does not matter if milk and/or egg is added) 3. Add the plant, but not the dog food (does not matter if milk and/or egg is added) 4. Add milk, but do not add anything else 5. Add the egg, but do not add anything else 6. Add no ingredients ADDITIONAL CREDITS: Code for mousePressed within constraints (used for clicking on ingredients) adapted from user JohnG's code in this Processing.org forum: https://processing.org/discourse/beta/num_1238661349.html */ //DECLARE VARIABLES //Wallpaper stripes X-coordinates int darkX = 0; int lightX = 30; //Ingredients boolean dogFood = false; boolean egg = false; boolean milk = false; boolean plant = false; //Bake button boolean button = false; //Result screens boolean success = false; boolean failure = false; //Sprinkle colours + Fail bake colour int colour1 = int(random (0, 255)); int colour2 = int(random (0, 255)); int colour3 = int(random (0, 255)); int colour4 = int(random (0, 255)); int colour5 = int(random (0, 255)); int colour6 = int(random (0, 255)); int colour7 = int(random (0, 255)); int colour8 = int(random (0, 255)); int colour9 = int(random (0, 255)); int colour10 = int(random (0, 255)); int colour11 = int(random (0, 255)); int colour12 = int(random (0, 255)); int colour13 = int(random (0, 255)); int colour14 = int(random (0, 255)); int colour15 = int(random (0, 255)); //SETUP //Set frame rate, size of window, & circle mode void setup() { frameRate(60); size(400, 400); ellipseMode(RADIUS); //PRINT WELCOME COMMENT welcomeComment(); } //DRAW void draw() { //CHECK IF RESULT HAS BEEN DETERMINED if (success == true) { drawSuccess(); } else if (failure == true) { drawFailure(); //OTHERWISE, Draw kitchen } else { //Draw background (wallpaper, window, counter, floor, table) drawWallpaper(); drawWindow(); drawCounter(); drawFloor(); drawTable(); //Draw bowl and ingredients drawBowl(); drawDogFood(); drawEggs(); drawPlant(); drawMilk(); //Draw bake button drawBakeButton(); //CHECK IF INGREDIENTS ARE CLICKED //Check if milk is clicked clickMilk(); if (milk == true) { drawMilkInBowl(); } //Check if egg is clicked clickEgg(); if (egg == true) { drawEggInBowl(); } //Check if dog food is clicked clickDogFood(); if (dogFood == true) { drawDogFoodInBowl(); } //Check if plant is clicked clickPlant(); if (plant == true) { drawPlantInBowl(); } //Check if bake button is clicked clickButton(); if (button == true) { //PRINT RESULT COMMENT resultComment(); //CHECK CONDITIONS FOR RESULTS //If milk and egg are the only ingredients in bowl, trigger SUCCESS if (milk == true && egg == true && dogFood == false && plant == false) { success = true; //OTHERWISE, trigger FAILURE } else { failure = true; } } } } //FUNCTIONS //WELCOME COMMENT void welcomeComment() { println("Hey, thanks for taking over to finish making these cupcakes."); println("Don't worry, it's really unlikely you'll mess 'em up."); println("I'll be back when they're done. See you later!"); } //DRAWS THE KITCHEN //Draws the wallpaper void drawWallpaper() { while (darkX <400 && lightX <400) { noStroke(); fill(239, 212, 67); rect(darkX, 0, 30, 400); darkX = darkX + 60; fill(247, 235, 170); rect(lightX, 0, 30, 400); lightX = lightX + 60; } } //Draws the window void drawWindow() { fill(244, 242, 237); rect(140, 10, 120, 70); fill(151, 220, 229); rect(150, 20, 40, 20); rect(210, 20, 40, 20); rect(150, 50, 40, 20); rect(210, 50, 40, 20); } //Draws the back counter void drawCounter() { fill(193, 179, 153); rect(0, 90, 400, 60); fill(122, 112, 93); rect(0, 150, 400, 50); fill(137, 127, 96); rect(0, 150, 60, 50); rect(120, 150, 60, 50); rect(240, 150, 60, 50); rect(360, 150, 60, 50); } //Draws the floor void drawFloor() { fill(244, 242, 237); rect(0, 200, 400, 70); } //Draws the table void drawTable() { fill(178, 156, 94); rect(0, 270, 400, 160); } //Draws the bowl void drawBowl() { fill(62, 139, 239); ellipse(200, 300, 110, 85); fill(114, 164, 229); ellipse(200, 275, 110, 60); fill(232, 223, 192); ellipse(200, 285, 110, 50); } //DRAWS INGREDIENTS //Draws the dog food void drawDogFood() { fill(219, 72, 52); rect(20, 220, 40, 20); //First row fill(119, 93, 46); ellipse(25, 220, 5, 5); ellipse(35, 220, 5, 5); ellipse(45, 220, 5, 5); ellipse(55, 220, 5, 5); //Second row ellipse(30, 210, 5, 5); ellipse(40, 210, 5, 5); ellipse(50, 210, 5, 5); //Third row ellipse(35, 200, 5, 5); ellipse(45, 200, 5, 5); //Top ellipse(40, 190, 5, 5); } //Draws the eggs void drawEggs() { fill(163, 159, 151); rect(40, 100, 60, 40); fill(122, 121, 112); rect(40, 130, 60, 10); fill(244, 242, 237); ellipse(50, 120, 5, 7); ellipse(70, 120, 5, 7); ellipse(90, 120, 5, 7); ellipse(50, 100, 5, 7); ellipse(70, 100, 5, 7); ellipse(90, 100, 5, 7); } //Draws the plant void drawPlant() { //Stem stroke(59, 145, 20); strokeWeight(3); line(200, 40, 200, 100); line(180, 60, 200, 80); line(220, 60, 200, 80); //Leaves noStroke(); fill(125, 196, 66); ellipse(200, 40, 7, 7); ellipse(180, 60, 7, 7); ellipse(220, 60, 7, 7); //Pot noStroke(); fill(221, 160, 68); rect(180, 100, 40, 30); fill(193, 121, 27); rect(180, 93, 40, 10); } //Draws the milk void drawMilk() { fill(255); rect(310, 80, 40, 60); fill(34, 103, 249); rect(310, 70, 40, 10); rect(310, 100, 40, 20); } //Draws the bake button void drawBakeButton() { stroke(76, 55, 150); fill(122, 102, 196); rect(7, 350, 75, 30); //B ellipse(20, 360, 6, 5); ellipse(20, 370, 6, 5); strokeWeight(5); line(15, 356, 15, 374); //A strokeWeight(3); line(37, 357, 30, 374); line(37, 357, 40, 374); line(35, 370, 37, 370); //K line(50, 357, 50, 374); line(50, 367, 60, 357); line(50, 367, 60, 374); //E line(67, 357, 67, 374); line(67, 357, 75, 357); line(67, 365, 75, 365); line(67, 374, 75, 374); noStroke(); } //CHECK IF MOUSE CLICKS ON INGREDIENTS OR BUTTON //Click on milk void clickMilk() { if (mousePressed && mouseX >310 && mouseX<350 && mouseY>70 && mouseY<140 && milk == false) { milk = true; } } //Click on eggs void clickEgg() { if (mousePressed && mouseX >40 && mouseX<100 && mouseY>90 && mouseY<140 && egg == false) { egg = true; } } //Click on dog food void clickDogFood() { if (mousePressed && mouseX >20 && mouseX<60 && mouseY>180 && mouseY<240 && dogFood == false) { dogFood = true; } } //Click on plant void clickPlant() { if (mousePressed && mouseX >173 && mouseX<227 && mouseY>33 && mouseY<130 && plant == false) { plant = true; } } //Click on button void clickButton() { if (mousePressed && mouseX >7 && mouseX<82 && mouseY>350 && mouseY<380 && button == false) { button = true; } } //DRAW INGREDIENTS IN BOWL //Draws milk in bowl void drawMilkInBowl() { fill(237, 236, 234); ellipse(200, 295, 80, 40); } //Draws egg in bowl void drawEggInBowl() { fill(255); ellipse(200, 295, 40, 20); fill(255, 227, 22); ellipse(200, 295, 17, 10); } //Draws dog food in bowl void drawDogFoodInBowl() { fill(119, 93, 46); ellipse(100, 270, 10, 10); ellipse(120, 250, 10, 10); ellipse(140, 260, 10, 10); ellipse(150, 290, 10, 10); ellipse(190, 270, 10, 10); } //Draws plant in bowl void drawPlantInBowl() { stroke(59, 145, 20); strokeWeight(7); line(250, 300, 300, 220); noStroke(); fill(125, 196, 66); ellipse(300, 220, 30, 30); } //DRAW RESULT SCREENS //Success screen void drawSuccess() { //Draw background fill(134, 233, 244); rect(0, 0, 400, 400); //Draw cupcake icing fill(247, 155, 242); ellipse(200, 210, 90, 90); //Draw paper fill(244, 234, 93); rect(110, 220, 180, 100); fill(216, 214, 93); rect(110, 220, 30, 100); rect(170, 220, 30, 100); rect(230, 220, 30, 100); //Draw Cherry stroke(8, 178, 42); strokeWeight(4); noFill(); arc(270, 120, 70, 65, PI, PI+QUARTER_PI); noStroke(); fill(198, 1, 67); ellipse(200, 120, 25, 25); fill(255); ellipse(210, 110, 5, 5); //Draw Sprinkles, Randomize colours strokeWeight(5); stroke(colour1, colour2, colour3); line(140, 210, 150, 190); stroke(colour4, colour5, colour6); line(185, 200, 210, 195); stroke(colour7, colour8, colour9); line(240, 210, 260, 190); stroke(colour10, colour11, colour12); line(160, 165, 185, 175); stroke(colour13, colour14, colour15); line(230, 160, 240, 180); noStroke(); } //Failure screen void drawFailure() { //Draw background fill(118, 130, 113); rect(0, 0, 400, 400); //Draw flop, Randomize colours fill(colour1, colour2, colour3); ellipse(200, 210, 90, 55); ellipse(135, 240, 75, 65); ellipse(300, 350, 30, 15); ellipse(280, 365, 20, 10); //Draw paper fill(244, 234, 93); rect(110, 220, 180, 100); fill(216, 214, 93); rect(110, 220, 30, 100); rect(170, 220, 30, 100); rect(230, 220, 30, 100); } //COMMENTS BASED ON THE RESULTS void resultComment() { //SUCCESS //Milk and egg if (milk == true && egg == true && dogFood == false && plant == false) { println("Fantastic! Thanks for helping out. I knew I could count on you."); //FAILURES //1. Dog food and plant } else if (dogFood == true && plant == true) { println("I came as soon as I heard the explosion. What did you do to the cupcakes?! "); //2. Dog food, no plant } else if (dogFood ==true && plant == false) { println("This is awful... Maybe I can feed it to the dog when you're not looking."); //3. Plant, no dog food } else if (plant == true && dogFood == false) { println("Did...did I just bite into a leaf?"); //4. Milk and nothing else //Note: "Oeuf", pronounced similarly to "Oof", means "Egg" in French. } else if (dogFood == false && plant == false && milk == true && egg == false) { println("Oeuf! Well, that's an egg on your face. You forgot to add something..."); //5. Egg and nothing else } else if (dogFood == false && plant == false && milk == false && egg == true) { println("If you're lactose intolerant, I understand. If you aren't, you forgot to add something..."); //6. No ingredients added } else { println("Did you just throw this into the oven without adding the ingredients? You had one job!"); } }