/* 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"); }