xxxxxxxxxx
//rocket ship
Rocket rocket1;
float y = 0;
float count = 160;
//count2 helps choose whether to run launchRocket() or land()
float count2 = 1;
void setup() {
size(200,200);
//initialize rocketship
rocket1 = new Rocket(color(255,0,0), 100, count, 40, 1);
}
void draw() {
background(106,193,247);
// draw grass
fill(0,200,0);
rect(100,190,200,20);
//draw sun
fill(245,241,50);
ellipse(40,40,40,40);
//draw clouds
fill(255);
ellipse(85,50,20,20);
ellipse(65,40,30,30);
ellipse(75,60,25,25);
ellipse(55,60,20,20);
ellipse(47,50,15,15);
//draw second cloud
ellipse(170,65,20,20);
ellipse(150,63,25,25);
ellipse(165,80,25,25);
ellipse(145,80,20,20);
ellipse(137,70,15,15);
//launch rocket
if (count >= -20){
rocket1.displayUp();
rocket1.launchRocket();
count = count - 1;
count2 = 2;
//stop rocketship upon landing
} else if (count < - 201) {
rocket1.displayDown();
count2 = 3;
//reverse motion of rocket to land it
} else if (count < -20 && count2 == 2) {
rocket1.land();
rocket1.displayDown();
count = count - 1;
}
}
class Rocket {
//local variables for class Rocket
color c;
float xpos;
float ypos;
float speed;
float size;
Rocket(color tempC, float tempXpos, float tempYpos, float tempSize, float tempSpeed) {
//initialize local variables with input parameters
c = tempC;
xpos = tempXpos;
ypos = tempYpos;
speed = tempSpeed;
size = tempSize;
}
void displayUp() {
fill(c);
noStroke();
rectMode(CENTER);
//draw rocketship
rect(xpos, ypos, size/2, size);
triangle(xpos, ypos-size, xpos+size/4, ypos-size/2, xpos-size/4, ypos-size/2);
//draw windows
fill(255);
ellipse(xpos,ypos-size/5,size/4,size/4);
ellipse(xpos,ypos-size/2,size/4,size/4);
ellipse(xpos,ypos+size/10,size/4,size/4);
//draw flames
fill(242,180,7);
triangle(xpos, ypos+size, xpos+size/4, ypos+size/3, xpos-size/4, ypos+size/3);
//draw rear accent/stripe on rocketship
fill(0);
rect(xpos,ypos+size*2/5,size/2,size/5);
}
void displayDown() {
fill(c);
noStroke();
rectMode(CENTER);
//draw rocketship
rect(xpos, ypos, size/2, size);
triangle(xpos, ypos-size, xpos+size/4, ypos-size/2, xpos-size/4, ypos-size/2);
//draw windows
fill(255);
ellipse(xpos,ypos-size/5,size/4,size/4);
ellipse(xpos,ypos-size/2,size/4,size/4);
ellipse(xpos,ypos+size/10,size/4,size/4);
//draw rear accent/stripe on rocketship
fill(0);
rect(xpos,ypos+size*2/5,size/2,size/5);
}
void launchRocket() {
//move rocketship upward
ypos = ypos - speed;
}
void land() {
//move rocketship downward
ypos = ypos + speed;
}
}