Your browser does not support the canvas tag.

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