/*
Title: "Lift Off"
Description: A rocket launching from a platform on Earth to the outer orbit of space.
Interactivity:
1.Press any key to enable the voice command line: "Ready to launch!"
2.Move mouse upwards to make the rocket and the environment move. (please ensure that the
cursor is within the canvas when moving the rocket)
3.Click the mouse to see the yellow stars flicker and grow in size.
Author: Sukhraj Johal
Class: Introduction to Media Computation
Project:Interactive Drawing Assignment
Institution:Sheridan College
Date:September 18th, 2016
*/
void setup() {
//creates a canvas that is 400 x 400 pixels
size(400, 400);
}
void draw() {
//causes no outline for any of the 2D primitive shapes
noStroke();
//sets up the background color
background(31, 35, 50);
//moon (creates the overall shape)
fill(230);
ellipse(360, 60, 40, 40);
//creates moon craters (Small)
fill(200);
ellipse(350, 70, 5, 5);
ellipse(370, 50, 5, 5);
//creates moon craters(Large)
fill(170);
ellipse(355, 45, 8, 8);
fill(180);
ellipse(365, 65, 10, 10);
//stars
// creates large yellow stars
fill(250, 255, 0);
ellipse(30, 40, 5, 5);
ellipse(140, 230, 5, 5);
ellipse(320, 220, 5, 5);
ellipse(240, 10, 5, 5);
//creates small yellow stars
ellipse(100, 100, 2, 2);
ellipse(220, 80, 2, 2);
//creates white stars
fill(255, 255, 255);
ellipse(20, 20, 5, 5);
ellipse(60, 80, 5, 5);
ellipse(260, 180, 5, 5);
ellipse(390, 120, 5, 5);
ellipse(180, 180, 5, 5);
//creates small white stars
ellipse(60, 200, 2, 2);
ellipse(160, 120, 2, 2);
ellipse(340, 20, 2, 2);
ellipse(380, 200, 2, 2);
ellipse(280, 40, 2, 2);
ellipse(100, 190, 2, 2);
//creates faded white stars (less visible)
fill(100);
ellipse(310, 80, 5, 5);
ellipse(60, 20, 5, 5);
ellipse(60, 130, 5, 5);
//meteors
//meteor 1 on the left side of the canvas (moves in x axis using frameCount)
//meteor(tail)
fill(255, 255, 255, 230);
triangle(110-frameCount/10, 40, 110-frameCount/10, 60, 140-frameCount/10, 50);
//meteor (ball)
fill(180);
ellipse(110-frameCount/10, 50, 20, 20);
//meteor 2 right side of the canvas (moves in x axis using frameCount)
//meteor (tail)
fill(255, 255, 255, 230);
triangle(310-frameCount/10, 180, 310-frameCount/10, 200, 340-frameCount/10, 190);
//meteor (ball)
fill(180);
ellipse(310-frameCount/10, 190, 20, 20);
//atmosphere
//third layer of the atmosphere(transparent) moves down as the mouse moves up
fill(110, 108, 210+mouseY, 150);
ellipse(200, 310-mouseY, 500+mouseY, 100+mouseY);
//second layer of the atmosphere (slightly transparent) moves down as the mouse moves up
fill(125, 123, 244+mouseY, 240);
ellipse(200, 400-mouseY, 500+mouseY, 200+mouseY);
//Earth Sky: first layer of the atmosphere (opaque) moves down as the mouse moves up
fill(130, 154, 236+mouseY);
ellipse(200, 500-mouseY, 500+mouseY, 350+mouseY);
//clouds (dissapears as the rocket moves upwards)
//creates clouds (LEFT SIDE of the canvas)
fill(240+mouseY, 255, 255);
// centers the rectangle
rectMode(CENTER);
rect(60, 290, 80, -mouseY/10, 40);
rect(55, 270, 50, -mouseY/10, 40);
//creates clouds(RIGHT SIDE of the canvas)
rect(340, 290, 80, -mouseY/10, 40);
rect(330, 270, 40, -mouseY/10, 40);
rect(360, 325, 40, -mouseY/40, 40);
// Platform (dissapears as the rocket moves upwards)
//rocket extender (connects to the rocket at the launch platform)
fill(156, 140, 135);
rect(170, 315, 40, -mouseY/40);
//Rocket (building the rocketship)
// rocket fins
// Rocket Fins (left side) moves in mouseY direction
fill(255, 78, 62);
triangle(200, -2+mouseY*0.7, 200, 60+mouseY*0.7, 170, 60+mouseY*0.7);
//Rocket Fins (right side)
triangle(200, -2+mouseY*0.7, 200, 60+mouseY*0.7, 230, 60+mouseY*0.7);
//fire exhaust
//fire exhaust (yellow): disappears when the rocket moves to upper atmosphere levels
fill(254, 248, 129);
triangle(200, 45+mouseY, 190, 10+mouseY*0.85, 210, 10+mouseY*0.85);
//rocket body
//creates rocket's body (moves in the mouseY direction)
fill(240);
rect(200, 35+mouseY*0.7, 40, 75, 255);
//rocket windows
//creates a thick line around the windows
strokeWeight(2);
//stroke color
stroke(72, 209, 249);
//creates the rocket windows (moves in mouseY direction)
fill(207, 242, 254);
rect(200, 30+mouseY*0.7, 10, 10, 255);
rect(200, 45+mouseY*0.7, 10, 10, 255);
//disables outline around primitive shapes
noStroke();
//bottom of the rocket(exhaust) moves in mouseY direction
fill(197, 202, 214);
rect(200, 75+mouseY*0.7, 20, 10, 100);
//Launch Platform (disappears as rocket moves upwards in mouseY direction)
//creates Platform Tower
fill(94, 73, 72);
rect(140, 340, 20, -mouseY/4, 100);
//creates Platform body
fill(94, 73, 72);
rect(200, 400, 300, -mouseY/4);
//creates launch pad (where the rocket rests on)
fill(156, 140, 135);
rect(200, 355, 300, -mouseY/40, 200);
//creates Platform ends
fill(94, 73, 72);
rect(55, 390, 10, -mouseY/4, 200);
rect(345, 390, 10, -mouseY/4, 200);
//Earth (dissappears as rocket moves upwards in mouseY direction)
//creates Earth Ground (Green)
fill(31, 180, 75);
rect(200, 390, 400, -mouseY/19);
//creates Earth Ground(Brown)
fill(20, 150, 40);
rect(200, 395, 400, -mouseY/35);
}
/* when the mouse is pressed the yellow stars grow in size and twinkle in white */
//yellow stars
void mousePressed() {
fill(255);
ellipse(30, 37, 8, 8);
ellipse(140, 230, 8, 8);
ellipse(320, 220, 8, 8);
ellipse(240, 10, 8, 8);
//small yellow stars
ellipse(100, 100, 5, 5);
ellipse(220, 80, 5, 5);
}
//Press any key to execute the println() phrase in the parentheses
void keyPressed() {
println("Ready to launch!");
}