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