/**********************************************
HE WANTS TO EAT
By: Kristy Lin
The boy is hungry!
He wants sushi! But he's super picky today.
Order the right sushi and serve it right to
the boyo. Just click on the menu and click
the sushi to his gaping mouth!!
**********************************************/
//Stating classes involed
Boyo boyo;
Conveyor conveyor;
Backdrop backdrop;
Menu menu;
Sushi sushi;
Update update;
Like like;
//Stating the arraylist
//Can't seem to get it to spawwn more sushi like I wanted it to :/
ArrayList<Sushi> cucumberList = new ArrayList<Sushi>();
ArrayList<Sushi> salmonRList = new ArrayList<Sushi>();
ArrayList<Sushi> salmonList = new ArrayList<Sushi>();
ArrayList<Sushi> tunaList = new ArrayList<Sushi>();
ArrayList<Sushi> mackeralList = new ArrayList<Sushi>();
ArrayList<Sushi> eelList = new ArrayList<Sushi>();
void setup() {
size(800, 400);
noStroke();
conveyor = new Conveyor();
menu = new Menu();
sushi = new Sushi();
update = new Update();
boyo = new Boyo();
like = new Like();
//stating Arraylist
cucumberList = new ArrayList<Sushi>();
salmonRList = new ArrayList<Sushi>();
salmonList = new ArrayList<Sushi>();
tunaList = new ArrayList<Sushi>();
mackeralList = new ArrayList<Sushi>();
eelList = new ArrayList<Sushi>();
//Setting array list to call for more sushi
for (int i = 0; i < cucumberList.size()-1; i++) {
cucumberList.get(i).drawCucumber();
cucumberList.get(i).cucumberPosition.x ++;
}
for (int i = 0; i < cucumberList.size()-1; i++) {
salmonRList.get(i).drawSalmonRoll();
salmonRList.get(i).salmonRPosition.x ++;
}
for (int i = 0; i < cucumberList.size()-1; i++) {
salmonList.get(i).drawSalmon();
salmonList.get(i).salmonPosition.x ++;
}
for (int i = 0; i < cucumberList.size()-1; i++) {
tunaList.get(i).drawTuna();
tunaList.get(i).tunaPosition.x ++;
}
for (int i = 0; i < cucumberList.size()-1; i++) {
mackeralList.get(i).drawMackeral();
mackeralList.get(i).mackeralPosition.x ++;
}
for (int i = 0; i < cucumberList.size()-1; i++) {
eelList.get(i).drawEel();
eelList.get(i).eelPosition.x ++;
}
}
void draw() {
drawBackdrop();
conveyor.drawBelt();
conveyor.updateBelt();
update.cucumberUpdate();
update.salmonRollUpdate();
update.salmonUpdate();
update.tunaUpdate();
update.mackeralUpdate();
update.eelUpdate();
boyo.drawBoyo();
boyo.updateBoyo();
menu.drawMenu();
}class Backdrop {
//Recycling background from assignment 2 because I liked it a lot :^)
//Changed the colours a bit for a 'calmer' feeling
Backdrop() {
}
}
void drawBackdrop() {
//Columns
for (int j=0; j<50*8; j+=50) {
//Row
for (int i=0; i<55*16; i+=25)
{
fill(110-mouseX*2, 170-mouseX/15, 255-mouseX/15);
//Starting triangle
triangle(i, j, i+25, j, i, j+25);
//Repeating triangles
//Triangle 1
fill(110-mouseX*2, 170-mouseY/15, 255-mouseX/14);
triangle(i+25, j, i, j+25, i+25, j+50);
//Trangle 2
fill(110-mouseX*2, 170-mouseX/12, 255-mouseX/13);
triangle(i, j+25, i, j+75, i+25, j+50);
}
}
}class Boyo {
//Declaring variables used
Update update;
Sushi sushi;
boolean eat = false;
Boyo() {
update = new Update();
sushi = new Sushi();
}
//Drawing the boyo
void drawBoyo() {
//Stating CENTER mode for easy placement
ellipseMode(CENTER);
rectMode(CENTER);
//stating colour
fill(#FF9D52);
//Ears and nose
ellipse(150, 225, 40, 40);
ellipse(275, 350, 50, 50);
ellipse(25, 350, 50, 50);
//Base head
ellipse(150, 350, 250, 250);
//Mouth
fill(#C44910);
ellipse(150, 360, 200, 200);
//Teeth
fill(255);
rect(125, 290, 25, 10, 3);
rect(175, 290, 25, 10, 3);
//More mouth stuff
fill(#A03539);
ellipse(150, 400, 90, 90);
ellipse(140, 365, 30, 30);
ellipse(160, 365, 30, 30);
//Tongue
fill(#FFD3DC);
ellipse(140, 410, 50, 50);
ellipse(160, 410, 50, 50);
//Thought bubble
fill(255);
ellipse(150, 110, 200, 180);
triangle(85, 178, 110, 205, 105, 190);
}
//Setting it so that when you click the pieces, eat boolean will be true
void updateBoyo() {
if (sushi.cucumberPosition.x-15 <= mouseX && sushi.cucumberPosition.x+15 >= mouseX && sushi.cucumberPosition.y-15 <= mouseY && sushi.cucumberPosition.y+15 >= mouseY && mousePressed==true) {
eat = true;
} else {
eat = false;
}
if (sushi.salmonRPosition.x-15 <= mouseX && sushi.salmonRPosition.x+15 >= mouseX && sushi.salmonRPosition.y-15 <= mouseY && sushi.salmonRPosition.y+15 >= mouseY && mousePressed==true) {
eat = true;
} else {
eat = false;
}
if (sushi.salmonPosition.x-15 <= mouseX && sushi.salmonPosition.x+15 >= mouseX && sushi.salmonPosition.y-15 <= mouseY && sushi.salmonPosition.y+15 >= mouseY && mousePressed==true) {
eat = true;
} else {
eat = false;
}
if (sushi.tunaPosition.x-15 <= mouseX && sushi.tunaPosition.x+15 >= mouseX && sushi.tunaPosition.y-15 <= mouseY && sushi.tunaPosition.y+15 >= mouseY && mousePressed==true) {
eat = true;
} else {
eat = false;
}
if (sushi.mackeralPosition.x-15 <= mouseX && sushi.mackeralPosition.x+15 >= mouseX && sushi.mackeralPosition.y-15 <= mouseY && sushi.mackeralPosition.y+15 >= mouseY && mousePressed==true) {
eat = true;
} else {
eat = false;
}
if (sushi.eelPosition.x-15 <= mouseX && sushi.eelPosition.x+15 >= mouseX && sushi.eelPosition.y-15 <= mouseY && sushi.eelPosition.y+15 >= mouseY && mousePressed==true) {
eat = true;
} else {
eat = false;
//drawing his mouth being closed when eat = true
if (eat == true) {
//Base head
fill(#FF9D52);
ellipse(150, 350, 250, 250);
//Mouth
fill(#C44910);
ellipse(150, 360, 200, 10);
}
}
}
}class Conveyor {
float speed;
PVector beltPosition;
PVector beltVelocity;
Conveyor() {
beltPosition = new PVector(0, 0);
beltVelocity = new PVector(1, 0);
}
void drawBelt() {
//Making the general shape/background of conveyor
fill(140);
rectMode(CENTER);
rect(400, 125, width, 150);
fill(175);
rect(400, 125, width, 115);
//The offset tiles to show that it is indeed moving
for (float b = 0; b < width + 100; b += 100) {
fill(150);
quad(b + beltPosition.x, 67, b + beltPosition.x-50, 67, b + beltPosition.x -70, 183, b + beltPosition.x-20, 183);
}
}
void updateBelt() {
//Setting belt to move via x to move to the right
beltPosition.x ++;
//Setting if statement so the tiles respawn back on the left
if (beltPosition.x >= 100) {
beltPosition.x = 0;
}
}
}class Like {
//Draws a circles signifying red of grean
//Shows the player that if the boy likes it or not
Like() {
}
void drawYes() {
fill(255, 0, 0);
ellipse(150, 110, 80, 80);
}
void drawNo() {
fill(0, 255, 0);
ellipse(150, 110, 80, 80);
}
}class Menu {
Sushi sushi;
Menu() {
sushi = new Sushi();
}
void drawMenu() {
//Stating CENTER mode for easy placement
rectMode(CENTER);
ellipseMode(CENTER);
//Creating the non-interactible parts of the menu
fill(#E8BB96);
rect(550, 300, 400, 200 , 7);
fill(#CB9A71,175);
rect(550, 300, 375, 175 , 7);
sushi.drawCucumberMenu();
sushi.drawSalmonRollMenu ();
sushi.drawSalmonMenu();
sushi.drawTunaMenu ();
sushi.drawMackeralMenu ();
sushi.drawEelMenu();
}
void menuUpdate() {
//Updates sushi onto the belt when a meanu item is selected via mousepressed
}
}class Sushi {
//stating PVector values that would be used
PVector cucumberPosition;
PVector cucumberMenuPosition;
PVector salmonRPosition;
PVector salmonRMenuPosition;
PVector salmonPosition;
PVector salmonMenuPosition;
PVector tunaPosition;
PVector tunaMenuPosition;
PVector mackeralPosition;
PVector mackeralMenuPosition;
PVector eelPosition;
PVector eelMenuPosition;
int Cucumber = 0;
boolean CucumberBelt = false;
int SalmonRoll = 0;
boolean SalmonRollBelt = false;
int Salmon = 0;
boolean SalmonBelt = false;
int Tuna = 0;
boolean TunaBelt = false;
int Mackeral = 0;
boolean MackeralBelt = false;
int Eel = 0;
boolean EelBelt = false;
Sushi() {
//Stating PVector conditions
cucumberPosition = new PVector (0, 125);
cucumberMenuPosition = new PVector (440, 240);
salmonRPosition = new PVector (0, 125);
salmonRMenuPosition = new PVector (440, 305);
salmonPosition = new PVector (0, 125);
salmonMenuPosition = new PVector (440, 370);
tunaPosition = new PVector (0, 125);
tunaMenuPosition = new PVector (660, 370);
mackeralPosition = new PVector (0, 125);
mackeralMenuPosition = new PVector (660, 305);
eelPosition = new PVector (0, 125);
eelMenuPosition = new PVector (660, 240);
}
//Creating cucumber roll
void drawCucumber() {
ellipseMode(CENTER);
rectMode(CENTER);
//Nori/seaweed
fill(0);
rect(cucumberPosition.x, cucumberPosition.y, 30, 23);
ellipse(cucumberPosition.x, cucumberPosition.y+10, 30, 15);
ellipse(cucumberPosition.x, cucumberPosition.y-10, 30, 15);
//Rice
fill(255);
ellipse(cucumberPosition.x, cucumberPosition.y-10, 28, 12);
//Cucumber
fill(#77D865);
ellipse(cucumberPosition.x, cucumberPosition.y-10, 10, 7);
fill(#B3FFA5);
ellipse(cucumberPosition.x, cucumberPosition.y-10, 7, 4);
}
//Creating cucumber roll for the Menu
void drawCucumberMenu() {
ellipseMode(CENTER);
rectMode(CENTER);
//Nori/seaweed
fill(0);
rect(cucumberMenuPosition.x, cucumberMenuPosition.y, 30, 23);
ellipse(cucumberMenuPosition.x, cucumberMenuPosition.y+10, 30, 15);
ellipse(cucumberMenuPosition.x, cucumberMenuPosition.y-10, 30, 15);
//Rice
fill(255);
ellipse(cucumberMenuPosition.x, cucumberMenuPosition.y-10, 28, 12);
//Cucumber
fill(#77D865);
ellipse(cucumberMenuPosition.x, cucumberMenuPosition.y-10, 10, 7);
fill(#B3FFA5);
ellipse(cucumberMenuPosition.x, cucumberMenuPosition.y-10, 7, 4);
}
//Creating salmon roll
void drawSalmonRoll() {
ellipseMode(CENTER);
rectMode(CENTER);
//Nori/seaweed
fill(0);
rect(salmonRPosition.x, salmonRPosition.y, 30, 23);
ellipse(salmonRPosition.x, salmonRPosition.y+10, 30, 15);
ellipse(salmonRPosition.x, salmonRPosition.y-10, 30, 15);
//Rice
fill(255);
ellipse(salmonRPosition.x, salmonRPosition.y-10, 28, 12);
//Salmon
fill(#FC9C9C);
ellipse(salmonRPosition.x, salmonRPosition.y-10, 10, 7);
fill(#FFB4B4);
ellipse(salmonRPosition.x, salmonRPosition.y-10, 7, 4);
}
//Creating salmon roll for the menu
void drawSalmonRollMenu() {
ellipseMode(CENTER);
rectMode(CENTER);
//Nori/seaweed
fill(0);
rect(salmonRMenuPosition.x, salmonRMenuPosition.y, 30, 23);
ellipse(salmonRMenuPosition.x, salmonRMenuPosition.y+10, 30, 15);
ellipse(salmonRMenuPosition.x, salmonRMenuPosition.y-10, 30, 15);
//Rice
fill(255);
ellipse(salmonRMenuPosition.x, salmonRMenuPosition.y-10, 28, 12);
//Salmon
fill(#FC9C9C);
ellipse(salmonRMenuPosition.x, salmonRMenuPosition.y-10, 10, 7);
fill(#FFB4B4);
ellipse(salmonRMenuPosition.x, salmonRMenuPosition.y-10, 7, 4);
}
//Creating salmon
void drawSalmon() {
ellipseMode(CENTER);
rectMode(CENTER);
//Rice
fill(#FFFCE0);
rect(salmonPosition.x, salmonPosition.y, 40, 20, 8);
//Salmon
fill(#F29A7D);
ellipse(salmonPosition.x, salmonPosition.y-10, 40, 20);
//Nori/seaweed
fill(#0A3E0C);
rect(salmonPosition.x, salmonPosition.y-5, 6, 30);
}
//Creating salmon for the Menu
void drawSalmonMenu() {
ellipseMode(CENTER);
rectMode(CENTER);
//Rice
fill(255);
rect(salmonMenuPosition.x, salmonMenuPosition.y, 40, 20, 8);
//Salmon
fill(#F29A7D);
ellipse(salmonMenuPosition.x, salmonMenuPosition.y-10, 40, 20);
//Nori/seaweed
fill(#0A3E0C);
rect(salmonMenuPosition.x, salmonMenuPosition.y-5, 6, 30);
}
//Creating tuna
void drawTuna() {
ellipseMode(CENTER);
rectMode(CENTER);
//Rice
fill(#FFFCE0);
rect(tunaPosition.x, tunaPosition.y, 40, 20, 8);
//Tuna
fill(#FCEFC4);
ellipse(tunaPosition.x, tunaPosition.y-10, 40, 20);
//Nori/seaweed
fill(#0A3E0C);
rect(tunaPosition.x, tunaPosition.y-5, 6, 30);
}
//Creating tuna for the Menu
void drawTunaMenu() {
ellipseMode(CENTER);
rectMode(CENTER);
//Rice
fill(255);
rect(tunaMenuPosition.x, tunaMenuPosition.y, 40, 20, 8);
//Tuna
fill(#FCEFC4);
ellipse(tunaMenuPosition.x, tunaMenuPosition.y-10, 40, 20);
//Nori/seaweed
fill(#0A3E0C);
rect(tunaMenuPosition.x, tunaMenuPosition.y-5, 6, 30);
}
//Creating mackeral
void drawMackeral() {
ellipseMode(CENTER);
rectMode(CENTER);
//Rice
fill(#FFFCE0);
rect(mackeralPosition.x, mackeralPosition.y, 40, 20, 8);
//Mackeral
fill(#D6B195);
ellipse(mackeralPosition.x, mackeralPosition.y-10, 40, 20);
//Nori/seaweed
fill(#0A3E0C);
rect(mackeralPosition.x, mackeralPosition.y-5, 6, 30);
}
//Creating mackeral for the Menu
void drawMackeralMenu() {
ellipseMode(CENTER);
rectMode(CENTER);
//Rice
fill(255);
rect(mackeralMenuPosition.x, mackeralMenuPosition.y, 40, 20, 8);
//Mackeral
fill(#D6B195);
ellipse(mackeralMenuPosition.x, mackeralMenuPosition.y-10, 40, 20);
//Nori/seaweed
fill(#0A3E0C);
rect(mackeralMenuPosition.x, mackeralMenuPosition.y-5, 6, 30);
}
//Creating eel
void drawEel() {
ellipseMode(CENTER);
rectMode(CENTER);
//Rice
fill(#FFFCE0);
rect(eelPosition.x, eelPosition.y, 40, 20, 8);
//Eel
fill(#89705B);
rect(eelPosition.x, eelPosition.y-10, 40, 20,2);
//Nori/seaweed
fill(#0A3E0C);
rect(eelPosition.x, eelPosition.y-5, 6, 30);
}
//Creating eel for the Menu
void drawEelMenu() {
ellipseMode(CENTER);
rectMode(CENTER);
//Rice
fill(255);
rect(eelMenuPosition.x, eelMenuPosition.y, 40, 20, 8);
//Eel
fill(#89705B);
rect(eelMenuPosition.x, eelMenuPosition.y-10, 40, 20,2);
//Nori/seaweed
fill(#0A3E0C);
rect(eelMenuPosition.x, eelMenuPosition.y-5, 6, 30);
}
}class Update {
Sushi sushi;
Update () {
sushi = new Sushi();
}
//Creating cucumber roll's update
void cucumberUpdate() {
//If mouse is over the menu display and mouse is pressed
if (sushi.cucumberMenuPosition.x-15 <= mouseX && sushi.cucumberMenuPosition.x+15 >= mouseX && sushi.cucumberMenuPosition.y-15 <= mouseY && sushi.cucumberMenuPosition.y+15 >= mouseY && mousePressed==true) {
//Loop it!
cucumberList.add(new Sushi());
sushi.Cucumber = 1;
sushi.CucumberBelt = false;
}
if (sushi.Cucumber ==1) {
sushi.drawCucumber();
sushi.cucumberPosition.x ++;
}
//If mouse is over the belt display and mouse is pressed
if (sushi.cucumberPosition.x-15 <= mouseX && sushi.cucumberPosition.x+15 >= mouseX && sushi.cucumberPosition.y-15 <= mouseY && sushi.cucumberPosition.y+15 >= mouseY && mousePressed==true) {
sushi.CucumberBelt = true;
}
if (sushi.CucumberBelt == true) {
sushi.Cucumber = 0;
sushi.cucumberPosition.x = 0;
}
if (sushi.cucumberPosition.x == 800) {
sushi.CucumberBelt = true;
}
}
//Creating salmon roll's update
void salmonRollUpdate() {
//If mouse is over the menu display and mouse is pressed
if (sushi.salmonRMenuPosition.x-15 <= mouseX && sushi.salmonRMenuPosition.x+15 >= mouseX && sushi.salmonRMenuPosition.y-15 <= mouseY && sushi.salmonRMenuPosition.y+15 >= mouseY && mousePressed==true) {
//Loop it!
salmonRList.add(new Sushi());
sushi.SalmonRoll = 1;
sushi.SalmonRollBelt = false;
}
if (sushi.SalmonRoll ==1) {
sushi.drawSalmonRoll();
sushi.salmonRPosition.x ++;
}
//If mouse is over the belt display and mouse is pressed
if (sushi.salmonRPosition.x-15 <= mouseX && sushi.salmonRPosition.x+15 >= mouseX && sushi.salmonRPosition.y-15 <= mouseY && sushi.salmonRPosition.y+15 >= mouseY && mousePressed==true) {
sushi.SalmonRollBelt = true;
}
if (sushi.SalmonRollBelt == true) {
sushi.SalmonRoll = 0;
sushi.salmonRPosition.x = 0;
}
if (sushi.salmonRPosition.x == 800) {
sushi.SalmonRollBelt = true;
}
}
//Creating salmon update
void salmonUpdate() {
//If mouse is over the menu display and mouse is pressed
if (sushi.salmonMenuPosition.x-15 <= mouseX && sushi.salmonMenuPosition.x+15 >= mouseX && sushi.salmonMenuPosition.y-15 <= mouseY && sushi.salmonMenuPosition.y+15 >= mouseY && mousePressed==true) {
//Loop it!
salmonList.add(new Sushi());
sushi.Salmon = 1;
sushi.SalmonBelt = false;
}
if (sushi.Salmon ==1) {
sushi.drawSalmon();
sushi.salmonPosition.x ++;
}
//If mouse is over the belt display and mouse is pressed
if (sushi.salmonPosition.x-15 <= mouseX && sushi.salmonPosition.x+15 >= mouseX && sushi.salmonPosition.y-15 <= mouseY && sushi.salmonPosition.y+15 >= mouseY && mousePressed==true) {
sushi.SalmonBelt = true;
}
if (sushi.SalmonBelt == true) {
sushi.Salmon = 0;
sushi.salmonPosition.x = 0;
}
if (sushi.salmonPosition.x == 800) {
sushi.SalmonBelt = true;
}
}
//Creating tuna update
void tunaUpdate() {
//If mouse is over the menu display and mouse is pressed
if (sushi.tunaMenuPosition.x-15 <= mouseX && sushi.tunaMenuPosition.x+15 >= mouseX && sushi.tunaMenuPosition.y-15 <= mouseY && sushi.tunaMenuPosition.y+15 >= mouseY && mousePressed==true) {
//Loop it!
tunaList.add(new Sushi());
sushi.Tuna = 1;
sushi.TunaBelt = false;
}
if (sushi.Tuna ==1) {
sushi.drawTuna();
sushi.tunaPosition.x ++;
}
//If mouse is over the belt display and mouse is pressed
if (sushi.tunaPosition.x-15 <= mouseX && sushi.tunaPosition.x+15 >= mouseX && sushi.tunaPosition.y-15 <= mouseY && sushi.tunaPosition.y+15 >= mouseY && mousePressed==true) {
sushi.TunaBelt = true;
}
if (sushi.TunaBelt == true) {
sushi.Tuna = 0;
sushi.tunaPosition.x = 0;
}
if (sushi.tunaPosition.x == 800) {
sushi.TunaBelt = true;
}
}
//Creating mackeral update
void mackeralUpdate() {
//If mouse is over the menu display and mouse is pressed
if (sushi.mackeralMenuPosition.x-15 <= mouseX && sushi.mackeralMenuPosition.x+15 >= mouseX && sushi.mackeralMenuPosition.y-15 <= mouseY && sushi.mackeralMenuPosition.y+15 >= mouseY && mousePressed==true) {
//Loop it!
mackeralList.add(new Sushi());
sushi.Mackeral = 1;
sushi.MackeralBelt = false;
}
if (sushi.Mackeral ==1) {
sushi.drawMackeral();
sushi.mackeralPosition.x ++;
}
//If mouse is over the belt display and mouse is pressed
if (sushi.mackeralPosition.x-15 <= mouseX && sushi.mackeralPosition.x+15 >= mouseX && sushi.mackeralPosition.y-15 <= mouseY && sushi.mackeralPosition.y+15 >= mouseY && mousePressed==true) {
sushi.MackeralBelt = true;
}
if (sushi.MackeralBelt == true) {
sushi.Mackeral = 0;
sushi.mackeralPosition.x = 0;
}
if (sushi.mackeralPosition.x == 800) {
sushi.MackeralBelt = true;
}
}
//Creating eel update
void eelUpdate() {
//If mouse is over the menu display and mouse is pressed
if (sushi.eelMenuPosition.x-15 <= mouseX && sushi.eelMenuPosition.x+15 >= mouseX && sushi.eelMenuPosition.y-15 <= mouseY && sushi.eelMenuPosition.y+15 >= mouseY && mousePressed==true) {
//Loop it!
eelList.add(new Sushi());
sushi.Eel = 1;
sushi.EelBelt = false;
}
if (sushi.Eel ==1) {
sushi.drawEel();
sushi.eelPosition.x ++;
}
//If mouse is over the belt display and mouse is pressed
if (sushi.eelPosition.x-15 <= mouseX && sushi.eelPosition.x+15 >= mouseX && sushi.eelPosition.y-15 <= mouseY && sushi.eelPosition.y+15 >= mouseY && mousePressed==true) {
sushi.EelBelt = true;
}
if (sushi.EelBelt == true) {
sushi.Eel = 0;
sushi.eelPosition.x = 0;
}
if (sushi.eelPosition.x == 800) {
sushi.EelBelt = true;
}
}
}