Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
/*
Interactive Drawing - Lightsaber 
By Matthew Burchat 

Started Project: 9/04/2018
Last Updated: 9/12/2018

Anakin Skywalker's Lightaber 

Interactions: 

If you move your mouse from left to right, you can see the background and blade 
change from blue to red.

If you move your mouse from up to down, you can see the background and blade
disappears as if the lightsaber is being turned off. 

If you press any mouse button, a blaster shot will be deflected off of the lightsaber
noramlly used when the lightsaber is on


Course: Introduction to Media Computation
Professor: Nicolas Hesler

*/

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

 
void draw() {
 
  frameRate(60);
  noStroke();
  //println(mouseX, mouseY);
  
  // Background Gradient
  // Outside to Inside
  
  // Blue
  fill(32, 62, 249);
  quad(0, 0, 50, 0, 50, 400, 0, 400);
  
  quad(350, 0, 400, 0, 400, 400, 350, 400);
  
  fill(62, 138, 253);
  quad(50, 0, 100, 0, 100, 400, 50, 400);
  
  quad(300, 0, 350, 0, 350, 400, 300, 400);
  
  fill(88, 175, 253);
  quad(100, 0, 150, 0, 150, 400, 100, 400);
  
  quad(250, 0, 300, 0, 300, 400, 250, 400);
  
  fill(223, 252, 254);
  quad(150, 0, 250, 0, 250, 400, 150, 400);
  
  // red
  
  fill(219, 63, 51, mouseX/400.0*255);
  quad(0, 0, 50, 0, 50, 400, 0, 400);
  
  quad(350, 0, 400, 0, 400, 400, 350, 400);
  
  fill(248, 116, 129, mouseX/400.0*255);
  quad(50, 0, 100, 0, 100, 400, 50, 400);
  
  quad(300, 0, 350, 0, 350, 400, 300, 400);
  
  fill(250, 191, 193, mouseX/400.0*255);
  quad(100, 0, 150, 0, 150, 400, 100, 400);
  
  quad(250, 0, 300, 0, 300, 400, 250, 400);
  
  fill(255, 240, 240, mouseX/400.0*255);
  quad(150, 0, 250, 0, 250, 400, 150, 400);
  
  // Lightsaber blade, red than blue 
  // Inside to outside
  
  noStroke();
  
  // blue
  
  fill(223, 252, 254);
  quad(190, 0, 210, 0, 210, 148, 190, 148); 
 
  fill(88, 175, 253);
  quad(185, 0, 190, 0, 190, 148, 185, 148);
 
  quad(210, 0, 215, 0, 215, 148, 210, 148);
 
  fill(62, 138, 253);
  quad(215, 0, 220, 0, 220, 148, 215, 148);
 
  quad(180, 0, 185, 0, 185, 148, 180, 148);
  
  fill(32, 62, 249);
  quad(175, 0, 180, 0, 180, 148, 175, 148);
  
  quad(220, 0, 225, 0, 225, 148, 220, 148);
  
  // red
  
  fill(255, 240, 240, mouseX/400.0*255);
  quad(190, 0, 210, 0, 210, 148, 190, 148); 
 
  fill(250, 191, 193, mouseX/400.0*255);
  quad(185, 0, 190, 0, 190, 148, 185, 148);
 
  quad(210, 0, 215, 0, 215, 148, 210, 148);
 
  fill(248, 116, 129, mouseX/400.0*255);
  quad(215, 0, 220, 0, 220, 148, 215, 148);
 
  quad(180, 0, 185, 0, 185, 148, 180, 148);
  
  fill(219, 63, 51, mouseX/400.0*255);
  quad(175, 0, 180, 0, 180, 148, 175, 148);
  
  quad(220, 0, 225, 0, 225, 148, 220, 148);
  
  stroke(0);
  
  //Background
  fill(255, 255, 255, mouseY-100);
  quad(0, 0, 400, 0, 400, 400, 0, 400);
  
  stroke(0);
  
  
  // Silver Base
  fill(180);
  quad(175, 180, 225, 180, 225, 370, 175, 370);
 
  // Activation Button on lightsaber
  fill(100);
  quad(173, 240, 227, 240, 227, 285, 173, 285);
 
  quad(227, 240, 233, 240, 233, 285, 227, 285);
 
  // Black grips
  fill(0);
  quad(170, 295, 180, 295, 180, 365, 170, 365);
 
  quad(192, 295, 208, 295, 208, 365, 192, 365);
 
  quad(220, 295, 230, 295, 230, 365, 220, 365);
  
  // Blade Emitter (Where blade comes out)
  fill(0);
  quad(182, 170, 200, 170, 200, 180, 182, 180);
  
  fill(180);
  quad(177, 164, 203, 164, 203, 170, 175, 170);
  
  quad(177, 154, 203, 154, 203, 164, 177, 164);
  
  quad(175, 148, 215, 148, 203, 154, 177, 154);
  
  //Lightsaber top guard piece
  fill(180);
  quad(200, 180, 225, 180, 225, 130, 200, 151);
  
  //curve for guard
  quad(200, 152, 193, 170, 180, 180, 200, 180);
  
  //lines used to block certain stroke lines
  stroke(180);
  line(200, 180, 225, 180);
  
  line(181, 180, 200, 180);
  
  line(200, 180, 200, 155);
  
  stroke(0);
  
  // Lighstaber Blade length adjust (Red Button)
  
  fill(180);
  ellipseMode(CENTER);
  ellipse(225, 185, 10, 16);
 
  ellipse(229, 185, 10, 16);
  
  fill(180, 0, 0);
  ellipse(229, 185, 6, 10);
  
  // Ring tuning flange (Silver part above red button)
  fill(180);
  ellipse(233, 155, 22, 18);
  
  ellipse(230, 155, 22, 18);
  
  quad(218, 144, 235, 150, 235, 160, 218, 165);
  
  // More Lines used to grey out stroke lines
  stroke(180);
  strokeWeight(2);
  fill(180);
  line(224, 147, 235, 150);
  
  line(235, 150, 235, 160);
  
  line(235, 160, 225, 162);
  
  strokeWeight(1); 
  stroke(0);
   
}

// deflected blaster shot

void mousePressed(){
  
  noStroke();
  frameRate(3);
  
  fill(255, 0, 0);
  quad(225, 61, 335, 45, 335, 90, 225, 106);
  
  fill(255, 0, 0);
  quad(225, 61, 335, 125, 335, 170, 225, 106);
  
  fill(253, 173, 127);
  quad(225, 76, 335, 140, 335, 155, 225, 91);
  
  fill(253, 173, 127);
  quad(225, 76, 335, 60, 335, 75, 225, 91);
  
  stroke(0);
  
}