Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
/* Daemon
 Nik Kupczyk
 September 19th, 2017
 
 Clicking adds bright violet markings, changes his 
 facial features violet, and shoots a laser at the mouse location.
 
 Pressing a button on the keyboard will unfurl his wings, move his arms, 
 add orange markings, and create a circle of power behind him.
 
 It took a while to transfer all of the coordinates, 
 but this was fun to design and make otherwise */


void setup()
{
  size(400, 400);
  background(0, 0, 0);
  //noCursor();
  smooth(); //trying to make it less pixelated
}

void draw()
{
  ellipseMode(CENTER);
  // black screen to cover the fact that when you click it doesnt un-draw things
  fill(0);
  quad(0, 0, 400, 0, 400, 400, 0, 400);

  //wings y'all
  //right
  stroke(140, 37, 45); //strokes are bad 
  fill(192, 55, 72);
  quad(210, 190, 290, 130, 390, 210, 260, 240);
  //left
  quad(170, 190, 110, 130, 10, 220, 140, 250);

  stroke(111);
  strokeWeight(2);
  fill(150);
  triangle(270, 200, 320, 200, 290, 280);
  triangle(320, 170, 360, 250, 270, 200);
  quad(290, 130, 390, 170, 295, 175, 295, 150);
  quad(295, 175, 390, 170, 270, 200, 290, 180);


  //Head of the forbidden one, i should have started this earlier

  // lighter red
  fill(106, 20, 26);
  noStroke();
  ellipse(190, 148, 60, 35);
  triangle(180, 133, 190, 110, 200, 133);
  quad(172, 160, 190, 160, 190, 174, 172, 170);
  quad(208, 160, 190, 160, 190, 174, 208, 170);
  triangle(190, 160, 230, 200, 150, 200);
  ellipse(230, 205, 35, 35);
  ellipse(150, 205, 35, 35);
  strokeWeight(2);
  stroke(159, 38, 53);
  line(180, 133, 190, 110);
  line(190, 110, 200, 133);
  line(180, 142, 190, 125);
  line(190, 125, 200, 143);
  noFill();
  strokeWeight(1);
  arc(210, 190, 40, 40, PI, PI+HALF_PI);
  arc(170, 190, 40, 40, PI+HALF_PI, TWO_PI);
  noStroke();
  fill(106, 20, 26);
  triangle(190, 190, 180, 160, 200, 160);
  noFill();
  stroke(149, 28, 43);
  arc(210, 186, 40, 33, PI, PI+HALF_PI);
  arc(170, 186, 40, 33, PI+HALF_PI, TWO_PI);
  arc(214, 165, 12, 12, HALF_PI, PI+HALF_PI);
  arc(166, 165, 12, 12, PI+HALF_PI, TWO_PI+HALF_PI);
  //face
  noStroke();
  fill(20);
  ellipse(180, 150, 5, 5);
  ellipse(200, 150, 5, 5);
  strokeWeight(2);
  stroke(0);
  line(180, 163, 182, 168);
  line(185, 160, 186, 170);
  line(190, 158, 190, 164);
  line(195, 162, 193, 170);
  line(200, 160, 198, 165);


  //horns(oh yes)

  //left horn
  strokeWeight(1);
  stroke(115, 104, 92);
  fill(150, 136, 121);
  quad(172, 145, 165, 157, 145, 150, 160, 132);
  quad(164, 144, 158, 155, 142, 152, 150, 137);
  quad(155, 145, 160, 160, 145, 165, 140, 150);
  quad(158, 164, 150, 175, 140, 166, 150, 154);
  quad(150, 166, 160, 170, 162, 183, 148, 178);
  quad(154, 173, 164, 175, 167, 184, 157, 186);
  quad(160, 180, 167, 181, 175, 185, 164, 187);
  //right horn, geez i am tired
  quad(214, 131, 230, 140, 217, 158, 205, 144);  
  quad(231, 133, 235, 152, 217, 153, 215, 139);
  quad(226, 140, 239, 150, 233, 162, 218, 157);
  quad(230, 150, 242, 158, 232, 168, 223, 161);
  quad(232, 158, 239, 169, 224, 177, 226, 165);
  quad(233, 165, 234, 177, 225, 179, 222, 170);
  quad(229, 174, 226, 181, 213, 184, 221, 176);


  //legs
  noStroke();
  fill(106, 20, 26);
  quad(180, 300, 185, 310, 184, 320, 180, 330);
  quad(180, 330, 175, 340, 160, 350, 160, 320);
  quad(180, 290, 180, 330, 150, 350, 140, 320);
  quad(190, 300, 200, 330, 210, 340, 220, 320);
  quad(210, 340, 220, 350, 240, 350, 220, 300);
  //juicy calves
  ellipse(235, 375, 50, 70);
  ellipse(145, 375, 50, 70);
  //lighter grey
  fill(150);
  quad(216, 284, 240, 300, 215, 325, 203, 304);
  quad(240, 300, 215, 325, 240, 350, 260, 350);
  quad(163, 282, 178, 304, 165, 325, 140, 300);
  quad(140, 300, 165, 325, 143, 347, 120, 340);
  //bee's knees
  fill(111);
  quad(230, 350, 250, 340, 260, 310, 275, 350);
  quad(230, 350, 275, 350, 260, 380, 250, 360);
  quad(105, 350, 120, 310, 130, 340, 150, 350);
  quad(105, 350, 150, 350, 130, 360, 120, 380);


  //left arm of the forbidden one

  noStroke();
  fill(106, 20, 26);
  ellipse(130, 200, 30, 30);
  ellipse(130, 230, 40, 60);
  //hand
  quad(150, 290, 155, 300, 145, 310, 140, 300);
  quad(160, 300, 160, 295, 155, 290, 155, 294);
  quad(155, 290, 155, 294, 145, 294, 145, 290);
  triangle(155, 300, 160, 315, 150, 305);
  triangle(150, 305, 150, 315, 145, 310);
  //armband
  fill(150);
  quad(140, 260, 150, 290, 140, 300, 120, 270);
  triangle(140, 260, 120, 270, 125, 245);
  strokeWeight(2);
  stroke(111);
  line(140, 260, 125, 245);
  line(120, 270, 125, 245);
  line(145, 275, 130, 265);
  line(130, 285, 130, 265);
  line(150, 290, 140, 285);
  line(140, 285, 140, 300);

  //left wang
  quad(110, 130, 106, 145, 104, 160, 10, 170);
  quad(104, 160, 110, 180, 130, 200, 10, 170);
  triangle(130, 200, 110, 270, 70, 200);
  triangle(130, 200, 50, 250, 70, 185);



  //right arm (of the forbidden one?)

  fill(106, 20, 26);
  noStroke();
  ellipse(250, 200, 30, 30);
  ellipse(250, 230, 40, 60);
  //hand
  quad(230, 290, 240, 300, 235, 310, 225, 300);
  quad(220, 300, 220, 295, 225, 290, 225, 294);
  quad(225, 290, 225, 294, 235, 294, 235, 290);
  triangle(225, 300, 230, 305, 220, 315);
  triangle(230, 305, 235, 310, 230, 315);
  //arm band
  fill(150);
  quad(240, 260, 255, 245, 260, 270, 230, 290);
  quad(240, 260, 260, 270, 240, 300, 230, 290); 
  strokeWeight(2);
  stroke(111);
  line(240, 260, 255, 245);
  line(255, 245, 260, 270);
  line(235, 275, 250, 265);
  line(250, 265, 250, 285);
  line(230, 290, 240, 285);
  line(240, 285, 240, 300);


  //chest piece
  noStroke();
  fill(150);
  triangle(153, 209, 175, 185, 190, 226);
  triangle(227, 209, 205, 185, 190, 226);
  quad(190, 226, 170, 191, 190, 197, 203, 193);
  quad(155, 222, 190, 240, 190, 256, 155, 240);
  quad(225, 222, 190, 240, 190, 256, 225, 240);
  quad(155, 252, 190, 270, 190, 290, 165, 273);
  quad(225, 252, 190, 270, 190, 290, 215, 273);


  fill(111);
  quad(150, 210, 190, 230, 190, 240, 150, 220);
  quad(230, 210, 190, 230, 190, 240, 230, 220);
  quad(160, 274, 190, 294, 190, 320, 160, 280);
  quad(220, 274, 190, 294, 190, 320, 220, 280);
  quad(150, 240, 190, 260, 190, 270, 150, 250);
  quad(230, 240, 190, 260, 190, 270, 230, 250);


  fill(149, 28, 43);
  quad(150, 210, 155, 207, 190, 226, 190, 230);
  quad(230, 210, 225, 207, 190, 226, 190, 230);
  quad(155, 240, 190, 256, 190, 260, 155, 244);
  quad(225, 240, 190, 256, 190, 260, 225, 244);
  quad(160, 274, 160, 270, 190, 290, 190, 294);
  quad(190, 294, 190, 290, 220, 270, 220, 274);


  stroke(150); //i'm going to have one
  noFill();
  arc(190, 180, 33, 33, HALF_PI-THIRD_PI, THIRD_PI+HALF_PI);
}

//when a button is pressed, re-draws entire drawing with arms moved and wings open
void keyPressed() {
  ellipseMode(CENTER);
  //makes it show for one second as opposed to the default of 1/60 of a second
  frameRate(1);

  //black screen to cover previous drawing
  fill(0);
  quad(0, 0, 400, 0, 400, 400, 0, 400);

  //yellow background circle
  noStroke(); //pls
  fill(255, 255, 0, 100);
  ellipse(190, 220, 260, 260);
  fill(255, 255, 0, 70);
  ellipse(190, 220, 300, 300);
  fill(255, 255, 0, 40);
  ellipse(190, 220, 360, 360);

  //wings y'all
  //right
  stroke(182, 24, 35); //strokes are bad 
  fill(192, 55, 72);
  triangle(320, 70, 390, 90, 320, 120);
  triangle(320, 70, 390, 160, 290, 130);
  triangle(320, 70, 360, 220, 290, 180);
  quad(210, 190, 290, 130, 320, 70, 290, 250);
  //left
  triangle(70, 70, 60, 120, 10, 50);
  triangle(70, 70, 80, 120, 10, 130);
  triangle(70, 70, 90, 180, 10, 210);
  quad(170, 190, 90, 150, 70, 70, 60, 260);


  //Head of the forbidden one, i should have started this earlier

  // lighter red
  fill(106, 20, 26);
  noStroke();
  ellipse(190, 148, 60, 35);
  triangle(180, 133, 190, 110, 200, 133);
  quad(172, 160, 190, 160, 190, 174, 172, 170);
  quad(208, 160, 190, 160, 190, 174, 208, 170);
  triangle(190, 160, 230, 200, 150, 200);
  ellipse(230, 205, 35, 35);
  ellipse(150, 205, 35, 35);
  strokeWeight(2);
  stroke(159, 38, 53);
  line(180, 133, 190, 110);
  line(190, 110, 200, 133);
  line(180, 142, 190, 125);
  line(190, 125, 200, 143);
  noFill();
  strokeWeight(1);
  arc(210, 190, 40, 40, PI, PI+HALF_PI);
  arc(170, 190, 40, 40, PI+HALF_PI, TWO_PI);
  noStroke();
  fill(106, 20, 26);
  triangle(190, 190, 180, 160, 200, 160);
  noFill();
  stroke(149, 28, 43);
  arc(210, 186, 40, 33, PI, PI+HALF_PI);
  arc(170, 186, 40, 33, PI+HALF_PI, TWO_PI);
  arc(214, 165, 12, 12, HALF_PI, PI+HALF_PI);
  arc(166, 165, 12, 12, PI+HALF_PI, TWO_PI+HALF_PI);
  //face
  noStroke();
  fill(213, 97, 20);
  ellipse(180, 150, 5, 5);
  ellipse(200, 150, 5, 5);
  strokeWeight(2);
  stroke(213, 97, 20);
  line(180, 163, 182, 168);
  line(185, 160, 186, 170);
  line(190, 158, 190, 164);
  line(195, 162, 193, 170);
  line(200, 160, 198, 165);




  //horns(oh yes)

  //left horn
  strokeWeight(1);
  stroke(115, 104, 92);
  fill(150, 136, 121);
  quad(172, 145, 165, 157, 145, 150, 160, 132);
  quad(164, 144, 158, 155, 142, 152, 150, 137);
  quad(155, 145, 160, 160, 145, 165, 140, 150);
  quad(158, 164, 150, 175, 140, 166, 150, 154);
  quad(150, 166, 160, 170, 162, 183, 148, 178);
  quad(154, 173, 164, 175, 167, 184, 157, 186);
  quad(160, 180, 167, 181, 175, 185, 164, 187);
  //right horn, geez i am tired
  quad(214, 131, 230, 140, 217, 158, 205, 144);  
  quad(231, 133, 235, 152, 217, 153, 215, 139);
  quad(226, 140, 239, 150, 233, 162, 218, 157);
  quad(230, 150, 242, 158, 232, 168, 223, 161);
  quad(232, 158, 239, 169, 224, 177, 226, 165);
  quad(233, 165, 234, 177, 225, 179, 222, 170);
  quad(229, 174, 226, 181, 213, 184, 221, 176);


  //legs
  noStroke();
  fill(106, 20, 26);
  quad(180, 300, 185, 310, 184, 320, 180, 330);
  quad(180, 330, 175, 340, 160, 350, 160, 320);
  quad(180, 290, 180, 330, 150, 350, 140, 320);
  quad(190, 300, 200, 330, 210, 340, 220, 320);
  quad(210, 340, 220, 350, 240, 350, 220, 300);
  //juicy calves
  ellipse(235, 375, 50, 70);
  ellipse(145, 375, 50, 70);
  //lighter grey
  fill(150);
  quad(216, 284, 240, 300, 215, 325, 203, 304);
  quad(240, 300, 215, 325, 240, 350, 260, 350);
  quad(163, 282, 178, 304, 165, 325, 140, 300);
  quad(140, 300, 165, 325, 143, 347, 120, 340);
  //bee's knees
  fill(111);
  quad(230, 350, 250, 340, 260, 310, 275, 350);
  quad(230, 350, 275, 350, 260, 380, 250, 360);
  quad(105, 350, 120, 310, 130, 340, 150, 350);
  quad(105, 350, 150, 350, 130, 360, 120, 380);


  //left wing



  //left armband
  fill(150);
  quad(260, 260, 270, 290, 260, 300, 240, 270);
  triangle(260, 260, 240, 270, 245, 245);
  strokeWeight(2);
  stroke(111);
  line(260, 260, 245, 245);
  line(240, 270, 245, 245);
  line(265, 275, 250, 265);
  line(250, 285, 250, 265);
  line(270, 290, 260, 285);
  line(260, 285, 260, 300);

  //right arm (of the forbidden one?)

  fill(106, 20, 26);
  noStroke();
  ellipse(250, 200, 30, 30);
  ellipse(250, 230, 40, 60);
  //hand
  quad(110, 290, 120, 300, 115, 310, 105, 300);
  quad(100, 300, 100, 295, 105, 290, 105, 294);
  quad(105, 290, 105, 294, 115, 294, 115, 290);
  triangle(105, 300, 110, 305, 100, 315);
  triangle(110, 305, 115, 310, 110, 315);
  //arm band
  fill(150);
  quad(120, 260, 135, 245, 140, 270, 110, 290);
  quad(120, 260, 140, 270, 120, 300, 110, 290); 
  strokeWeight(2);
  stroke(111);
  line(120, 260, 135, 245);
  line(135, 245, 140, 270);
  line(115, 275, 130, 265);
  line(130, 265, 130, 285);
  line(110, 290, 120, 285);
  line(120, 285, 120, 300);

  //left arm of the forbidden one

  noStroke();
  fill(106, 20, 26);
  ellipse(130, 200, 30, 30);
  ellipse(130, 230, 40, 60);
  //hand
  quad(270, 290, 275, 300, 265, 310, 260, 300);
  quad(280, 300, 280, 295, 275, 290, 275, 294);
  quad(275, 290, 275, 294, 265, 294, 265, 290);
  triangle(275, 300, 280, 315, 270, 305);
  triangle(270, 305, 270, 315, 265, 310);



  //chest piece
  noStroke();
  fill(150);
  triangle(153, 209, 175, 185, 190, 226);
  triangle(227, 209, 205, 185, 190, 226);
  quad(190, 226, 170, 191, 190, 197, 203, 193);
  quad(155, 222, 190, 240, 190, 256, 155, 240);
  quad(225, 222, 190, 240, 190, 256, 225, 240);
  quad(155, 252, 190, 270, 190, 290, 165, 273);
  quad(225, 252, 190, 270, 190, 290, 215, 273);


  fill(111);
  quad(150, 210, 190, 230, 190, 240, 150, 220);
  quad(230, 210, 190, 230, 190, 240, 230, 220);
  quad(160, 274, 190, 294, 190, 320, 160, 280);
  quad(220, 274, 190, 294, 190, 320, 220, 280);
  quad(150, 240, 190, 260, 190, 270, 150, 250);
  quad(230, 240, 190, 260, 190, 270, 230, 250);


  fill(149, 28, 43);
  quad(150, 210, 155, 207, 190, 226, 190, 230);
  quad(230, 210, 225, 207, 190, 226, 190, 230);
  quad(155, 240, 190, 256, 190, 260, 155, 244);
  quad(225, 240, 190, 256, 190, 260, 225, 244);
  quad(160, 274, 160, 270, 190, 290, 190, 294);
  quad(190, 294, 190, 290, 220, 270, 220, 274);

  //light up markings
  noStroke();
  fill(213, 97, 20);
  quad(190, 210, 210, 200, 190, 220, 170, 200);
  quad(190, 245, 210, 235, 190, 252, 170, 235);
  quad(190, 275, 210, 265, 190, 285, 170, 265);
  quad(220, 290, 245, 325, 242, 328, 217, 293);
  quad(215, 305, 235, 330, 232, 333, 212, 308);
  quad(160, 290, 135, 325, 138, 328, 163, 293);
  quad(165, 305, 145, 330, 148, 333, 168, 308);





  stroke(150); //i'm going to have one
  noFill();
  arc(190, 180, 33, 33, HALF_PI-THIRD_PI, THIRD_PI+HALF_PI);
}

void mousePressed() {
  //visual is active for .33 seconds
  frameRate(3);

  //face
  noStroke();
  fill(207, 34, 128);
  ellipse(180, 150, 5, 5);
  ellipse(200, 150, 5, 5);
  strokeWeight(2);
  stroke(207, 34, 128);
  line(180, 163, 182, 168);
  line(185, 160, 186, 170);
  line(190, 158, 190, 164);
  line(195, 162, 193, 170);
  line(200, 160, 198, 165);

  //light up markings
  noStroke();
  fill(207, 34, 128);
  quad(190, 210, 210, 200, 190, 220, 170, 200);
  quad(190, 245, 210, 235, 190, 252, 170, 235);
  quad(190, 275, 210, 265, 190, 285, 170, 265);
  quad(220, 290, 245, 325, 242, 328, 217, 293);
  quad(215, 305, 235, 330, 232, 333, 212, 308);
  quad(160, 290, 135, 325, 138, 328, 163, 293);
  quad(165, 305, 145, 330, 148, 333, 168, 308);

  //hands and armbands so that markings are not over the hands
  noStroke();
  fill(106, 20, 26);
  quad(150, 290, 155, 300, 145, 310, 140, 300);
  quad(160, 300, 160, 295, 155, 290, 155, 294);
  quad(155, 290, 155, 294, 145, 294, 145, 290);
  triangle(155, 300, 160, 315, 150, 305);
  triangle(150, 305, 150, 315, 145, 310);

  quad(230, 290, 240, 300, 235, 310, 225, 300);
  quad(220, 300, 220, 295, 225, 290, 225, 294);
  quad(225, 290, 225, 294, 235, 294, 235, 290);
  triangle(225, 300, 230, 305, 220, 315);
  triangle(230, 305, 235, 310, 230, 315);

  fill(150);
  quad(140, 260, 150, 290, 140, 300, 120, 270);
  triangle(140, 260, 120, 270, 125, 245);
  strokeWeight(2);
  stroke(111);
  line(140, 260, 125, 245);
  line(120, 270, 125, 245);
  line(145, 275, 130, 265);
  line(130, 285, 130, 265);
  line(150, 290, 140, 285);
  line(140, 285, 140, 300);

  strokeWeight(7);
  stroke(242, 14, 138);
  line(190, 165, mouseX+5, mouseY);
  stroke(242, 14, 138);
  line(190, 165, mouseX, mouseY+10);
  stroke(242, 14, 138);
  line(190, 165, mouseX-3, mouseY-3);
  noStroke();
  fill(242, 14, 138, 100);
  ellipse(mouseX, mouseY, 50, 50);
  fill(242, 14, 138, 70);
  ellipse(mouseX, mouseY, 70, 70);
  fill(242, 14, 138, 40);
  ellipse(mouseX, mouseY, 120, 120);
}