Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
//Tie Fighter Air Battle by Adam Quesnel  



//Move mouse around to move the X-Wing Target
//When target is in the middle of the Tie Fighter ships middle window left/right click on the mouse to shoot lasers. 
//A red HUD will show once the X-Wing target is in range to fire at.


void setup() {
 
size(400, 400);
 
  
}


void draw(){
  
frameRate(120);
background(50);


//Stars Background
stroke(255);
strokeWeight(7);
point(350+mouseX/80,205-mouseY/9);
point(305+mouseX/80,130-mouseY/9);
point(200+mouseX/80,230-mouseY/9);
point(140+mouseX/80,250-mouseY/9);
point(180+mouseX/80,290-mouseY/9);
point(50+mouseX/80,280-mouseY/9);
point(20+mouseX/80,240-mouseY/9);
point(250+mouseX/80,240-mouseY/9);
point(295+mouseX/80,260-mouseY/9);
point(370+mouseX/80,50-mouseY/9);
point(380+mouseX/80,150-mouseY/9);
point(330+mouseX/80,20-mouseY/9);
point(340+mouseX/80,85-mouseY/9);
point(275+mouseX/80,200-mouseY/9);
point(120+mouseX/80,290-mouseY/9);
point(250+mouseX/80,285-mouseY/9);
point(290+mouseX/80,40-mouseY/9);
point(380+mouseX/80,300-mouseY/9);
point(345+mouseX/80,280-mouseY/9);
point(150+mouseX/80,330-mouseY/9);
point(365+mouseX/80,380-mouseY/9);
point(270+mouseX/80,330-mouseY/9);
point(20+mouseX/80,325-mouseY/9);
point(345+mouseX/80,320-mouseY/9);

//Planet Background
fill(0,108,141);
noStroke();
ellipseMode (CENTER); ellipse(100+mouseX/110,80-mouseY/12,350,350);

fill(0,180,80);
noStroke();
ellipseMode(CENTER); ellipse(40+mouseX/110,140-mouseY/12, 145,100);
ellipseMode(CENTER); ellipse(180+mouseX/110,40-mouseY/12, 180,90);
ellipseMode(CENTER); ellipse(100+mouseX/110,237-mouseY/12, 130,30);


// X-Wing Target Body
fill(210);
stroke(210);
strokeWeight(3);
rectMode(CENTER); rect(0+mouseX,400-mouseY,38,38);
triangle(-20+mouseX,380-mouseY,-30+mouseX,400-mouseY,-20+mouseX,420-mouseY);
triangle(20+mouseX,380-mouseY,30+mouseX,400-mouseY,20+mouseX,420-mouseY);

//X-Wing target Wings
strokeWeight(7);
line(-26+mouseX,390-mouseY,-90+mouseX,360-mouseY); 

strokeWeight(7);
line(26+mouseX,390-mouseY,90+mouseX,360-mouseY);

strokeWeight(7);
line(26+mouseX,410-mouseY,88+mouseX,455-mouseY);

strokeWeight(7);
line(-26+mouseX,410-mouseY,-88+mouseX,455-mouseY);

//X-Wing taret Thrusters
stroke(255,0,0);
strokeWeight(2);
fill(255,160,0);
ellipseMode(CENTER); ellipse(-17+mouseX,381-mouseY,14,14);

stroke(255,0,0);
strokeWeight(2);
fill(255,160,0);
ellipseMode(CENTER); ellipse(-17+mouseX,420-mouseY,14,14);

stroke(255,0,0);
strokeWeight(2);
fill(255,160,0);
ellipseMode(CENTER); ellipse(17+mouseX,381-mouseY,14,14);

stroke(255,0,0);
strokeWeight(2);
fill(255,160,0);
ellipseMode(CENTER); ellipse(17+mouseX,420-mouseY,14,14);



//Tie Fighter Code

//Frame Bodywork
noFill ();
stroke(0);
strokeWeight (10);
ellipseMode (CENTER); ellipse(200,255,500,500);

// Line Right
noFill ();
stroke(0);
strokeWeight(12);
line(325,40,260,140);

//Line Left
noFill ();
stroke(0);
strokeWeight(12);
line(75,40,140,140);



//Center smaller circle
noFill ();
stroke(0);
strokeWeight (10);
ellipseMode (CENTER); ellipse(200,253,250,250);
  
//Line bottom right
noFill ();
stroke (0);
strokeWeight (14);
line (318,308,400,308);

//Line bottom left
noFill ();
stroke (0);
strokeWeight (14);
line (0,308,80,308);

//Red lock-on indicator
fill(400-mouseY,0,0,75);
noStroke();
ellipseMode(CENTER);ellipse(201,255,239,242);

// Tie-Fighter Control Pannel 
noStroke();
fill (140);
rectMode (CENTER); rect(200,400,400,180);

noStroke();
fill(2);
triangle(0,400,0,335,130,400);
  
noStroke();
fill(2);
triangle(400,400,400,335,270,400);

noFill();
stroke(0);
strokeWeight(12);
line (0,-2,75,40);

noFill();
stroke(0);
strokeWeight(12);
line (400,-2,325,40);

//Tie Fighter movement stick
 fill(30);
 strokeWeight (2);
  noStroke();
  //Good
  rect(197, 360+mouseY/6, 25, 100);
  
  rect(201, 390+mouseY/6, 33, 20);
  
  triangle(207, 360+mouseY/6, 207, 380+mouseY/6, 217, 380+mouseY/6);
  
  triangle(208, 322+mouseY/6, 208, 343+mouseY/6, 220, 322+mouseY/6);
  
  triangle(174, 316+mouseY/6, 195, 316+mouseY/6, 200, 340+mouseY/6);
  
  ellipse(200, 313+mouseY/6, 30, 30);
  //red
  fill(230, 40, 40);
  stroke(0, 0, 0);
  ellipse(215, 317+mouseY/6, 10, 10);
  //red
  fill(230, 40, 40);
  rect(180, 310+mouseY/6, 10, 10);
  //Red
  fill(230, 40, 40);
  stroke (0);
  strokeWeight(1);
  rect(199, 312+mouseY/6, 10, 20);
  
 //Buttons
 strokeWeight(1); 
 fill(255,0,0);
 stroke(255);
 ellipseMode (CENTER); ellipse(65,328,12,12);

 strokeWeight(1); 
 fill(0,255,0);
 stroke(255);
 ellipseMode (CENTER); ellipse(85,328,12,12);
 
 strokeWeight(1); 
 fill(255,0,0);
 stroke(255);
 ellipseMode (CENTER); ellipse(105,328,12,12); 
 
  strokeWeight(1); 
 fill(0,255,0);
 stroke(255);
 ellipseMode (CENTER); ellipse(125,328,12,12); 
 
   strokeWeight(1); 
 fill(255,0,0);
 stroke(255);
 ellipseMode (CENTER); ellipse(77,350,12,12);
 
   strokeWeight(1); 
 fill(0,255,0);
 stroke(255);
 ellipseMode (CENTER); ellipse(97,350,12,12);
 
   strokeWeight(1); 
 fill(255,0,0);
 stroke(255);
 ellipseMode (CENTER); ellipse(117,350,12,12);
 
 //Switch
 fill (0,80,255);
 stroke(0);
rectMode (CENTER); rect(265,345,10,20);

 fill (255,80,0);
 stroke(0);
rectMode (CENTER); rect(280,345,10,20);

}


//Lasers
void mousePressed(){
    
  frameRate(5);
  fill(0,255,0);
  stroke(0,255,0);
  strokeWeight(7);

line(15+mouseX,mouseY,305,308);
    
line(-15+mouseX,mouseY,97,308); 



}