Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
/////////////////THE PRINCESS AND THE GENERAL//////////////////////////////
///////////////////////BY DEXTER TRUONG////////////////////////////////////

//START OF PROGRAM
void setup() {
  //Setup size of window
  size(400, 400);
}

void draw() {
  frameRate(60);
  //Mode of shapes
  noStroke();
  ellipseMode(CORNERS);
  rectMode(CORNERS);

  //Background colour
  background(94, 164, 224);

  //Draw the ground
  fill(67, 151, 60);
  rect(0, 280, 400, 400);


  /////////////////////LEFT TREE///////////////////////  
  //Draw left tree trunk and branches
  fill(127, 123, 92);
  triangle(40, 300, 80, 300, 60, 100);
  triangle(30, 300, 40, 300, 50, 260);
  triangle(90, 300, 50, 300, 60, 180);
  triangle(60, 160, 60, 145, 125, 120);

  //Draw leaves of left tree, background
  fill(190, 139, 189);
  ellipse(20, 30, 60, 70);
  ellipse(0, 80, 60, 140);

  //Draw leaves of the left tree, middleground
  fill(233, 172, 232);
  ellipse(20, 40, 100, 130);
  ellipse(110, 100, 150, 140 );

  //Draw leaves of the left tree, foreground
  fill(234, 186, 233);
  ellipse(70, 30, 110, 70);
  /////////////////////LEFT TREE///////////////////////





  /////////////////////RIGHT TREE///////////////////////
  //Draw right tree trunk and branches
  fill(127, 123, 92);
  triangle(360, 300, 320, 300, 340, 80);
  triangle(380, 300, 355, 300, 355, 240); 
  triangle(310, 300, 330, 300, 330, 200);
  triangle(350, 160, 330, 200, 380, 130);

  //Draw leaves of right tree, background
  fill(190, 139, 189);
  ellipse(280, 20, 340, 80);
  ellipse(360, 80, 380, 100);

  //Draw leaves of right tree, middleground
  fill(233, 172, 232);
  ellipse(300, 20, 380, 100 );
  ellipse(370, 120, 390, 140 );

  //Draw leaves of right tree, foreground
  fill(234, 186, 233);
  ellipse(300, 80, 320, 100);
  ellipse(340, 20, 380, 60 ); 
  ellipse(380, 130, 400, 150);
  /////////////////////RIGHT TREE///////////////////////




  /////////////////////THE PRINCESS///////////////////////

  //Prinecess's hair: back
  fill(75, 58, 75);
  rect(52, 160, 130, 300);

  //Princess's hair: back bang
  fill(88, 64, 88);
  rect(147, 227, 120, 180);

  //Princess's head, neck, and shoulders
  fill(255, 229, 200);
  ellipse(80, 160, 140, 220);
  triangle(123, 225, 95, 216, 134, 208);
  rect(100, 215, 112, 250);
  quad(90, 240, 122, 240, 127, 250, 82, 250);

  //Princess's arms
  triangle(162, 267, 175, 290, 142, 280);
  triangle(50, 267, 30, 290, 60, 283);

  //Priness's legs
  triangle(80, 340, 100, 340, 80, 380);
  triangle(110, 340, 130, 340, 110, 380);  

  //Priness's Hair: bangs
  fill(75, 58, 75);
  ellipse( 52, 140, 150, 180);
  rect(150, 180, 52, 160);

  //Princess's hair: front bang
  fill(88, 64, 88);
  quad(77, 160, 90, 160, 77, 230, 60, 220 );

  //Princess's eyes
  fill(0, 0, 0);
  ellipse(102, 183, 112, 197);
  ellipse(130, 182, 137, 197);

  //Princess's blush
  fill(227, 150, 188);
  ellipse(90, 197, 103, 202 );
  ellipse(132, 197, 145, 202);

  //Princess's dress: base
  fill(230, 227, 229);
  quad(82, 250, 127, 250, 150, 340, 60, 340);

  //Princess's dress: sleeves
  triangle(90, 240, 60, 290, 40, 270);
  triangle(122, 240, 170, 270, 142, 290);

  //Princess's dress: highlight
  fill(198, 72, 72);
  ellipse(75, 250, 115, 290);
  ellipse(95, 250, 135, 290 );
  triangle(105, 350, 75, 275, 135, 275);
  triangle(60, 340, 60, 350, 50, 350);
  triangle(150, 340, 150, 350, 160, 350);

  //Priness's dress: front ornament
  fill(245, 241, 139);
  quad(100, 260, 110, 260, 115, 280, 95, 280); 
  quad(90, 260, 100, 260, 100, 265, 90, 270);
  quad(110, 260, 120, 260, 120, 270, 110, 265);
  triangle(95, 280, 100, 280, 95, 290);
  triangle(100, 280, 110, 280, 105, 300);
  triangle(115, 280, 110, 280, 115, 290);

  //Princess's thigh highs
  fill(113, 113, 113);
  triangle(80, 350, 95, 350, 80, 380);
  triangle(110, 350, 125, 350, 110, 380);  
  /////////////////////THE PRINCESS///////////////////////






  /////////////////////THE GENERAL///////////////////////   
  //General's back hair
  fill(81, 83, 78);
  triangle(275, 220, 282, 175, 297, 175);  

  //General's head and neck
  fill(255, 229, 200);
  ellipse(280, 160, 340, 220);   
  triangle(295, 225, 320, 219, 281, 200);
  rect(310, 215, 320, 250);

  //General's arms
  fill(255, 229, 200);
  triangle(265, 285, 275, 297, 245, 315);
  triangle(370, 285, 360, 297, 390, 315);

  //General's eyes
  fill(0, 0, 0);
  ellipse(310, 183, 320, 197);
  ellipse(285, 182, 293, 197 );

  //General's blush
  fill(227, 150, 188);
  ellipse(275, 197, 288, 202);
  ellipse(317, 197, 330, 202);

  //General's hat: visor
  fill(109, 109, 109);
  quad(290, 160, 355, 160, 340, 170, 275, 170);
  triangle(340, 170, 370, 150, 330, 160);

  //General's hat: mid piece
  fill(188, 157, 109);
  rect(290, 160, 335, 150);
  triangle(335, 150, 335, 160, 370, 150);

  //General's hat: top piece
  fill(80, 107, 49);
  quad(280, 130, 340, 130, 340, 150, 290, 150);
  triangle(340, 130, 340, 150, 370, 150);
  triangle(280, 130, 340, 130, 320, 120);

  //General's hair: bangs
  fill(81, 83, 78);
  triangle(270, 190, 280, 170, 310, 170);
  triangle(310, 170, 325, 170, 300, 200);
  triangle(325, 170, 340, 170, 325, 190);

  //General's hair: side
  fill(81, 83, 78);
  quad(335, 170, 360, 157, 370, 190, 340, 200);
  triangle(340, 199, 330, 230, 355, 190);
  triangle(345, 190, 350, 220, 360, 190); 
  triangle(355, 190, 360, 215, 370, 190);

  //General's uniform: sleeves
  fill(83, 110, 51);
  quad(260, 290, 293, 240, 293, 280, 265, 310);
  quad(340, 280, 340, 240, 375, 290, 370, 310); 

  //General's uniform: jacket front
  fill(80, 107, 49);
  quad(293, 240, 340, 240, 350, 320, 280, 320);

  //General's uniform: undershirt
  fill(186, 175, 139);
  triangle(307, 245, 322, 245, 315, 290);

  //General's uniform: detail
  fill(101, 135, 63);
  triangle(293, 240, 310, 255, 310, 245);
  triangle(340, 240, 320, 255, 320, 245);
  triangle(310, 255, 295, 255, 315, 290);
  triangle(320, 255, 335, 255, 315, 290);

  //General's uniform: belt
  fill(0, 0, 0);
  quad(285, 293, 347, 293, 347, 298, 285, 298);

  //General's uniform: belt buckle
  fill(150, 150, 150);
  rect(307, 290, 323, 300);

  //General's uniform: pants
  fill(66, 88, 40);
  triangle(280, 320, 310, 320, 310, 380);
  triangle(320, 320, 350, 320, 350, 380);

  //General's uniform: Boots
  fill(0, 0, 0);
  rect(290, 340, 310, 380);
  rect(330, 340, 350, 380);
  rect(310, 380, 280, 370); 
  rect(350, 380, 320, 370);
  /////////////////////THE GENERAL///////////////////////  

  /////////////////////CHERRY BLOSSOMS///////////////////
  //Cherry blossom petals, center the ellipses' for cherry blossom mouse movement
  ellipseMode(CENTER);
  fill(255, 118, 253, 95);
  ellipse(-mouseX/60+300, -mouseY/60+300, 15, 5);
  ellipse(-mouseX/60+90, -mouseY/60+90, 15, 5);  
  ellipse(-mouseX/60+60, -mouseY/60+150, 15, 5);
  ellipse(-mouseX/60+80, -mouseY/10+220, 15, 5);
  ellipse(-mouseX/60+97, -mouseY/60+150, 15, 5);
  ellipse(-mouseX/60+44, -mouseY/260+355, 15, 5);
  ellipse(-mouseX/20+321, -mouseY/60+200, 15, 5);
  ellipse(-mouseX/30+360, -mouseY/60+50, 15, 5);
  ellipse(-mouseX/60+115, -mouseY/10+110, 15, 5);
  ellipse(-mouseX/60+72, -mouseY/60+150, 15, 5);
  ellipse(-mouseX/80+48, -mouseY/10+197, 15, 5);
  ellipse(-mouseX/60+270, -mouseY/60+150, 15, 5);
  ellipse(-mouseX/60+300, -mouseY/55+150, 15, 5);
  ellipse(-mouseX/40+377, -mouseY/40+350, 15, 5);
  ellipse(-mouseX/60+275, -mouseY/60+380, 15, 5);
  ellipse(-mouseX/60+360, -mouseY/50+350, 15, 5);
  ellipse(-mouseX/20+296, -mouseY/10+175, 15, 5);
  ellipse(-mouseX/50+342, -mouseY/60+315, 15, 5);
  ellipse(-mouseX/60+255, -mouseY/30+255, 15, 5);
  ellipse(-mouseX/100+281, -mouseY/60+157, 15, 5);
  ellipse(-mouseX/60+122, -mouseY/60+350, 15, 5);
  ellipse(-mouseX/60+160, -mouseY/22+347, 15, 5);
  ellipse(-mouseX/20+150, -mouseY/60+150, 15, 5);
  ellipse(-mouseX/30+177, -mouseY/60+350, 15, 5);
  ellipse(-mouseX/15+60, -mouseY/90+250, 15, 5);
  ellipse(-mouseX/44+247, -mouseY/20+222, 15, 5);
  ellipse(-mouseX/40+160, -mouseY/30+280, 15, 5);
  ellipse(-mouseX/10+60, -mouseY/10+30, 15, 5);
  ellipse(-mouseX/40+150, -mouseY/30+320, 15, 5);
  ellipse(-mouseX/60+166, -mouseY/20+212, 15, 5);
  ellipse(-mouseX/30+162, -mouseY/10+275, 15, 5);
  ellipse(-mouseX/60+190, -mouseY/10+244, 15, 5);
  ellipse(-mouseX/10+160, -mouseY/30+15, 15, 5);  
  ellipse(-mouseX/20+160, -mouseY/60+30, 15, 5);
  ellipse(-mouseX/30+260, -mouseY/30+55, 15, 5);
  ellipse(-mouseX/10+275, -mouseY/15+44, 15, 5);
  ellipse(-mouseX/30+250, -mouseY/30+750, 15, 5);
  ellipse(-mouseX/20+160, -mouseY/40+67, 15, 5);  
  ellipse(-mouseX/25+152, -mouseY/80+137, 15, 5);  
  ellipse(-mouseX/12+147, -mouseY/60+150, 15, 5);  
  ellipse(-mouseX/20+153, -mouseY/40+170, 15, 5);  
  ellipse(-mouseX/70+166, -mouseY/66+66, 15, 5);  
  ellipse(-mouseX/13+185, -mouseY/10+85, 15, 5);  
  ellipse(-mouseX/20+199, -mouseY/10+205, 15, 5);  
  ellipse(-mouseX/20+310, -mouseY/10+300, 15, 5);  
  ellipse(-mouseX/10+320, -mouseY/60+320, 15, 5);  
  ellipse(-mouseX/40+230, -mouseY/20+375, 15, 5);  
  ellipse(-mouseX/10+225, -mouseY/50+277, 15, 5);  
  ellipse(-mouseX/20+234, -mouseY/20+310, 15, 5);  
  ellipse(-mouseX/30+121, -mouseY/20+320, 15, 5);    
  ellipse(-mouseX/10+199, -mouseY/30+315, 15, 5);  
  ellipse(-mouseX/13+60, -mouseY/10+2700, 15, 5); 
  ellipse(-mouseX/20+337, -mouseY/12+247, 15, 5);   
  ellipse(-mouseX/20+200, -mouseY/10+200, 15, 5);  
  ellipse(-mouseX/10+260, -mouseY/60+250, 15, 5);  
  ellipse(-mouseX/30+215, -mouseY/30+230, 15, 5);  
  ellipse(-mouseX/10+210, -mouseY/20+10, 15, 5);  
  ellipse(-mouseX/30+200, -mouseY/30+150, 15, 5);  
  ellipse(-mouseX/25+215, -mouseY/10+75, 15, 5);  
  ellipse(-mouseX/33+222, -mouseY/20+157, 15, 5);  
  ellipse(-mouseX/17+205, -mouseY/20+77, 15, 5);  
  ellipse(-mouseX/44+212, -mouseY/30+140, 15, 5);  
  ellipse(-mouseX/15+230, -mouseY/20+140, 15, 5);  
  ellipse(-mouseX/10+220, -mouseY/30+130, 15, 5);  
  ellipse(-mouseX/20+225, -mouseY/40+125, 15, 5);    
  /////////////////////CHERRY BLOSSOMS///////////////////
}

/////////////////////THE HEART/////////////////////////
void mousePressed() {
  frameRate(3);
  //Reset ellipse mode back to corners
  ellipseMode(CORNERS);
  fill(255, 74, 163);
  ellipse(175, 120, 215, 160);
  ellipse(210, 160, 250, 120);
  triangle(178, 150, 247, 150, 215, 200);
}
/////////////////////THE HEART/////////////////////////

//END OF PROGRAM