- /*
- The ending scene of the game 'Final Fantasy crisis core'
- By: Edward(Yuhao) Lu
- Date Submitted: Sept 16, 2018
-
- Move mouse horizontally: The environment changed.
- Move mouse vertically: Interact with character.
- Mouse pressed: Feather and dialogue showed up.
-
- */
-
- void setup() {
- size(400, 400);
- }
-
- void draw() {
- frameRate(60);
- //Background
-
- noStroke();
- fill(166, 153, 138);
- rect(0, 318, 400, 49);
- noStroke();
- fill(217, 206, 193);
- rect(0, 116, 400, 202);
- noStroke();
- fill(167, 212, 217);
- rect(0, 57, 400, 59);
- noStroke();
- fill(109, 160, 166);
- rect(0, 0, 400, 57);
- noStroke();
- fill(166, 153, 138);
- rect(0, 318, 400, 49);
- noStroke();
- fill(166, 153, 138);
- rect(0, 318, 400, 49);
- noStroke();
- fill(166, 153, 138);
- rect(0, 318, 400, 49);
- noStroke();
- fill(89, 73, 71);
- rect(0, 367, 400, 33);
- rect(308, 335, 92, 40);
- rect(342, 324, 58, 30);
- rect(381, 310, 29, 30);
- rect(0, 345, 10, 30);
- rect(0, 325, 4, 20);
- noStroke();
- fill(166, 153, 138);
- rect(40, 365, 30, 8);
- rect(16, 361, 28, 15);
- rect(21, 366, 9, 15);
- rect(0, 279, 121, 50);
- rect(0, 261, 98, 50);
- rect(0, 240, 65, 50);
- rect(3, 225, 50, 50);
- rect(9, 210, 25, 40);
- rect(230, 295, 170, 23);
- rect(275, 280, 150, 30);
- rect(300, 260, 100, 30);
- rect(335, 245, 65, 30);
- rect(360, 220, 40, 30);
- rect(380, 208, 20, 30);
- rect(392, 188, 8, 30);
- noStroke();
- fill(217, 206, 193);
- rect(80, 249, 20, 40);
- rect(180, 309, 40, 20);
- rect(139, 309, 15, 18);
-
- //Shadow
- noStroke();
- fill(186, 186, 186, 100);
- ellipse(280, 380, 220+mouseY/18, 25);
-
- //Light
- noStroke();
- fill(255, 255, 255, 40);
- ellipse(0, 0, sin(frameCount/14)*10+mouseX*1.75, sin(frameCount/14)*10+mouseX*1.75);
- fill(255, 255, 255, 80);
- ellipse(0, 0, sin(frameCount/14)*8+mouseX*1.5, sin(frameCount/14)*8+mouseX*1.5);
- fill(255, 255, 255, 120);
- ellipse(0, 0, sin(frameCount/14)*5+mouseX*1.25, sin(frameCount/14)*5+mouseX*1.25);
- fill(255, 255, 255, 180);
- ellipse(0, 0, sin(frameCount/14)*3+mouseX*.95, sin(frameCount/14)*3+mouseX*.95);
- fill(255, 255, 255, 230);
- ellipse(0, 0, sin(frameCount/14)*8+mouseX*.625, sin(frameCount/14)*3+mouseX*.625);
- fill(255);
- ellipse(0, 0, mouseX*.3125, mouseX*.3215);
- noStroke();
- fill(255, 255, 255, mouseX*.2);
- quad(0, 40, mouseX*.25, mouseX*1.3, mouseX*1.1, mouseX, 60, 0);
-
-
-
-
- //Cloud
- noStroke();
- fill(21, 54, 65);
- rect(50+mouseX*.6, sin(frameCount/10)+42, 62, 20);
- rect(20+mouseX*.5, cos(frameCount/10)+55, 145, 30);
- rect(50+mouseX*.5, sin(frameCount/10)+70, 102, 25);
- rect(220+mouseX*.3, cos(frameCount/10)+15, 70, 20);
- rect(200+mouseX*.3, sin(frameCount/10)+30, 120, 25);
- rect(192+mouseX*.2, cos(frameCount/10)+50, 150, 25);
- rect(215+mouseX*.3, sin(frameCount/10)+71, 90, 16);
- rect(230+mouseX*.4, sin(frameCount/10)+81, 50, 10);
- rect(0+mouseX*.6, sin(frameCount/10)+0, 100, 25);
- rect(0+mouseX*.5, cos(frameCount/10)+0, 200, 15);
- rect(0+mouseX*.65, cos(frameCount/10)+30, 75, 10);
- rect(300+mouseX*.2, sin(frameCount/10)+0, 100, 15);
- rect(350+mouseX*.15, cos(frameCount/10)+10, 50, 13);
- rect(0+mouseX*.7, sin(frameCount/10)+100, 120, 10);
- rect(0+mouseX*.8, cos(frameCount/10)+108, 60, 15);
- rect(310+mouseX*.2, sin(frameCount/10)+90, 90, 13);
- rect(375+mouseX*.1, cos(frameCount/10)+80, 25, 12);
-
-
-
- //Right shoe
- noStroke();
- fill(25, 25, 31);
- quad(45, 351, 56, 355, 57, 379, 46, 366);
- quad(57, 356, 58, 380, 78, 383, 71, 369);
- quad(79, 383, 89, 381, 83, 369, 72, 369);
-
- //Right pants
- noStroke();
- fill(14, 14, 66);
- triangle(84, 369, 90, 381, 198, 342);
-
- //Left shoe
- noStroke();
- fill(25, 25, 31);
- quad(89, 337, 84, 347, 103, 346, 97, 334);
- triangle(84, 348, 91, 370, 103, 347);
- quad(91, 372, 97, 385, 106, 386, 104, 347);
- quad(106, 360, 107, 386, 124, 388, 117, 366);
-
- //Letf pants
- noStroke();
- fill(14, 14, 66);
- quad(119, 371, 125, 388, 208, 395, 150, 361);
- quad(151, 360, 210, 395, 263, 350, 200, 343);
- triangle(212, 395, 256, 393, 265, 350);
-
- //Belt
- noStroke();
- fill(58, 58, 61);
- quad(277-mouseY*.0175, 350, 283, 389-mouseY*.0075, 298-mouseY*.01, 390-mouseY*.005, 310-mouseY*.005, 393-mouseY*.0325);
- triangle(278-mouseY*.0175, 349+mouseY*.0025, 312, 394-mouseY*.03, 300-mouseY*.03, 343-mouseY*.005);
- noStroke();
- fill(39, 12, 12);
- quad(272-mouseY*.0075, 353-mouseY*.0025, 272+mouseY*.005, 390-mouseY*.01, 283+mouseY*.005, 389-mouseY*.01, 276-mouseY*.0025, 353+mouseY*.0025);
- noStroke();
- fill(64, 23, 23);
- quad(266-mouseY*.01, 349+mouseY*.0025, 258+mouseY*.0025, 394, 275-mouseY*.005, 390-mouseY*.005, 274-mouseY*.01, 350);
-
- //Face
- noStroke();
- fill(207, 190, 176);
- quad(361-mouseY*.0375, 330-mouseY*.0375, 352-mouseY*.0375, 335-mouseY*.0375, 344-mouseY*.0375, 336-mouseY*.0375, 361-mouseY*.0375, 349-mouseY*.0375);
- quad(343-mouseY*.0375, 336-mouseY*.0375, 341-mouseY*.0375, 345-mouseY*.0375, 358-mouseY*.0375, 359-mouseY*.0375, 360-mouseY*.0375, 349-mouseY*.0375);
-
- //Hair
- noStroke();
- fill(36, 36, 44);
- triangle(359-mouseY*.0375, 319-mouseY*.0375, 343-mouseY*.0375, cos(frameCount/10)+335-mouseY*.0375, 362-mouseY*.0375, 326-mouseY*.0375);
- triangle(360-mouseY*.0375, cos(frameCount/10)+319-mouseY*.0375, 362-mouseY*.0375, 331-mouseY*.0375, 369-mouseY*.0375, 328-mouseY*.0375);
- triangle(370-mouseY*.0375, 329-mouseY*.0375, 360-mouseY*.0375, 333-mouseY*.0375, 398-mouseY*.0375, sin(frameCount/10)+342-mouseY*.0375);
- quad(362-mouseY*.0375, 334-mouseY*.0375, 366-mouseY*.0375, 339-mouseY*.0375, 396-mouseY*.0375, sin(frameCount/10)+357-mouseY*.0375, 383-mouseY*.0375, 340-mouseY*.0375);
- quad(362-mouseY*.0375, 337-mouseY*.0375, 359-mouseY*.0375, 344-mouseY*.0375, 361-mouseY*.0375, 347-mouseY*.0375, 390-mouseY*.0375, sin(frameCount/10)+355-mouseY*.0375);
- triangle(361-mouseY*.0375, 347-mouseY*.0375, 359-mouseY*.0375, 354-mouseY*.0375, 390-mouseY*.0375, sin(frameCount/10)+357-mouseY*.0375);
- triangle(388-mouseY*.0375, 358-mouseY*.0375, 366-mouseY*.0375, 355-mouseY*.0375, 391-mouseY*.0375, sin(frameCount/10)+368-mouseY*.0375);
- triangle(368-mouseY*.0375, 356-mouseY*.0375, 374-mouseY*.0375, 371-mouseY*.0375, 386-mouseY*.0375, sin(frameCount/10)+367-mouseY*.0375);
- quad(368-mouseY*.0375, 359-mouseY*.0375, 360-mouseY*.0375, 358-mouseY*.0375, 363-mouseY*.0375, 370-mouseY*.0375, 373-mouseY*.0375, sin(frameCount/10)+372-mouseY*.0375);
-
-
- //Ear
- noStroke();
- fill(207, 190, 176);
- ellipse(365-mouseY*.0375, 357-mouseY*.0375, 10, 8);
- stroke(0, 0, 0, 100);
- line(365-mouseY*.0375, 357-mouseY*.0375, 367-mouseY*.0375, 356-mouseY*.0375);
-
-
- //Upper cloth
- noStroke();
- fill(14, 14, 66);
- triangle(302-mouseY*.03, 347-mouseY*.01, 314-mouseY*.0025, 393-mouseY*.0375, 317-mouseY*.035, 340-mouseY*.02);
- quad(318-mouseY*.035, 339-mouseY*.02, 316-mouseY*.005, 394-mouseY*.045, 343-mouseY*.0475, 346-mouseY*.0375, 333-mouseY*.0475, 338-mouseY*.0275);
- quad(344-mouseY*.0475, 348-mouseY*.04, 318-mouseY*.0075, 394-mouseY*.0425, 350-mouseY*.015, 380-mouseY*.05, 360-mouseY*.03, 370-mouseY*.0625);
-
- //Arm
- noStroke();
- fill(207, 190, 176);
- quad(341-mouseY*.0525, 361-mouseY*.0575, 295+mouseY*.0025, 376-mouseY*.145, 335-mouseY*.0575, 383-mouseY*.08, 344-mouseY*.0475, 380-mouseY*.0625);
- triangle(295, 377-mouseY*.145, 291-mouseY*.03, 391-mouseY*.175, 336-mouseY*.0625, 384-mouseY*.08);
- quad(256+mouseY*.0125, 381-mouseY*.215, 256-mouseY*.005, 389-mouseY*.22, 290-mouseY*.03, 390-mouseY*.175, 294, 376-mouseY*.145);
-
- //Hand
- noStroke();
- fill(25, 25, 31);
- quad(261+mouseY*.01, 375-mouseY*.2025, 251+mouseY*.0275, 379-mouseY*.225, 250, 388-mouseY*.2125, 257-mouseY*.005, 393-mouseY*.2175) ;
- quad(231+mouseY*.0325, 376-mouseY*.2375, 224+mouseY*.035, 380-mouseY*.255, 228+mouseY*.025, 383-mouseY*.24, 254+mouseY*.0125, 382-mouseY*.2);
- quad(229+mouseY*.02, 384-mouseY*.24, 233+mouseY*.0225, 388-mouseY*.2325, 254-mouseY*.0025, 386-mouseY*.215, 256-mouseY*.005, 382-mouseY*.2075);
- triangle(241+mouseY*.035, 373-mouseY*.2275, 233+mouseY*.0325, 375-mouseY*.2325, 258+mouseY*.001, 383-mouseY*.21);
-
-
- //Shoulder armor
- noStroke();
- fill(25, 25, 31);
- quad(338-mouseY*.055, 345-mouseY*.055, 345-mouseY*.055, 370-mouseY*.055, 360-mouseY*.055, 360-mouseY*.055, 348-mouseY*.055, 348-mouseY*.055);
- triangle(346-mouseY*.055, 371-mouseY*.055, 366-mouseY*.055, 378-mouseY*.055, 361-mouseY*.055, 361-mouseY*.055);
- triangle(366-mouseY*.055, 379-mouseY*.055, 345-mouseY*.055, 372-mouseY*.055, 353-mouseY*.055, 393-mouseY*.055);
- quad(344-mouseY*.055, 373-mouseY*.055, 342-mouseY*.055, 378-mouseY*.055, 338-mouseY*.055, 381-mouseY*.055, 353-mouseY*.055, 394-mouseY*.055);
-
- //Camera
- noStroke();
- fill(0, 0, 0, 150-mouseX*0.625);
- rect(0, 0, 400, 400);
-
- //Feather
- noStroke();
- fill(255);
- quad(0+mouseX, 0+mouseY, 0+mouseX, 10+mouseY, 10+mouseX, 20+mouseY, 20+mouseX, 20+mouseY);
- quad(0+mouseX, 0+mouseY, 10+mouseX, 0+mouseY, 20+mouseX, 10+mouseY, 20+mouseX, 20+mouseY);
- stroke(0);
- line(0+mouseX, 0+mouseY, 16+mouseX, 16+mouseY);
- stroke(0);
- line(-5+mouseX, -5+mouseY, 0+mouseX, 0+mouseY);
- }
-
- void mousePressed() {
- frameRate(2);
- noStroke();
- fill(255, 255, 255, 50);
- ellipse(310, 210, 80, 80);
- ellipse(250, 200, 90, 90);
- ellipse(300, 260, 100, 100);
- ellipse(100, 260, 150, 150);
- ellipse(150, 200, 70, 70);
- ellipse(400, 240, 150, 150);
- ellipse(0, 200, 90, 90);
- fill(255, 255, 255, 90);
- ellipse(310, 210, 60, 60);
- ellipse(265, 210, 50, 50);
- ellipse(100, 260, 150, 80);
- ellipse(60, 320, 60, 60);
- fill(255, 255, 255, 100);
- ellipse(100, 260, 65, 100);
- noStroke();
- fill(255, 255, 255, 190);
- quad(320, 200, 300, 200, 260, 240, 260, 260);
- quad(320, 200, 320, 220, 280, 260, 260, 260);
- quad(80, 240, 80, 280, 140, 340, 180, 340);
- quad(80, 240, 120, 240, 180, 300, 180, 340);
- quad(200, 220, 200, 230, 220, 250, 230, 250);
- quad(200, 220, 210, 220, 230, 240, 230, 250);
- stroke(0);
- line(340, 180, 266, 254);
- line(40, 200, 170, 330);
- line(192, 212, 223, 243);
- stroke(255);
- line(320, 200, 300, 195);
- line(320, 200, 300, 190);
- line(320, 200, 303, 182);
- line(320, 200, 340, 210);
- line(320, 200, 335, 213);
- line(320, 200, 325, 213);
- line(80, 240, 70, 280);
- line(80, 240, 50, 230);
- line(80, 240, 50, 250);
- line(80, 240, 120, 230);
- line(80, 240, 100, 220);
- line(80, 240, 90, 200);
- line(80, 240, 60, 270);
- line(200, 220, 210, 210);
- line(200, 220, 203, 210);
- line(200, 220, 210, 215);
- line(200, 220, 190, 230);
- line(200, 220, 195, 230);
- line(200, 220, 185, 225);
-
- println("Those wings... I want them too");
- }
-