Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
//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);

}