/////Monument Valley/////
/*
Sept 21st 2017
Intro to Media Computation
Instructor: Fredd Eyles
Created by: Charmaine Wong/ Ho Wing Wong
Move your mouse up and down to control day and night and change characters
*/
void setup()
{
size(400, 400);
smooth();
frameRate(60);
};
void draw()
{
//default background colour
background(192, 231, 204);
// background for night time
fill(58, 61, 122, mouseY);
rectMode(CORNER);
rect(0, 0, 400, 400);
fill(mouseY-160, mouseY-172, mouseY-87);
//left mountains moves left as mouseY increases on coordinateX
fill(41, 128, 138);
stroke(41, 128, 138);
triangle(90 - mouseY/1.5, 120, 140 - mouseY/1.5, 40, 200 - mouseY/1.5, 120);
fill(153, 116, 108);
stroke(153, 116, 108);
//triangle(mouseY/20 - 40,120,mouseY/20 - 100,20,mouseY/20 - 180,120);
triangle(40 - mouseY/2, 120, 100 - mouseY/2, 20, 180 - mouseY/2, 120);
fill(91, 138, 137);
stroke(91, 138, 137);
triangle(0-mouseY/2, 120, 60-mouseY/2, 20, 130-mouseY/2, 120);
fill(127, 169, 159);
stroke(127, 169, 159);
triangle(10-mouseY/2, 120, 50-mouseY/2, 50, 100-mouseY/2, 120);
//right mountains moves right as mouseY increases on coordinate X
fill(41, 128, 138);
stroke(41, 128, 138);
triangle(mouseY/1.5+200, 120, mouseY/1.5+240, 40, mouseY/1.5+280, 120);
fill(91, 138, 137);
stroke(91, 138, 137);
triangle(mouseY/2+220, 120, mouseY/2+280, 20, mouseY/2+330, 120);
fill(153, 116, 108);
stroke(153, 116, 108);
triangle(mouseY/2+280, 120, mouseY/2+340, 0, mouseY/2+400, 120);
fill(127, 169, 159, 255-mouseY);
stroke(127, 169, 159, 255-mouseY);
triangle(mouseY/2+320, 120, mouseY/2+360, 40, mouseY/2+400, 120);
//trees
//trunk scattered around
rectMode(CORNER);
rect(95, 200, 5, 20);
rect(95, 340, 10, 20);
rect(75, 330, 10, 30);
rect(335, 280, 10, 30);
rect(63, 210, 5, 20);
//leaves
//dark leaves
fill(30, 55, 13, 255-mouseY);
stroke(30, 55, 13, 255-mouseY);
triangle(50, 330-mouseY, 80, 250-mouseY, 110, 330-mouseY);
triangle(320, 280-mouseY, 340, 220-mouseY, 360, 280-mouseY);
triangle(50, 210-mouseY, 65, 170-mouseY, 80, 210-mouseY);
//light leaves
fill(152, 166, 9, 255-mouseY);
stroke(152, 166, 9, 255-mouseY);
triangle(80, 200-mouseY, 98, 160-mouseY, 115, 200-mouseY);
triangle(80, 340, 100, 300, 120, 340);
//Night time buildings
fill(135, 130, 192, mouseY);
stroke(135, 130, 192, mouseY);
rectMode(CORNER);
rect(0, 115, 400, 5);
rectMode(CORNER);
rect(0, 80, 400, 40);
//Back Left wall details
rectMode(CORNER);
rect(0, 70, 10, 10);
beginShape();
vertex(30, 80);
vertex(30, 70);
vertex(40, 70);
vertex(40, 60);
vertex(50, 60);
vertex(50, 70);
vertex(60, 70);
vertex(60, 80);
// etc;
endShape();
beginShape();
vertex(80, 80);
vertex(80, 70);
vertex(90, 70);
vertex(90, 60);
vertex(100, 60);
vertex(100, 70);
vertex(110, 70);
vertex(110, 80);
// etc;
endShape();
beginShape();
vertex(130, 80);
vertex(130, 70);
vertex(140, 70);
vertex(140, 60);
vertex(150, 60);
vertex(150, 70);
vertex(160, 70);
vertex(160, 80);
// etc;
endShape();
beginShape();
vertex(230, 80);
vertex(230, 70);
vertex(240, 70);
vertex(240, 60);
vertex(250, 60);
vertex(250, 70);
vertex(260, 70);
vertex(260, 80);
// etc;
endShape();
beginShape();
vertex(280, 80);
vertex(280, 70);
vertex(290, 70);
vertex(290, 60);
vertex(300, 60);
vertex(300, 70);
vertex(310, 70);
vertex(310, 80);
// etc;
endShape();
beginShape();
vertex(330, 80);
vertex(330, 70);
vertex(340, 70);
vertex(340, 60);
vertex(350, 60);
vertex(350, 70);
vertex(360, 70);
vertex(360, 80);
// etc;
endShape();
beginShape();
vertex(380, 80);
vertex(380, 70);
vertex(390, 70);
vertex(390, 60);
vertex(400, 60);
vertex(400, 70);
vertex(410, 70);
vertex(410, 80);
// etc;
endShape();
//back left platform
fill(109, 199, 229, mouseY);
stroke(109, 199, 229, mouseY);
beginShape();
vertex(0, 140);
vertex(40, 140);
vertex(60, 160);
vertex(60, 240);
vertex(90, 240);
vertex(90, 140);
vertex(100, 130);
vertex(120, 130);
vertex(130, 140);
vertex(130, 240);
vertex(180, 240);
vertex(180, 120);
vertex(0, 120);
// etc;
endShape();
//back right light blue
//fill(78, 184, 160, mouseY);
// stroke(78, 184, 160, mouseY);
fill(109, 199, 229, mouseY);
stroke(109, 199, 229, mouseY);
beginShape();
vertex(220, 120);
vertex(340, 120);
vertex(340, 140);
vertex(320, 140);
vertex(320, 250);
vertex(290, 250);
vertex(290, 140);
vertex(280, 130);
vertex(260, 130);
vertex(250, 140);
vertex(250, 210);
vertex(220, 210);
vertex(220, 120);
// etc;
endShape();
//stairs
fill(194, 228, 161, mouseY);
stroke(194, 228, 161, mouseY);
beginShape();
vertex(20, 400);
vertex(20, 240);
vertex(60, 240);
vertex(60, 220);
vertex(80, 220);
vertex(80, 200);
vertex(100, 200);
vertex(100, 180);
vertex(120, 180);
vertex(120, 160);
vertex(140, 160);
vertex(140, 140);
vertex(160, 140);
vertex(160, 120);
vertex(220, 120);
vertex(220, 400);
vertex(20, 400);
// etc;
endShape();
//stairs details
fill(81, 81, 110, mouseY);
stroke(81, 81, 110, mouseY);
rectMode(CORNER);
rect(40, 260, 60, 10);
rectMode(CORNER);
rect(40, 280, 60, 10);
rectMode(CORNER);
rect(40, 300, 60, 10);
noFill();
strokeWeight(4);
rectMode(CENTER);
rect(70, 350, 60, 60);
rect(70, 350, 50, 50);
rect(70, 350, 40, 40);
rect(70, 350, 20, 20);
//night castles
//left
fill(109, 199, 229, mouseY);
stroke(109, 199, 229, mouseY);
beginShape();
vertex(80, 120);
vertex(80, 50);
vertex(140, 50);
vertex(140, 120);
vertex(130, 120);
vertex(130, 70);
vertex(120, 60);
vertex(100, 60);
vertex(90, 70);
vertex(90, 120);
vertex(80, 120);
// etc;
endShape();
fill(174, 93, 196, mouseY);
stroke(174, 93, 196, mouseY);
quad(80, 50, 100, 20, 120, 20, 140, 50);
//right
beginShape();
vertex(350, 120);
vertex(350, 30);
vertex(400, 40);
vertex(400, 120);
vertex(390, 130);
vertex(390, 60);
vertex(370, 40);
vertex(360, 50);
vertex(360, 100);
vertex(360, 110);
vertex(350, 120);
// etc;
endShape();
//triangle right
fill(128, 101, 159, mouseY);
stroke(128, 101, 159, mouseY);
quad(370, 160, 390, 145, 390, 270, 370, 260);
//right platform
//top purple
noStroke();
triangle(347, 29, 400, 10, 400, 40);
fill(194, 228, 161, mouseY);
strokeWeight(0);
stroke(194, 228, 161, mouseY);
//light green top platform
quad(270, 150, 390, 85, 390, 126, 300, 180);
//front light green platform
quad(270, 150, 300, 180, 300, 200, 270, 170);
//light blue
fill(109, 199, 229, mouseY);
stroke(109, 199, 229, mouseY);
beginShape();
vertex(300, 180);
vertex(400, 120);
vertex(400, 280);
vertex(290, 380);
vertex(290, 250);
vertex(300, 257);
vertex(300, 350);
vertex(390, 270);
vertex(390, 145);
vertex(300, 200);
vertex(300, 180);
// etc;
endShape();
//right triangle parts
fill(194, 228, 161, mouseY);
strokeWeight(0);
stroke(194, 228, 161, mouseY);
beginShape();
vertex(280, 230);
vertex(300, 215);
vertex(390, 270);
vertex(300, 350);
vertex(300, 320);
vertex(350, 275);
vertex(280, 230);
// etc;
endShape();
//right triangle dark purple
fill(135, 130, 192, mouseY);
stroke(135, 130, 192, mouseY);
beginShape();
vertex(280, 230);
vertex(350, 275);
vertex(340, 285);
vertex(290, 250);
vertex(290, 380);
vertex(280, 370);
vertex(280, 230);
// etc;
endShape();
//castle
fill(209, 208, 154);
stroke(209, 208, 154);
rectMode(CORNERS);
rect(180, 60, 220, 120);
fill(102, 45, 77);
stroke(209, 208, 154);
rectMode(CORNERS);
rect(185, 70, 215, 120);
//castle roof
fill(97, 84, 6);
stroke(97, 84, 6);
strokeWeight(0.5);
quad(170, 50, 180, 60, 220, 60, 230, 50);
fill(150, 141, 20);
stroke(150, 141, 20);
rectMode(CORNERS);
rect(170, 40, 230, 50);
fill(162, 155, 25);
stroke(162, 155, 25);
rectMode(CORNERS);
rect(170, 30, 230, 40);
fill(189, 197, 0);
stroke(189, 197, 0);
quad(170, 30, 180, 20, 220, 20, 230, 30);
quad(185, 20, 190, 10, 210, 10, 215, 20);
fill(136, 130, 0);
stroke(136, 130, 0);
triangle(190, 10, 200, 0, 210, 10);
stroke(225);
fill(255);
rectMode(CORNERS);
rect(175, 59, 225, 67);
//bridges
strokeWeight(1);
stroke(124, 170, 157);
fill(124, 170, 157);
quad(120, 210, 180, 297, 180, 400, 120, 400);
strokeWeight(1);
stroke(149, 115, 106);
fill(149, 115, 106);
triangle(260, 180, 260, 340, 180, 220);
strokeWeight(1);
stroke(124, 170, 157);
fill(124, 170, 157);
triangle(180, 120, 180, 180, 210, 170);
//river
fill(73, 193, 166);
strokeWeight(4);
stroke(209, 208, 154);
beginShape();
vertex(220, 120);
vertex(260, 180);
vertex(180, 220);
vertex(220, 270);
vertex(179, 293);
vertex(120, 210);
vertex(210, 170);
vertex(180, 120);
// etc;
endShape();
//stairs
fill(209, 208, 154);
triangle(182, 281, 189, 279, 189, 289);
//highlights on the river
stroke(149, 237, 225);
strokeWeight(3);
line(235, 160, 245, 175);
line(245, 175, 220, 187);
line(217, 178, 167, 201);
line(140, 225, 167, 264);
line(185, 209, 171, 216);
line(171, 216, 179, 227);
line(234, 172, 228, 162);
line(199, 120, 215, 145);
line(167, 224, 179, 242);
point(209, 123);
point(184, 234);
//platform
strokeWeight(0);
fill(124, 170, 157);
stroke(124, 170, 157);
beginShape();
vertex(180, 400);
vertex(180, 280);
vertex(190, 290);
vertex(190, 270);
vertex(220, 310);
vertex(220, 400);
vertex(180, 400);
// etc;
endShape();
fill(210, 209, 155);
stroke(210, 209, 155);
quad(220, 310, 265, 285, 265, 400, 220, 400);
quad(190, 270, 237, 251, 265, 285, 220, 310);
//princess ida
//hat
fill(255, mouseY);
stroke(255, mouseY);
triangle(220, 230, 200, 200, 235, 220);
//dress
fill(255, mouseY);
stroke(255, mouseY);
quad(227, 242, 232, 242, 250, 280, 210, 280);
//head
fill(0, mouseY);
stroke(0, mouseY);
ellipse(230, 230, 20, 20);
rectMode(CENTER);
rect(230, 240, 5, 5);
fill(255, mouseY);
stroke(255, mouseY);
ellipse(235, 230, 15, 20);
//legs
beginShape();
vertex(220, 280);
vertex(225, 280);
vertex(225, 295);
vertex(226, 300);
vertex(220, 295);
// etc;
endShape();
beginShape();
vertex(230, 280);
vertex(235, 280);
vertex(235, 295);
vertex(236, 300);
vertex(230, 295);
// etc;
endShape();
// crow
fill(0, 255-mouseY);
stroke(0, 255-mouseY);
ellipse(230, 230, 20, 20);
triangle(239, 225, 252, 238, 228, 239);
//body
fill(0, 255-mouseY);
stroke(0, 255-mouseY);
quad(227, 242, 232, 242, 250, 275, 210, 275);
beginShape();
vertex(220, 270);
vertex(225, 270);
vertex(225, 289);
vertex(227, 296);
vertex(219, 289);
// etc;
endShape();
beginShape();
vertex(230, 271);
vertex(235, 271);
vertex(235, 290);
vertex(237, 295);
vertex(230, 291);
// etc;
endShape();
//eyes
noFill();
strokeWeight(2);
stroke(255, 255-mouseY);
ellipse(225, 230, 10, 10);
}