/////////////////////// //<>// ///BOMB DIFFUSE TIME/// ////Michael Guattery/// /////////////////////// /* Purpose and Functionality: Volatile multi-colored bombs are on the conveyor belt. Clicking them will diffuse/destroy them. Try not to miss! */ //bomb movement variables float bombX; float bombY; //bombSpeed float bombSpeedX; //color variables color bombColor; void setup() { size(400, 400); } void draw() { /* This part took awhile for me to organize, keeping everything in the perfect order was a challenge in itself, but paid off in the end.*/ background(100, 150, 250); backDrop(); conveyorBelt(); drawWheels(); drawBind(); moveBomb(); drawBomb(); //cursor that looks like a finger noStroke(); rectMode(CORNER); fill(255); rect(mouseX+3, mouseY+4, 6, 6, 3, 0, 2, 0); rect(mouseX+3, mouseY, 2, 6, 3, 0, 2, 0); rect(mouseX, mouseY+6, 6, 2, 6, 0, 2, 0); noCursor(); } /*This was the random function for the colors of the bomb to change, they were fun to code but challenging to find out the order they needed to switch in.*/ void typebombColor() { bombColor=color(random(240), random(230), random(230)); } /*The actual movement of the bomb was a challenge to loop, yet was possible with the if statement.*/ void moveBomb() { if (bombX<width+20) { bombX+=random(6, 15); } if (bombX>width) { bombX=0; bombY=250; typebombColor(); } } //Back Drop void backDrop() { noStroke(); rectMode(CORNERS); fill(100, 150, 250); rect(0, 0, 400, 400); fill(80, 130, 220); rect(0, 0, 400, 350); fill(50, 110, 190); rect(0, 0, 400, 300); fill(40, 90, 170); rect(0, 0, 400, 280); fill(30, 80, 150); rect(0, 0, 400, 200); fill(20, 60, 130); rect(0, 0, 400, 110); //Science lab fill(20, 40, 80); rect(0, 220, 230, 230); rect(10, 230, 20, 290); rect(210, 230, 220, 290); triangle(40, 220, 60, 190, 80, 220); rect(55, random(160, 170), 65, 210); ellipse(125, 210, 40, 40); rect(160, 180, 170, 220); rect(190, 150, 200, 220); fill(0); ellipse(300, 100, 80, 80); fill(255); ellipse(300, 100, 70, 70); fill(0); rect(297, 70, 303, 130); } //Conveyor Belt void conveyorBelt() { noStroke(); //belt fill(5, 26, 53); rect(0, 255, 400, 270); //table and legs fill(100, 150, 180); rect(5, 315, 30, 400); rect(165, 315, 190, 400); rect(325, 315, 350, 400); fill(170, 190, 220); rect(10, 315, 25, 400); rect(170, 315, 185, 400); rect(330, 315, 345, 400); rect(0, 270, 400, 315); fill(100, 150, 180); rect(5, 275, 395, 310); } //wheels /* I wanted moving wheels for my conveyor belt, so to simulate the movement of wheels I added the random function to change the size.*/ void drawWheels() { strokeWeight(random(20, 25)); stroke(20, 40, 120); point(20, 292.5); point(55, 292.5); point(90, 292.5); point(125, 292.5); point(160, 292.5); point(195, 292.5); point(230, 292.5); point(265, 292.5); point(300, 292.5); point(335, 292.5); point(370, 292.5); } //wheelbind void drawBind() { noStroke(); fill(0); rect(random(2, 5), 290.5, random(395, 398), 294.5); strokeWeight(10); stroke(255); point(20, 292.5); point(55, 292.5); point(90, 292.5); point(125, 292.5); point(160, 292.5); point(195, 292.5); point(230, 292.5); point(265, 292.5); point(300, 292.5); point(335, 292.5); point(370, 292.5); } //Bombs void drawBomb() { //Lit Fuse rectMode(CORNERS); noStroke(); fill(random (255), random (120), random (80)); ellipse(bombX+35, 173, random(10, 20), random(14, 23)); //actual bomb part fill(0); rect(bombX+20, 195, bombX+50, 205); fill(bombColor); rect(bombX, 215, bombX+70, 255); rect(bombX+10, 205, bombX+60, 265); rect(bombX+10, 185, bombX+60, 195); fill(255); rect(bombX+30, 175, bombX+40, 185); rect(bombX+15, 230, bombX+25, 240); rect(bombX+35, 230, bombX+45, 240); } //mousePressed /* This is what I used to create the clickable bombs, clicking resets the bomb location.*/ void mousePressed() { //diffuse bomb if (mousePressed=true && bombX>=mouseX-30 && bombX<=mouseX+30 && bombY>=mouseY-30 && bombY<=mouseY+30) { bombX=-70; bombY=250; } }