Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
//--------------------Assignment 1--------------------------
//----------Introduction to Media Computation---------------

//--------------Project: Stormy Night-----------------------
//----------------By: Abdullah Allami-----------------------

/*

 In the stormy night, the detctive is investigating a murder!
 Lightening hits the ground as he inspects the blood of the victim
 
 --------------------------------------------------
 Instructions:
 
 Moving the mouse up will point the flashlight up 
 Moving the mouse down will point the flashlight down
 
 pressing the mouse will call down lightening 
 The position of the lightening is based on the mouse, 
 you can move it to the left or right
 
 Note: The blood is animated
 */

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


void draw() {

  //Background color
  background(10, 10, 50);

  // Bridge color
  fill(1, 1, 40);

  // the thick stroke will be used to make the bridge appear to have a top surface
  stroke(40, 40, 60);
  strokeWeight(20);

  //Bridge base shape
  rect(-10, 300, 420, 100);

  // Support structure
  strokeWeight(10);
  rect(370, 90, 120, 210);

  // Pipe
  ellipse(380, 100, 20, 20);

  //Bridge under arc Color
  fill(10, 10, 50);
  strokeWeight(10);

  //Bridge arcs
  ellipse(100, 400, 80, 140);
  ellipse(200, 400, 80, 140);
  ellipse(300, 400, 80, 140);




  //Blood--------------------------------------------------------------------
  // Blood stream
  strokeWeight(4);
  stroke(50, 0, 0);
  line(380, 300, 380, 100);
  // Blood pool
  fill(50, 0, 0);
  ellipse(380, 300, 40, 16);

  // Blood pool animation
  stroke(60, 10, 10);
  strokeWeight(4);
  ellipse(380, 300, .25*(frameCount%80), .1*(frameCount%80));

  //Blood line animation
  line(380, 100+(frameCount%200), 380, 105+(frameCount%200));
  line(380, 100+((frameCount+50)%200), 380, 105+((frameCount+50)%200));
  line(380, 100+((frameCount+100)%200), 380, 105+((frameCount+100)%200));





  // Flash Light---------------------------------------------------------
  // Flash Light color
  noStroke();
  fill(200, 200, 200, 100);

  // Flashlight shape. 
  // Flashlight can point up or down
  triangle(150, 255, 500, mouseY+100, 500, mouseY-100);

  // Detective Character-------------------------------------------------------
  //face
  stroke(246, 210, 170);
  fill(255, 220, 177);
  ellipse(130, 210, 20, 20);


  // Suit and hat color
  stroke(5, 0, 0);
  fill(5, 0, 0);
  // Hat
  rect(120, 170, 20, 30);
  ellipse(130, 200, 40, 20);
  //Body
  rect(120, 220, 20, 40);
  // Hands
  triangle(150, 250, 140, 220, 150, 220);
  triangle(110, 250, 120, 220, 110, 220);
  // Legs
  rect(120, 260, 5, 40);
  rect(135, 260, 5, 40);
  // Feet
  triangle(120, 300, 130, 300, 120, 290);
  triangle(135, 300, 145, 300, 135, 290);
}

void mousePressed() {



  // When mouse is pressed there will be a lightening strike
  //Background color when lightning strikes 
  background(100, 100, 150);

  // Render lightening --------------------------------------------

  // Lightening color
  stroke(255, 255);
  strokeWeight(3);
  // Lightening shape
  line(mouseX-10, 0, mouseX+10, 30);
  line(mouseX+10, 30, mouseX-10, 60);
  line(mouseX-10, 60, mouseX+10, 90);
  line(mouseX+10, 90, mouseX-10, 120);
  line(mouseX-10, 120, mouseX+10, 150);
  line(mouseX+10, 150, mouseX-10, 180);
  line(mouseX-10, 180, mouseX+10, 210);
  line(mouseX+10, 210, mouseX-10, 240);
  line(mouseX-10, 240, mouseX+10, 270);
  line(mouseX+10, 270, mouseX-10, 290);


  // Brightening the colors of the enviroment-------------------------------



  // Bridge color when lightning strikes 
  strokeWeight(1);
  fill(60, 60, 90);
  stroke(200, 200, 250);


  // the thick stroke will be used to make the bridge appear to have a top surface

  strokeWeight(20);

  //Bridge base shape
  rect(-10, 300, 420, 100);

  // Support structure
  strokeWeight(10);
  rect(370, 90, 120, 210);

  // Pipe
  ellipse(380, 100, 20, 20);

  //Bridge under arc Color when lightning strikes 
  fill(100, 100, 150);

  strokeWeight(10);

  //Bridge arcs
  ellipse(100, 400, 80, 140);
  ellipse(200, 400, 80, 140);
  ellipse(300, 400, 80, 140);


  // Flash Light--------------------------------------------------

  // Flash Light color
  noStroke();
  fill(100, 100, 100, 100);

  // Flashlight shape. 
  // Flashlight can point up or down
  triangle(150, 245, 500, mouseY+100, 500, mouseY-100);


  // Detective Character When Lightening strikes----------------------------------------------
  //face
  //stroke(246, 210, 170);
  strokeWeight(1);
  fill(255, 220, 177);
  ellipse(130, 210, 20, 20);


  // Suit and hat color
  stroke(130, 130, 130);
  fill(130, 130, 130);
  // Hat
  rect(120, 170, 20, 30);
  ellipse(130, 200, 40, 20);
  //Body
  rect(120, 220, 20, 40);
  // Hands
  triangle(150, 250, 140, 220, 150, 220);
  triangle(110, 250, 120, 220, 110, 220);
  // Legs
  rect(120, 260, 5, 40);
  rect(135, 260, 5, 40);
  // Feet
  triangle(120, 300, 130, 300, 120, 290);
  triangle(135, 300, 145, 300, 135, 290);
}