/*
Build your own toy Robot!!
Programmer: Dominique Watt
At Robot's for Humans .co, we let you create your Robot!
Click on the different colour buttons to customize your Robo Pal!
We carry a variety of choices to make you (hopefully) love your Robot!
**Certain items have different features (hat & bowtie, press a key(colour change fun) look forward to it
Go on! Create your robo bro!
*/
void setup()
{
size(400, 400);
println("Left side buttons (Up-Down): 1.Legs 2.Head 3.Pants");
println("Right side buttons (Up-Down): 1.Eyes 2.Mouth 3.Accessories 4.Shirts");
println("Have Fun!!");
}
//Here are my universal variables for storing the players button count
float posY=340;
float choiceL=1;
float choiceE=0;
float choiceM=0;
float choiceA=0;
float choiceA2=0;
float head=1;
float choiceP=0;
//Put together a robot! Much fun!
void draw()
{
background(70);
frameRate(60);
//Background details, pretty unexpected background
fill(255, 192, 203);
rect(200, 140, width, height);
//The gradient
fill(255, 192, 203);
rect (200, 50, width, 40);
fill(250, 192, 203);
rect (200, 70, width, 60);
fill(245, 192, 203);
rect (200, 90, width, 80);
fill(240, 192, 203);
rect (200, 110, width, 100);
fill(235, 192, 203);
rect (200, 130, width, 120);
fill(230, 192, 203);
rect (200, 150, width, 140);
fill(225, 192, 203);
rect (200, 170, width, 160);
fill(220, 192, 203);
rect(200, 190, width, 180);
fill(215, 192, 203);
rect (200, 210, width, 180);
fill(210, 192, 203);
rect(200, 230, width, 180);
fill(205, 192, 203);
rect(200, 250, width, 180);
noStroke();
//(picture frame) in background
fill(230);
rect(200, 110, 200, 100);
fill(255);
rect(200, 110, 180, 90);
fill(245);
rect(200, 90, 180, 20);
rect(200, 130, 180, 20);
fill(235);
rect(200, 110, 180, 20);
float a=255;
//Weird art inside the picture frame, it's objective art...for a robot's new house
fill(255, 105, 180);
rect(200, 110, 60, 40);
fill(255, 105, 180);
rect(125, 110, 20, 20);
rect(275, 110, 20, 20);
fill(230);
rect(200+(mouseX*0.02), 110, 10, 50);
//Buttons Section
//Leg adjusting Button!!
rect(40, 40, 55, 55);
//Head Changing BUTTON!!
rect(40, 130, 55, 55);
//Pants? yes there's a pants button
rect(40, 220, 55, 55);
//Eyes button
rect(360, 40, 55, 55);
//Mouth Button
rect(360, 100, 55, 55);
//Random Accessories Button
rect(360, 160, 55, 55);
//Shirts Button
rect(360, 220, 55, 55);
//Inner buttons (so the actual button part)
fill(255, 20, 147);
rect(40, 40, 25, 25);
fill(240, 128, 128);
rect(40, 130, 25, 25);
fill(220, 20, 60);
rect(40, 220, 25, 25);
fill(219, 112, 147);
rect(360, 40, 25, 25);
fill(139, 0, 0);
rect(360, 100, 25, 25);
fill(199, 21, 133);
rect(360, 160, 25, 25);
fill(255, 20, 60);
rect(360, 220, 25, 25);
//Calling the functions that will create the player's robot
fill(230);
robLegs();
robPants();
rob();
robHead();
robEyes();
robMouth();
robShirts();
robAccessories();
//Changes coulour of hat & bowtie when pressed, is too much when it effects everything
if (keyPressed==true)
{
colour();
robAccessories();
}
}
// Generates random colours when called on
void colour()
{
float r=random(0, 255);
float g=random(0, 255);
float b=random(0, 255);
if (keyPressed==true)
{
fill(r, g, b);
}
}
//Medium Length legs - for that average size robot
void reset()
{
if (posY>=340)
{
posY-=1;
rect(182, posY-10, 22, 60);
rect(218, posY-10, 22, 60);
} else if (posY<=340)
{
posY+=1;
rect(182, posY-10, 22, 60);
rect(218, posY-10, 22, 60);
}
}
//Really short legs, when you want a short robot
void flyUpRob()
{
if (posY>290)
{
posY=posY-1;
rect(182, posY+2, 22, 70);
rect(218, posY+2, 22, 70);
} else
{
rect(182, posY, 22, 70);
rect(218, posY, 22, 70);
}
}
//Long Legs - when you want a tall robot
void flyDownRob()
{
if (posY<=352)
{
posY=posY+1;
rect(182, posY, 22, 80);
rect(218, posY, 22, 80);
} else if (posY>=290)
{
rect(182, posY-10, 22, 80);
rect(218, posY-10, 22, 80);
}
}
//Basic proportions of the starting robot,
void rob()
{
fill(230);
rectMode(CENTER);
//Arm joints
rect(158, 246, 15, 15);
rect(242, 246, 15, 15);
//Arms
rect(243, 275, 10, 45);
rect(157, 275, 10, 45);
//Neck
rect(200, 235, 10, 10);
//Body
rect(200, 267, 70, 60);
}
//Calls upon my moving leg functions when the button is pressed
void robLegs()
{
if (choiceL==2)
{
flyUpRob();
} else if (choiceL==3)
{
flyDownRob();
} else if (choiceL==1)
{
reset();
rob();
}
}
//Robot Pants, not that much in demand so not that many options
//Puts pants on the robot when button is pressed
void robPants()
{
if (choiceP==1)
{
fill(0);
rect(182, 322, 22, 60);
rect(218, 322, 22, 60);
} else if (choiceP==2)
{
fill(0);
rect(182, 320, 22, 40);
rect(218, 320, 22, 40);
}
}
//Gives the robot eyes, changes when button is pressed
void robEyes()
{
if (choiceE==1)
{
fill(0);
rect(180, 200, 15, 5);
rect(220, 200, 15, 5);
} else if (choiceE==2)
{
fill(0);
rect(180, 200, 10, 10);
rect(220, 200, 10, 10);
//eyebrows
rect(180, 185, 15, 5);
rect(220, 185, 15, 5);
} else if (choiceE==3)
{
fill(0);
ellipse(180, 200, 10, 10);
ellipse(220, 200, 10, 10);
}
}
//Gives the robot a mouth, or not if you don't want it
void robMouth()
{
if (choiceM==1)
{
fill(0);
rect(200, 220, 20, 5);
} else if (choiceM==2)
{
fill(230, 0, 0);
rect(200, 220, 25, 25);
} else if (choiceM==3)
{
fill(0);
ellipse(200, 220, 20, 5);
}
}
//gives the robot some character, some accessories (hat, weird glasses, and a bowtie!)
void robAccessories()
{
if (choiceA==1)
{
//HAT CHANGES COLOUR(press that key!!)
triangle(170, 170, 190, 140, 210, 170);
ellipse(190, 140, 5, 5);
} else if (choiceA==2)
{
fill(50);
stroke(50);
rect(182, 212, 15, 10);
line(180, 212, 220, 212);
rect(218, 212, 15, 10);
line(223, 215, 240, 195);
line(175, 212, 160, 195);
noStroke();
} else if (choiceA==3)
{
//bow tie - also changes colour!!
rect(200, 245, 5, 5);
rect(208, 242, 10, 15);
rect(192, 242, 10, 15);
fill(255, 182, 193);
ellipse(175, 215, 15, 10);
ellipse(225, 215, 15, 10);
}
}
//This changes the Robot's head shape
void robHead()
{
if (head==1)
{
rect(200, 200, 80, 60);
} else if (head==2)
{
rect(200, 185, 70, 90);
} else if (head==3)
{
rect(200, 200, 120, 60);
}
}
//Gives the option of having the robot wear a shirt...
void robShirts()
{
if (choiceA2==1)
{
fill(255);
rect(200, 272, 57, 57);
//Symbol?
fill(150, 0, 0);
triangle(175, 250, 225, 270, 220, 280);
//Vest
fill(0);
rect(225, 270, 20, 65);
rect(175, 270, 20, 65);
} else if (choiceA2==2)
{
fill(50);
rect(200, 270, 64, 64);
rect(160, 245, 17, 17);
rect(240, 245, 17, 17);
fill(255);
triangle(181, 240, 200.5, 275, 222, 240);
stroke(0);
line(200, 240, 200, 300);
noStroke();
fill(0);
ellipse(200.5, 280, 5, 5);
ellipse(200.5, 290, 5, 5);
} else if (choiceA2==3)
{
stroke(0);
strokeWeight(3);
line(185, 265, 215, 265);
line(185, 275, 215, 275);
line(185, 285, 215, 285);
line(200, 264, 200, 287);
noStroke();
strokeWeight(1);
}
}
//Calculates if mouse actually pressed the button, then changes that part of the robot
void mousePressed()
{
//Leg button pressed checker
if (mouseX<50&&mouseX>0&&mouseY<60)
{
fill(199, 21, 133);
rect(40, 40, 25, 25);
choiceL+=1;
//resets the options again on loop
if (choiceL>=4)
{
choiceL=1;
}
}
//Checks for the head button
else if (mouseX<52&&mouseX>0&&mouseY<142&&mouseY>115)
{
fill(199, 21, 133);
rect(40, 130, 25, 25);
head+=1;
//resets the options again on loop
if (head>3)
{
head=1;
}
}
//Checks for the eyes button
else if (mouseX>340&&mouseX<370&&mouseY<50)
{
choiceE+=1;
fill(199, 21, 133);
rect(360, 40, 25, 25);
//resets the options again on loop
if (choiceE>=4)
{
choiceE=0;
}
}
//Checks for the mouth button
else if (mouseX<370&&mouseX>340&&mouseY<120&&mouseY>90)
{
choiceM+=1;
fill(199, 21, 133);
rect(360, 100, 25, 25);
//resets the options again on loop
if (choiceM>=4)
{
choiceM=0;
}
}
//Checks for the accessories button
else if (mouseX>340&&mouseX<370&&mouseY<170&&mouseY>155)
{
choiceA+=1;
fill(199, 21, 133);
rect(360, 160, 25, 25);
//resets the options again on loop
if (choiceA>=4)
{
choiceA=0;
}
}
//Checks for the Shirt button
else if (mouseX>340&&mouseX<370&&mouseY<230&&mouseY>200)
{
choiceA2+=1;
fill(199, 21, 133);
rect(360, 220, 25, 25);
//resets the options again on loop
if (choiceA2>=4)
{
choiceA2=0;
}
}
//Checks for the pants button
else if (mouseX>0&&mouseX<50&&mouseY<230&&mouseY>200)
{
choiceP+=1;
fill(199, 21, 133);
rect(40, 220, 25, 25);
//resets the options again on loop
if (choiceP>=3)
{
choiceP=0;
}
}
}