//Metroid Samus Homage, by Wulusi Zhang 2017 //PROG 14998 Assignment 1: Interactive drawing void setup() { // Set the size of the window size(400, 400); } void draw() { // Draw a dark background background(0); // Set CENTER mode ellipseMode(CENTER); rectMode(CENTER); //Background atmophseric elements: Cave noStroke(); fill(#512304); rect(-200+sin(frameCount/200.0)*475, 380, 3600, 10000); fill(#3a1902, 150); ellipse(120+sin(frameCount/200.0)*205, 235, 200, 450); ellipse(-50+sin(frameCount/200.0)*205, 235, 180, 420); ellipse(-100+sin(frameCount/200.0)*205, 235, 200, 450); ellipse(145+sin(frameCount/200.0)*205, 235, 200, 368); ellipse(222+sin(frameCount/200.0)*205, 235, 180, 425); ellipse(315+sin(frameCount/200.0)*205, 235, 225, 350); ellipse(390+sin(frameCount/200.0)*205, 235, 210, 410); ellipse(350+sin(frameCount/200.0)*205, 235, 250, 390); ellipse(400+sin(frameCount/200.0)*205, 235, 200, 400); fill(#281101, 150); ellipse(80+sin(frameCount/200.0)*205, 250, 200, 440); ellipse(-45+sin(frameCount/200.0)*205, 250, 180, 430); ellipse(-75+sin(frameCount/200.0)*205, 250, 200, 450); ellipse(200+sin(frameCount/200.0)*205, 250, 200, 390); ellipse(245+sin(frameCount/200.0)*205, 250, 180, 425); ellipse(310+sin(frameCount/200.0)*205, 250, 225, 350); ellipse(365+sin(frameCount/200.0)*205, 250, 210, 400); ellipse(389+sin(frameCount/200.0)*205, 250, 250, 410); ellipse(500+sin(frameCount/200.0)*205, 250, 200, 420); fill(#281101, 200); ellipse(100+sin(frameCount/200.0)*205, 265, 200, 375); ellipse(-75+sin(frameCount/200.0)*205, 265, 180, 390); ellipse(-150+sin(frameCount/200.0)*205, 265, 200, 410); ellipse(225+sin(frameCount/200.0)*205, 265, 200, 368); ellipse(290+sin(frameCount/200.0)*205, 265, 180, 370); ellipse(350+sin(frameCount/200.0)*205, 265, 225, 360); ellipse(410+sin(frameCount/200.0)*205, 265, 210, 410); ellipse(470+sin(frameCount/200.0)*205, 265, 250, 390); ellipse(530+sin(frameCount/200.0)*205, 265, 200, 350); fill(#1c0c00, 150); ellipse(100+sin(frameCount/200.0)*205, 270, 200, 280); ellipse(-75+sin(frameCount/200.0)*205, 270, 180, 310); ellipse(-150+sin(frameCount/200.0)*205, 270, 200, 300); ellipse(225+sin(frameCount/200.0)*205, 270, 200, 240); ellipse(290+sin(frameCount/200.0)*205, 270, 180, 290); ellipse(350+sin(frameCount/200.0)*205, 270, 225, 310); ellipse(410+sin(frameCount/200.0)*205, 270, 210, 280); ellipse(470+sin(frameCount/200.0)*205, 270, 250, 300); ellipse(530+sin(frameCount/200.0)*205, 270, 200, 270); fill(0, 150); ellipse(100+sin(frameCount/200.0)*205, 275, 200, 190); ellipse(-75+sin(frameCount/200.0)*205, 275, 180, 200); ellipse(-150+sin(frameCount/200.0)*205, 275, 200, 210); ellipse(225+sin(frameCount/200.0)*205, 275, 200, 200); ellipse(290+sin(frameCount/200.0)*205, 275, 180, 210); ellipse(350+sin(frameCount/200.0)*205, 275, 225, 220); ellipse(410+sin(frameCount/200.0)*205, 275, 210, 200); ellipse(470+sin(frameCount/200.0)*205, 275, 250, 210); ellipse(530+sin(frameCount/200.0)*205, 275, 200, 200); //Ground fill(#2d1300); rect(-200+sin(frameCount/200.0)*475, 350, 3600, 100); fill(#4f2100,180); rect(-200+sin(frameCount/200.0)*475, 365, 3600, 100); fill(#702e00,160); rect(-200+sin(frameCount/200.0)*475, 380, 3600, 100); fill(#873700,140); rect(-200+sin(frameCount/200.0)*475, 395, 3600, 100); //Ground Rocks fill(#2d1300,200); triangle(48, 267, 74, 305, 24, 305); triangle(70, 270, 90, 305, 48, 305); triangle(348, 267, 374, 305, 324, 305); triangle(370, 270, 390, 305, 348, 305); //Background atmophseric elements: Clouds/Fog noStroke(); fill(#918881, 220); rect(-50 + sin(frameCount/200.0)*475, 140, 50, 35, 7); rect(-60 + sin(frameCount/200.0)*420, 150, 40, 30, 7); rect(-60 + sin(frameCount/200.0)*475, 170, 40, 22, 7); rect(-90 + sin(frameCount/200.0)*440, 80, 75, 60, 7); rect(-100 + sin(frameCount/200.0)*430, 110, 70, 50, 7); rect(-120 + sin(frameCount/200.0)*450, 90, 60, 30, 7); rect(-140 + sin(frameCount/200.0)*450, 90, 120, 60, 7); rect(-220 + sin(frameCount/200.0)*450, 90, 60, 30, 7); rect(-250 + sin(frameCount/200.0)*475, 140, 50, 35, 7); rect(-270 + sin(frameCount/200.0)*425, 120, 80, 35, 7); rect(-300 + sin(frameCount/200.0)*475, 130, 66, 46, 7); rect(30 + sin(frameCount/200.0)*450, 80, 50, 25, 7); rect(40 + sin(frameCount/200.0)*460, 60, 88, 60, 7); rect(45 + sin(frameCount/200.0)*460, 120, 60, 40, 7); rect(80 + sin(frameCount/200.0)*500, 85, 30, 15, 7); rect(100 + sin(frameCount/200.0)*500, 70, 55, 25, 7); rect(180 + sin(frameCount/200.0)*500, 90, 40, 30, 7); rect(260 + sin(frameCount/200.0)*500, 140, 60, 30, 7); rect(200 + sin(frameCount/200.0)*450, 150, 80, 40, 12); rect(250 + sin(frameCount/200.0)*475, 150, 80, 40, 12); rect(360 + sin(frameCount/200.0)*475, 100, 40, 40, 12); //BackGround Metroid //Moving Metroid Head and Body noStroke(); frameRate(60); //Metroid Claws fill(#efec88); ellipse(108 + cos(frameCount/14.0)*50, 78+sin(frameCount/7.0)*15, (sin(frameCount/10.0))*1.6+20, (cos(frameCount/10.0))*1.6+35); ellipse(132 + cos(frameCount/14.0)*50, 78+sin(frameCount/7.0)*15, (cos(frameCount/10.0))*1.6+20, (sin(frameCount/10.0))*1.6+35); fill(0); ellipse(110 + cos(frameCount/14.0)*50, 80+sin(frameCount/7.0)*15, 18, 31); ellipse(130 + cos(frameCount/14.0)*50, 80+sin(frameCount/7.0)*15, 18, 31); fill(#efec88); ellipse(105 + cos(frameCount/14.0)*50, 78+sin(frameCount/7.0)*15, (sin(frameCount/10.0))*1.6+20, (cos(frameCount/10.0))*1.6+35); ellipse(135 + cos(frameCount/14.0)*50, 78+sin(frameCount/7.0)*15, (cos(frameCount/10.0))*1.6+20, (sin(frameCount/10.0))*1.6+35); fill(0); ellipse(110 + cos(frameCount/14.0)*50, 80+sin(frameCount/7.0)*15, 18, 31); ellipse(130 + cos(frameCount/14.0)*50, 80+sin(frameCount/7.0)*15, 18, 31); fill(#efec88); ellipse(120 + cos(frameCount/14.0)*50, 60+sin(frameCount/7.0)*15, (cos(frameCount/9.0))*1.6+20, (sin(frameCount/9.0))*1.6+40); ellipse(120 + cos(frameCount/14.0)*50, 60+sin(frameCount/7.0)*15, (sin(frameCount/9.0))*1.6+20, (cos(frameCount/9.0))*1.6+40); fill(0); ellipse(120 + cos(frameCount/14.0)*50, 60+sin(frameCount/7.0)*15, 18, 36); ellipse(120 + cos(frameCount/14.0)*50, 60+sin(frameCount/7.0)*15, 18, 36); //Metroid Head fill(#34ba74); ellipse(120 + cos(frameCount/14.0)*50, 60+sin(frameCount/7.0)*15, sin(frameCount/7.0)*8+57, 50); fill(#34ba74); ellipse(120 + cos(frameCount/14.0)*50, 60+sin(frameCount/7.0)*15, sin(frameCount/7.0)*8+57, 50); fill(#f7182b, 175); //Lower Mouth ellipse(120 + cos(frameCount/14.0)*50, 83+sin(frameCount/7.0)*15, cos(frameCount/7.0)*4+30, 18); fill(#34ba74); //Lower Body ellipse(120 + cos(frameCount/14.0)*50, 80+sin(frameCount/7.0)*15, sin(frameCount/7.0)*4+34, 15); // Metroid Eyes and Mouth fill(#f7182b, 175); stroke(0); ellipse(109 + cos(frameCount/14.0)*50, 65+sin(frameCount/7.0)*15, cos(frameCount/6.0)*1+12, 12); ellipse(131 + cos(frameCount/14.0)*50, 65+sin(frameCount/7.0)*15, cos(frameCount/6.0)*1+12, 12); ellipse(120 + cos(frameCount/14.0)*50, 55+sin(frameCount/7.0)*15, cos(frameCount/6.0)*1+12, cos(frameCount/6.0)*1+12); //BackGround Metroid //Moving Metroid Head and Body noStroke(); frameRate(60); //Metroid Claws fill(#efec88); ellipse(108 + cos(frameCount/14.0)*50, 78+sin(frameCount/7.0)*15, (sin(frameCount/10.0))*1.6+20, (cos(frameCount/10.0))*1.6+35); ellipse(132 + cos(frameCount/14.0)*50, 78+sin(frameCount/7.0)*15, (cos(frameCount/10.0))*1.6+20, (sin(frameCount/10.0))*1.6+35); fill(0); ellipse(110 + cos(frameCount/14.0)*50, 80+sin(frameCount/7.0)*15, 18, 31); ellipse(130 + cos(frameCount/14.0)*50, 80+sin(frameCount/7.0)*15, 18, 31); fill(#efec88); ellipse(105 + cos(frameCount/14.0)*50, 78+sin(frameCount/7.0)*15, (sin(frameCount/10.0))*1.6+20, (cos(frameCount/10.0))*1.6+35); ellipse(135 + cos(frameCount/14.0)*50, 78+sin(frameCount/7.0)*15, (cos(frameCount/10.0))*1.6+20, (sin(frameCount/10.0))*1.6+35); fill(0); ellipse(110 + cos(frameCount/14.0)*50, 80+sin(frameCount/7.0)*15, 18, 31); ellipse(130 + cos(frameCount/14.0)*50, 80+sin(frameCount/7.0)*15, 18, 31); fill(#efec88); ellipse(120 + cos(frameCount/14.0)*50, 60+sin(frameCount/7.0)*15, (cos(frameCount/9.0))*1.6+20, (sin(frameCount/9.0))*1.6+40); ellipse(120 + cos(frameCount/14.0)*50, 60+sin(frameCount/7.0)*15, (sin(frameCount/9.0))*1.6+20, (cos(frameCount/9.0))*1.6+40); fill(0); ellipse(120 + cos(frameCount/14.0)*50, 60+sin(frameCount/7.0)*15, 18, 36); ellipse(120 + cos(frameCount/14.0)*50, 60+sin(frameCount/7.0)*15, 18, 36); //Metroid Head fill(#34ba74); ellipse(120 + cos(frameCount/14.0)*50, 60+sin(frameCount/7.0)*15, sin(frameCount/7.0)*8+57, 50); fill(#34ba74); ellipse(120 + cos(frameCount/14.0)*50, 60+sin(frameCount/7.0)*15, sin(frameCount/7.0)*8+57, 50); fill(#f7182b, 175); //Lower Mouth ellipse(120 + cos(frameCount/14.0)*50, 83+sin(frameCount/7.0)*15, cos(frameCount/7.0)*4+30, 18); fill(#34ba74); //Lower Body ellipse(120 + cos(frameCount/14.0)*50, 80+sin(frameCount/7.0)*15, sin(frameCount/7.0)*4+34, 15); // Metroid Eyes and Mouth fill(#f7182b, 175); stroke(0); ellipse(109 + cos(frameCount/14.0)*50, 65+sin(frameCount/7.0)*15, cos(frameCount/6.0)*1+12, 12); ellipse(131 + cos(frameCount/14.0)*50, 65+sin(frameCount/7.0)*15, cos(frameCount/6.0)*1+12, 12); ellipse(120 + cos(frameCount/14.0)*50, 55+sin(frameCount/7.0)*15, cos(frameCount/6.0)*1+12, cos(frameCount/6.0)*1+12); //Chozo Suit //LEFT ARM //Shoulder joints mechanical parts left fill(140, 140, 140); rect(163, 126, 20, 10, 5); fill(100, 100, 100); rect(158, 134, 20, 15, 5); fill(80, 80, 80); quad(148, 135, 143, 143, 156, 151, 163, 143); //UnderShoulder left fill(100, 100, 100); quad(110, 140, 108, 150, 141, 154, 138, 143); quad(113, 150, 113, 154, 139, 160, 137, 154); //Left arm bend fill(100, 100, 100); arc(120, 197, 30, 30, PI-QUARTER_PI, TWO_PI); fill(120, 120, 120); arc(120, 197, 20, 20, PI-QUARTER_PI, TWO_PI); //Leftside top shoulder ridges fill(#aa680b); ellipse(130, 85, 6, 9); ellipse(95, 120, 9, 6); ellipse(105, 95, 6, 9); //Suit Shoulder Left fill(203, 131, 15); noStroke(); arc(130, 120, 67, 67, PI-QUARTER_PI, TWO_PI); //Left Arm Biceps and joint stroke(0); strokeWeight(1); fill(253, 180, 64); fill(253, 180, 64); quad(101, 160, 108, 180, 127, 184, 134, 164); triangle(102, 162, 113, 151, 97, 138); triangle(128, 154, 145, 146, 134, 167); quad(109, 150, 102, 161, 134, 166, 131, 154); arc(119, 179, 30, 40, 0, PI); arc(125, 209, 40, 40, PI-QUARTER_PI, TWO_PI); //Left Top Shoulder Tank fill(253, 220, 64, 150); ellipse(130, 120, 60, 60); ellipse(128, 118, 50, 50); ellipse(128, 118, 45, 45); //RIGHT ARM //Shoulder Joints Mechanical parts Right fill(140, 140, 140); rect(237, 126, 20, 10, 5); fill(100, 100, 100); rect(242, 134, 20, 15, 5); fill(80, 80, 80); quad(252, 135, 257, 143, 244, 151, 237, 143); //UnderShoulder Right fill(100, 100, 100); quad(290, 140, 292, 150, 259, 154, 262, 143); quad(287, 150, 287, 154, 261, 160, 263, 154); //Right arm bend fill(100, 100, 100); arc(280, 197, 30, 30, PI, TWO_PI+QUARTER_PI); fill(120, 120, 120); arc(280, 197, 20, 20, PI, TWO_PI+QUARTER_PI); //Rightside top shoulder ridges fill(#aa680b); ellipse(270, 85, 6, 9); ellipse(305, 120, 9, 6); ellipse(295, 95, 6, 9); //Chozo Suit Shoulder Right fill(203, 131, 15); arc(270, 120, 67, 67, PI, TWO_PI+QUARTER_PI); //Right Arm Biceps and joint + Hands stroke(0); strokeWeight(1); fill(253, 180, 64); fill(253, 180, 64); quad(299, 160, 292, 180, 273, 184, 266, 164); triangle(298, 162, 287, 151, 303, 138); triangle(272, 154, 255, 146, 264, 167); quad(291, 150, 298, 161, 266, 166, 269, 154); arc(281, 179, 30, 40, 0, PI); arc(282, 209, 35, 35, PI, TWO_PI+QUARTER_PI); //Right Wrist and Hands fill(#ce7c0a); quad(262, 202, 285, 203, 271, 247, 262, 233); quad(282, 202, 271, 248, 284, 245, 297, 216); quad(264, 236, 257, 245, 263, 251, 270, 246); quad(254, 245, 258, 256, 265, 256, 263, 251); quad(258, 256, 264, 261, 269, 260, 264, 255); quad(270, 246, 272, 263, 282, 272, 288, 242); quad(272, 262, 261, 262, 264, 268, 281, 273); ellipse(285, 242, 12, 35); //Right Top shoulder Tank fill(253, 220, 64, 150); ellipse(270, 120, 60, 60); ellipse(272, 118, 50, 50); ellipse(272, 118, 45, 45); //Chozo Suit CHEST stroke(0); strokeWeight(1); fill(183, 58, 37); noStroke(); quad(170, 120, 150, 160, 250, 160, 230, 120); //Chozo Suit TORSO fill(201, 201, 83); quad(150, 160, 173, 200, 227, 200, 250, 160); stroke(0); fill(183, 58, 37); triangle(150, 160, 250, 160, 200, 180); noStroke(); ellipse(165, 143, 15, 40); ellipse(235, 143, 15, 40); rect(200, 160, 101, 5); stroke(0); line(200, 140, 200, 200); line(155, 165, 200, 183); line(245, 165, 200, 183); //Left and Right thighs fill(160, 160, 160); triangle(162, 255, 193, 291, 200, 235); triangle(238, 255, 207, 291, 200, 235); triangle(165, 250, 195, 286, 200, 235); triangle(235, 250, 205, 286, 200, 235); triangle(168, 245, 198, 281, 200, 235); triangle(232, 245, 202, 281, 200, 235); //Lower torso fill(201, 201, 87); triangle(165, 235, 235, 235, 200, 275); noStroke(); fill(201, 201, 83); stroke(0); quad(173, 200, 170, 240, 230, 240, 227, 200); ellipse(173, 197, 15, 32); ellipse(227, 197, 15, 32); fill(0); ellipse(165, 225, 19, 35); ellipse(235, 225, 19, 35); //Crouch area fill(255, 253, 121); quad(190, 205, 195, 250, 205, 250, 210, 205); quad(195, 208, 197, 233, 203, 233, 205, 208); quad(195, 205, 197, 230, 203, 230, 205, 205); quad(195, 202, 197, 227, 203, 227, 205, 202); quad(165, 235, 190, 250, 210, 250, 235, 235); quad(190, 237, 195, 280, 205, 280, 210, 237); //LEG RIGHT stroke(0); fill(#d67a0a); quad(239, 254, 251, 262, 215, 301, 208, 290); arc(225, 275, 65, 65, -PI/4, PI/1.3); quad(248, 290, 239, 371, 205, 370, 199, 296); rect(223, 356, 10, 25, 2); quad(255, 285, 246, 359, 230, 332, 230, 305); quad(216, 332, 216, 305, 193, 292, 197, 356); quad(231, 353, 237, 375, 209, 375, 215, 353); quad(228, 358, 234, 380, 213, 380, 218, 358); quad(238, 390, 238, 420, 207, 420, 217, 390); ellipse(244, 381, 10, 30); ellipse(209, 381, 10, 30); ellipse(228, 384, 32, 30); //LEG LEFT stroke(0); fill(#d67a0a); quad(161, 254, 149, 262, 185, 301, 192, 290); arc(175, 275, 65, 65, (PI)/4, (5*PI)/4); quad(147, 290, 156, 371, 190, 370, 196, 296); rect(172, 356, 10, 25, 2); quad(140, 285, 149, 359, 165, 332, 165, 305); quad(179, 332, 179, 305, 202, 292, 198, 356); quad(164, 353, 158, 375, 186, 375, 180, 353); quad(167, 358, 161, 380, 183, 380, 177, 358); quad(157, 390, 157, 420, 188, 420, 188, 390); ellipse(154, 381, 12, 32); ellipse(191, 381, 12, 32); ellipse(172, 384, 34, 32); //CANNON(to be aimed at Metroid target follows mouse cursor) fill(40, 106, 64); ellipse(129, 213, 37, 37); fill(39, 105, 63); ellipse(129, 213, 30, 30); stroke(0); stroke(0); line(116, 205, 122, 210); line(117, 210, 133, 200); line(128, 200, 130, 199); line(123, 205, 131, 209); ellipse(142, 200, 5, 5); ellipse(114, 220, 5, 5); ellipse(123, 205, 5, 5); ellipse(129+mouseX*0.009, 213+mouseY*0.0152, 30, 30); ellipse(127+mouseX*0.018, 211+mouseY*0.0304, 35, 36); ellipse(125+mouseX*0.027, 209+mouseY*0.0457, 33, 34); ellipse(123+mouseX*0.036, 207+mouseY*0.0609, 31, 32); ellipse(121+mouseX*0.045, 205+mouseY*0.0761, 31, 32); ellipse(119+mouseX*0.054, 203+mouseY*0.0913, 31, 32); ellipse(117+mouseX*0.063, 201+mouseY*0.1065, 31, 32); ellipse(115+mouseX*0.072, 199+mouseY*0.1217, 31, 32); ellipse(113+mouseX*0.081, 197+mouseY*0.1370, 31, 32); ellipse(111+mouseX*0.09, 195+mouseY*0.1522, 25, 25); fill(#053a0d, 200); ellipse(111+mouseX*0.09, 195+mouseY*0.1522, 23, 23); fill(0, 180); ellipse(111+mouseX*0.09, 195+mouseY*0.1522, 21, 21); fill(180, 15); ellipse(111+mouseX*0.09, 195+mouseY*0.1522, 20, 20); //CHOZO SUIT HEAD stroke(50); fill(187, 72, 26); strokeWeight(1); ellipse(175, 110, 10, 20); ellipse(170, 110, 4, 10); ellipse(225, 110, 10, 20); ellipse(230, 110, 4, 10); quad(175, 115, 165, 125, 196, 135, 195, 125); quad(225, 115, 235, 125, 204, 135, 205, 125); ellipse(200, 100, 50, 50); //oxygen tubes strokeWeight(1); fill(211, 211, 211); quad(180, 115, 177, 120, 193, 128, 196, 123); quad(220, 115, 223, 120, 207, 128, 204, 123); rect(196, 125, 6, 6); rect(205, 125, 6, 6); fill(180, 69, 26, 200); stroke(0); line(184, 117, 181, 122); line(186, 118, 183, 123); line(188, 119, 185, 124); line(190, 120, 187, 125); line(219, 122, 216, 117); line(217, 123, 214, 118); line(215, 124, 212, 119); line(213, 125, 210, 120); //bottom of helmet quad(194, 126, 196, 141, 204, 141, 206, 126); line(195, 128, 205, 128); line(196, 130, 204, 130); line(196, 132, 204, 132); line(196, 134, 204, 134); line(197, 136, 203, 136); line(197, 138, 203, 138); ellipse(175, 117, 7, 7); ellipse(225, 117, 7, 7); //Visor and other green parts stroke(0); strokeWeight(1); fill(177, 250, 0); quad(197.5, 100, 196, 105, 206, 105, 204.5, 100); quad(180, 107, 180, 100, 196, 105, 196.5, 118); quad(220, 107, 220, 100, 204, 105, 203.5, 118); quad(196, 105, 197.5, 125, 204.5, 125, 206, 105); //Visor Lighting effect noStroke(); fill(255); quad(183, 102, 183, 108, 188, 110, 188, 104); quad(190, 104, 190, 113, 192, 114, 192, 106); fill(#8cc900); quad(217, 102, 217, 110, 212, 113, 212, 103); fill(#659100); quad(217, 104, 217, 110, 220, 107, 220, 99); //shoulder lights stroke(0); fill(0); ellipse(122, 120, 9, 9); ellipse(278, 120, 9, 9); fill(177, 250, 0); ellipse(122, 120, 28, 28); ellipse(278, 120, 28, 28); fill(#f7bf16); ellipse(122, 120, 23, 23); ellipse(278, 120, 23, 23); //chest green light fill(150, 250, 0); quad(170, 155, 165, 160, 190, 170, 190, 163); quad(230, 155, 235, 160, 210, 170, 210, 163); //Leg green Lights fill(150, 250, 0); ellipse(172, 384, 28, 26); rect(173, 317, 5, 50); fill(#d67a0a); ellipse(172, 384, 22, 20); fill(150, 250, 0); ellipse(228, 384, 28, 26); rect(224, 317, 5, 50); fill(#d67a0a); ellipse(228, 384, 22, 20); //Right arm green light fill(150, 250, 0); ellipse(287, 241, 7, 25); fill(#d67a0a); ellipse(287, 241, 3, 18); //TARGET METROID, follows cursor noStroke(); //Claws and teeth fill(#efec88); ellipse(mouseX-26, mouseY+22, (sin(frameCount/10.0))*1.6+20, (cos(frameCount/10.0))*1.6+40); ellipse(mouseX+26, mouseY+22, (cos(frameCount/10.0))*1.6+20, (sin(frameCount/10.0))*1.6+40); fill(0); ellipse(mouseX-22, mouseY+25, 18, 36); ellipse(mouseX+22, mouseY+25, 18, 36); fill(#efec88); ellipse(mouseX-16, mouseY+27, (cos(frameCount/9.0))*1.6+20, (sin(frameCount/9.0))*1.6+40); ellipse(mouseX+16, mouseY+27, (sin(frameCount/9.0))*1.6+20, (cos(frameCount/9.0))*1.6+40); fill(0); ellipse(mouseX-12, mouseY+28, 18, 36); ellipse(mouseX+12, mouseY+28, 18, 36); //Face and mouth fill(#c45866); ellipse(mouseX, mouseY+17, (cos(frameCount/15.0))*5+60, (sin(frameCount/7.50))*5+45); //Red mouth appendage noStroke(); fill(#34ba74); ellipse(mouseX, mouseY+15, (sin(frameCount/15.0))*6+50, (sin(frameCount/7.50))*5+40); ellipse(mouseX, mouseY, (sin(frameCount/30.0))*10+80, (sin(frameCount/15.0))*8+60); //Eyes Red Parts noStroke(); fill(#f7adb6, 200); ellipse(mouseX, mouseY-8, (cos(frameCount*0.30))*3+18, (sin(frameCount*0.30))*3+18); ellipse(mouseX-17, mouseY+13, (cos(frameCount*0.30))*3+18, (sin(frameCount*0.30))*3+18); ellipse(mouseX+17, mouseY+13, (cos(frameCount*0.30))*3+18, (sin(frameCount/0.30))*3+18); stroke(0); fill(#bf011a, 200); ellipse(mouseX, mouseY-8, (sin(frameCount/3.0))*2+15, (cos(frameCount/4.0))*2+15); ellipse(mouseX-17, mouseY+13, (sin(frameCount/4.0))*2+15, (cos(frameCount/4.0))*2+15); ellipse(mouseX+17, mouseY+13, (sin(frameCount/4.0))*2+15, (cos(frameCount/4.0))*2+15); //Location indicator (to be deleted before adding in final response) fill(255); text(mouseX, 10, 10); text(mouseY, 10, 20); } //PowerBeam Weapon Fire Upon Click void mousePressed() { //Copy paste of original shoulders to keep form intact while powerbeam is firing //Left Shoulder Section noStroke(); fill(#fffcba, 230); arc(130, 120, 67, 67, -TWO_PI, -PI); fill(#fffcba, 230); arc(130, 120, 60, 60, -TWO_PI, -PI); //Right Shoulder Section fill(#494716, 200); arc(270, 120, 67, 67, -TWO_PI, -PI); fill(#494716, 200); arc(270, 120, 60, 60, -TWO_PI, -PI); fill(203, 131, 15); noStroke(); arc(130, 120, 67, 67, PI-QUARTER_PI, TWO_PI); arc(270, 120, 67, 67, PI, TWO_PI+QUARTER_PI); ellipse(130, 85, 6, 9); ellipse(270, 85, 6, 9); ellipse(95, 120, 9, 6); ellipse(305, 120, 9, 6); ellipse(105, 95, 6, 9); fill(253, 180, 64, 190); ellipse(130, 120, 60, 60); ellipse(270, 120, 60, 60); fill(255, 253, 121, 170); stroke(0); strokeWeight(1.5); ellipse(128, 118, 50, 50); ellipse(272, 118, 50, 50); fill(253, 180, 64, 150); ellipse(128, 118, 45, 45); ellipse(272, 118, 45, 45); fill(177, 250, 0); ellipse(122, 120, 28, 28); ellipse(278, 120, 28, 28); fill(#f7bf16); ellipse(122, 120, 23, 23); ellipse(278, 120, 23, 23); //Power Beam Lighting Variation fill(#fcff6b); frameRate(7); triangle(116+mouseX*0.09, 195+mouseY*0.1522, 116, 815, 216, 816); triangle(116+mouseX*0.09, 195+mouseY*0.1522, 736, tan(frameCount)*195, 736, tan(frameCount)*296); triangle(116+mouseX*0.09, 195+mouseY*0.1522, 116, -425, 16, -424); triangle(116+mouseX*0.09, 195+mouseY*0.1522, -504, tan(frameCount)*195, -504, tan(frameCount)*96); triangle(116+mouseX*0.09, 195+mouseY*0.1522, 736, -305, 616, -424); triangle(116+mouseX*0.09, 195+mouseY*0.1522, -504, tan(frameCount)*695, -384, tan(frameCount)*816); fill(#ffb454, 200); ellipse(116+mouseX*0.09, 195+mouseY*0.1522, 35, 35); fill(#fcff6b); ellipse(116+mouseX*0.09, 195+mouseY*0.1522, 25, 25); //Lighting effects when firing fill(#fffcba, 230); //Torso Section left side noStroke(); quad(149, 158, 175, 200, 180, 202, 159, 164); quad(173, 200, 171, 234, 177, 234, 177, 200); quad(149, 156, 150, 161, 200, 179, 200, 174); quad(168, 120, 150, 157, 155, 158, 172, 119); ellipse(170, 196, 14, 30); quad(191, 238, 195, 279, 197, 279, 194, 238); quad(171, 242, 163, 255, 169, 261, 177, 244); quad(102, 161, 103, 167, 131, 169, 133, 162); fill(#fffcba, 250); quad(194, 126, 196, 140, 199, 140, 197, 126); //Torso Section right side darker noStroke(); fill(#494716); quad(253, 158, 228, 200, 222, 202, 243, 164); quad(227, 200, 229, 234, 223, 234, 223, 200); quad(251, 156, 250, 161, 200, 179, 200, 174); quad(232, 120, 250, 157, 245, 158, 228, 119); quad(206, 126, 206, 142, 201, 142, 203, 126); ellipse(230, 196, 14, 30); quad(209, 238, 205, 279, 203, 279, 206, 238); quad(227, 242, 235, 255, 231, 261, 223, 244); quad(298, 161, 297, 167, 269, 169, 267, 162); }