void setup()
{
size(400, 400); //Set canvas size to 400 x 400
smooth(); //Turn on anti-aliasing
frameRate(30); //Set frame rate to 30 FPS.
}
void draw()
{
background(15);
//Moon
fill(200); //Set Color
stroke(1); //Set Stroke Color
strokeWeight(1); //Set Stroke Weight
ellipseMode(CENTER); //Set Function Mode
ellipse(50, 35, 50, 50); //Draw Ellipse
//Stars
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(200, 15, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(280, 27, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(269, 62, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(237,39, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(194,66, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(135,32, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(193, 95, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(119, 95, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(31, 94, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(18, 55, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(96, 60, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(96,9, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(6, 8, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(329, 14, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(377, 14, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(377, 54, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(325, 42, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(383, 100, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(393, 128, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(320, 96, 5, 5);
fill(255);
noStroke();
ellipseMode(CENTER);
ellipse(8, 126, 5, 5);
//Hills, Furthest --> Closest
//Furthest, Darkest
fill(30,30,30);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(250, 300, 500, 400);
//Grass Overlay
fill(0,65,0,70);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(250, 300, 500, 400);
//Middle
fill(45,45,45);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(100, 310, 400, 400);
//Grass Overlay
fill(0,65,0,85);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(100, 310, 400, 400);
//Front
fill(60,60,60);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(200, 370, 600, 400);
//Grass Overlay
fill(0,125,0,65);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(200, 370, 600, 400);
//Gravestones
//Furthest Gravestones
fill(140);
stroke(0);
strokeWeight(0.5);
quad(218,108,215,121,228,124,228,111);
fill(140);
stroke(0);
strokeWeight(0.5);
quad(254,127,253,145,267,148,266,131);
fill(140);
stroke(0);
strokeWeight(0.5);
quad(294,115,294,129,307,129,307,113);
fill(140);
stroke(0);
strokeWeight(0.5);
quad(337,95,335,117,352,120,352,98);
fill(140);
stroke(0);
strokeWeight(0.5);
quad(368,152,363,174,380,176,382,153);
fill(140);
stroke(0);
strokeWeight(0.5);
quad(309,169,310,186,327,187,325,169);
//Middle Gravestones
fill(140);
stroke(0);
strokeWeight(0.5);
quad( 37,130, 37,155, 57,150, 53,127);
fill(140);
stroke(0);
strokeWeight(0.5);
quad( 94,140,94,165,112,161,111,137);
fill(140);
stroke(0);
strokeWeight(0.5);
quad(9,177, 11,200, 29,193, 25,170);
fill(140);
stroke(0);
strokeWeight(0.5);
quad(161,144,165,161,179,161,175,142);
fill(140);
stroke(0);
strokeWeight(0.5);
quad(70,92,75,113,93,113,89,92);
//Front Gravestones
//Gravestones in order of left to right)
fill(140);
stroke(0);
strokeWeight(1);
quad(-10,237,-10,292,16,292,12,237);
//Zombie Gravestone
//Dirt
fill(105,52,0);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(114,311,150,47);
//Gravestone
fill(140);
stroke(0);
strokeWeight(1);
quad(41,167,70,327,173,317,140,155);
//Text ("RIP")
//R
stroke(225);
line(57,177,61,205);
line(57,177,72,177);
line(72,177,72,187);
line(72,187,60,187);
line(60,187,76,200);
//I
line(83,175,99,175);
line(91,175,93,200);
line(87,199,98,199);
//P
line(111,172,115,195);
line(111,172,123,172);
line(123,172,124,181);
line(124,181,114,183);
//Middle Gravestone
//Dirt
fill(105,52,0);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(210,245,60,28);
//Gravestone
fill(140);
stroke(0);
strokeWeight(1);
quad(189,182,183,246,236,246,239,189);
//Text ("RIP")
//R
stroke(225);
line(195,209,196,191);
line(196,191,205,191);
line(205,191,204,202);
line(204,202,195,202);
line(195,202,202,209);
//I
line(210,192,220,192);
line(214,192,210,210);
line(205,210,216,210);
//P
line(224,192,222,211);
line(224,192,233,193);
line(233,193,233,203);
line(233,203,226,203);
//Skeleton Gravestone
//Dirt
fill(105,52,0);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(300,320,150,47);
//Gravestone
fill(140);
stroke(0);
strokeWeight(1);
quad(276,182,250,332,350,332,354,193);
//Text ("RIP")
//R
stroke(255);
line(283,230,286,197);
line(286,197,301,199);
line(301,199,300,216);
line(300,216,287,210);
line(287,210,300,230);
//I
line(308,201,326,201);
line(316,203,313,227);
line(307,228,321,228);
//P
line(334,229,334,201);
line(334,201,343,201);
line(343,201,343,214);
line(343,214,334,214);
//Zombie & Skeleton
//ZOMBIE
//Arm
fill(0,50,0); //164,148,128 BEIGE
noStroke();
quad(105,mouseY+337,88,mouseY+238,116,mouseY+222,145,mouseY+336);
//Hand
fill(0,50,0);
noStroke();
strokeWeight(0.5);
quad(74,mouseY+208,88,mouseY+240,116,mouseY+224,116,mouseY+199);
//Fingers (Right to Left)
fill(0,50,0);
noStroke();
quad(102,mouseY+215,102,mouseY+220,133,mouseY+210,133,mouseY+205);
fill(0,50,0);
noStroke();
rectMode(CENTER);
rect(110,mouseY+195,5,25);
fill(0,50,0);
noStroke();
rectMode(CENTER);
rect(100,mouseY+196,5,25);
fill(0,50,0);
noStroke();
rectMode(CENTER);
rect(90,mouseY+200,5,25);
fill(0,50,0);
noStroke();
rectMode(CENTER);
rect(80,mouseY+203,5,25);
//Blood Patches (Bottom to Top)
fill(50,0,0);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(113,mouseY+305,25,15);
fill(50,0,0);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(117,mouseY+280,10,10);
fill(50,0,0);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(120,mouseY+260,10,20);
fill(50,0,0);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(98,mouseY+240,7,17);
fill(50,0,0);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(100,mouseY+215,4,9);
//SKELETON
//Spine
fill(190);
noStroke();
rectMode(CENTER);
rect(305,mouseY+315,20,8);
fill(190);
noStroke();
rectMode(CENTER);
rect(305,mouseY+325,20,8);
fill(190);
noStroke();
rectMode(CENTER);
rect(305,mouseY+335,20,8);
fill(190);
noStroke();
rectMode(CENTER);
rect(305,mouseY+345,20,8);
//Tooth #1
fill(175);
stroke(0);
strokeWeight(0.8);
rectMode(CENTER);
rect(295,mouseY+305,13,25);
//Tooth #2
fill(175);
stroke(0);
strokeWeight(0.8);
rectMode(CENTER);
rect(305,mouseY+305,13,25);
//Tooth #3
fill(175);
stroke(0);
strokeWeight(0.8);
rectMode(CENTER);
rect(315,mouseY+305,13,25);
//Skull
fill(175);
stroke(0);
strokeWeight(0.8);
ellipseMode(CENTER);
ellipse(305,mouseY+275,70,65);
//Upper Jaw
fill(175);
noStroke();
ellipseMode(CENTER);
ellipse(305,mouseY+290,45,45);
//Eyes
fill(0);
noStroke();
ellipseMode(CENTER);
ellipse(290,mouseY+275,15,29);
fill(0);
noStroke();
ellipseMode(CENTER);
ellipse(320,mouseY+275,15,29);
//Nose
fill(0);
noStroke();
triangle(305,mouseY+295,300,mouseY+285, 310,mouseY+285);
//Hole in Ground/Overlay
//Overlay
//Front
fill(60,60,60);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(170, 534, 600, 400);
//Grass Overlay
fill(0,125,0,65);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(170, 534, 600, 400);
//Left Gravestone Hole
fill(5);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(125,347,125,27);
//Right Gravestone Hole
fill(5);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(301,359,125,27);
//Gray Overlay
rectMode(CORNER);
fill(15,15,15,-mouseY+125);
rect(0,0,400,400);
}
void mousePressed()
{
//Skeleton's Eyes Flash Red
//Eyes
fill(220,0,0);
noStroke();
ellipseMode(CENTER);
ellipse(290,mouseY+275,5,19);
fill(220,0,0);
noStroke();
ellipseMode(CENTER);
ellipse(320,mouseY+275,5,19);
//Front (Here to prevent eyes from glowing underground)
fill(60,60,60);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(170, 534, 600, 400);
//Grass Overlay (Here to prevent eyes from glowing underground)
fill(15,15,15,-mouseY+150); //Fill is set to the same as the gray overlay to avoid this shape being seen when the mouse is clicked
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(170, 534, 600, 400);
//Right Gravestone Hole (Here to prevent eyes from glowing underground)
fill(5);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(301,359,125,27);
//Left Gravestone Hole (Here to prevent layering issues)
fill(5);
noStroke();
strokeWeight(0.5);
ellipseMode(CENTER);
ellipse(125,347,125,27);
//Flash Red Over Screen
rectMode(CORNER);
noStroke();
fill(175,0,0,125);
rect(0,0,400,400);
}