/* Tristan Peskett
move your jet across the screen as you fly over islands and oceans
click mouse to fire lazer
hold space for thruster boost
*/
void setup() {
//define window size
size(400, 400);
//set to 30fps
frameRate(30);
noCursor();
}
void draw() {
background(80, 157, 182);
rectMode(CENTER);
//background waves
noFill();
stroke(255, 255, 255, 90);
strokeWeight(6);
rect(200, -309+(frameCount*1 % 1000), 500, 400);
ellipse(100, -169+(frameCount*1 % 1000), 400, 200);
ellipse(30, -149+(frameCount*1 % 1000), 400, 200);
ellipse(400, -149+(frameCount*1 % 1000), 140, 200);
ellipse(360, -179+(frameCount*1 % 1000), 140, 200);
ellipse(200, -482+(frameCount*1 % 1000), 600, 200);
strokeWeight(2);
ellipse(200, -490+(frameCount*1 % 1000), 600, 200);
// island waves
noFill();
stroke(255, 255, 255, 90);
strokeWeight(6);
ellipse(40,-800+(frameCount*1 % 2000), 110,140);
//background sand
noStroke();
fill(220, 220, 185);
rect(200, -310+(frameCount*1 % 1000), 500, 400);
ellipse(100, -170+(frameCount*1 % 1000), 400, 200);
ellipse(30, -150+(frameCount*1 % 1000), 400, 200);
ellipse(400, -150+(frameCount*1 % 1000), 140, 200);
ellipse(360, -180+(frameCount*1 % 1000), 140, 200);
ellipse(200, -480+(frameCount*1 % 1000), 600, 200);
//island sand
noStroke();
fill(220, 220, 185);
ellipse(40,-800+(frameCount*1 % 2000), 108,138);
//background grass
noStroke();
fill(100, 163, 122);
rect(200, -330+(frameCount*1 % 1000), 500, 400);
ellipse(100, -180+(frameCount*1 % 1000), 400, 200);
ellipse(30, -160+(frameCount*1 % 1000), 400, 200);
ellipse(400, -160+(frameCount*1 % 1000), 140, 200);
ellipse(360, -190+(frameCount*1 % 1000), 140, 200);
ellipse(200, -470+(frameCount*1 % 1000), 600, 200);
//island grass
noStroke();
fill(46, 162, 117,180);
ellipse(40,-800+(frameCount*1 % 2000), 90,120);
//building
noStroke();
fill(50, 50, 50, 100);//1
rect(200, -190+(frameCount*1 % 1000), 40, 30);
fill(117);
rect(210, -200+(frameCount*1 % 1000), 40, 30);
fill(81);
rect(210, -200+(frameCount*1 % 1000), 35, 25);
fill(50, 50, 50, 100);//2
rect(280, -220+(frameCount*1 % 1000), 80, 40);
fill(117);
rect(290, -230+(frameCount*1 % 1000), 80, 40);
fill(81);
rect(290, -230+(frameCount*1 % 1000), 75, 35);
fill(50, 50, 50, 100);//3
rect(280+100, -120-300+(frameCount*1 % 1000), 80, 40);
fill(117);
rect(290+100, -130-300+(frameCount*1 % 1000), 80, 40);
fill(81);
rect(290+100, -130-300+(frameCount*1 % 1000), 75, 35);
//trees
fill(50, 50, 50, 90);//1
ellipse(148+25, -398+25+(frameCount*1 % 1000), 25, 25);
fill(43, 104, 40);
ellipse(152+25, -402+25+(frameCount*1 % 1000), 25, 25);
fill(62, 141, 49);
ellipse(154+25, -404+25+(frameCount*1 % 1000), 20, 20);
fill(92, 161, 69);
ellipse(154+25, -404+25+(frameCount*1 % 1000), 16, 16);
fill(50, 50, 50, 90);//2
ellipse(148, -398+(frameCount*1 % 1000), 25, 25);
fill(42, 111, 39);
ellipse(152, -402+(frameCount*1 % 1000), 25, 25);
fill(62, 141, 49);
ellipse(154, -404+(frameCount*1 % 1000), 20, 20);
fill(92, 161, 69);
ellipse(154, -404+(frameCount*1 % 1000), 16, 16);
fill(50, 50, 50, 90);//3
ellipse(148+40, -398+(frameCount*1 % 1000), 25, 25);
fill(42, 111, 39);
ellipse(152+40, -402+(frameCount*1 % 1000), 25, 25);
fill(62, 141, 49);
ellipse(154+40, -404+(frameCount*1 % 1000), 20, 20);
fill(92, 161, 69);
ellipse(154+40, -404+(frameCount*1 % 1000), 16, 16);
fill(50, 50, 50, 90);//4
ellipse(148-30, -198+25+(frameCount*1 % 1000), 25, 25);
fill(42, 111, 39);
ellipse(152-30, -202+25+(frameCount*1 % 1000), 25, 25);
fill(62, 141, 49);
ellipse(154-30, -204+25+(frameCount*1 % 1000), 20, 20);
fill(92, 161, 69);
ellipse(154-30, -204+25+(frameCount*1 % 1000), 16, 16);
fill(50, 50, 50, 90);//5
ellipse(148-55, -198-20+(frameCount*1 % 1000), 25, 25);
fill(42, 111, 39);
ellipse(152-55, -202-20+(frameCount*1 % 1000), 25, 25);
fill(62, 141, 49);
ellipse(154-55, -204-20+(frameCount*1 % 1000), 20, 20);
fill(92, 161, 69);
ellipse(154-55, -204-20+(frameCount*1 % 1000), 16, 16);
fill(50, 50, 50, 90);//6
ellipse(148-15, -198+(frameCount*1 % 1000), 25, 25);
fill(42, 111, 39);
ellipse(152-15, -202+(frameCount*1 % 1000), 25, 25);
fill(62, 141, 49);
ellipse(154-15, -204+(frameCount*1 % 1000), 20, 20);
fill(92, 161, 69);
ellipse(154-15, -204+(frameCount*1 % 1000), 16, 16);
fill(50, 50, 50, 90);//7
ellipse(148-95, -138+(frameCount*1 % 1000), 25, 25);
fill(42, 111, 39);
ellipse(152-95, -142+(frameCount*1 % 1000), 25, 25);
fill(62, 141, 49);
ellipse(154-95, -144+(frameCount*1 % 1000), 20, 20);
fill(92, 161, 69);
ellipse(154-95, -144+(frameCount*1 % 1000), 16, 16);
//sail boats
noStroke();
fill(108,108,128,90);
ellipse(-803+(frameCount*1 % 2000), -987+(frameCount*1 % 2000), 17,8);//shadow
stroke(220,220,220,90);
strokeWeight(2);
line(-800+(frameCount*1 % 2000), -990+(frameCount*1 % 2000),-815+(frameCount*1 % 2000)+cos(millis()/40)*1, -991+(frameCount*1 % 2000));//water splash
stroke(220,220,220,150);
line(-800+(frameCount*1 % 2000), -988+(frameCount*1 % 2000),-815+(frameCount*1 % 2000)+cos(millis()/40)*1, -988+(frameCount*1 % 2000));//2
noStroke();
fill(187,188,188);
ellipse(-800+(frameCount*1 % 2000), -990+(frameCount*1 % 2000), 15,8);//boat base
fill(220,220,220);
triangle(-803+(frameCount*1 % 2000),-997+(frameCount*1 % 2000),-789+(frameCount*1 % 2000),-990+(frameCount*1 % 2000),-803+(frameCount*1 % 2000),-990+(frameCount*1 % 2000));//sail
//birds
stroke(255);
strokeWeight(2);
line(80-10, -120+(frameCount*1.8 % 1000), 72-10, -120+(frameCount*1.8 % 1000));//1
line(76.8-10, -121.5+(frameCount*1.8 % 1000), 76.8-10, -117+(frameCount*1.8 % 1000));
line(75-10, -116+(frameCount*1.8 % 1000), 77-10, -116+(frameCount*1.8 % 1000));
line(80+30, -120+(frameCount*1.8 % 1000), 72+30, -120+(frameCount*1.8 % 1000));//2
line(76.8+30, -121.5+(frameCount*1.8 % 1000), 76.8+30, -117+(frameCount*1.8 % 1000));
line(75+30, -116+(frameCount*1.8 % 1000), 77+30, -116+(frameCount*1.8 % 1000));
line(80+10, -120-20+(frameCount*1.8 % 1000), 72+10, -120-20+(frameCount*1.8 % 1000));//3
line(76.8+10, -121.5-20+(frameCount*1.8 % 1000), 76.8+10, -117-20+(frameCount*1.8 % 1000));
line(75+10, -116-20+(frameCount*1.8 % 1000), 77+10, -116-20+(frameCount*1.8 % 1000));
line(80-30, -120+20+(frameCount*1.8 % 1000), 72-30, -120+20+(frameCount*1.8 % 1000));//4
line(76.8-30, -121.5+20+(frameCount*1.8 % 1000), 76.8-30, -117+20+(frameCount*1.8 % 1000));
line(75-30, -116+20+(frameCount*1.8 % 1000), 77-30, -116+20+(frameCount*1.8 % 1000));
line(80+50, -120+20+(frameCount*1.8 % 1000), 72+50, -120+20+(frameCount*1.8 % 1000));//5
line(76.8+50, -121.5+20+(frameCount*1.8 % 1000), 76.8+50, -117+20+(frameCount*1.8 % 1000));
line(75+50, -116+20+(frameCount*1.8 % 1000), 77+50, -116+20+(frameCount*1.8 % 1000));
//ship shadow w/t parralax effect
noStroke();
fill(80, 80, 80, 50);
ellipse(mouseX/2+100, mouseY+40, 10, 20);
//cloud shadow
noStroke();
fill(50, 50, 50, 20);
ellipse(181-47, -50+-10+ (frameCount*12 % 1000), 80, 120);//1
fill(50, 50, 50, 80);
ellipse(390-60, -150+-97+ (frameCount*7 % 1000), 210, 350);//2
fill(50, 50, 50, 80);
ellipse(90-100, -279+60+ (frameCount*3 % 1000), 220, 350);//3
//clouds
noStroke();
fill(210, 220, 255);//1
ellipse(170, -238+ (frameCount*12 % 1000), 80, 100);
ellipse(190, -192+ (frameCount*12 % 1000), 80, 100);
ellipse(130, -185+ (frameCount*12 % 1000), 80, 100);
noStroke();
fill(210, 220, 255);//2
ellipse(340, -496+ (frameCount*7 % 1000), 100, 160);
ellipse(320, -414+ (frameCount*7 % 1000), 100, 150);
ellipse(399, -467+ (frameCount*7 % 1000), 100, 150);
ellipse(390, -292+ (frameCount*7 % 1000), 190, 350);
//3
ellipse(40, -482+ (frameCount*3 % 1000), 100+20, 160);
ellipse(70, -528+ (frameCount*3 % 1000), 100+20, 150);
ellipse(99, -492+ (frameCount*3 % 1000), 100+20, 150);
ellipse(90, -330+ (frameCount*3 % 1000), 190+50, 350);
//jetstream
strokeCap(ROUND);
stroke(180, 180, 180,80);
strokeWeight(25);
line(mouseX, mouseY, mouseX, mouseY+cos(millis()/80)*8+ 350);//pale smoke
stroke(255, 150, 20);
strokeWeight(15);
line(mouseX, mouseY, mouseX, pmouseY-2.5 +cos(millis()/50)*10+ 170);//large orange
stroke(255, 200, 20);
strokeWeight(10);
line(mouseX, mouseY, mouseX, pmouseY-5 +cos(millis()/20)*6+ 135);//smaller orange
stroke(255, 250, 100);
strokeWeight(5);
line(mouseX, mouseY, mouseX, pmouseY-5 +cos(millis()/10)*3+ 110);//small yellow
//engine
strokeWeight(1);
stroke(130);
fill(130, 130, 130);
rect(mouseX, mouseY, 40, 25);
strokeWeight(1);
stroke(60);
fill(50);
rect(mouseX, mouseY, 20, 25);
//ship body
noStroke();
fill(40);
rect(mouseX-10, mouseY-70, 2.5, 15);//gun
rect(mouseX+10, mouseY-70, 2.5, 15);//2
triangle(mouseX, mouseY-70, mouseX-70, mouseY, mouseX+70, mouseY);//large wings
fill(50);
triangle(mouseX, mouseY-100, mouseX-35, mouseY, mouseX+35, mouseY);//smaller wings
fill(60);
triangle(mouseX, mouseY-125, mouseX-12.5, mouseY, mouseX+12.5, mouseY);//nose and body
fill(150);
noStroke();
ellipse(mouseX, mouseY-50, 10, 30);//cockpit
fill(220);
noStroke();
ellipse(mouseX+1.5, mouseY-50, 2.5, 20);//cockpit highlight
//jet
stroke(255, 140, 0);
fill(255, 140, 0);
triangle(mouseX+27.5, mouseY+cos(millis()/18)*6+17.5, mouseX+32.5, mouseY, mouseX+22.5, mouseY);//left booster orange
stroke(255, 200, 110);
fill(255, 200, 110);
triangle(mouseX+27.5, mouseY+cos(millis()/20)*6+6, mouseX+31.5, mouseY, mouseX+23.5, mouseY);//left booster yellow
stroke(255, 140, 0);
fill(255, 140, 0);
triangle(mouseX-27.5, mouseY+cos(millis()/18)*6+17.5, mouseX-32.5, mouseY, mouseX-22.5, mouseY);//right booster orange
stroke(255, 200, 110);
fill(255, 200, 110);
triangle(mouseX-27.5, mouseY+cos(millis()/20)*6+6, mouseX-31.5, mouseY, mouseX-23.5, mouseY);//right booster yellow
//cloud above
noStroke();
fill(250, 250, 250, 180);
ellipse(40, -482+ (frameCount*3 % 1000), 100+20, 160);
ellipse(70, -528+ (frameCount*3 % 1000), 100+20, 150);
ellipse(99, -492+ (frameCount*3 % 1000), 100+20, 150);
ellipse(90, -330+ (frameCount*3 % 1000), 190+50, 350);
}
void mousePressed() {
//laser
//background(150, 130, 200);
fill(250, 200, 50);
rect(mouseX+10, mouseY-305, 1.5, 450);//lazer
rect(mouseX-10, mouseY-305, 1.5, 450);//2
noStroke();
fill(255, 255, 255, 80);
ellipse(mouseX+10, mouseY-80, 18, 14);//muzzle flash
ellipse(mouseX-10, mouseY-80, 18, 14);//2
strokeWeight(2);
stroke(230, 230, 40);
fill(255);
ellipse(mouseX+10, mouseY-80, 9, 7);//3
ellipse(mouseX-10, mouseY-80, 9, 7);//4
}
void keyPressed() {
//ultra boost
strokeCap(SQUARE);
stroke(255, 0, 0, 150);
strokeWeight(30);
fill(255);
line(mouseX, mouseY+12, mouseX, mouseY+400);
strokeWeight(10);
fill(255);//red booster
line(pmouseX-15, pmouseY+12, pmouseX, pmouseY+400);
line(pmouseX+15, pmouseY+12, pmouseX, pmouseY+400);
line(pmouseX-28, pmouseY-1, pmouseX-28, pmouseY+400);
line(pmouseX+27, pmouseY-1, pmouseX+28, pmouseY+400);
strokeWeight(4);
stroke(255, 255, 255, 20);
line(pmouseX-65, pmouseY-1, pmouseX-65, pmouseY+400);
line(pmouseX+65, pmouseY-1, pmouseX+65, pmouseY+400);
}