import controlP5.*;
import processing.sound.*;
/*
Authors: Jason Cameron & Simon Michetti
Teachers name: Ms. Basaraba
Date: Dec 11th - Jan 15th
Description: This program creates an immersive game in the background for users to learn about the potential dangers of babysitting and provides an outline of what a bad babysitting habits look like. This game takes on a look don't tell form of communication where the player isn't explicitly told about what is going on but can clearly understand the ideas being presented.
*/
ControlP5 bt5; // variable for the button controller
SoundFile musicFile; // varible to load the sound file into and to be able to change volume globally
PFont text; // varible so we can load in the font.
int musicVolume = 50; // if music should be played: default 50
int sceneNum = 0; // the current scene that the story is on (0-10) (0 being splash 10 being tornado)
int sceneProgress = 0; // the current part of the scene (e.g. 0 is normal but it adds queues for parents walking in)
boolean isPaused = false; // if the game is currently paused
String username = ""; // the user's username
boolean parentsMad = false; // whether to draw the parents as mad or not
String sitterEmotion = "unamused"; // the emotion to draw the sitter in
String babyEmotion = "sick"; // the emotion to draw the baby in
float slowdown = 0; // a way to control the animation speed for certain parts of a frame
int splashScreenFire=220; //variable to animate the splashscreen
int momArmX = 400; //variables that help animate the mom and dad
int momArmY = 232;
int momBodyX = 500;
int dadBodyX = 675;
int sitterX = 150; //variables that animate the babysitter
int sitterArmY = 360;
int sitterArmY2 = 360;
int sitterArmX = 210;
int babyX = 300; //variables that animate the baby
int babyY = 350;
int fireY = 281; //variable to animate the fire in scene 3
int vomitX = 340; //variables to animate the vomit of the baby in scene 8
int vomitY = 250;
int tornadoX = -300; //variable to move the tornado around in the last scene
int tornadoProgress = 1; //variable to control tornado movement in the final scene
void setup() {
text = loadFont("Consolas-48.vlw");
size(800, 500);
musicFile = new SoundFile(this, "ruins.mp3"); // load the sound file from the data folder
musicFile.loop(); // play and loop the sound file
musicFile.amp(0.5); // set it to it's default of 50% volume
bt5 = new ControlP5(this);
bt5.addButton("Next")
.setBroadcast(false)
.setPosition(width - 60, height - 50)
.setValue(255)
.setSize(40, 30)
.setCaptionLabel(">")
.setColorForeground(color(0, 0, 0, 255)) // Set regular color with alpha channel to black
.setColorBackground(color(0, 0, 0, 255)) // Set hover color as transparent
.setColorActive(color(0, 0, 0, 255)) // Set click color (if needed)
.setBroadcast(true);
Story();
}
void SkipScenes(int theChoice) {
if (mouseX > 140 && mouseY > height - 170) {
return; // fixes a bug where it constantly tries to call this even though there is no username selected
}
if (username == "") {
JOptionPane.showMessageDialog(null, "You must set a username in order to play");
return;
}
if (bt5.getController("SetUsername") != null) {
bt5.getController("SetUsername").remove();
bt5.getController("Exit").remove();
bt5.getController("Instructions").remove();
bt5.getController("musicVolume").remove();
}
bt5.remove("SkipScenes"); // radio is not 1 controller
sceneNum = theChoice;
Story();
}
void Story() {
print("Going to: " + sceneNum);
if (sceneNum == 0) {
frameRate(20);
splashScreenFire=220;
momBodyX = 500;
momArmY = 232;
momArmX = 400;
dadBodyX = 675;
splashScreen();
} else if (sceneNum == 1) {
frameRate(20);
splashScreenFire=220;
if (bt5.getController("SetUsername") == null) { // if it does not already exist
int middle = (width / 2) - 40; // compensate for the fact that controlp5 draws from top corner
bt5.addButton("SetUsername")
.setColorBackground(color(0, 0, 0))
.setPosition(middle - 190, height - 125)
.setColorForeground(color(0, 0, 0, 255)) // Set regular color with alpha channel to black
.setColorBackground(color(0, 0, 0, 255)) // Set hover color as transparent
.setColorActive(color(0, 0, 0, 255)) // Set click color (if needed)
.setCaptionLabel("SET USERNAME") // give it a space
.setSize(80, 50);
bt5.addButton("Exit")
.setColorBackground(color(0, 0, 0))
.setPosition(middle + 190, height - 125)
.setColorForeground(color(0, 0, 0, 255)) // Set regular color with alpha channel to black
.setColorBackground(color(0, 0, 0, 255)) // Set hover color as transparent
.setColorActive(color(0, 0, 0, 255)) // Set click color (if needed)
.setSize(80, 50);
bt5.addSlider("musicVolume")
.setPosition(width / 2 - 75, height - 50)
.setSize(150, 20)
.setRange(0, 100)
.setValue(musicVolume) // default volume
.setColorBackground(color(0, 0, 0))
.setColorCaptionLabel(color(20, 20, 20))
.setColorActive(color(140, 0, 0)) // set the hover color to a lighter red
.setColorForeground(color(120, 0, 0)); // Set normal color to the red
}
//String promoteTo; illigal code :pensive:
//do {
// promoteTo = (String) JOptionPane.showInputDialog(null,
// "Select a scene to skip to:", "Scene Selector",
// JOptionPane.QUESTION_MESSAGE, null,
// new String[] {"IntroScene", "Main Menu");
//} while (promoteTo == null);
bt5.addRadioButton("SkipScenes")
.setPosition(20, height - (17 * 8)) // 8 options
.setItemWidth(20) // Adjust the width as needed
.setItemHeight(15)
.addItem("Next Scene", 2) // 1st option is scene name 2nd is scene num
.addItem("Baby Fire Slide", 3)
.addItem("Baby Crib Scene", 4)
.addItem("Baby Crawl Scene", 5)
.addItem("Baby Fall Scene", 6)
.addItem("Baby Pickup Scene", 7)
.addItem("Baby Pizza Scene", 8)
.addItem("Tornado Scene", 9)
.setColorLabel(color(0)) // set text to black
.setColorBackground(color(0)) // set bg to background
.setColorActive(color(102, 0, 0)) // Set selected color to the red
.setColorForeground(color(140, 0, 0)); // set the hover color to ligher red
bt5.getController("Next").show();
mainMenu();
} else if (sceneNum == 2) {
frameRate(60);
momBodyX = 500;
dadBodyX = 675;
sitterX = 150;
sitterArmX = 210;
sitterArmY = 360;
momArmX = 400;
momArmY = 232;
introScene();
} else if (sceneNum == 3) {
sitterX = 150;
sitterArmX = 210;
sitterArmY = 360;
babyX = 300;
babyY = 350;
fireY = 281;
babyFireSlide();
} else if (sceneNum == 4) {
sitterX = 150;
sitterArmX = 210;
sitterArmY = 360;
babyX = 300;
babyCribScene();
} else if (sceneNum == 5) {
babyX = 300;
babyCrawlScene();
} else if (sceneNum == 6) {
babyX = 300;
babyY = 350;
babyFallScene();
} else if (sceneNum == 7) {
babyX = 300;
babyY = 350;
sitterX = 150;
sitterArmX = 210;
babyPickupScene();
} else if (sceneNum == 8) {
sitterX = 150;
sitterArmX = 210;
sitterArmY = 360;
sitterArmY2 = 360;
babyX = 300;
babyY = 350;
vomitX = 340;
vomitY = 250;
momBodyX = 500;
momArmX = 400;
momArmY = 232;
dadBodyX = 675;
babyPizzaScene();
} else if (sceneNum == 9) {
sitterX = 150;
sitterArmX = 210;
sitterArmY = 360;
sitterArmY2 = 360;
tornadoX = -300;
tornadoProgress = 1;
tornadoScene();
}
}
void Next() {
println("next!!!!!!!!!!");
if (sceneNum == 1 && sceneProgress == 1) { // don't skin while in instructions
return;
}
sceneProgress = 0;
boolean goNext = true;
if (sceneNum == 0 && bt5.getController("Prev") == null) {
println("adding prev button");
bt5.addButton("Prev")
.setBroadcast(false)
.setPosition(width - 100, height - 50)
.setValue(255)
.setSize(40, 30)
.setCaptionLabel("<")
.setColorForeground(color(0, 0, 0, 255)) // Set regular color with alpha channel to black
.setColorBackground(color(0, 0, 0, 255)) // Set hover color as transparent
.setColorActive(color(0, 0, 0, 255)) // Set click color (if needed)
.setBroadcast(true);
}
if (sceneNum == 1) { // main menu
if (username == "") { // block continue if username has not been set
JOptionPane.showMessageDialog(null, "You must set a username in order to play");
goNext = false;
} else { // fixes bug if username isnt set
bt5.getController("SetUsername").remove();
bt5.getController("Exit").remove();
bt5.getController("Instructions").remove();
bt5.getController("musicVolume").remove();
bt5.remove("SkipScenes"); // radio is not 1 controller
}
}
if (goNext == true) {
sceneNum = (min(sceneNum + 1, 9)); // prevent going over last scene
Story();
}
}
void Prev() {
if (sceneNum == 1 && sceneProgress == 1) { // don't skin while in instructions
return;
}
sceneProgress = 0;
sceneNum = max(0, sceneNum - 1); // ensure it cannot go below zero
if (!bt5.getController("Next").isVisible()) {
bt5.getController("Next").show(); // if it's not visible show it
}
if (sceneNum == 0) {
if (bt5.getController("SetUsername") != null) { // if they didnt spam back and went "past zero"
bt5.getController("SetUsername").remove();
bt5.getController("Exit").remove();
bt5.getController("Prev").remove();
bt5.getController("Instructions").remove();
bt5.getController("musicVolume").remove();
bt5.remove("SkipScenes"); // radio is not 1 controller
}
}
Story();
}
void mainMenu() {
// other code is added in draw/Story
bt5.show();
int middle = (width / 2) - 40; // compensate for the fact that controlp5 draws from top corner
splashScreen();
if (bt5.getController("Instructions") == null) { // only add it if it doest already exist
bt5.addTextlabel("Instructions")
.setText("INSTRUCTIONS")
.setPosition(middle + 4, height - (125 - (50 / 2) + 5));
}
}
void SetUsername() {
while (true) {
String tempusername = getString("Please enter a username (3-15chars) or the word 'stop' to break out of the loop");
if (tempusername == null) {
continue;
} else if (tempusername.toLowerCase().equals("stop")) { // allow user to break out of loop, for some reason it doesnt work with ==
return;
} else if (tempusername.length() > 15) { // if the username is greater than 15 chars
JOptionPane.showMessageDialog(null, "the max length is 15 chars, you tried to set it to: " + str(tempusername.length()));
} else if (tempusername.length() < 3) { // if the username is less than 3 chars
JOptionPane.showMessageDialog(null, "the min length is 3 chars, you tried to set it to: " + str(tempusername.length()));
} else if (!tempusername.matches("\\p{Alpha}*")) { // if the username does not only contain letters.
JOptionPane.showMessageDialog(null, "Your username cannot contain non letters. Please try again.");
} else {
username = tempusername;
break;
}
}
JOptionPane.showMessageDialog(null, "Your username is: " + username);
}
void drawRain() {
if (sceneNum == 9 && sceneProgress >= 0) { // on first part of tornado scene
ellipseMode(CENTER);
strokeWeight(1);
stroke(72, 150, 180);
fill(72, 150, 180);
for (int i = 0; i < 50; i++) {
ellipse(random(0, width), random(0, height), 2, 10);
}
}
}
void draw() {
if (sceneNum == 1) {
musicFile.amp(((float) musicVolume) / 100); // set music
}
if (isPaused == true && slowdown != -1) {
/*
I need to do custom buttons for this as there is a bug where controlp5 only draws after
*/
rectMode(CORNERS);
fill(0, 0, 0, 10); // slowly fill black
rect(55, 55, width - 55, height - 55);
rectMode(CENTER);
int Ymiddle = (height / 2); // compensate for the fact that controlp5 draws from top corner
int Bwidth = 77; // width of the buttons
int Bheight = 40; // height of the buttons
float spacing = 2 * Bwidth; // + (Bwidth / 2);
fill(255); // set button color to white
rect(31 + (spacing * 1), Ymiddle, Bwidth, Bheight);
rect(31 + (spacing * 2), Ymiddle, Bwidth, Bheight);
rect(31 + (spacing * 3), Ymiddle, Bwidth, Bheight);
rect(31 + (spacing * 4), Ymiddle, Bwidth, Bheight);
rectMode(CORNER);
fill(0); // set color to black
textSize(16);
Ymiddle += 5; // so text is centered
// Labels for the buttons
text("Exit", 18 + (spacing * 1), Ymiddle);
textSize(14);
text("Set Volume", (spacing * 3) - 1, Ymiddle);
text("Main Menu", (spacing * 4) - 1, Ymiddle);
textSize(13);
text("Instructions", (spacing * 2) - 1, Ymiddle);
textSize(16);
fill(255);
text("Press ESC or click anywhere besides the buttons to continue", 65, 75);
textAlign(CENTER);
text("The Bad Babysitter: By Jason Cameron & Simon Michetti Studios", width / 2, height / 2 - 70);
textSize(20); // reset font to normal
textAlign(LEFT); // reset to norm
return;
}
if (slowdown != -1) {
slowdown++;
}
if (slowdown % 8 == 0) { // runs at 1/8th of the speed that draw does
if ((sceneNum == 9) && sceneProgress >= 0) {
drawRain();
}
}
if (sceneNum<= 1 && sceneProgress == 0) {
if (sceneProgress >=0) {
splashScreenFire+=5;
}
if (splashScreenFire>=260) {
splashScreenFire-=60;
}
splashScreen();
}
if (slowdown != -1) {
if (sceneNum == 2) { //animation that appears in this screen
bt5.getController("Next").hide();
stroke(0);
strokeWeight(1);
parentsMad = false;
if (sceneProgress == 1 || sceneNum == 2) {
line(450, 292, 440, 332); //left mom arm
line(440, 332, momArmX + 40, momArmY + 150);
momArmX = momArmX - 5; //animation to raise the moms arm in a greeting/acknoledgement of departure
momArmY = momArmY - 5;
momArmY = max(momArmY, 132);
momArmX = max(momArmX, 380);
}
if (sceneProgress >= 4 || sceneProgress >= 10) {
momArmX = momArmX + 15;
momArmX = min(momArmX, 100000);
momBodyX = momBodyX + 10; //showing the parents leave the scene
dadBodyX = dadBodyX + 10;
}
if (sceneProgress >= 6 || sceneProgress >= 10) {
sitterX = sitterX - 10; //showing the babysitter leave the scene
sitterArmX = sitterArmX - 10;
}
introScene();
}
if (sceneNum == 3) { //animation that appears in this scene
bt5.getController("Next").hide();
stroke(0);
strokeWeight(1);
babyEmotion = "normal";
if (sceneProgress >= 0 && sceneNum == 3) {
sitterX = sitterX - 10; //showing the babysitter slide into the scene as if he was coming from the last one.
sitterArmX = sitterArmX - 10;
sitterX = max(sitterX, -260);
sitterArmX = max(sitterArmX, -200);
}
if (sceneProgress >= 5) {
line(sitterX + 60, 300, sitterArmX, sitterArmY); // right babysitter arm moving to take his phone out of his pocket
sitterArmX = sitterArmX + 5;
sitterArmY = sitterArmY - 5;
sitterArmX = max(sitterArmX, -190);
sitterArmY = max(sitterArmY, 250);
}
if (sceneProgress >= 7) {
babyX = babyX - 5; //the baby sliding over to the stove which will then catch on fire
babyX = max(babyX, 25);
}
if (sceneProgress >= 8 && babyX == 25) {
fireY = fireY - 7; //the fire on the stove turning on and burning the baby
fireY = max(fireY, 250);
}
if (fireY == 250) {
fireY += 20;
}
if (sceneProgress >= 9 && fireY >= 250 && babyX == 25) {
babyEmotion = "crying"; //showing how the baby is now crying because of the fire
}
babyFireSlide();
}
if (sceneNum == 4) { //animation that happens in scene 4
bt5.getController("Next").hide();
stroke(0);
strokeWeight(1);
babyEmotion = "crying";
if (sceneProgress >= 0 && babyX != -620) {
sitterX = sitterX - 10;
sitterArmX = sitterArmX - 10;
sitterX = max(sitterX, -500);
sitterArmX = max(sitterArmX, -440);
babyX = babyX - 10;
babyX = max(babyX, -620);
}
if (sceneProgress >= 1 && sceneNum == 4 && babyX <= -620) {
sitterX = sitterX + 10;
sitterArmX = sitterArmX + 10;
}
babyCribScene();
}
if (sceneNum == 5) {
bt5.getController("Next").hide();
stroke(0);
strokeWeight(1);
babyEmotion = "normal";
if (sceneProgress == 0 || sceneNum == 5) {
babyX = babyX + 10;
babyX = min(babyX, 1100);
}
babyCrawlScene();
}
if (sceneNum == 6) {
bt5.getController("Next").hide();
stroke(0);
strokeWeight(1);
babyEmotion = "shocked";
if (sceneProgress >= 0) {
babyY = babyY + 10;
}
babyFallScene();
}
if (sceneNum == 7) {
bt5.getController("Next").hide();
stroke(0);
strokeWeight(1);
babyEmotion = "crying";
sitterEmotion = "unamused";
if (sceneProgress >= 0) {
babyX = babyX + 10;
babyY = babyY + 5;
sitterX = sitterX - 10;
sitterArmX = sitterArmX - 10;
sitterArmX = max(sitterArmX, -210);
sitterX = max(sitterX, -270);
babyY = min(babyY, 525);
babyX = min(babyX, 650);
}
if (sceneProgress >= 1 && babyX == 650) {
babyX -= 20;
}
babyPickupScene();
}
if (sceneNum == 8) {
bt5.getController("Next").hide();
stroke(0);
strokeWeight(1);
babyEmotion = "normal";
sitterEmotion = "unamused";
if (sceneProgress >= 1) {
babyX -= 5;
babyX = max(babyX, 100);
}
if (sceneProgress >= 2 && babyX == 100) {
babyEmotion = "sick";
}
if (sceneProgress >= 3) {
sitterEmotion = "angry";
}
if (sceneProgress >= 5) {
vomitX += 10;
vomitX = min(vomitX, 800);
}
if (sceneProgress >= 5 && vomitX == 800 && vomitY != 130) {
vomitY -= 5;
}
if (vomitY == 130) {
vomitY += 200;
}
babyPizzaScene();
}
if (sceneProgress >= 7 && vomitX == 800) {
parentsMad = true;
momBodyX += 10;
momArmX += 10;
dadBodyX += 10;
momBodyX = min(momBodyX, 1200);
momArmX = min(momArmX, 1100);
dadBodyX = min(dadBodyX, 1375);
}
if (sceneNum == 9) {
bt5.getController("Next").hide();
stroke(0);
strokeWeight(1);
sitterEmotion = "angry";
if (sceneProgress >= 2) {
sitterEmotion = "shocked";
sitterArmY -= 10;
sitterArmY2 -= 10;
sitterArmY2 = max(sitterArmY2, 150);
sitterArmY = max(sitterArmY, 150);
}
if (sceneProgress >= 3 && tornadoProgress != 2) {
tornadoX += 10;
}
if (tornadoX == 500) {
tornadoProgress++;
}
if (sceneProgress >= 3 && tornadoX <= 500 && tornadoProgress == 2) {
tornadoX -= 10;
}
if (tornadoX == 350 && tornadoProgress == 2) {
tornadoProgress--;
}
stroke(0);
tornadoScene();
drawRain();
}
}
}
void keyPressed() {
if (key == ESC) {
if (sceneNum == 1 && sceneProgress == 1) { // if on instructions in main menu
sceneProgress = 0;
bt5.show();
mainMenu();
}
if (sceneNum <= 1) { // don't pause on main menu or splash screen
key = 0; // reset key so it doesnt exit
return;
}
if (isPaused == true) {
isPaused = false;
bt5.show(); // show all buttons
Story(); // redraw to clear out the pause menu
} else {
bt5.hide(); // hide all buttons
Story();
isPaused = true;
}
key = 0; // needed so processing doesn't close when you click it.
} else if (keyCode == 37 && isPaused == false && bt5.getController("Prev") != null && bt5.getController("Prev").isVisible()) { // Left arrow
Prev();
} else if (keyCode == 39 && isPaused == false && bt5.getController("Next").isVisible()) { // Right arrow
Next();
} else if (key == ' ') { // if user just clicked space
// if (sceneNum >= 2) {
sceneProgress++;
println(sceneProgress);
//}
}
}
void Exit() {
JOptionPane.showMessageDialog(null, "Thank you for playing babysitter hell simulator!");
exit();
}
void mouseClicked() {
/*
I needed to make Instructions this way due to the fact that if didn't plan for an instructions method and if I handled it annother way (such is bt5.getController("Instructions").isMouseClicked()) in draw, it would never be consistant.
*/
int middle = (width / 2) - 40; // compensate for the fact that controlp5 draws from top corner
if (sceneNum == 1) { // if on main menu
if (sceneProgress == 0) { // if instructions are NOT toggled
boolean yCheck = (mouseY <= (height - 75) && mouseY >= height - (75 + 50));
boolean xCheck = (mouseX >= middle && mouseX <= middle + 80); // 80 is the width of the box
if (yCheck && xCheck) { // if the user is pressing the button and not somewhere else
bt5.hide();
sceneProgress = 1; // so that other controllers can check.
rectMode(CORNERS);
noStroke(); // don't do red outline
fill(0, 0, 0); // quicklyish fill black
rect(55, 55, width - 55, height - 55);
rectMode(CORNER); // reset it back
textAlign(RIGHT);
text("Press ESC or click anywhere to get out", width-55, 45);
textAlign(LEFT);
fill(255); // set text color to white
text("X", 70, 85); // an X just to make it more clear
text("Welcome to this animated storybook! \nThis educational story focuses on what you shouldn't do as a babysitter by \nusing a look don't tell type of communication. \n\nIn order to progress the story click the spacebar and different lines \nof dialouge will show up. \nTo go to the next scene use the right arrow key once the scene is finished. \n you will know if the scene is finished if a button in the bottom right \nbecomes visible! \nIf you want to go back a scene use the left arrow key. \nThis can be done at anytime! \nIf you want to pause the game use the ESC function", 90, 95);
}
} else { // instructions ARE toggled so unset.
sceneProgress = 0; // set to "not on instructions"
bt5.show(); // show the selection buttons again
mainMenu(); // call it to clear the instructions
}
} else if (isPaused) {
if (slowdown == -1) {
slowdown = 0; // reset it on click
return; // only let it happen once
}
/* Layout
Button = 80px
Gap = 40px
G|P = middle of screen + gap
Button Gap Button G|P Button Gap Button
*/
boolean yCheck = (mouseY >= (height / 2) - 20 && mouseY <= (height / 2) + 20); // y check for all
//boolean yCheckOuter = (mouseY >= (height/2)-40 && mouseY <= (height/2)+40); // y check to see if you should get out
boolean xCheckExit = (mouseX >= 147 && mouseX <= 223); // x position check for exit
boolean xCheckInstuctions = (mouseX >= 147 + 154 && mouseX <= 223 + 154); // x position check for Instructions
boolean xCheckSetAudio = (mouseX >= 147 + (154 * 2) && mouseX <= 223 + (154 * 2)); // x position check for Main Menu
boolean xCheckMainMenu = (mouseX >= 147 + (154 * 3) && mouseX <= 223 + (154 * 3)); // x position check for Set Audio
if (yCheck == true) {
if (xCheckExit == true) {
Exit();
} else if (xCheckInstuctions == true) {
slowdown = -1; // used so draw does not overwrite the text
rectMode(CORNERS);
fill(0); // fill black
rect(55, 55, width - 55, height - 55);
rectMode(CENTER);
fill(255); // set text color to white
text("Press ESC or click anywhere to get out", 55, 45);
textSize(18);
text("Welcome to this animated storybook! \nThis educational story focuses on what you shouldn't do as a babysitter by \nusing a look don't tell type of communication. \n\nIn order to progress the story click the spacebar and different lines \nof dialouge will show up. \nTo go to the next scene use the right arrow key once the scene is finished. \n you will know if the scene is finished if a button in the bottom right \nbecomes visible! \nIf you want to go back a scene use the left arrow key. \nThis can be done at anytime! \nIf you want to pause the game use the ESC function", 90, 95);
textSize(20);
} else if (xCheckMainMenu == true) { // if user clicked on main menu button
isPaused = false;
sceneNum = 1; // main menu scene num
bt5.show();
Story();
} else if (xCheckSetAudio == true) {
while (true) {
int tempVolume = getInt("Please enter your desired volume (between 0 for muted and 100 for full volume)");
if (tempVolume > 100 || tempVolume < 0) {
JOptionPane.showMessageDialog(null, "You tried entering: " + tempVolume + ". The volume must be between 0-100.");
} else {
JOptionPane.showMessageDialog(null, "The volume has been set to: " + tempVolume + "%");
musicVolume = tempVolume;
musicFile.amp(((float) musicVolume) / 100); // set music
break;
}
}
} else { // for when they click between buttons
isPaused = false;
bt5.show(); // show all buttons
Story(); // redraw to clear out the pause menu
}
} else { // when they click above or below
isPaused = false;
bt5.show(); // show all buttons
Story(); // redraw to clear out the pause menu
}
}
}
void introScene() {
background(227, 199, 162);
// floor
fill(156, 135, 108);
//rect(120, 80, 220, 220);
rect(0, 800, 800, 480);
for (int i = height; i >= 350; i -= 10) {
rect(0, i + 10, width, i);
}
fill(79, 60, 45); //door
rectMode(CORNERS);
rect(550, 100, 675, 360);
pushMatrix();
rectMode(CORNER);
rect(570, 120, 30, 100);
translate(55, 0);
rect(570, 120, 30, 100);
translate(0, 125);
rect(570, 120, 30, 100);
translate(-55, 0);
rect(570, 120, 30, 100);
popMatrix();
line(75, 0, 75, 360); //wall indications
line(725, 0, 725, 360);
fill(180, 95, 6); //doormat
rect(550, 365, 125, 70);
fill(138, 0, 252); //curtain on window
rect(150, 100, 300, 200);
line(180, 100, 170, 300); //folds in the curtain
line(210, 100, 190, 300);
line(240, 100, 210, 300);
line(270, 100, 230, 300);
line(295, 100, 250, 300);
line(300, 100, 300, 300);
line(305, 100, 350, 300);
line(330, 100, 370, 300);
line(360, 100, 390, 300);
line(390, 100, 410, 300);
line(420, 100, 430, 300);
strokeWeight(5);
line(140, 100, 460, 100); //bar that holds the curtains up
strokeWeight(1);
pushMatrix();
translate(-15, 0);
delay(100); // so the animation is smooth
drawMom();
drawDad();
popMatrix();
pushMatrix();
scale(0.8);
translate(50, 110);
drawSitter();
popMatrix();
if (sceneNum == 2 && sceneProgress == 1) {
pushMatrix(); //small icon to show which character is talking
scale(0.4);
translate(-380, 870);
fill(255, 242, 121);
ellipse(500, 230, 130, 120);
fill(252, 232, 194);
ellipse(500, 250, 80, 80);
popMatrix();
fill(0);
text("We're heading out, take good care of the baby okay " + username + "?", 100, 450);
}
if (sceneNum == 2 && sceneProgress == 2) {
pushMatrix(); //small icon to show which character is talking
scale(0.4);
translate(-380, 870);
fill(255, 242, 121);
ellipse(500, 230, 130, 120);
fill(252, 232, 194);
ellipse(500, 250, 80, 80);
popMatrix();
fill(0);
text("We left you some money for pizza, \nbut don't forget that the baby CAN'T have any!", 100, 450);
}
if (sceneNum == 2 && sceneProgress == 3) {
pushMatrix(); //small icon to show which character is talking
scale(0.4);
translate(-380, 870);
fill(255, 242, 121);
ellipse(500, 230, 130, 120);
fill(252, 232, 194);
ellipse(500, 250, 80, 80);
popMatrix();
fill(0);
text("because he'll throw up, \nand it'll be impossible to get out of the carpet", 100, 450);
}
if (sceneNum == 2 && sceneProgress == 4) {
pushMatrix(); //small icon to show which character is talking
scale(0.4);
translate(-380, 870);
fill(255, 242, 121);
ellipse(500, 230, 130, 120);
fill(252, 232, 194);
ellipse(500, 250, 80, 80);
popMatrix();
fill(0);
text("Also try to keep the baby out of trouble....", 100, 450);
}
if (sceneNum == 2 && sceneProgress >= 5 && momBodyX >= 870) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("yeah yeah whatever....", 100, 450);
}
if (sceneProgress >= 6) {
bt5.getController("Next").show();
} else {
textSize(15);
fill(147, 105, 70); // hair color
text("Press space to continue", 20, 32);
textSize(20);
}
}
void babyFireSlide() {
background(227, 199, 162);
delay(100);
fill(156, 135, 108);
quad(0, 500, 75, 360, 725, 360, 800, 500); //floor
triangle(737, 382, 783, 382, 783, 466); //floor of the other room on the right
triangle(62, 382, 18, 382, 18, 466); //floor of the other room to the left
line(75, 0, 75, 360); //wall indications
line(725, 0, 725, 360);
line(737, 382, 737, 125); //doorway on the right
line(737, 125, 783, 165);
line(783, 165, 783, 466);
pushMatrix();
translate(-675, 0); //doorway on the left
line(737, 382, 737, 125);
translate(-90, 0);
line(783, 165, 783, 466);
popMatrix();
line(62, 125, 18, 165);
fill(234, 232, 232); //fridge
rect(540, 90, 120, 290);
quad(540, 90, 550, 70, 650, 70, 660, 90);
fill(152); //countertop with stove
rect(62, 300, 430, 82);
quad(62, 300, 82, 250, 472, 250, 492, 300);
fill(190); //stove control pannel
rect(82, 200, 150, 50);
line(232, 250, 252, 300);
line(252, 300, 252, 382);
fill(102); //oven door
rect(87, 310, 135, 65);
fill(82);
rect(95, 320, 120, 10);
fill(230); //stovetop
quad(87, 290, 98, 260, 212, 260, 223, 290);
fill(245, 0, 0);
ellipse(125, 275, 25, 15);
ellipse(125 + 55, 275, 25, 15);
if (sceneProgress == 1) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
textFont(text);
textSize(20);
fill(0);
text("Ugh, I can't believe I'm stuck babysitting you", 100, 450);
}
if (sceneProgress == 2) {
pushMatrix();
scale(0.9);
translate(-240, 150);
fill(252, 232, 194);
ellipse(320, 340, 40, 40);
popMatrix();
fill(0);
text("Goo goo ga ga", 100, 450);
}
if (sceneProgress == 3) {
fill(150); // small icon showing that a phone just went off
rect(70, 425, 20, 35);
fill(0);
text("*DING*", 100, 450);
}
if (sceneProgress == 4) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("Oh, that reminds me, your parents left me some money for pizza", 100, 450);
}
if (sceneProgress >= 6 && sitterArmY == 250) {
fill(150); // the phone that suddenly appears in the babysitters hand
rect(560, 250, 20, 35);
}
if (sceneProgress == 6) {
fill(0);
text("**Blah Blah Blah, Pizza, Blah Blah**", 100, 450);
}
if (sceneProgress == 7) {
pushMatrix();
scale(0.9);
translate(-240, 150);
fill(252, 232, 194);
ellipse(320, 340, 40, 40);
popMatrix();
fill(0);
text("Ga...?", 100, 450);
}
pushMatrix();
scale(0.8);
translate(150, -65);
drawBaby();
popMatrix();
if (sceneProgress >= 8 && babyX == 25) {
fill(240, 173, 27); //the fire that appears to burn the baby
triangle(90, 285, 125, 285, 100, fireY);
triangle(125, 285, 175, 285, 150, fireY);
triangle(175, 285, 215, 285, 200, fireY);
}
if (sceneProgress == 9 && babyX == 25) {
pushMatrix();
scale(0.9);
translate(-240, 150);
fill(252, 232, 194);
ellipse(320, 340, 40, 40);
popMatrix();
fill(0);
text("Wahhhh wahhhhhhh \nWAHHHHHHHHHHHHHHHHH", 100, 450);
}
if (sceneProgress == 10 && babyEmotion == "crying") {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("hm, oh, you're crying... \ncan you be quiet i'm trying to order pizza", 100, 450);
}
if (sceneProgress == 11) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("Gosh, you just won't pipe down, i'm putting you in your room!", 100, 450);
}
if (sceneProgress >= 11) {
bt5.getController("Next").show();
} else {
textSize(15);
fill(147, 105, 70); // hair color
text("Press space to continue", 20, 32);
textSize(20);
}
pushMatrix();
scale(0.8);
translate(900, 100);
drawSitter();
popMatrix();
}
void babyCribScene() {
background(188, 150, 219);
delay(100);
fill(191, 146, 103); //floor
quad(0, 500, 75, 360, 725, 360, 800, 500);
triangle(737, 382, 783, 382, 783, 466); //floor of the room to the right
line(75, 360, 75, 0); //wall indications
line(725, 360, 725, 0);
line(737, 382, 737, 125); //doorway on the right
line(737, 125, 783, 165);
line(783, 165, 783, 466);
fill(94, 115, 240); //window
quad(0, 200, 65, 100, 65, 275, 0, 375);
line(32.5, 150, 32.5, 325);
line(0, 287.5, 65, 187.5);
pushMatrix();
scale(0.8);
translate(850, 50);
drawBaby();
popMatrix();
fill(255, 238, 175); //the baby's crib
rect(85, 250, 10, 150);
rect(85 + 210, 250, 10, 150);
rect(95, 280, 200, 10);
rect(95, 280 + 100, 200, 10);
fill(142, 193, 255); //crib cushion
rect(95, 360, 200, 20);
fill(255, 238, 175); //crib bars
for (int i = 100; i < 300; i = i + 25) {
rect(i, 290, 10, 90);
}
pushMatrix();
scale(0.8);
translate(900, 75);
drawSitter();
popMatrix();
if (sceneProgress == 0) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("Stay here until your parents come home you understand?", 100, 450);
}
if (sceneProgress == 1) {
pushMatrix();
scale(0.9);
translate(-240, 150);
fill(252, 232, 194);
ellipse(320, 340, 40, 40);
popMatrix();
fill(0);
text("gaaaaaa, gwahhhhhhhhh", 100, 450);
}
if (sceneProgress == 2) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("yeah yeah I get it....", 100, 450);
}
if (sceneProgress >= 3) {
bt5.getController("Next").show();
} else {
textSize(15);
fill(122, 97, 142); //darker pirple
text("Press space to continue", 20, 32);
textSize(20);
}
}
void babyCrawlScene() {
background(188, 150, 219);
delay(100);
fill(156, 135, 108);
quad(0, 500, 75, 360, 725, 360, 800, 500); //floor
triangle(62, 382, 18, 382, 18, 466); //floor of the other room to the left
quad(725, 360, 762.5, 360, 800, 430, 800, 500); //stairs going downwards
triangle(774, 380, 800, 380, 800, 430);
line(75, 360, 75, 0); //wall indications
line(725, 360, 725, 0);
pushMatrix();
translate(-675, 0); //doorway on the left
line(737, 382, 737, 125);
translate(-90, 0);
line(783, 165, 783, 466);
popMatrix();
line(62, 125, 18, 165);
fill(206, 206, 200); //open door
quad(18, 165, 100, 200, 100, 501, 18, 466);
line(300, 50, 250, 75); //string hanging the painting
line(300, 50, 350, 75);
fill(255, 132, 31); // painting canvas
rect(225, 75, 150, 100);
fill(159, 250, 96);
beginShape();
vertex(310, 90);
vertex(330, 90);
vertex(330, 110);
vertex(350, 110);
vertex(350, 130);
vertex(330, 130);
vertex(330, 150);
vertex(310, 150);
vertex(310, 130);
vertex(290, 130);
vertex(290, 110);
vertex(310, 110);
endShape(CLOSE);
line(550, 135, 450, 155); //string hanging painting two
line(550, 135, 650, 155);
fill(219, 175, 219); //painting two canvas
rect(425, 155, 250, 50);
fill(88, 164, 255);
rect(435, 173, 230, 15);
line(340, 200, 320, 210); //string hanging painting three
line(340, 200, 360, 210);
fill(255, 247, 185); //painting three canvas
rect(310, 210, 60, 130);
strokeWeight(3);
line(325, 230, 325, 320);
line(355, 230, 355, 320);
line(325, 230, 330, 225);
line(355, 230, 350, 225);
line(325, 320, 330, 325);
line(355, 320, 350, 325);
strokeWeight(5);
point(322, 275);
point(358, 275);
strokeWeight(1);
pushMatrix();
scale(0.8);
translate(-210, 125);
drawBaby();
popMatrix();
fill(206, 206, 200); //open door
quad(18, 165, 100, 200, 100, 501, 18, 466);
if (sceneProgress == 0) {
fill(0);
text("it seems as if the babysitter left the door open, \nallowing the baby to escape it's room", 150, 450);
}
if (sceneProgress >= 1 && babyX == 1100) {
pushMatrix();
scale(0.9);
translate(-240, 150);
fill(252, 232, 194);
ellipse(320, 340, 40, 40);
popMatrix();
fill(0);
text("Guh, gwoohhhh", 100, 450);
}
if (sceneProgress >= 2 && babyX == 1100) {
bt5.getController("Next").show();
} else {
textSize(15);
fill(122, 97, 142); //darker pirple
text("Press space to continue", 20, 32);
textSize(20);
}
}
void babyFallScene() {
background(90);
delay(100);
fill(116, 65, 43); //top of each step
int topX = 0;
int topY;
for (topY = 475; topY >= 0; topY = topY - 50) {
quad(topX, topY, topX + 35, topY - 25, 800 - (topX + 35), topY - 25, 800 - topX, topY);
topX = topX + 35;
}
fill(188, 106, 70); // the vertical part of each step
int stepX = 0;
int stepY;
for (stepY = 475; stepY >= 0; stepY = stepY - 50) {
rect(stepX, stepY, 800 - stepX * 2, 25);
stepX = stepX + 35;
}
line(0, 475, 332, 0); //wall indicators
line(800, 475, 800 - 332, 0);
pushMatrix();
translate(100, -500);
drawBaby();
popMatrix();
if (sceneNum >= 0) {
fill(0);
textSize(100);
text("GAHHAHDHAHGJ!!!!!!!!!!!!", 0, 450);
textSize(20);
}
if (sceneProgress >= 1) {
bt5.getController("Next").show();
} else {
textSize(15);
fill(90, 90, 90); // lighter grey
text("Press space to continue", 20, 32);
textSize(20);
}
}
void babyPickupScene() {
background(130);
delay(100);
fill(156, 135, 108);
quad(0, 500, 75, 360, 725, 360, 800, 500);
triangle(737, 382, 783, 382, 783, 466); //floor of the room to the right
line(75, 360, 75, 0); //wall indications
line(725, 360, 725, 0);
line(737, 382, 737, 125); //doorway on the right
line(737, 125, 783, 165);
line(783, 165, 783, 466);
fill(227, 199, 162);
quad(737, 125, 782, 165, 783, 382, 737, 382);
fill(188, 106, 70); // the vertical part of each step
quad(0, 500, 0, 450, 75, 310, 75, 360);
quad(0, 400, 0, 350, 50, 260, 50, 310);
quad(0, 300, 0, 250, 25, 210, 25, 260);
fill(116, 65, 43); //top of each step
quad(0, 450, 0, 400, 50, 310, 75, 310);
quad(0, 350, 0, 300, 25, 260, 50, 260);
triangle(0, 250, 0, 210, 25, 210);
strokeWeight(10); //handrail
stroke(183, 166, 79);
line(-25, 150, 70, 210);
stroke(0);
strokeWeight(1);
fill(105, 91, 83); //shelving units
pushMatrix();
quad(120, 150, 140, 120, 280, 120, 300, 150); //shelf one
triangle(140, 150, 150, 170, 160, 150);
triangle(280, 150, 270, 170, 260, 150);
translate(350, 80);
quad(120, 150, 140, 120, 280, 120, 300, 150); //shelf two
triangle(140, 150, 150, 170, 160, 150);
triangle(280, 150, 270, 170, 260, 150);
popMatrix();
pushMatrix();
scale(0.8);
translate(-350, -50);
drawBaby();
popMatrix();
pushMatrix();
scale(0.8);
translate(1000, 100);
drawSitter();
popMatrix();
if (sceneProgress == 1) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("gosh, aren't you old enough to not fall down the stairs", 100, 450);
}
if (sceneProgress == 2) {
pushMatrix();
scale(0.9);
translate(-240, 150);
fill(252, 232, 194);
ellipse(320, 340, 40, 40);
popMatrix();
fill(0);
text("*hic hic* wahhahahahhhhahah", 100, 450);
}
if (sceneProgress == 3) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 950);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("The pizza is here now anyway, \nand because I clearly can't leave you alone \nyou're coming with me", 100, 425);
}
if (sceneProgress >= 4) {
bt5.getController("Next").show();
} else {
textSize(15);
fill(130, 130, 130); // dark grey
text("Press space to continue", 20, 32);
textSize(20);
}
}
void babyPizzaScene() {
background(227, 199, 162);
delay(100);
fill(156, 135, 108);
quad(0, 500, 75, 360, 725, 360, 800, 500); //floor
rect(125, 270, 550, 90); //floor of the room that is visible through the wall opening
fill(130); //wall colour of the other room
rect(125, 50, 550, 220);
line(75, 0, 75, 360); //wall indications
line(725, 0, 725, 360);
pushMatrix();
scale(0.8);
translate(-900, -15);
drawMom();
drawDad();
popMatrix();
fill(227, 199, 162);
rect(0, 0, 125, 360); //invisible block for the purpose of making it seem like the parents are in the background
line(125, 360, 125, 50); //open concept wall opening
line(675, 360, 675, 50);
line(125, 50, 675, 50);
pushMatrix();
scale(0.8);
translate(700, 50);
drawSitter();
popMatrix();
fill(178, 130, 54); //table in the center of the room
beginShape(); //table stand
vertex(250, 430);
vertex(550, 430);
vertex(530, 470);
vertex(540, 490);
vertex(480, 490);
vertex(400, 470);
vertex(320, 490);
vertex(260, 490);
vertex(270, 470);
endShape(CLOSE);
fill(220, 160, 60); //table top
ellipse(400, 380, 500, 150);
fill(180, 122, 33); //pizza that will be eaten by the baby
ellipse(300, 370, 120, 70);
fill(250, 72, 8);
ellipse(300, 370, 110, 60);
fill(245, 250, 187);
ellipse(300, 370, 105, 55);
pushMatrix();
scale(0.8);
translate(300, 70);
drawBaby();
popMatrix();
if (sceneProgress == 1) {
pushMatrix();
scale(0.9);
translate(-240, 150);
fill(252, 232, 194);
ellipse(320, 340, 40, 40);
popMatrix();
fill(0);
text("*sniff sniff* guh?", 100, 450);
}
if (sceneProgress == 2) {
pushMatrix();
scale(0.9);
translate(-240, 150);
fill(252, 232, 194);
ellipse(320, 340, 40, 40);
popMatrix();
fill(0);
text("*munch munch* \nGurk, guugugugu", 100, 450);
}
if (sceneProgress == 3) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("What the heck is wrong with you! \nget off of the pizza!", 100, 450);
}
if (sceneProgress == 4) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("Oh no, don't you dare throw up!", 100, 450);
}
if (sceneProgress >= 5 && babyX == 100) {
fill(59, 155, 12);
triangle(babyX + 255, babyY - 20, vomitX, vomitY, vomitX, vomitY + 40);
}
if (sceneProgress == 5 && babyEmotion == "sick") {
fill(0);
textSize(70);
text("BLEHHHHHHHHHHHHHHH", 50, 450);
textSize(20);
}
if (sceneProgress == 6) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
textSize(50);
text("EWWWWWW WHYYYYYYYYYYYY", 100, 450);
textSize(20);
}
if (sceneProgress == 7) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("YOU STUPID BABY!!!", 100, 450);
}
if (sceneProgress != 1 && momBodyX == 1200) {
fill(0);
text("how DARE you treat our baby like this! \nwe were watching you on the security cameras the ENTIRE time \nNOW GET OUT!!!", 100, 425);
}
if (sceneProgress >= 8 && momBodyX == 1200) {
bt5.getController("Next").show();
} else {
textSize(15);
fill(0); // black
text("Press space to continue", 20, 32);
textSize(20);
}
}
void tornadoScene() {
background(20, 60, 72);
delay(100);
fill(144, 45, 45); //the house that the babysitter was in for the entire story in the background
rect(0, 0, 400, 250);
quad(400, 0, 500, 0, 500, 150, 400, 250);
fill(138, 0, 252); //curtain seen through the window of the house
rect(75, 50, 250, 150);
line(125, 50, 105, 200); //curtain ripples
line(165, 50, 135, 200);
line(200, 50, 160, 200);
line(210, 50, 240, 200);
line(230, 50, 270, 200);
line(280, 50, 300, 200);
fill(79, 60, 45); //open door from which the babysitter was kicked out of
quad(425, 75, 525, 100, 525, 250, 425, 225);
fill(227, 199, 162);
triangle(425, 75, 490, 50, 490, 90);
pushMatrix();
scale(0.9);
translate(600, 50);
drawSitter();
popMatrix();
fill(103); //drawing the big bad tornado that comes by to ruin the babysitters night
triangle(tornadoX - 20, 60, tornadoX + 200, 60, tornadoX + 20, 475); //funnel of the tornado
arc(tornadoX, -20, 250, 210, radians(55), radians(190)); //clouds that the tornado is coming out of
arc(tornadoX + 140, -20, 300, 220, radians(0), radians(180));
arc(tornadoX + 70, -20, 200, 230, radians(0), radians(180));
if (sceneProgress == 1) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("Dammit, I can't believe they kicked me out", 100, 450);
}
if (sceneProgress == 2) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
text("Uh oh, is, is IS THAT A TORNDAO!!!", 100, 450);
}
if (sceneProgress == 4) {
pushMatrix(); //little icon to show speech
scale(0.4);
translate(0, 900);
fill(252, 232, 194); //head
ellipse(150, 200, 80, 80);
fill(147, 105, 70);
int hairY = 200;
beginShape(); //hair
vertex(100, hairY);
vertex(135, hairY - 10);
vertex(135, hairY - 15);
vertex(165, hairY - 15);
vertex(165, hairY - 10);
vertex(200, hairY);
vertex(190, hairY - 30);
vertex(200, hairY - 60);
vertex(175, hairY - 60);
vertex(175, hairY - 70);
vertex(125, hairY - 70);
vertex(125, hairY - 60);
vertex(100, hairY - 60);
vertex(110, hairY - 30);
vertex(100, hairY);
endShape(CLOSE);
popMatrix();
fill(0);
textSize(50);
text("AHHHH!!!!", 100, 450);
textSize(20);
}
if (sceneProgress > 4) { // game over
JOptionPane.showMessageDialog(null, "Thank you for playing The Bad Babysitter " + username);
while (true) {
char choice = getChar("Do you want to play again (y/n)");
if (choice == 'y' || choice == 'Y') {
username = "";
isPaused = false;
sceneNum = 1; // main menu scene num
Story();
break;
} else if (choice == 'n' || choice == 'N') {
exit(); // don't call Exit() since we already thanked the user
break;
} else {
JOptionPane.showMessageDialog(null, username + ", " + choice + " is not a valid option");
}
}
} else {
textSize(15);
fill(0); // black
text("Press space to continue", 20, 32);
textSize(20);
}
}
void splashScreen() {
noStroke();
babyEmotion = "sick";
parentsMad = true;
sitterEmotion = "unamused";
background(252, 229, 205); // beige bc
fill(102, 0, 0);
beginShape();
vertex(0, 170);
vertex(20, 260);
vertex(34, 289);
vertex(47, 247);
vertex(50, 200);
vertex(68, 225);
vertex(86, 244);
vertex(100, 280);
vertex(140, 225);
vertex(159, 143);
vertex(180, 200);
vertex(190, 270);
vertex(230, 180);
vertex(260, 220);
vertex(280, 300);
vertex(312, 234);
vertex(330, 156);
vertex(360, 278);
vertex(434, 200);
vertex(450, 140);
vertex(489, 190);
vertex(520, 280);
vertex(587, 123);
vertex(600, 238);
vertex(634, 304);
vertex(658, 259);
vertex(687, 234);
vertex(700, 130);
vertex(734, 175);
vertex(756, 233);
vertex(776, 198);
vertex(800, 130);
vertex(800, 800);
vertex(0, 800);
endShape(CLOSE);
fill(246, 178, 107);
beginShape();
vertex(0, splashScreenFire);
vertex(20, splashScreenFire+90);
vertex(34, splashScreenFire+109);
vertex(47, splashScreenFire+77);
vertex(60, splashScreenFire+30);
vertex(68, splashScreenFire+55);
vertex(86, splashScreenFire+74);
vertex(100, splashScreenFire+100);
vertex(140, splashScreenFire+55);
vertex(159, splashScreenFire-27);
vertex(180, splashScreenFire+30);
vertex(190, splashScreenFire+100);
vertex(230, splashScreenFire+10);
vertex(260, splashScreenFire+50);
vertex(280, splashScreenFire+130);
vertex(312, splashScreenFire+64);
vertex(330, splashScreenFire-14);
vertex(360, splashScreenFire+128);
vertex(434, splashScreenFire+30);
vertex(450, splashScreenFire-30);
vertex(489, splashScreenFire+20);
vertex(520, splashScreenFire+115);
vertex(577, splashScreenFire+27);
vertex(600, splashScreenFire+68);
vertex(634, splashScreenFire+134);
vertex(658, splashScreenFire+89);
vertex(687, splashScreenFire+64);
vertex(720, splashScreenFire-50);
vertex(734, splashScreenFire+15);
vertex(756, splashScreenFire+53);
vertex(776, splashScreenFire+28);
vertex(800, splashScreenFire-50);
vertex(800, 800);
vertex(0, 800);
endShape(CLOSE);
int spacing = 7; // pixels between lines
int len = 6; // pixel length of each line
int baseY = 100; // base Y value to position other elements off of
textSize(15);
fill(102, 0, 0); // red
text("By Jason Cameron & Simon Michetti Studios", 76, baseY - 10);
textSize(20); // set it back to the original 20
for (int x = 90; x <= 340; x += (spacing + len)) { // from 300 to 100 //drawing a flourish on the splash screen/ main menu
strokeWeight(4);
stroke(241, 194, 50); // gold
line(x, baseY, x + len, baseY);
}
for (int x = 110; x <= 320; x += (spacing + len)) { // from 300 to 100
strokeWeight(3);
stroke(246, 178, 107); // orange
line(x, baseY + 10, x + len, baseY + 10);
x += (spacing + len) / 1.5;
}
for (int x = 130; x <= 300; x += (spacing + len)) { // from 270 to 130
strokeWeight(2.7);
stroke(102, 0, 0); // red
line(x, baseY + 20, x + len, baseY + 20);
}
textAlign(CENTER);
textSize(40);
fill(0);
text("The Bad Babysitter", 215, 65); // game name
textSize(20);
textAlign(LEFT); // reset
// only draw chars on splash not on main menu
if (sceneNum == 0) {
stroke(0);
pushMatrix();
translate(0, 100);
scale(0.8);
drawMom();
drawDad();
pushMatrix();
translate(30, 100);
scale(0.8);
drawSitter();
popMatrix();
drawBaby();
popMatrix();
} else if (sceneProgress==0) {
textSize(24);
text("Skip to", 20, height - (18 * 8)); // add skip to text for scene skipper
textSize(20);
fill(0, 0, 0);
noStroke();
int middle = (width / 2) - 40; // compensate for the fact that controlp5 draws from top corner
rect(middle, height - 125, 80, 50);
}
}
void drawSitter() {
int hairY = 200;
if (sitterEmotion == "angry") {
fill(252, 232, 194); //head
ellipse(sitterX, 200, 80, 80);
fill(0); //eyes
arc(sitterX - 20, 200, 30, 30, radians(45), radians(225));
arc(sitterX + 20, 200, 30, 30, radians(315), radians(495));
stroke(1);
line(sitterX, 120, sitterX - 10, 110); //steam coming from the babysitters head
line(sitterX - 10, 110, sitterX + 5, 110);
strokeWeight(2);
line(sitterX + 5, 110, sitterX - 15, 100);
line(sitterX - 15, 100, sitterX + 10, 100);
strokeWeight(3);
line(sitterX + 10, 100, sitterX - 20, 90);
line(sitterX - 20, 90, sitterX + 15, 90);
strokeWeight(4);
line(sitterX + 15, 90, sitterX - 25, 80);
line(sitterX - 25, 80, sitterX + 20, 80);
strokeWeight(5);
line(sitterX + 20, 80, sitterX - 30, 70);
line(sitterX - 30, 70, sitterX + 25, 70);
strokeWeight(6);
line(sitterX + 25, 70, sitterX - 35, 60);
line(sitterX - 35, 60, sitterX + 30, 60);
strokeWeight(7);
line(sitterX + 30, 60, sitterX - 40, 50);
line(sitterX - 40, 50, sitterX + 35, 50);
} else if (sitterEmotion == "shocked") {
strokeWeight(1);
fill(252, 232, 194); //head
ellipse(sitterX, 200, 80, 80);
fill(0); //eyes
ellipse(sitterX - 20, 200, 30, 40);
ellipse(sitterX + 20, 200, 30, 40);
hairY = 160;
} else { // unamused
stroke(0);
fill(252, 232, 194); //head
ellipse(sitterX, 200, 80, 80);
fill(0); //eyes
arc(sitterX - 20, 200, 30, 30, radians(0), radians(180));
arc(sitterX + 20, 200, 30, 30, radians(0), radians(180));
}
stroke(0);
strokeWeight(1);
fill(212, 242, 247); //body
rect(sitterX - 40, 240, 80, 150);
fill(255, 168, 62); //stripes on the shirt
for (int i = 265; i < 380; i = i + 40) {
rect(sitterX - 40, i, 80, 20);
}
line(sitterX - 40, 240, sitterX - 60, 300); //left arm
line(sitterX - 60, 300, sitterX - 60, sitterArmY2);
line(sitterX + 40, 240, sitterX + 60, 300); //right arm
line(sitterX + 60, 300, sitterArmX, sitterArmY);
line(sitterX - 30, 390, sitterX - 30, 450); //left leg
line(sitterX - 30, 450, sitterX - 40, 450);
line(sitterX + 30, 390, sitterX + 30, 450); //right leg
line(sitterX + 30, 450, sitterX + 40, 450);
fill(147, 105, 70);
beginShape(); //hair
vertex(sitterX - 50, hairY);
vertex(sitterX - 15, hairY - 10);
vertex(sitterX - 15, hairY - 15);
vertex(sitterX + 15, hairY - 15);
vertex(sitterX + 15, hairY - 10);
vertex(sitterX + 50, hairY);
vertex(sitterX + 40, hairY - 30);
vertex(sitterX + 50, hairY - 60);
vertex(sitterX + 25, hairY - 60);
vertex(sitterX + 25, hairY - 70);
vertex(sitterX - 25, hairY - 70);
vertex(sitterX - 25, hairY - 60);
vertex(sitterX - 50, hairY - 60);
vertex(sitterX - 40, hairY - 30);
vertex(sitterX - 50, hairY);
endShape(CLOSE);
if (sitterEmotion == "shocked") {
noFill(); //eyebrows
strokeWeight(10);
stroke(144, 119, 80);
arc(sitterX - 20, 160, 20, 30, radians(180), radians(360));
arc(sitterX + 20, 160, 20, 30, radians(180), radians(360));
stroke(0);
strokeWeight(1);
}
}
void drawMom() {
fill(255, 242, 121); //hair
ellipse(momBodyX, 230, 130, 120);
fill(252, 232, 194); //head
ellipse(momBodyX, 250, 80, 80);
fill(240, 126, 225); //dress
triangle(momBodyX, 302, momBodyX - 50, 402, momBodyX + 50, 402);
triangle(momBodyX - 50, 292, momBodyX + 50, 292, momBodyX, 352);
line(momBodyX - 50, 292, momBodyX - 60, 332); //left mom arm
line(momBodyX - 60, 332, momArmX + 40, momArmY + 150);
line(momBodyX + 50, 292, momBodyX + 60, 332); //right arm
line(momBodyX + 60, 332, momBodyX + 60, 382);
line(momBodyX - 30, 402, momBodyX - 30, 452); //left leg
line(momBodyX - 30, 452, momBodyX - 40, 452);
line(momBodyX + 30, 402, momBodyX + 30, 452); //right leg
line(momBodyX + 30, 452, momBodyX + 40, 452);
fill(0); //eyes
ellipse(momBodyX - 20, 255, 25, 25); //left eye
ellipse(momBodyX + 20, 255, 25, 25); //right eye
if (parentsMad == true) {
fill(252, 232, 194); //head
ellipse(momBodyX, 250, 80, 80);
fill(0);
arc(momBodyX - 20, 255, 25, 25, radians(45), radians(225));
arc(momBodyX + 20, 255, 25, 25, radians(315), radians(495));
}
}
void drawDad() {
fill(252, 232, 194); //head
ellipse(dadBodyX, 150, 80, 80);
fill(55); //body
rect(dadBodyX - 30, 210, 60, 175);
fill(255); //suit detail
triangle(dadBodyX - 10, 210, dadBodyX, 240, dadBodyX + 10, 210);
line(dadBodyX - 30, 210, dadBodyX - 50, 280); //left arm
line(dadBodyX - 50, 280, dadBodyX - 50, 350);
line(dadBodyX + 30, 210, dadBodyX + 50, 280); //right arm
line(dadBodyX + 50, 280, dadBodyX + 50, 350);
line(dadBodyX - 20, 385, dadBodyX - 20, 455); //left leg
line(dadBodyX - 20, 455, dadBodyX - 30, 455);
line(dadBodyX + 20, 385, dadBodyX + 20, 455); //right leg
line(dadBodyX + 20, 455, dadBodyX + 30, 455);
fill(0); //glasses
ellipse(dadBodyX - 20, 155, 20, 20);
ellipse(dadBodyX + 20, 155, 20, 20);
strokeWeight(5);
line(dadBodyX - 20, 155, dadBodyX + 20, 155);
strokeWeight(1);
fill(255, 242, 121); //beard
arc(dadBodyX, 180, 40, 30, radians(180), radians(360));
arc(dadBodyX - 20, 190, 40, 30, radians(135), radians(270));
arc(dadBodyX - 15, 205, 40, 30, radians(70), radians(190));
arc(dadBodyX + 5, 220, 30, 20, radians(0), radians(180));
arc(dadBodyX + 20, 200, 40, 40, radians(270), radians(450));
noStroke();
ellipse(dadBodyX + 3, 200, 70, 43);
if (parentsMad == true) {
stroke(0);
fill(252, 232, 194); //head
ellipse(dadBodyX, 150, 80, 80);
fill(0);
arc(dadBodyX - 20, 155, 20, 20, radians(45), radians(225));
arc(dadBodyX + 20, 155, 20, 20, radians(315), radians(495));
fill(255, 242, 121); //beard
arc(dadBodyX, 180, 40, 30, radians(180), radians(360));
arc(dadBodyX - 20, 190, 40, 30, radians(135), radians(270));
arc(dadBodyX - 15, 205, 40, 30, radians(70), radians(190));
arc(dadBodyX + 5, 220, 30, 20, radians(0), radians(180));
arc(dadBodyX + 20, 200, 40, 40, radians(270), radians(450));
noStroke();
ellipse(dadBodyX + 3, 200, 70, 43);
}
}
void drawBaby() {
if (sceneNum != 5) {
stroke(0);
fill(252, 232, 194);
rect(babyX, babyY, 40, 40, 50, 50, 0, 0); //body
fill(255);
rect(babyX - 5, babyY + 30, 50, 10); //diaper
quad(babyX, babyY + 40, babyX + 40, babyY + 40, babyX + 35, babyY + 60, babyX + 5, babyY + 60);
fill(252, 232, 194);
rect(babyX - 40, babyY + 10, 40, 10); //arms
rect(babyX + 40, babyY + 10, 40, 10);
quad(babyX + 3, babyY + 48, babyX + 5, babyY + 60, babyX - 40, babyY + 70, babyX - 40, babyY + 60); //legs
quad(babyX + 37, babyY + 48, babyX + 35, babyY + 60, babyX + 80, babyY + 70, babyX + 80, babyY + 60);
if (babyEmotion == "sick") {
fill(167, 222, 157);
ellipse(babyX + 20, babyY - 10, 40, 40); //head
fill(0); //eyes
arc(babyX + 10, babyY - 10, 10, 15, radians(180), radians(360));
arc(babyX + 30, babyY - 10, 10, 15, radians(180), radians(360));
} else if (babyEmotion == "crying") {
fill(252, 232, 194);
ellipse(babyX + 20, babyY - 10, 40, 40); //head
fill(0);
ellipse(babyX + 5, babyY - 10, 15, 10); //eyes
ellipse(babyX + 35, babyY - 10, 15, 10);
fill(86, 218, 250); //tears
rect(babyX - 1, babyY - 5, 10, 20);
rect(babyX + 29, babyY - 5, 10, 20);
} else if (babyEmotion == "shocked") {
fill(252, 232, 194);
ellipse(babyX + 20, babyY - 10, 40, 40); //head
fill(0);
ellipse(babyX + 10, babyY - 10, 10, 20); //eyes
ellipse(babyX + 30, babyY - 10, 10, 20);
noFill(); //eyebrows
stroke(255, 242, 121);
strokeWeight(5);
arc(babyX + 10, babyY - 25, 10, 10, radians(180), radians(360));
arc(babyX + 30, babyY - 25, 10, 10, radians(180), radians(360));
stroke(0);
strokeWeight(1);
} else {
fill(252, 232, 194);
ellipse(babyX + 20, babyY - 10, 40, 40); //head
fill(0);
ellipse(babyX + 10, babyY - 10, 10, 10); //eyes
ellipse(babyX + 30, babyY - 10, 10, 10);
}
}
if (sceneNum == 5) { //baby in a crawling position that only appears in this scene
fill(252, 232, 194);
rect(babyX - 25, 350, 60, 30, 50, 50, 0, 0); //body
fill(255);
rect(babyX - 15, 345, 10, 40); //diaper
quad(babyX - 15, 345, babyX - 15, 385, babyX - 40, 375, babyX - 40, 355);
fill(252, 232, 194);
ellipse(babyX + 30, 340, 40, 40); //head
fill(0);
ellipse(babyX + 20, 340, 10, 10); //eyes
ellipse(babyX + 40, 340, 10, 10);
fill(252, 232, 194);
pushMatrix();
translate(-35, -30);
quad(babyX + 3, 398, babyX + 5, 410, babyX - 40, 420, babyX - 40, 410); //legs of the crawling baby
popMatrix();
pushMatrix();
translate(-5, -30);
quad(babyX + 37, 398, babyX + 35, 410, babyX + 70, 420, babyX + 70, 410); //arms of the crawling baby
popMatrix();
}
}