Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
//sets up program, running once
void setup() {
  size(400, 400);
}

//draws frames
void draw() {
  //sets frame rate to 60
  frameRate(60);
  
  //sets background colour
  background(222, 91, 16);
  //sun
  noStroke();
  fill(255, 212, 70, 63);
  ellipse(300, 400, 300, 300);
  ellipse(300, 400, 350, 350);
  ellipse(300, 400, 400, 400);
  ellipse(300, 400, 500, 500);
  ellipse(300, 400, 600, 600);
  ellipse(300, 400, 700, 700);

  //Clouds move left and right with mouse
  fill(255, 195, 149);
  ellipse(mouseX, 20, 100, 30);
  ellipse(mouseX/2-100, 50, 180, 50);
  ellipse(mouseX/3+300, 50, 40, 10);
  ellipse(mouseX/2+300, 150, 150, 25);

  fill(255, 208, 173);
  ellipse(mouseX-30, 35, 70, 20);
  ellipse(mouseX/3+100, 100, 100, 40);
  ellipse(mouseX/2+350, 120, 100, 20);
  ellipse(mouseX/3-100, 150, 100, 20);

  //backgound

  fill(30);
  stroke(30);
  strokeWeight(1);
  rectMode(CENTER);
  //Dome
  rect(100, 130, 40, 20);
  rect(100, 110, 25, 30);
  triangle(87, 95, 112, 95, 100, 70);
  line(100, 70, 100, 50);
  line(95, 55, 105, 55);
  ellipse(100, 70, 10, 10);
  ellipse(100, 250, 200, 250);
  rect(100, 365, 150, 250);

  ellipse(25, 350, 150, 200);
  rect(25, 420, 150, 200, 7);

  ellipse(175, 350, 150, 200);
  rect(175, 420, 150, 200, 7);

  //Duomo front
  fill(20);
  stroke(20);
  rect(95, 420, 200, 100, 5);
  rect(95, 350, 120, 120, 5);
  rect(95, 280, 130, 20, 2);
  triangle(40, 270, 150, 270, 95, 240);
  ellipse(30, 370, 60, 50);
  ellipse(160, 370, 60, 50);
  strokeWeight(2);
  line(95, 240, 95, 200);

  //Tower
  fill(10);
  stroke(10);
  triangle(230, 160, 330, 160, 280, 155);
  rect(280, 300, 100, 220);
  rect(280, 180, 120, 40, 5);
  strokeWeight(3);
  line(280, 155, 280, 80);
  triangle(222, 200, 240, 200, 240, 230);
  triangle(338, 200, 320, 200, 320, 230);


  //Ezio

  //right arm
  strokeWeight(30);
  stroke(220);
  line(160, 210, 150, 235);
  stroke(255);
  line(148, 240, 125, 235);
  //glove
  noStroke();
  fill(95, 58, 33);
  triangle(113, 223, 105, 210, 100, 223);
  triangle(95, 230, 90, 215, 105, 220);
  triangle(85, 230, 95, 225, 95, 240);
  triangle(95, 245, 95, 230, 110, 240);
  quad(95, 223, 115, 223, 105, 240, 95, 240);
  fill(108, 68, 42);
  quad(113, 220, 120, 220, 112, 245, 105, 242);
  //back shoulder thing
  fill(150);
  ellipse(163, 210, 50, 30);
  //red lines
  stroke(164, 3, 3);
  strokeWeight(1);
  line(155,200,150,220);
  line(145,200,140,214);
  
  
  //cape lining
  noStroke();
  fill(90,19,1);
  triangle(242,186,230,275,300,260);
  

  //chest
  fill(190);
  noStroke();
  quad(163, 220, 240, 200, 240, 250, 185, 250);
  //red lines
  strokeWeight(1);
  stroke(164, 3, 3);
  line(178,220,220,280);
  line(168,220,210,280);
  line(190,215,225,280);
  line(198,215,233,280);


  //robe lining
  fill(164, 60, 44);
  noStroke();
  triangle(220, 300, 280, 300, 230, 260);
  //hood lining
  stroke(255);
  strokeWeight(1);
  quad(127, 205, 155, 210, 160, 190, 140, 170);

  //back
  noStroke();
  fill(190);
  ellipse(235, 210, 30, 40);


  //sash
  noStroke();
  fill(164, 3, 3);
  quad(250, 205, 255, 230, 255, 252, 202, 238);
  strokeWeight(1);
  stroke(116, 15, 15);
  line(202, 238, 235, 238);
  line(202, 238, 238, 230);
  line(202, 238, 230, 225);
  //tails
  noStroke();
  quad(250, 220, 250, 225, 270, 270, 280, 270);
  quad(270, 270, 280, 270, 285, 300, 275, 300);
  quad(250, 220, 250, 225, 285, 270, 300, 270);
  quad(285, 270, 300, 270, 300, 300, 295, 300);


  //right arm
  strokeWeight(30);
  stroke(220);
  line(230, 225, 215, 195);
  stroke(255);
  line(220, 230, 232, 225);
  //shoulder pad thing
  noStroke();
  fill(107, 70, 51);
  quad(195, 198, 230, 175, 250, 195, 205, 210);
  //cape
  fill(57,37,27);
  triangle(210,208,250,195,278,230);
  //bracer
  fill(76, 53, 37);
  quad(195, 230, 210, 215, 220, 250, 200, 250);

  //neck
  fill(198, 134, 78);
  triangle(165, 200, 200, 200, 183, 218);

  /*right side
   outer collar
   */
  noStroke();
  fill(235);
  triangle(186, 220, 160, 220, 158, 210);
  fill(164, 3, 3);  //red lining
  triangle(180, 218, 162, 218, 160, 214);
  //inner collar
  fill(210);
  triangle(186, 220, 160, 190, 150, 210);

  //face
  noStroke();
  fill(232, 172, 118);
  ellipse(175, 165, 65, 75);
  fill(129, 95, 67);
  rect(170, 152, 60, 30);
  noFill();
  stroke(129, 95, 67);
  strokeWeight(1);
  line(165, 188, 170, 185);
  line(170, 185, 175, 188);
  line(167, 184, 167, 188);
  line(170, 165, 170, 175);
  //eyes
  noStroke();
  fill(255);
  ellipse(158, 165, 15, 15);
  ellipse(183, 165, 15, 15);
  fill(98, 70, 56);
  ellipse(158, 165, 10, 10);
  ellipse(183, 165, 10, 10);
  fill(255);
  ellipse(160, 162, 3, 3);
  ellipse(184, 162, 3, 3);
  //eyebrows
  fill(99, 70, 52);
  quad(150, 155, 165, 160, 165, 153, 155, 150);
  quad(175, 160, 190, 157, 185, 150, 175, 153);


  //hood
  noStroke();
  fill(255);
  quad(198, 188, 220, 165, 235, 175, 198, 205);
  quad(198, 188, 220, 165, 215, 130, 188, 140);
  quad(188, 140, 215, 130, 190, 110, 170, 130);
  quad(170, 130, 190, 110, 150, 120, 155, 140);
  quad(155, 140, 150, 120, 135, 140, 140, 190);
  triangle(135, 140, 140, 190, 132, 185);
  triangle(140, 190, 132, 185, 127, 205);
  //point
  quad(168, 150, 155, 140, 170, 130, 188, 140);

  /*left side
   outer collar
   */
  noStroke();
  fill(255);
  triangle(198, 188, 185, 220, 205, 210);
  //inner collar
  fill(235);
  triangle(198, 188, 185, 220, 180, 188);
  fill(164, 3, 3);  //red lining
  triangle(196, 193, 187, 216, 200, 208);


  //left leg
  strokeWeight(30);
  stroke(121, 77, 64);
  line(165, 285, 210, 280);
  noStroke();
  fill(121, 77, 64);
  triangle(225, 270, 210, 295, 230, 305);
  stroke(101, 63, 42);
  line(150, 295, 180, 260);

  //right leg
  stroke(101, 63, 42);
  strokeWeight(30);
  line(220, 265, 180, 240);
  stroke(153, 102, 51);
  line(180, 240, 188, 260);
  //right boot
  fill(76, 53, 37);
  noStroke();
  quad(168, 260, 205, 260, 222, 300, 198, 300);
  quad(158, 250, 195, 250, 195, 260, 168, 260);
  triangle(170, 300, 198, 285, 198, 300);


  //robe tail right
  noStroke();
  fill(140);
  quad(250, 250, 280, 300, 240, 290, 210, 240);
  fill(190);
  quad(200, 235, 250, 250, 275, 290, 250, 285);
  fill(255);
  quad(230, 245, 255, 250, 270, 280, 250, 270);


  //building and platform
  fill(121, 49, 13);
  noStroke();
  rectMode(CORNER);
  rect(300, 280, 100, 120);
  fill(95, 37, 8);
  rect(290, 240, 110, 60);
  rect(290, 205, 30, 35);
  rect(340, 205, 30, 35);
  rect(390, 205, 30, 35);
  //bricks
  noFill();
  stroke(95, 37, 8);
  strokeWeight(1);
  rect(320, 320, 40, 20);
  rect(360, 340, 40, 20);
  rect(300, 380, 40, 20);
  //platform
  fill(121, 72, 22);
  stroke(90, 41, 2);
  rect(80, 300, 220, 30);
}

//draws blade when mouse is pressed and keeps it on screen for 1 frame
void mousePressed() {
  //sets frame rate to 1
  frameRate(1);
  //blade
  noStroke();
  fill(240);
  triangle(110, 226, 75, 216, 108, 233);

  println("Requiescat in Pace.");
}