Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
 /*

 ******For Egypt!!*****
 By Kai Zhuang
 2018.9.16
 Egypt is going to have a war with Rome. Before
 the battle, the general is encouraging the morale.

 When the player moves mouse vertically, the general's arm
 moves vertically.

 */



 void setup()
 {
 //set the size of the paper
 size (400,400);
 }
 
 void draw(){
 noStroke(); 
 //set framerate to 60(different to when mouse click)
 frameRate(60);
 rectMode(CORNERS);
 //set background that can be changed by moving mouse vertically(sunny day to sandstorm)
 background(255-mouseY/5,244,142+mouseY/5);

//Pyramid
 fill(247,198,122);
 triangle(220,140,100,320,340,320);
 triangle(80,200,0,320,160,320);
 fill(213,144,41);
 triangle(80,200,0,320,50,320);
 triangle(220,140,100,320,180,320);
 
 //Ground(5levels of color)
 fill(158,113,58);
 rect(0,370,400,400);
 fill(163,118,62);
 rect(0,350,400,370);
 fill(168,123,66);
 rect(0,340,400,350);
 fill(173,128,70);
 rect(0,330,400,340);
 fill(178,133,74);
 rect(0,320,400,330);

 //Sun(the edges will always winking)
 ellipseMode(CENTER);
 fill(254,224,80,170);
 ellipse(340,60, 40+10*sin(frameCount*.1), 40+10*sin(frameCount*.1));
 fill(254,234,80,130);
 ellipse(340,60, 50+10*sin(frameCount*.1), 50+10*sin(frameCount*.1));
 fill(254,255,85,90);
 ellipse(340,60, 60+10*sin(frameCount*.1), 60+10*sin(frameCount*.1));
 fill(254,255,95,50);
 ellipse(340,60, 70+10*sin(frameCount*.1), 70+10*sin(frameCount*.1));
 fill(254,255,105,50);
 ellipse(340,60, 90+10*sin(frameCount*.1), 90+10*sin(frameCount*.1));
 fill(254,199,80,190);
 ellipseMode(CORNERS);
 ellipse(325,45,355,75);
 
 //Cloud(moves horizontally when mouse moves horizontally)
 fill(255,255,255,180);
 rect(-40+mouseX/1,110,-130+mouseX/1,130,7);
 rect(-70+mouseX/1,100,-120+mouseX/1,110,7,7,0,0);
 rect(-80+mouseX/1,90,-110+mouseX/1,100,7,7,0,0);

 rect(160+mouseX/2,60,240+mouseX/2,80,7);
 rect(170+mouseX/2,50,220+mouseX/2,60,7,7,0,0);
 rect(190+mouseX/2,40,220+mouseX/2,50,7,7,0,0);
 
 //Solider1//
 //head
 noStroke();
 rectMode(CORNERS);
 fill(0);
 rect(40,240,60,260);
 //neck
 fill(212,174,158);
 rect(45,260,55,265);
 //face
 fill(252,205,183);
 quad(42,245,58,245,55,260,45,260);
 //body
 quad(35,265,65,265,60,295,40,295);
  //arm(moves vertically when mouse moves vertically)
 rect(35,235+mouseY/15,38,265+mouseY/15);
 rect(62,240+mouseY/15,65,270+mouseY/15);
 //pant
 fill(255);
 quad(40,295,60,295,65,315,35,315);
 //leg
 rect(43,315,48,335);
 rect(55,315,60,335);
 //foot
 rect(42,335,49,340);
 rect(54,335,61,340);
 //shield(moves vertically when mouse moves vertically)
 stroke(172,127,89);
 strokeWeight(3);
 fill(198,154,107);
 quad(32,235+mouseY/15,27,280+mouseY/15,43,280+mouseY/15,38,235+mouseY/15);
 //weapon(moves vertically when mouse moves vertically)
 stroke(0);
 strokeWeight(3);
 line(65,215+mouseY/15,65,310+mouseY/15);
 quad(65,215+mouseY/15,63,220+mouseY/15,65,215+mouseY/15,67,220+mouseY/15);
 //eyes&mouth
 strokeWeight(2);
 line(45,250,46,250);
 line(53,250,54,250);
 line(48,255,52,255);
 
 
 //Solider2//
 //head
 noStroke();
 rectMode(CORNERS);
 fill(0);
 rect(100,240,120,260);
 //neck
 fill(212,174,158);
 rect(105,260,115,265);
 //face
 fill(252,205,183);
 quad(102,245,118,245,115,260,105,260);
 //body
 quad(95,265,125,265,120,295,100,295);
  //arm
 rect(95,235+mouseY/15,98,265+mouseY/15);
 rect(122,240+mouseY/15,125,270+mouseY/15);
 //pant
 fill(255);
 quad(100,295,120,295,125,315,95,315);
 //leg
 rect(103,315,108,335);
 rect(115,315,120,335);
 //foot
 rect(102,335,109,340);
 rect(114,335,121,340);
 //shield
 stroke(172,127,89);
 strokeWeight(3);
 fill(198,154,107);
 quad(92,235+mouseY/15,87,280+mouseY/15,103,280+mouseY/15,98,235+mouseY/15);
 //weapon
 stroke(0);
 strokeWeight(3);
 line(125,215+mouseY/15,125,310+mouseY/15);
 quad(125,215+mouseY/15,123,220+mouseY/15,125,215+mouseY/15,127,220+mouseY/15);
 //eyes&mouth
 strokeWeight(2);
 line(105,250,106,250);
 line(113,250,114,250);
 line(108,255,112,255);
 
 //Solider3//
 //head
 noStroke();
 rectMode(CORNERS);
 fill(0);
 rect(160,240,180,260);
 //neck
 fill(212,174,158);
 rect(165,260,175,265);
 //face
 fill(252,205,183);
 quad(162,245,178,245,175,260,165,260);
 //body
 quad(155,265,185,265,180,295,160,295);
  //arm
 rect(155,235+mouseY/15,158,265+mouseY/15);
 rect(182,240+mouseY/15,185,270+mouseY/15);
 //pant
 fill(255);
 quad(160,295,180,295,185,315,155,315);
 //leg
 rect(163,315,168,335);
 rect(175,315,180,335);
 //foot
 rect(162,335,169,340);
 rect(174,335,181,340);
 //shield
 stroke(172,127,89);
 strokeWeight(3);
 fill(198,154,107);
 quad(152,235+mouseY/15,147,280+mouseY/15,163,280+mouseY/15,158,235+mouseY/15);
 //weapon
 stroke(0);
 strokeWeight(3);
 line(185,215+mouseY/15,185,310+mouseY/15);
 quad(185,215+mouseY/15,183,220+mouseY/15,185,215+mouseY/15,187,220+mouseY/15);
 //eyes&mouth
 strokeWeight(2);
 line(165,250,166,250);
 line(173,250,174,250);
 line(168,255,172,255);


 //Solider4//
 //head
 noStroke();
 rectMode(CORNERS);
 fill(0);
 rect(220,240,240,260);
 //neck
 fill(212,174,158);
 rect(225,260,235,265);
 //face
 fill(252,205,183);
 quad(222,245,238,245,235,260,225,260);
 //body
 quad(215,265,245,265,240,295,220,295);
  //arm
 rect(215,235+mouseY/15,218,265+mouseY/15);
 rect(242,240+mouseY/15,245,270+mouseY/15);
 //pant
 fill(255);
 quad(220,295,240,295,245,315,215,315);
 //leg
 rect(223,315,228,335);
 rect(235,315,240,335);
 //foot
 rect(222,335,229,340);
 rect(234,335,241,340);
 //shield
 stroke(172,127,89);
 strokeWeight(3);
 fill(198,154,107);
 quad(212,235+mouseY/15,207,280+mouseY/15,223,280+mouseY/15,218,235+mouseY/15);
 //weapon
 stroke(0);
 strokeWeight(3);
 line(245,215+mouseY/15,245,310+mouseY/15);
 quad(245,215+mouseY/15,243,220+mouseY/15,245,215+mouseY/15,247,220+mouseY/15);
 //eyes&mouth
 strokeWeight(2);
 line(225,250,226,250);
 line(233,250,234,250);
 line(228,255,232,255);

 
 
 
 //General//
 //head
 noStroke();
 fill(80,79,75);
 quad(180,350,170,360,170,400,250,400);
 quad(220,320,180,350,250,400,250,350);
 quad(190,310,140,330,150,350,180,350);
 triangle(190,310,180,350,220,320);
 triangle(200,260,190,310,220,330);
 triangle(220,260,200,320,220,320);
 
 //inside
 stroke(0);
 strokeWeight(2);
 line(180,350,170,360);
 line(170,360,170,400);
 line(180,355,175,360);
 line(175,360,175,400);
 line(205,350,210,360);
 line(210,360,210,400);
 line(210,350,215,360);
 line(215,360,215,400);
 strokeWeight(1);
 line(180,350,200,400);
 line(200,350,210,370);
 line(210,350,220,340);
 line(220,340,220,330);
 
 //eye
 noStroke();
 fill(255);
 quad(180,320,170,325,190,325,190,320);
 
 //arm(moves vertically when mouse moves vertically)
 fill(80,79,75);
 rect(280,250+mouseY/2,310,260+mouseY/2);
 rect(270,260+mouseY/2,310,280+mouseY/2);
 quad(280,280+mouseY/2,290,340+mouseY/2,320,330+mouseY/2,300,280+mouseY/2);
 quad(320,330+mouseY/2,320,350+mouseY/2,330,350+mouseY/2,330,340+mouseY/2);
 triangle(320,330+mouseY/2,290,340+mouseY/2,320,350+mouseY/2);
 quad(290,340+mouseY/2,260,400+mouseY/2,300,400+mouseY/2,320,350+mouseY/2);
 
 
 }

 //when mouse clicked,show text and gerenal's eye change color
 void mousePressed() {
 //set the framerate to 5 to keep the color change for longer time
 frameRate(5);
 fill(255,0,0);
 quad(180,320,170,325,190,325,190,320);
 println("For Egypt!!!!");
  
}