/* Interactive Drawing
"Haunted Painting"
Liana Valdez
Sept. 17, 2018 */
void setup() {
//set size of window
size(400, 400);
}
void draw() {
//set frame rate
frameRate(60);
//set background colour (dark grey)
background(45, 45, 45);
//wall- wallpaper faded stripes
noStroke();
fill(112, 112, 112);
rect(0, 0, 40, 200);
rect(80, 0, 40, 200);
rect(160, 0, 40, 200);
rect(240, 0, 40, 200);
rect(320, 0, 40, 200);
//wall- wallpaper true colours
fill(77, 55, 99, mouseX/(width*1.0)*255);
rect(0, 0, 400, 200);
fill(119, 94, 142, mouseX/(width*1.0)*255);
rect(0, 0, 40, 200);
rect(80, 0, 40, 200);
rect(160, 0, 40, 200);
rect(240, 0, 40, 200);
rect(320, 0, 40, 200);
//wall- divider
noStroke();
fill(201, 189, 169);
rect(0, 200, 400, 30);
fill(237, 224, 203);
rect(0, 210, 400, 10);
//wall- panels
fill(237, 224, 203);
rect(0, 230, 400, 170);
stroke(201, 189, 169);
strokeWeight(4);
line(60, 230, 60, 400);
line(120, 230, 120, 400);
line(180, 230, 180, 400);
line(240, 230, 240, 400);
line(300, 230, 300, 400);
line(360, 230, 360, 400);
//painting- frame & background
noStroke();
fill(76, 29, 9);
rect(235, 20, 150, 160);
fill(107, 41, 13);
rect(245, 30, 130, 140);
fill(8, 76, 33);
rect(255, 40, 110, 120);
//painting- veil
fill(31, 33, 31);
ellipse(310, 90, 40, 40);
rect(270, 90, 80, 70);
//painting- body
ellipseMode(RADIUS);
fill(109, 8, 37);
ellipse(310, 135, 30, 15);
rect(280, 137, 60, 23);
//painting- arms
fill(214, 183, 126);
ellipse(287, 143, 7, 5);
fill(214, 183, 126);
ellipse(332, 154, 7, 5);
fill(135, 21, 54);
rect(290, 138, 50, 10);
fill(153, 12, 52);
rect(280, 149, 50, 10);
//painting- head & neck
fill(214, 183, 126);
ellipse(310, 90, 25, 25);
rect(305, 110, 10, 10);
ellipse(310, 120, 5, 5);
//painting- nose
fill(140, 124, 75);
triangle(307, 100, 310, 95, 312, 100);
//painting- eyes
fill(255);
ellipse(300, 90, 6, 7);
ellipse(320, 90, 6, 7);
//PAINTING'S PUPILS: Follow mouse left, right, up, & down
//painting- moving pupils
fill(0);
ellipse(297+mouseX/50, 85+mouseY/47, 3, 3);
ellipse(317+mouseX/50, 85+mouseY/47, 3, 3);
//PAINTING EXPRESSION: Sours as mouse moves left
//painting- moving eyebrows (angled inwards and downwards)
stroke(0);
strokeWeight(1.5);
line(295, 75, 305, 81-mouseX/45);
line(323, 75, 313, 81-mouseX/45);
//painting- moving mouth (line of mouth decreases into pout)
line(305-mouseX/50, 105, 315, 105);
//table
noStroke();
fill(130, 70, 13);
rect(230, 310, 150, 40);
fill(81, 44, 8);
rect(230, 350, 150, 40);
fill(130, 70, 13);
rect(250, 360, 110, 20);
rect(230, 390, 20, 10);
rect(360, 390, 20, 10);
fill(242, 203, 104);
ellipse(305, 370, 5, 5);
//tablecloth
stroke(242, 203, 104);
strokeWeight(2);
fill(168, 15, 30);
rect(240, 320, 130, 20);
//FLOWER: Colour drains from petals as mouse moves left
//flower- faded
stroke(75, 122, 28);
strokeWeight(3);
noFill();
arc(296, 250, 10, 50, PI+QUARTER_PI, TWO_PI);
noStroke();
fill(94, 69, 83);
ellipse(310, 210, 13, 9);
ellipse(290, 210, 13, 9);
ellipse(300, 200, 9, 13);
ellipse(300, 220, 9, 13);
fill(40);
ellipse(300, 210, 6, 6);
//flower- true colours & fade in/out from center effect
fill(170, 0, 93, mouseX/(width*1.0)*255);
ellipse(310, 210, mouseX/31, 9);
ellipse(290, 210, mouseX/31, 9);
ellipse(300, 200, 9, mouseX/31);
ellipse(300, 220, 9, mouseX/31);
fill(255, 234, 104, mouseX/(width*1.0)*255);
ellipse(300, 210, 6, 6);
//vase
fill(75, 163, 163);
ellipse(305, 300, 30, 35);
rect(291, 250, 31, 40);
//person- pants
stroke(24, 52, 76);
strokeWeight(40);
line(157, 340, 125, 400);
line(187, 340, 200, 400);
line(157, 360, 184, 360);
//person- right hand
noStroke();
fill(226, 177, 102);
ellipse(73, 252, 11, 11);
//person- right arm
stroke(37, 76, 54);
strokeWeight(25);
line(138, 255, 110, 290);
line(110, 290, 80, 260);
//CANDLE GLOW: Opacity decreases as mouse moves left
//candle- fading glow
noStroke();
fill(255, 165, 22, mouseX/(width*1.0)*110);
ellipse(53, 195, 60, 60);
fill(186, 161, 65, mouseX/(width*1.0)*110);
ellipse(53, 195, 50, 50);
fill(255, 235, 25, mouseX/(width*1.0)*75);
ellipse(53, 195, 40, 40);
//candle- holder
fill(158, 137, 56);
ellipse(53, 250, 25, 15);
fill(186, 161, 65);
ellipse(53, 250, 20, 10);
//candle
fill(240);
ellipse(53, 250, 10, 7);
rect(43, 200, 20, 50);
fill(200);
ellipse(53, 200, 10, 7);
stroke(0);
strokeWeight(2);
line(53, 200, 53, 187);
//FLAME: Opacity decreases as mouse moves left
//candle- fading flame
noStroke();
fill(255, 165, 22, mouseX/(width*1.0)*150);
ellipse(53, 190, 10, 20);
fill(252, 227, 22, mouseX/(width*1.0)*150);
ellipse(53, 190, 5, 15);
//person- body
noStroke();
fill(79, 150, 110);
ellipse(170, 253, 40, 25);
rect(130, 250, 80, 100);
//person- left hand
fill(226, 177, 102);
ellipse(205, 330, 11, 11);
//person- left arm
stroke(37, 76, 54);
strokeWeight(25);
line(202, 255, 235, 280);
line(235, 280, 210, 320);
//person- head & neck
noStroke();
fill(226, 177, 102);
ellipse(170, 170, 40, 50);
rect(160, 215, 20, 20);
ellipse(170, 237, 10, 10);
//person- nose
fill(163, 123, 62);
triangle(160, 187, 167, 177, 170, 187);
/*PERSON'S PUPILS: Follow mouse left, right, up, & down,
grows as mouse moves right, shrinks as mouse moves left*/
//person- eyes
fill(255);
ellipse(150, 165, 10, 13);
ellipse(180, 165, 10, 13);
//person- moving & shrinking pupils
fill(0);
ellipse(145+mouseX/40, 157+mouseY/27, 2+mouseX/80, 2+mouseX/80);
ellipse(175+mouseX/47, 157+mouseY/27, 2+mouseX/80, 2+mouseX/80);
//person- mouth
noFill();
stroke(0);
strokeWeight(2);
arc(165, 205, 15, 10, PI+QUARTER_PI, TWO_PI);
//person- eyebrows
line(160, 140, 141, 144);
line(174, 144, 191, 138);
}
void mousePressed() {
//SCREEN: Goes black for 4 frames, only eyes will be visible
frameRate(4);
//darkness flickers
fill(0);
rect(0, 0, 400, 400);
//painting- redrawing eyes
fill(255);
ellipse(300, 90, 6, 7);
ellipse(320, 90, 6, 7);
//PAINTING: Pupils turn red
//painting- red moving pupils
noStroke();
fill(255, 0, 0);
ellipse(297+mouseX/50, 85+mouseY/47, 3, 3);
ellipse(317+mouseX/50, 85+mouseY/47, 3, 3);
//person- redrawing eyes
fill(255);
ellipse(150, 165, 10, 13);
ellipse(180, 165, 10, 13);
//person- moving & shrinking pupils
fill(0);
ellipse(145+mouseX/40, 157+mouseY/27, 2+mouseX/80, 2+mouseX/80);
ellipse(175+mouseX/47, 157+mouseY/27, 2+mouseX/80, 2+mouseX/80);
}
void keyPressed() {
//DIALOGUE: Prints person's thoughts
println("I feel like somebody's watching me...");
}