sketch
var x = 565
function setup() {
createCanvas(600, 600);
}
function draw() {
rectMode(CORNER);
background(113, 146, 128)
noStroke();
fill(96, 129, 118);
rect(375, 0, width - 375, height);
fill(119, 89, 79);
beginShape();
vertex(0, (1/2) * height);
vertex(375, (1/2) * height);
vertex(width, height);
vertex(0, height);
endShape();
stroke(230);
strokeWeight(6);
fill(209, 213, 207);
beginShape();
vertex(390, 50);
vertex(590, 150);
vertex(590, 350);
vertex(390, 200);
vertex(390, 50);
endShape();
noStroke();
fill(165, 158, 74);
beginShape();
vertex(393, 160);
vertex(420, 150);
vertex(470, 190);
vertex(500, 185);
vertex(520, 200);
vertex(575, 195);
vertex(587, 210);
vertex(587, 344);
vertex(393, 197);
vertex(393, 175);
endShape();
fill(254, 247, 146);
ellipse(540, 170, 15, 15);
stroke(230);
strokeWeight(6);
line(390, 125, 590, 250);
noStroke();
fill(115, 73, 74);
rect(187, 150, 188, 70);
stroke(100, 60, 60);
line(190, 150, 372, 150);
noStroke();
fill(183, 153, 120);
rect(187, 135, 15, 185);
rect(360, 135, 15, 185);
fill(36, 68, 116);
beginShape();
vertex(367, 235);
vertex(521, 420);
vertex(521, 460);
vertex(228, 460);
vertex(195, 275);
vertex(195, 235);
endShape();
rectMode(CENTER);
fill(238, 215, 216);
rect(281, 225, 80, 60, 15);
fill(137, 113, 113);
ellipse(281, 225, 8, 8);
strokeWeight(2);
stroke(137, 113, 113);
line(266, 210, 296, 240);
line(266, 240, 296, 210);
rectMode(CORNER);
stroke(187, 82, 49);
strokeWeight(10);
line(45, 230, 55, 320);
line(155, 230, 145, 320);
stroke(167, 62, 29);
line(120, 230, 115, 305);
noStroke();
fill(187, 82, 49);
ellipse(100, 230, 120, 36);
fill(147, 75, 103);
beginShape();
vertex(385, 35);
vertex(410, 50);
vertex(410, 232.5);
vertex(385, 210);
endShape();
beginShape();
curveVertex(385, 210);
curveVertex(385, 210);
curveVertex(387, 225);
curveVertex(400, 227);
curveVertex(410, 232.5);
curveVertex(410, 232.5);
endShape();
if (490 < mouseX & mouseX < 565 & 100 < mouseY && mouseY < 352.5) {
quad(595, 140, 595, 375,
mouseX, 352.5 - ((.75) * (565 - mouseX)),
mouseX, 125 - ((.5) * (565 - mouseX)));
x = mouseX
fill (242, 235, 177, (8/3) * mouseX - (3920/3));
quad(195 + 12.5, 265, 360, 265, 400, 325, 195 + 30, 325);
quad(195 + 12.5, 265, 195 + 30, 325, 195 + 30, 460, 195 + 12.5, 340);
quad(180, 340, 200, 460, 125, 460, 107.5, 340);
} else {
quad(595, 140, 595, 375,
x, 352.5 - ((.75) * (565 - x)),
x, 125 - ((.5) * (565 - x)));
fill (242, 235, 177, (8/3) * x - (3920/3));
quad(195 + 12.5, 265, 360, 265, 400, 325, 195 + 30, 325);
quad(195 + 12.5, 265, 195 + 30, 325, 195 + 30, 460, 195 + 12.5, 340);
quad(180, 340, 200, 460, 125, 460, 107.5, 340);
}
rectMode(CORNER);
fill(115, 73, 74);
rect(220, 350, 313, 90);
stroke(100, 60, 60);
line(225, 350, 528, 350);
noStroke();
fill(200, 163, 140);
rect(220, 330, 20, 200);
rect(513, 330, 20, 200);
if(dist(115, 192, mouseX, mouseY) <= 40) {
fill(87, 80, 63);
ellipse(115, 230, 40, 20);
rectMode(CENTER);
rect(115, 211, 10, 37.5);
fill(98, 131, 139);
ellipse(115, 192, 50, 25);
beginShape();
vertex(90, 192);
vertex(105, 152);
vertex(125, 152);
vertex(140, 192);
endShape();
rectMode(CORNER);
fill(65, 78, 120, 150);
rect(0, 0, 600, 600);
} else {
fill(161, 137, 137);
ellipse(115, 230, 40, 20);
rectMode(CENTER);
rect(115, 211, 10, 37.5);
fill(241, 253, 208);
ellipse(115, 192, 50, 25);
beginShape();
vertex(90, 192);
vertex(105, 152);
vertex(125, 152);
vertex(140, 192);
endShape();
}
}
This project turned out to be a lot harder than I expected it to be, and I wasn’t able to include all of the elements I wanted to. As of now, when you hover over the lamp the room gets darker and you can use the mouse to open and close the curtain and the intensity of the sunlight on the bed will change.
I particularly struggled with the curtain – first I couldn’t figure out how to make it move with the mouse and then I couldn’t figure out how to make it stay in the same place when the mouse moved away. I realized that when you translate the origin inside push, pop and try to use mouseX and mouseY, the position contained in them is not translated. That took me about 2 hours to work out!