Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
// Interactive Drawing for Intro to Media Computation by Qeisan Kendy


// This initializes program
void setup() {
  size(400, 400);
}

// Repeats Loop
void draw() {

  //normal background
  background(250);


  // Room Walls
  stroke(0);
  line(100, 0, 100, 240);
  line(100, 240, 400, 240);
  line(100, 240, 0, 360);

  //Apply Transparency
  fill(0, 255-0.5*mouseY);

  rect(0, 0, 400, 400);


  // Outside Light (Window)
  noStroke();
  fill(190);
  rect(270, 90, 65, 100);
  fill(0, 255-0.9*mouseY);
  rect(270, 135, 65, 10);
  rect(295, 90, 10, 100);


  // Ghost
  // Back Hand
  fill(6, 6, 111, 250);
  arc(355+1.7*mouseX-400, 200+ 12*sin(0.1*mouseX), 40, 100, PI, TWO_PI, CHORD); 
  triangle(355+1.7*mouseX-400, 200+ 12*sin(0.1*mouseX), 335+1.7*mouseX-400, 200+ 12*sin(0.1*mouseX), 345+1.7*mouseX-400, 220+ 12*sin(0.1*mouseX));
  triangle(355+1.7*mouseX-400, 200+ 12*sin(0.1*mouseX), 375+1.7*mouseX-400, 200+ 12*sin(0.1*mouseX), 365+1.7*mouseX-400, 220+ 12*sin(0.1*mouseX));
  // Tail
  fill(0, 0, 255, 230);
  triangle(220+1.7*mouseX-400, 50+ 12*sin(0.1*mouseX), 350+1.7*mouseX-400, 180+ 12*sin(0.1*mouseX), 220+1.7*mouseX-400, 170+ 12*sin(0.1*mouseX));
  triangle(155+1.7*mouseX-400, 59+ 12*sin(0.1*mouseX), 350+1.7*mouseX-400, 180+ 12*sin(0.1*mouseX), 220+1.7*mouseX-400, 170+ 12*sin(0.1*mouseX));
  triangle(155+1.7*mouseX-400, 100+ 12*sin(0.1*mouseX), 265+1.7*mouseX-400, 160+ 12*sin(0.1*mouseX), 200+1.7*mouseX-400, 170+ 12*sin(0.1*mouseX));
  // Tail Inner Shade
  fill(10, 150);
  triangle(230+1.7*mouseX-400, 70+ 12*sin(0.1*mouseX), 360+1.7*mouseX-400, 180+ 12*sin(0.1*mouseX), 220+1.7*mouseX-400, 170+ 12*sin(0.1*mouseX));
  triangle(180+1.7*mouseX-400, 85+ 12*sin(0.1*mouseX), 350+1.7*mouseX-400, 180+ 12*sin(0.1*mouseX), 220+1.7*mouseX-400, 170+ 12*sin(0.1*mouseX));
  triangle(172+1.7*mouseX-400, 115+ 12*sin(0.1*mouseX), 265+1.7*mouseX-400, 160+ 12*sin(0.1*mouseX), 200+1.7*mouseX-400, 170+ 12*sin(0.1*mouseX));
  noStroke();
  fill(0, 0, 255);
  // Secondary Body
  fill(0, 0, 255);
  ellipse(240+1.7*mouseX-400, 175+ 12*sin(0.1*mouseX), 90, 80);
  // Secondary Body Inner Shade
  fill(10, 150);
  ellipse(240+1.7*mouseX-400, 175+ 12*sin(0.1*mouseX), 60, 50);
  // Main Body
  fill(0, 0, 255);
  ellipse(303+1.7*mouseX-400, 143+ 12*sin(0.1*mouseX), 130, 140);
  // Main Body Inner Shade
  fill(10, 150);
  ellipse(303+1.7*mouseX-400, 143+ 12*sin(0.1*mouseX), 100, 110);
  // Mouth
  noStroke();
  fill(250, 0, 0, 190);
  arc(330+1.7*mouseX-400, 210+ 12*sin(0.1*mouseX), 40, 100, PI, TWO_PI, CHORD); 
  // Front Hand
  fill(6, 6, 111, 250);
  noStroke();
  arc(275+1.7*mouseX-400, 210+ 12*sin(0.1*mouseX), 40, 100, PI, TWO_PI, CHORD); 
  triangle(275+1.7*mouseX-400, 210+ 12*sin(0.1*mouseX), 295+1.7*mouseX-400, 210+ 12*sin(0.1*mouseX), 284+1.7*mouseX-400, 230+ 12*sin(0.1*mouseX));
  triangle(275+1.7*mouseX-400, 210+ 12*sin(0.1*mouseX), 255+1.7*mouseX-400, 210+ 12*sin(0.1*mouseX), 268+1.7*mouseX-400, 230+ 12*sin(0.1*mouseX));
  // Eyes
  noStroke();
  fill(254, 241, 1, 220);
  // Left Eye
  arc(290+1.7*mouseX-400, 120+ 12*sin(0.1*mouseX), 40, 90, 0, PI+QUARTER_PI, CHORD); 
  // Right Eye
  arc(350+1.7*mouseX-400, 120+ 12*sin(0.1*mouseX), 40, 80, TWO_PI-QUARTER_PI, 3*PI, CHORD); 


  // Bed
  // Mattress
  fill(10, 220);
  rect(90, 340, 400, 400);
  fill(200, mouseY);
  rect(90, 340, 310, 50);
  quad(150, 280, 90, 340, 400, 340, 400, 280);
  // Blanket
  fill(255, 128, 0, mouseY);
  rect(90, 340, 239, 40);
  quad(150, 280, 90, 340, 330, 340, 370, 280);


  // Child
  fill(170, 6, 34, mouseY);
  rectMode(CENTER);
  rect(185, 390, 40+0.1*mouseX, 90-0.1*mouseX);
  rectMode(CORNER);
  fill(239, 228, 176, mouseY);
  ellipse(180+0.1*mouseX, 330+0.15*mouseX, 60, 60);
}