Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
/////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);
}