//Second Assignment
// Title: EMOJI MAKER
// Welcome to Emoji Maker where you can do just that, customize you own emoji1
// I mean where else can you make a blushing pile of poop with a top hat?
// Click the buttons to choose a emoji body and face
// Clicking the red button changes the wall colour!
// clixk the window to go through the day and build your emoji during the night!
// Dylan M.
// My Variables
boolean regular = false;
boolean poop = false;
boolean mad = false;
boolean smile = false;
boolean tongue = false;
boolean blush = false;
boolean hat = false;
boolean window = false;
boolean buttonPressedThisFrame= false;
float cases = 0;
int r = 0;
int g = 0;
int b = 0;
void setup() {
size(400, 400);
}
void draw() {
//User Defined Functions
changeBG();
displayFloor();
displayCases();
displayCabinet();
displayWindow();
displayCounter();
displayFlask();
regularMoji();
poopMoji();
madMoji();
smileyFace();
tongueOut();
blushing();
topHat();
ButtonP();
ButtonR();
ButtonM();
ButtonS();
ButtonT();
ButtonB();
ButtonTH();
ButtonRandom();
}
// Background and other Main Components
//Floor
void displayFloor() {
stroke(120, 60, 50);
fill(120, 60, 50);
rect(0, 280, width, 60);
}
//Cabinet With Test Tubes on Top
void displayCabinet() {
stroke(220);
fill(255);
rect(300, 280, 100, 40);
quad(300, 280, 280, 260, 280, 300, 300, 320);
quad(300, 280, 280, 260, 400, 260, 400, 280);
// Test Tubes
stroke(0);
fill(255);
rect(310, 240, 10, 30, 10);
rect(330, 240, 10, 30, 10);
rect(350, 240, 10, 30, 10);
stroke(255, 0, 0);
fill(255, 0, 0);
rect(312, 248, 6, 20, 10);
stroke(0, 255, 0);
fill(0, 255, 0);
rect(332, 248, 6, 20, 10);
stroke(0, 0, 255);
fill(0, 0, 255);
rect(352, 248, 6, 20, 10);
}
// Window that changes from day to night
void displayWindow() {
// Window During The Day
if (window == false) {
stroke(0);
fill(175, 215, 250);
rect(220, 100, 160, 70);
stroke(0);
fill(255);
quad(220, 170, 380, 170, 370, 180, 230, 180);
}
// Window During The Night
if (window == true) {
stroke(0);
fill(10, 35, 65);
rect(220, 100, 160, 70);
stroke(0);
fill(235);
quad(220, 170, 380, 170, 370, 180, 230, 180);
stroke(255);
fill(255);
ellipse(340, 130, 30, 30);
}
if (mouseX>=220 && mouseX<=380 && mouseY>=100 && mouseY<= 160 && mousePressed && buttonPressedThisFrame== false) {
buttonPressedThisFrame = true;
if (window==true) {
window =false;
} else {
window=true;
}
}
}
void displayCounter() {
// Counter where the Flask is Placed
stroke(0);
fill(255);
rect(-10, 340, width*2, 60);
}
void displayFlask() {
// Flask in which you make your Emoji
stroke(100);
fill(190, 225, 255);
rect(140, 220, 120, 160, 10);
stroke(100);
fill(165, 200, 255);
ellipse(200, 220, 120, 20);
}
//Loop of Cabinets with Glass windows
void displayCases() {
cases = 0;
while ( cases< width) {
cases = cases + 80;
stroke(0);
fill(145, 100, 50);
rect(cases, 200, 60, 90);
stroke(190, 240, 230);
fill(190, 240, 230);
rect(cases+10, 210, 40, 70);
stroke(120, 65, 10);
fill(120, 65, 10);
rect(cases+10, 230, 40, 10);
rect(cases+10, 260, 40, 10);
}
}
// Emojis
// Regular Yellow Emoji
void regularMoji() {
if (regular == true) {
stroke(250, 190, 20);
fill(252, 215, 50);
ellipse(200, 320, 80, 80);
}
}
// Poop Emoji
void poopMoji() {
if (poop == true) {
stroke(65, 25, 5);
fill(130, 65, 20);
rect(150, 330, 100, 20, 10);
rect(165, 310, 70, 20, 10);
rect(175, 295, 50, 15, 10);
rect(185, 285, 30, 10, 10);
}
}
// Angry Red Emoji
void madMoji() {
if (mad == true) {
stroke(185, 40, 30);
fill(215, 65, 55);
ellipse(200, 320, 80, 80);
}
}
//Faces
//Regular Happy Smiling Face
void smileyFace() {
if (smile == true) {
stroke(0);
fill(255);
rect(180, 290, 15, 30, 10);
rect(205, 290, 15, 30, 10);
stroke(0);
fill(0);
rect(182, 295, 12, 20, 10);
rect(207, 295, 12, 20, 10);
stroke(0);
fill(255);
arc(200, 325, 30, 30, 0, PI);
}
}
// Crazy with Tongue Sticking Out
void tongueOut() {
if (tongue == true) {
stroke(0);
fill(0);
rect(175, 310, 20, 3, 5);
stroke(0);
fill(255);
rect(205, 290, 15, 30, 10);
stroke(0);
fill(0);
rect(207, 295, 12, 20, 10);
stroke(0);
fill(0);
arc(200, 325, 30, 30, 0, PI);
stroke(0);
fill(0);
arc(200, 325, 30, 30, 0, PI);
stroke(245, 130, 120);
fill(245, 130, 120);
rect(195, 330, 12, 30, 10);
rect(195, 330, 12, 20);
stroke(140, 40, 30);
fill(140, 40, 30);
line(201, 330, 201, 355);
}
}
//Blushing Face
void blushing() {
if (blush == true) {
stroke(0);
fill(255);
rect(183, 300, 10, 20, 10);
rect(208, 300, 10, 20, 10);
stroke(242, 133, 133);
fill(242, 133, 133);
rect(220, 320, 20, 5, 10);
rect(160, 320, 20, 5, 10);
stroke(0);
fill(255);
arc(200, 325, 30, 30, 0, PI);
}
}
// Gentlemans Top Hat
void topHat() {
if (hat == true) {
stroke(0);
fill(0);
rect(171, 283, 55, 7, 5);
stroke(0);
fill(0);
rect(178, 240, 40, 35);
stroke(255);
fill(255);
rect(178, 275, 40, 8);
}
}
// Buttons
//Regular Face Button
void ButtonR() {
stroke(20);
fill(20);
rect(122, 42, 40, 40);
stroke(200);
fill(100);
rect(120, 40, 40, 40);
if (mouseX>=120 && mouseX<=160 && mouseY>=40 && mouseY<=80 && mousePressed) {
regular = true;
mad = false;
poop = false;
}
}
// Poop Face Button
void ButtonP() {
stroke(20);
fill(20);
rect(202, 42, 40, 40);
stroke(200);
fill(100);
rect(200, 40, 40, 40);
if (mouseX>=200 && mouseX<=240 && mouseY>=40 && mouseY<=80 && mousePressed) {
poop = true;
mad = false;
regular = false;
}
}
// Mad Face Button
void ButtonM() {
stroke(20);
fill(20);
rect(282, 42, 40, 40);
stroke(200);
fill(100);
rect(280, 40, 40, 40);
if (mouseX>=280 && mouseX<=320 && mouseY>=40 && mouseY<=80 && mousePressed) {
mad = true;
regular = false;
poop = false;
}
}
// Regular Smile Button
void ButtonS() {
stroke(20);
fill(20);
rect(42, 122, 40, 40);
stroke(200);
fill(100);
rect(40, 120, 40, 40);
if (mouseX>=40 && mouseX<=80 && mouseY>=120 && mouseY<=160 && mousePressed) {
smile = true;
tongue = false;
blush = false;
}
}
// Smile with Tongue Out
void ButtonT() {
stroke(20);
fill(20);
rect(42, 202, 40, 40);
stroke(200);
fill(100);
rect(40, 200, 40, 40);
if (mouseX>=40 && mouseX<=80 && mouseY>=200 && mouseY<=240 && mousePressed) {
tongue = true;
smile = false;
blush = false;
}
}
// Blushing Smile
void ButtonB() {
stroke(20);
fill(20);
rect(42, 282, 40, 40);
stroke(200);
fill(100);
rect(40, 280, 40, 40);
if (mouseX>=40 && mouseX<=80 && mouseY>=280 && mouseY<=320 && mousePressed) {
blush= true;
smile = false;
tongue = false;
}
}
// Button that activates "top" secret Top Hat. See what I did there? Haha..
void ButtonTH() {
stroke(20);
fill(20);
rect( 42, 42, 40, 40);
stroke(200);
fill(100);
rect(40, 40, 40, 40);
if (mouseX>=40 && mouseX<=80 && mouseY>=40 && mouseY<=80 && mousePressed && buttonPressedThisFrame == false) {
buttonPressedThisFrame = true;
if (hat==true) {
hat =false;
} else {
hat=true;
}
}
}
// When the mouse is released it will make whatever was pressed stay rather than blinking on screen and leaving
void mouseReleased() {
buttonPressedThisFrame = false;
}
// Random Button
void ButtonRandom() {
stroke(110, 15, 25);
fill(110, 15, 25);
ellipse(142, 142, 40, 40);
stroke(255, 40, 40);
fill(255, 40, 40);
ellipse(140, 140, 40, 40);
}
//Color Changing Wall
void changeBG() {
if (mouseX>=120 && mouseX<=160 && mouseY>=120 && mouseY<=160 && mousePressed && buttonPressedThisFrame == false) {
buttonPressedThisFrame = true;
r=int(random(0, 255));
g=int(random(0, 255));
b=int(random(0, 255));
background(r, g, b);
}
}
//Thanks for Building your emoji!