// Billy the Ghost void setup() { size(400, 400); frameRate(60); } void draw() { //setting rectMode and ellipseMode background(31, 39, 64); ellipseMode(CENTER); rectMode(CORNERS); // the moon fill(176, 182, 191); ellipse(80, 80, 120, 120); fill(158, 166, 191); ellipseMode(CORNERS); ellipse(110, 80, 120, 90); ellipse(120, 100, 130, 110); ellipse(100, 110, 110, 120); // ground/grass fill(51, 64, 48); rect(0, 240, 400, 400); //dirt pathway fill(64, 55, 43); rect(180, 240, 240, 400); //clouds /* In order to make the clouds seem like they're moving, I use the function called frameCount() in order to set the speed of the clouds according to the x axis */ strokeWeight(0.5); stroke(50, 51, 51); ellipseMode(CORNER); fill(146, 147, 148); ellipse(160+frameCount/85, 70, 180+frameCount/85, 60); fill(153, 155, 156); ellipse(198+frameCount/85, 50, 110+frameCount/85, 30); ellipse(130+frameCount/85, 110, 140+frameCount/85, 30); fill(146, 147, 148); ellipse(240+frameCount/85, 133, 120+frameCount/85, 30); //grave stones (made up of ellipse and rect) //gravestone 1 noStroke(); ellipseMode(CORNERS); ellipse(40, 220, 90, 270); rect(40, 240, 90, 300); textSize(20); fill(50, 51, 51); text("RIP", 50, 245); textSize(10); text("GG", 57, 260); //gravestone 2 fill(146, 147, 148); ellipse(100, 320, 140, 360); rect(100, 340, 140, 380); fill(50, 51, 51); textSize(15); text("RIP", 107, 340); //gravestone 3 fill(146, 147, 148); ellipse(260, 200, 300, 240); rect(260, 220, 300, 280); fill(50, 51, 51); textSize(15); text("RIP", 270, 230); // Billy the Ghost fill(255, 255, 255); /* In order to allow billy to move according to the mouse, every X and Y value is replaced by mouseX and mouseY while adding each point's offset respectively to these values. */ // Billy's arms /* the use of pmouseX and pmouseY are used to give the effect of the arms flailing around while Billy is flying.*/ stroke(255, 255, 255); strokeWeight(13); //line(190, 230, 170, 245); //line(220, 230, 245, 245); line(mouseX-15, mouseY+25, pmouseX-35, pmouseY+40); //left arm line(mouseX+15, mouseY+25, pmouseX+40, pmouseY+40); //right arm // removing unwanted strokes noStroke(); // Billy's body fill(255, 255, 255); rectMode(CENTER); //rect(205, 235, 40, 30); rect(mouseX, mouseY+30, 40, 30); // Billy's head ellipseMode(CENTER); //ellipse(205, 205, 60, 60); ellipse(mouseX, mouseY, 60, 60); // Billy's eyes /* mouseY in fill() allows Billy's eyes to turn red accoring to the mouse's horizontal movements*/ fill(mouseY, 0, 0); //ellipse(195, 200, 10, 30); //ellipse(215, 200, 10, 30); ellipse(mouseX-10, mouseY-5, 10, 30); // left eye ellipse(mouseX+10, mouseY-5, 10, 30); // right eye // Billy's mouth //ellipse(205, 225, 5, 10); fill(0,0,0); if (mousePressed==true) { ellipse(mouseX, mouseY+20, 25, 25); } // this allows Billy to open up his mouth when pressing the mouse button. ellipse(mouseX, mouseY+20, 5, 10); }