/* Title: Missed the Bus Author: Pamela Payad Description: When moving the mouse left and right, a person is the mouse position and it gives the illusion of the person catching the bus. The car in the background is moving with the person but at double speed. Some stars become brighter. When moving the mouse up and down, the rest of the stars get brighter. When clicking the mouse, the headlights of the bus and the car shine and flash. "HONK!" text in the console is displayed. When pressing a key, the person's hand "raises". "Missed the bus again!" text in the console is displayed. */ //set up the window in a 400x400 window and display some text void setup() { size(400, 400); println("Press a key to stop the bus."); } void draw() { //set the framerate of the drawing frameRate(60); //no stroke onto any of the shapes drawn and set background colour noStroke(); background(0, 0, 118); //draw basic background shapes //bottom rail fill(175); rect(0, 320, 400, 80); //bottom rail 2 fill(150); rect(0, 320, 380, 60); //road fill(50); rect(0, 250, 400, 70); //road 2 fill(75); rect(10, 280, 400, 40); //road line fill(255, 200, 0); rect(30, 295, 30, 10); fill(255, 200, 0); rect(120, 295, 30, 10); fill(255, 200, 0); rect(210, 295, 30, 10); fill(255, 200, 0); rect(300, 295, 30, 10); fill(255, 200, 0); rect(390, 295, 30, 10); //top rail fill(100); rect(0, 220, 400, 50); fill(120); rect(10, 230, 400, 40); //car fill(176, 0, 29); rect(mouseX*2, 240, 80, 30); rect(mouseX*2+10, 227, 65, 30); fill(0); rect(mouseX*2+15, 230, 10, 10); fill(255, 80); rect(mouseX*2+10, 230, 40, 10); fill(255, 255, 0); rect(mouseX*2-2, 242, 5, 5); //dividing rail fill(150); rect(0, 250, 400, 20); fill(175); rect(-20, 260, 400, 10); //bus fill(255); rect(-mouseX+20+width, 240, 140, 70); fill(0, 138, 196); rect(-mouseX+20+width, 240, 140, 50); fill(0, 138, 196); rect(-mouseX+30+width, 235, 120, 50); fill(240, 177, 2); rect(-mouseX+20+width, 285, 80, 5); fill(240, 177, 2); rect(-mouseX+100+width, 285, 5, 12); fill(240, 177, 2); rect(-mouseX+100+width, 292, 60, 5); //sign fill(255); ellipse(-mouseX+115+width, 250, 25, 10); //wheels fill(0); rect(-mouseX+40+width, 300, 20, 20); rect(-mouseX+110+width, 300, 20, 20); //seating fill(0); rect(-mouseX+35+width, 270, 10, 10); rect(-mouseX+65+width, 270, 10, 10); rect(-mouseX+95+width, 270, 10, 10); //windows fill(200, 80); rect(-mouseX+30+width, 260, 90, 20); //doors fill(200); rect(-mouseX+135+width, 260, 7, 50); rect(-mouseX+145+width, 260, 7, 50); //headlight fill(255, 255, 0); rect(-mouseX+155+width, 300, 7, 7); //person fill(229, 211, 146); rect(mouseX-20, 295, 15, 30); rect(mouseX-17, 285, 8, 8); //shirt fill(57, 200, 53); rect(mouseX-20, 295, 15, 20); //arm //rect(mouseX-8, 280, 6, 13); rect(mouseX-24, 300, 5, 13); //shoes fill(77, 63, 11); rect(mouseX-20, 320, 15, 5); //bus stop fill(210); rect(180, 260, 3, 70); fill(0, 13, 255); rect(179, 260, 5, 15); //buildings //building 1 fill(67, 58, 104); rect(20, 20, 80, 200); fill(84, 73, 129); rect(30, 20, 80, 200); //building2 fill(49, 43, 76); rect(120, 60, 50, 160); fill(64, 56, 99); rect(130, 60, 50, 160); //building3 fill(67, 53, 130); rect(190, 110, 130, 110); fill(75, 59, 144); rect(200, 110, 130, 110); //building4 fill(107, 99, 143); rect(340, 40, 100, 180); fill(130, 119, 175); rect(350, 40, 100, 180); //stars //when you move the mouse up and down, stars become brighter/dimmer for 3 stars fill(220-mouseY/2, 220-mouseY/2, 200-mouseY/2); //draw the stars with a glow effect by having some ellipses lower opacity ellipse(150, 10, 5, 5); fill(255, 50); ellipse(150, 10, 20, 20); fill(255, 50); ellipse(150, 10, 15, 15); fill(220-mouseY/2, 220-mouseY/2, 200-mouseY/2); ellipse(350, 10, 5, 5); fill(255, 50); ellipse(350, 10, 20, 20); fill(255, 50); ellipse(350, 10, 15, 15); fill(220-mouseY/2, 220-mouseY/2, 200-mouseY/2); ellipse(210, 90, 5, 5); fill(255, 50); ellipse(210, 90, 20, 20); fill(255, 50); ellipse(210, 90, 15, 15); //When you move the mouse left and right, the rest of the stars become dimmer/brighter for 2 stars fill(220-mouseX/3, 220-mouseX/3, 200-mouseX/3); ellipse(280, 50, 5, 5); fill(255, 50); ellipse(280, 50, 20, 20); fill(255, 50); ellipse(280, 50, 15, 15); fill(220-mouseX/3, 220-mouseX/3, 200-mouseX/3); ellipse(0, 100, 5, 5); fill(255, 50); ellipse(0, 100, 20, 20); fill(255, 50); ellipse(0, 100, 15, 15); } //when the mouse is pressed, create headlight flashing illusion and display text on the console void mousePressed() { //create headlight flashing illusion fill(246, 255, 10, 90); quad(-mouseX+160+width, 310, -mouseX+160+width, 300, 400, 250, 400, 320); //display text on the console fill(246, 255, 10, 90); quad(mouseX*2-400+width, 242, mouseX*2-400+width, 245, 0, 250, 0, 210); println("HONK!"); } //when a key is pressed, flash the "arm" of the person and display text void keyPressed() { //set frame rate lower so the hand flashes faster frameRate(4); //display text println("Missed the bus again!"); //flash the arm fill(57, 200, 53); rect(mouseX-8, 280, 6, 13); }