Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
/*Interactive Medua Drawing: Michael McAllister
Fighter jet.
Move the mouse around the screen to move the plane/view.
Left click on the mouse to get a lock-on indicator.
*/


//window size 400,400 pixels 
void setup() {

size(400, 400);

noSmooth();  
}



void draw(){
  
  background(165, 200, 230);
  
  frameRate(30);



// Clouds

  noStroke();
  fill(230, 230, 230);
  ellipse(50-mouseX/3, 150+mouseY/3, 150+mouseX/3, 5+mouseY/4);
  
  noStroke();
  fill(240, 240, 240);
  ellipse(0-mouseX/3, 110+mouseY/3, 100+mouseX/3, 10+mouseY/4);
  
  noStroke();
  fill(220, 220, 220);
  ellipse(550-mouseX/3, 20+mouseY/3, 450+mouseX/7, 65+mouseY/4);
  
  noStroke();
  fill(255, 255, 255);
  ellipse(50-mouseX/3, 0+mouseY/3, 400+mouseX/3, 55+mouseY/4);



// Small plane
    
  fill(150, 150, 150);
  noStroke();
  ellipse(0+mouseX, 400-mouseY, 20, 20);
  
  fill(120, 120, 120);
  noStroke();
  rect(-20+mouseX, 400-mouseY, 40, 10);
  
  fill(120, 120, 120);
  noStroke();
  rect(-25+mouseX, 380-mouseY, 5, 20);
  
  fill(120, 120, 120);
  noStroke();
  rect(20+mouseX, 380-mouseY, 5, 20);
  
  fill(120, 120, 120);
  noStroke();
  rect(-70+mouseX, 400-mouseY, 50, 5);
  
  fill(120, 120, 120);
  noStroke();
  rect(20+mouseX, 400-mouseY, 50, 5);
  
  fill(90, 90, 90);
  noStroke();
  ellipse(-20+mouseX, 410-mouseY, 20, 20);
  
  fill(90, 90, 90);
  noStroke();
  ellipse(20+mouseX, 410-mouseY, 20, 20);
  
  fill(255, 255, 100);
  stroke(235,30, 30);
  ellipse(-20+mouseX, 410-mouseY, 10, 10);
  
  fill(255, 255, 100);
  stroke(235, 30, 30);
  ellipse(20+mouseX, 410-mouseY, 10, 10);
  


// Cockpit framework
  
  noFill();
  strokeWeight(12.0);
  stroke(30, 30, 30);
  ellipse(200, 290, 400, 400);
  
  fill(20, 20, 20);
  noStroke();
  rect(80, 270, 240, 140);
  
  fill(20, 20, 20);
  noStroke();
  rect(0, 300, 400, 100);
  
  noStroke();
  fill(60, 60, 60);
  triangle(150, 240, 0, 290, 0, 390);
  
  fill(60, 60, 60);
  triangle(250, 240, 400, 290, 400, 390);
  
  

// UI frame base for HUD
  
  fill(60, 60, 60);
  strokeWeight(1.0);
  rect(150, 140, 10, 100);
  
  fill(60, 60, 60);
  rect(240, 140, 10, 100);
  
  fill(45, 45, 45);
  noStroke();
  rect(130, 240, 140, 60);
  
  fill(45, 45, 45);
  noStroke();
  triangle(150, 220, 150, 240, 130, 240);
  
  fill(45, 45, 45);
  noStroke();
  triangle(160, 220, 160, 240, 180, 240);
  
  fill(45, 45, 45);
  noStroke();
  triangle(240, 240, 240, 220, 220, 240);
  
  fill(45, 45, 45);
  noStroke();
  triangle(250, 220, 250, 240, 270, 240);
  
  fill(45, 45, 45);
  noStroke();
  triangle(270, 260, 270, 300, 300, 260);
  
  fill(45, 45, 45);
  noStroke();
  triangle(130, 260, 130, 300, 100, 260);
  
  

//Consol guage controlls

  fill(75, 125, 85);
  stroke(0, 0, 0);
  ellipseMode(CENTER);
  ellipse(150, 270, 20, 20);
  
  fill(75, 125, 85);
  stroke(0, 0, 0);
  ellipseMode(CENTER);
  ellipse(170, 270, 20, 20);
  
  fill(75, 125, 85);
  stroke(0, 0, 0);
  ellipseMode(CENTER);
  ellipse(190, 290, 20, 20);
  
  fill(75, 125, 85);
  stroke(0, 0, 0);
  ellipseMode(CENTER);
  ellipse(210, 270, 20, 20);
  
  fill(75, 125, 85);
  stroke(0, 0, 0);
  ellipseMode(CENTER);
  ellipse(230, 270, 20, 20);
  
  fill(75, 125, 85);
  stroke(0, 0, 0);
  rect(240, 260, 30, 20);
  
  fill(60, 60, 60);
  triangle(260, 260, 270, 260, 270, 280);
  
  fill(60, 60, 60);
  triangle(240, 260, 240, 280, 250, 260);
  
  
  
// Decorative HUD
  
  fill(175, 255, 110, 50);
  noStroke();
  rect(160, 140, 80, 100);
  
  stroke(175, 255, 110);
  noFill();
  ellipse(200, 200, 30, 30);
  
  stroke(175, 255, 110);
  noFill();
  line(200, 170, 200, 200);
  
  stroke(175, 255, 110);
  noFill();
  line(170, 150, 170, 200);
  
  stroke(175, 255, 110);
  noFill();
  line(230, 150, 230, 200);
  
  stroke(175, 255, 110);
  noFill();
  line(220, 150, 230, 150);
  
  stroke(175, 255, 110);
  noFill();
  line(220, 200, 230, 200);
  
  stroke(175, 255, 110);
  noFill();
  line(170, 150, 180, 150);
  
  stroke(175, 255, 110);
  noFill();
  line(170, 200, 180, 200);
  


// Controlls
  
  // Flight stick
  
  fill(60, 60, 60);
  noStroke();
  rect(190, 330+mouseY/6, 20, 50);
  
  rect(190, 380+mouseY/6, 30, 20);
  
  triangle(210, 360+mouseY/6, 210, 380+mouseY/6, 220, 380+mouseY/6);
  
  triangle(210, 330+mouseY/6, 210, 350+mouseY/6, 220, 330+mouseY/6);
  
  triangle(180, 320+mouseY/6, 200, 320+mouseY/6, 200, 340+mouseY/6);
  
  ellipse(205, 320+mouseY/6, 30, 30);
  
  fill(230, 40, 40);
  stroke(0, 0, 0);
  ellipse(215, 315+mouseY/6, 10, 10);
  
  fill(230, 40, 40);
  rect(180, 310+mouseY/6, 10, 10);
  
  fill(230, 40, 40);
  noStroke();
  rect(200, 310+mouseY/6, 10, 20);
  
  fill(230, 40, 40);
  noStroke();
  triangle(190, 310+mouseY/6, 200, 310+mouseY/6, 200, 320+mouseY/6);
  
  
  // Rudder petals
  
  fill(0, 0, 0);
  stroke(50, 50, 50);
  rect(130, 340, 20, 40);
  
  fill(0, 0, 0);
  stroke(50, 50, 50);
  rect(250, 340, 20, 40);
  
  fill(90, 90, 90);
  rect(120, 320, 40, 30+mouseX/10);
  
  fill(90, 90, 90);
  rect(240, 320, 40, 60-mouseX/10);
  
  
  
// Tone Marker BOX

  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  rect(-15+mouseX, 385-mouseY, 30, 30);
  
  
  
// Pitch guage + HUD
  
  //Top left ammo counter
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  rect(20, 20, 80, 20);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  ellipse(30, 30, 10, 15);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  ellipse(40, 30, 10, 15);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(50, 22.5, 50, 37.5);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  ellipse(60, 30, 10, 15);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  ellipse(70, 30, 10, 15);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  ellipse(80, 30, 10, 15);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  ellipse(90, 30, 10, 15);
  
  //Right side pitch guage
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line( 380, 0, 380, 400);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(360, -200+mouseY/2, 380, -200+mouseY/2);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(370, -150+mouseY/2, 380, -150+mouseY/2);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(360, -100+mouseY/2, 380, -100+mouseY/2);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(370, -50+mouseY/2, 380, -50+mouseY/2);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(360, 0+mouseY/2, 380, 0+mouseY/2);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(370, 50+mouseY/2, 380, 50+mouseY/2);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(360, 100+mouseY/2, 380, 100+mouseY/2);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(370, 150+mouseY/2, 380, 150+mouseY/2);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(360, 200+mouseY/2, 380, 200+mouseY/2);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(370, 250+mouseY/2, 380, 250+mouseY/2);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(360, 300+mouseY/2, 380, 300+mouseY/2);
  
  noFill();
  strokeWeight(2.0);
  stroke(175, 255, 110);
  line(370, 350+mouseY/2, 380, 350+mouseY/2);
  
  }
  
    
    
void mousePressed(){
    
  frameRate(2);
  noFill();
  strokeWeight(3.0);
  stroke(255, 110, 110);
  rect(-15+mouseX, 385-mouseY, 30, 30);
  
  noFill();
  strokeWeight(3.0);
  stroke(255, 110, 110);
  rect(-15+mouseX, 415-mouseY, 30, 10);
  
  line(-15+mouseX, 385-mouseY, 15+mouseX, 415-mouseY);
  
  line(15+mouseX, 385-mouseY, -15+mouseX, 415-mouseY);
    
  }