/* -Flame in the darkness- by Vicky Liu In the darkness, Eyes of the demons are staring at you, The only light source floats upon your palm. Light it up brightly with your power, and Let it escort you through the danger. */ void setup() { size(400, 400); rectMode(CENTER); ellipseMode(RADIUS); } void draw() { frameRate(50); background(30, 30, 0); //evil eyes with a shaky movement //first layer, red semicircles strokeWeight(4); stroke(66, 0, 43); fill(124, 14, 34, 150); arc(200+sin(frameCount*0.8), 150+sin(frameCount*0.8), 80, 80, 0, PI); arc(80+sin(frameCount*0.8), 80+sin(frameCount*0.8), 60, 60, 0, PI); arc(120+sin(frameCount*0.8), 300+sin(frameCount*0.8), 90, 90, 0, PI); arc(340+sin(frameCount*0.8), 25+sin(frameCount*0.8), 90, 90, 0, PI); //second layer, red ellipses fill(255, 126, 126, 60); ellipse(200+sin(frameCount*0.8), 190+sin(frameCount*0.8), 20, 40); ellipse(80+sin(frameCount*0.8), 110+sin(frameCount*0.8), 10, 30); ellipse(120+sin(frameCount*0.8), 350+sin(frameCount*0.8), 30, 45); ellipse(340+sin(frameCount*0.8), 70+sin(frameCount*0.8), 30, 45); //hand noStroke(); fill(118, 20, 103); //palm quad(180, 260, 320, 320, 270, 400, 100, 400); //thumb quad(75, 335, 115, 315, 140, 340, 100, 410); quad(80, 250, 110, 270, 115, 316, 75, 336); quad(110, 210, 125, 235, 110, 271, 80, 251); //index finger quad(195, 215, 220, 230, 210, 280, 180, 261); quad(220, 170, 240, 185, 220, 231, 195, 216); quad(245, 140, 260, 150, 240, 186, 220, 171); //middle finger quad(255, 235, 280, 250, 250, 295, 220, 285); quad(275, 187, 295, 198, 280, 251, 255, 236); quad(292, 148, 313, 155, 295, 199, 275, 188); //index finger quad(285, 258, 305, 271, 290, 315, 262, 305); quad(303, 218, 322, 230, 305, 272, 285, 259); quad(319, 182, 331, 188, 322, 231, 303, 219); //pinky quad(329, 287, 340, 302, 315, 325, 295, 310); quad(350, 271, 360, 283, 340, 303, 329, 288); quad(360, 252, 375, 255, 360, 284, 350, 272); //hand shadow fill(85, 20, 87); triangle(115, 375, 140, 401, 100, 410); quad(75, 335, 95, 325, 115, 375, 100, 410); quad(80, 250, 95, 261, 95, 325, 75, 336); triangle(110, 210, 95, 261, 80, 250); //palm print strokeWeight(3); stroke(85, 20, 87); line(170, 290, 190, 321); line(190, 320, 200, 341); line(200, 341, 220, 360); line(220, 360, 240, 385); line(200, 300, 220, 310); line(220, 310, 240, 330); line(240, 330, 260, 340); //Lights and light effects move and change colour corresponding to mouse position //light effects noStroke(); fill(mouseY*.2+219, 255, -mouseY*0.2+152, 20); ellipse((mouseX+700)*.25, (mouseY+700)*.25, 25, 25); ellipse((mouseX+700)*.25, (mouseY+700)*.25, 35, 35); ellipse((mouseX+700)*.25, (mouseY+700)*.25, 45, 45); ellipse((mouseX+700)*.25, (mouseY+700)*.25, 55, 55); ellipse((mouseX+700)*.25, (mouseY+700)*.25, 65, 75); ellipse((mouseX+700)*.25, (mouseY+700)*.25, 85, 95); ellipse((mouseX+800)*.25, (mouseY+1200)*.25, 20, 15); //light source noStroke(); fill(mouseY*.2+180, 219, -mouseY*0.2+13, 150); ellipse((mouseX+700)*.25, (mouseY+700)*.25, 20, 15); //other small lights fill(181, 255, 160, 150); ellipse((mouseX+500)*.35, (mouseY+350)*.35, 3, 2); ellipse((mouseX+500)*.15, (mouseY+1200)*.15, 6, 5); ellipse((mouseX+500)*.25, (mouseY+1600)*.15, 5, 4); ellipse((mouseX+700)*.35, (mouseY+700)*.25, 5, 4); ellipse((mouseX+300)*.35, (mouseY+200)*.35, 4, 2); } void mousePressed() { frameRate(2); background(0, 97, 141); //hand noStroke(); fill(189, 193, 224); //thumb quad(180, 260, 320, 320, 270, 400, 100, 400); quad(75, 335, 115, 315, 140, 340, 100, 410); quad(80, 250, 110, 270, 115, 316, 75, 336); quad(110, 210, 125, 235, 110, 271, 80, 251); //index finger quad(195, 215, 220, 230, 210, 280, 180, 261); quad(220, 170, 240, 185, 220, 231, 195, 216); quad(245, 140, 260, 150, 240, 186, 220, 171); //middle finger quad(255, 235, 280, 250, 250, 295, 220, 285); quad(275, 187, 295, 198, 280, 251, 255, 236); quad(292, 148, 313, 155, 295, 199, 275, 188); //index finger quad(285, 258, 305, 271, 290, 315, 262, 305); quad(303, 218, 322, 230, 305, 272, 285, 259); quad(319, 182, 331, 188, 322, 231, 303, 219); //pinky quad(329, 287, 340, 302, 315, 325, 295, 310); quad(350, 271, 360, 283, 340, 303, 329, 288); quad(360, 252, 375, 255, 360, 284, 350, 272); //hand shadow fill(50, 20, 100); triangle(115, 375, 140, 401, 100, 410); quad(75, 335, 95, 325, 115, 375, 100, 410); quad(80, 250, 95, 261, 95, 325, 75, 336); triangle(110, 210, 95, 261, 80, 250); //palm print strokeWeight(3); stroke(85, 20, 87); line(170, 290, 190, 321); line(190, 320, 200, 341); line(200, 341, 220, 360); line(220, 360, 240, 385); line(200, 300, 220, 310); line(220, 310, 240, 330); line(240, 330, 260, 340); //light effects and flame's positions are determined by mouse position //light effects noStroke(); fill(0, 155, 170, 30); ellipse(mouseX, mouseY-30, 90, 90); ellipse(mouseX, mouseY-30, 100, 100); ellipse(mouseX, mouseY-30, 110, 110); ellipse(mouseX, mouseY-30, 130, 130); ellipse(mouseX, mouseY-30, 150, 150); ellipse(mouseX, mouseY-30, 160, 160); ellipse(mouseX, mouseY-30, 175, 175); ellipse(mouseX, mouseY-30, 195, 195); //flame //bottom layer noStroke(); fill(56, 90, 255, 220); ellipse(mouseX, mouseY, 80, 50); triangle(mouseX-80, mouseY-70, mouseX-40, mouseY-20, mouseX-80, mouseY); triangle(mouseX+20, mouseY-160, mouseX+50, mouseY-30, mouseX-50, mouseY-30); triangle(mouseX+70, mouseY-100, mouseX+80, mouseY, mouseX+50, mouseY-30); triangle(mouseX+10, mouseY-190, mouseX+40, mouseY-45, mouseX-10, mouseY-50); triangle(mouseX-40, mouseY-120, mouseX, mouseY-50, mouseX-40, mouseY-40); triangle(mouseX-60, mouseY-90, mouseX-60, mouseY-50, mouseX-70, mouseY-70); triangle(mouseX+80, mouseY-90, mouseX+100, mouseY-50, mouseX+80, mouseY-70); //second layer fill(40, 10, 255, 225); ellipse(mouseX, mouseY, 70, 40); triangle(mouseX-70, mouseY-50, mouseX-30, mouseY, mouseX-70, mouseY+10); triangle(mouseX+20, mouseY-130, mouseX+40, mouseY-30, mouseX-40, mouseY-30); triangle(mouseX+70, mouseY-80, mouseX+70, mouseY-20, mouseX+60, mouseY-30); triangle(mouseX+10, mouseY-170, mouseX+30, mouseY-65, mouseX-10, mouseY-50); triangle(mouseX-40, mouseY-120, mouseX, mouseY-50, mouseX-40, mouseY-40); triangle(mouseX-60, mouseY-90, mouseX-60, mouseY-50, mouseX-70, mouseY-70); triangle(mouseX+80, mouseY-90, mouseX+100, mouseY-50, mouseX+80, mouseY-70); //third layer fill(0, 200, 255); ellipse(mouseX, mouseY, 60, 20); triangle(mouseX-68, mouseY-38, mouseX-35, mouseY, mouseX-60, mouseY); triangle(mouseX+18, mouseY-110, mouseX+40, mouseY-10, mouseX-40, mouseY-15); triangle(mouseX+70, mouseY-80, mouseX+70, mouseY-40, mouseX+60, mouseY-48); triangle(mouseX+10, mouseY-145, mouseX+20, mouseY-65, mouseX-5, mouseY-50); triangle(mouseX-40, mouseY-120, mouseX-15, mouseY-80, mouseX-50, mouseY-60); triangle(mouseX-60, mouseY-90, mouseX-60, mouseY-50, mouseX-70, mouseY-70); triangle(mouseX+80, mouseY-90, mouseX+100, mouseY-50, mouseX+80, mouseY-70); }