/* Title: Final Mission By: Zhe Yue Vertical mouse movement controls the UFO's movement vertically while the UFO's antenna stays in place, horizontal mouse movement controls the spaceship's movement horizontally . Stars in the background brightens and dims when the mouse moves around. When the mouse is pressed, the UFO's antenna glows and shoots a beam at the mouse. Text appears when the drawing is launched and when the mouse is pressed. */ void setup() { size(400, 400); //set screen size smooth(); //enable anti-aliasing rectMode(CORNERS); ellipseMode(CORNERS); //set rect and ellipse modes frameRate(30); //set framerate println ("Final Mission"); //prints text when drawing launches } void draw() { //background color background(0, 8, 24); //dark blue //dim stars (round) noStroke(); //disable lines fill(220-mouseY/2, 220-mouseY/2, 200-mouseY/2); //vertical mouse movement changes brightness ellipse(50, 160, 60, 170); ellipse(105, 190, 110, 195); ellipse(20, 340, 25, 345); ellipse(50, 320, 60, 330); ellipse(135, 380, 140, 385); ellipse(285, 250, 290, 255); ellipse(300, 110, 305, 115); ellipse(320, 220, 330, 230); ellipse(340, 360, 345, 365); ellipse(350, 370, 360, 380); //bright stars (pointed) fill(220-mouseX/3, 220-mouseX/3, 200-mouseX/3); //horizontal mouse movement changes brightness, doesn't become as dim as round stars triangle(70, 120, 67, 140, 73, 140); triangle(70, 160, 67, 140, 73, 140); triangle(50, 140, 70, 137, 70, 143); triangle(90, 140, 70, 137, 70, 143); triangle(130, 240, 128, 250, 132, 250); triangle(130, 260, 128, 250, 132, 250); triangle(120, 250, 130, 248, 130, 252); triangle(140, 250, 130, 248, 130, 252); triangle(360, 150, 357, 170, 363, 170); triangle(360, 190, 357, 170, 363, 170); triangle(340, 170, 360, 167, 360, 173); triangle(380, 170, 360, 167, 360, 173); triangle(380, 130, 378, 140, 382, 140); triangle(380, 150, 378, 140, 382, 140); triangle(370, 140, 380, 138, 380, 142); triangle(390, 140, 380, 138, 380, 142); triangle(310, 300, 308, 310, 312, 310); triangle(310, 320, 308, 310, 312, 310); triangle(300, 310, 310, 308, 310, 312); triangle(320, 310, 310, 308, 310, 312); //UFO (top and bottom moves up when mouse moves down) //antenna (stationary) fill(130, 130, 115); //grey triangle(180, 60, 220, 60, 200, 165); ellipse(185, 135, 215, 165); //UFO top rect(80, 0-mouseY/15, 320, 90-mouseY/15); rect(0, 0-mouseY/15, 80, 60-mouseY/15); rect(320, 0-mouseY/15, 400, 60-mouseY/15); triangle(0, 60-mouseY/15, 80, 60-mouseY/15, 80, 90-mouseY/15); triangle(320, 60-mouseY/15, 400, 60-mouseY/15, 320, 90-mouseY/15); stroke(50, 50, 40); //enable lines, dark grey strokeWeight(2); //thicker lines line(0, 20-mouseY/15, 100, 80-mouseY/15); line(110, 0-mouseY/15, 145, 80-mouseY/15); line(200, 0-mouseY/15, 200, 80-mouseY/15); line(290, 0-mouseY/15, 255, 80-mouseY/15); line(400, 20-mouseY/15, 300, 80-mouseY/15); noStroke(); //disable lines fill(100, 100, 90); //slightly darker grey ellipse(80, 70-mouseY/15, 320, 105-mouseY/15); //UFO bottom fill(80, 80, 66); //dark grey ellipse(130, 80-mouseY/15, 270, 100-mouseY/15); triangle(130, 90-mouseY/15, 150, 90-mouseY/15, 150, 120-mouseY/15); triangle(270, 90-mouseY/15, 250, 90-mouseY/15, 250, 120-mouseY/15); rect(150, 90-mouseY/15, 250, 120-mouseY/15); //ship (moves horizontally with mouse) fill(250, 75, 0); //orange triangle(mouseX, 380, mouseX-10, 365, mouseX+10, 365); //exhaust flame fill(80, 80, 66); //grey triangle(mouseX, 350, mouseX-15, 370, mouseX+15, 370); //exhaust fill(160, 20, 0); //red triangle(mouseX-15, 330, mouseX-15, 360, mouseX-35, 360); //left fin triangle(mouseX+15, 330, mouseX+15, 360, mouseX+35, 360); //right fin fill(200, 195, 190); //white triangle(mouseX-15, 320, mouseX-15, 360, mouseX-25, 320); //ship bottom left triangle(mouseX+15, 320, mouseX+15, 360, mouseX+25, 320); //ship bottom right rect(mouseX-15, 320, mouseX+15, 360); //ship bottom middle ellipse(mouseX-27, 270, mouseX+27, 345); //ship middle triangle(mouseX-26, 295, mouseX+26, 295, mouseX, 250); //ship top fill(160, 20, 0); //red triangle(mouseX-18, 280, mouseX+18, 280, mouseX, 250); //ship cap fill(80, 80, 66); //grey ellipse(mouseX-15, 285, mouseX+15, 315); //window frame fill(145, 155, 155); //light blue ellipse(mouseX-12, 289, mouseX+12, 311); //window fill(160, 20, 0); //red rect(mouseX-2, 330, mouseX+2, 360); //middle fin } void mousePressed() { //when mouse is pressed, antenna glows and shoots a triangular beam at mouse //antenna glow fill(125, 175, 220); //blue ellipse(170, 120, 230, 180); //glow //beam fill(165, 230, 250); //lighter blue triangle(185, 150, 215, 150, mouseX, mouseY); //beam //redraw antenna fill(130, 130, 115); //grey triangle(180, 60, 220, 60, 200, 165); ellipse(185, 135, 215, 165); //redraw UFO //UFO top rect(80, 0-mouseY/15, 320, 90-mouseY/15); rect(0, 0-mouseY/15, 80, 60-mouseY/15); rect(320, 0-mouseY/15, 400, 60-mouseY/15); triangle(0, 60-mouseY/15, 80, 60-mouseY/15, 80, 90-mouseY/15); triangle(320, 60-mouseY/15, 400, 60-mouseY/15, 320, 90-mouseY/15); stroke(50, 50, 40); //enable lines, dark grey strokeWeight(2); //thicker lines line(0, 20-mouseY/15, 100, 80-mouseY/15); line(110, 0-mouseY/15, 145, 80-mouseY/15); line(200, 0-mouseY/15, 200, 80-mouseY/15); line(290, 0-mouseY/15, 255, 80-mouseY/15); line(400, 20-mouseY/15, 300, 80-mouseY/15); noStroke(); //disable lines fill(100, 100, 90); //slightly darker grey ellipse(80, 70-mouseY/15, 320, 105-mouseY/15); //UFO bottom fill(80, 80, 66); //dark grey ellipse(130, 80-mouseY/15, 270, 100-mouseY/15); triangle(130, 90-mouseY/15, 150, 90-mouseY/15, 150, 120-mouseY/15); triangle(270, 90-mouseY/15, 250, 90-mouseY/15, 250, 120-mouseY/15); rect(150, 90-mouseY/15, 250, 120-mouseY/15); println("Zap!"); //prints text when mouse is pressed }