/*
By: klye romano
*/
// Nail one varibles for the x and y cordinates of the nail
int nailX = 0;
int nailY = 0;
//nail height
int nailStem = 70;
//nail head height
int nailHead = nailY;
//varible for how many times a nail has been hit
int nailHit =0;
//a varible to make sure this is the first run of the nail function
int firstRun =0;
//revison varible used in the cloud loop
int revison = 0;
//x and y of the clouds, there first set of x and ys are preset
int cloudX = 50;
int cloudY = 30;
//stops the secound if stament in the nailHit if statement from running multiples per nail
boolean stop = false;
void setup() {
size(600, 500);
}
void draw() {
drawBackground();
drawNails();
//if the mouse button isnt pressed draw the normal hammer
if (mousePressed != true) {
drawHammer();
}
//other wise draw the tapped version
else {
drawHammerTapped();
}
}
//this draws the normal version of the hammer
void drawHammer ()
{
fill(193, 116, 0);
//handle
rect (mouseX+30, mouseY-45, 108, 20);
fill(50);
noStroke();
//face of the hammer
rect (mouseX-30, mouseY-30, 70, 18);
// the base bbehind the face of the hammer
rect(mouseX-25, mouseY-100, 60,80);
}
//this function draws the tapped version of the hammer
void drawHammerTapped()
{
fill(193, 116, 0);
//handle
rect (mouseX+30, mouseY-10, 108, 20);
fill(50);
noStroke();
//face of the hammer
rect (mouseX-30, mouseY+30, 70, 18);
// the base bbehind the face of the hammer
rect(mouseX-25, mouseY-50, 60,80);
}
void drawNails()
{
//repostions the nail if it gets to 3 hits from the hammer
if (nailHit == 3)
{
nailX = int(random(50, 550));
nailY = int(random(340, 430));
nailHit = 0;
nailHead = nailY;
nailStem = 70;
}
//this should only run the first time the programs started
else if (firstRun == 0)
{
nailX = int(random(50, 550));
nailY = int(random(340, 430));
firstRun = 1;
nailHead = nailY;
// shrinks the stem of the nail after the program confirms you hit
//the nail and that its the first time it was hit
}
else if ( nailHit == 1)
{
nailStem = 60;
//moves the nail body down
if (stop == false)
{
nailY = nailY+10;
nailHead = nailHead+10;
//changes the boolean so that this if statement doesnt loop
stop = true;
}
}
//same idea but this is for the secound time the stem is shrunk even more
else if ( nailHit == 2){
nailStem = 40;
//moves the nail body down
if (stop == true)
{
nailY = nailY+25;
nailHead = nailHead+25;
//resets the boolean so it can be used again with the new nail
stop = false;
}
}
//this chunk makes the nail appear on screen
//stem of nail
fill(30);
noStroke();
rect(nailX, nailY, 20, nailStem);
//head of nail
fill(80);
noStroke();
rect(nailX-15, nailHead, 50, 11, 0);
}
//checks to see if the mouse was cliked inside the parameters of the nail
void mouseClicked() {
if (mouseX > nailX && mouseY > nailY && mouseX < nailX+20 && mouseY < nailY+70)
{
nailHit += 1;
}
}
void drawBackground (){
//sky
background (2,219,237);
//baord
fill(209, 170, 15);
noStroke();
rect (0, 323, 599, 189);
//horizontal lines in board
fill(188, 146, 2);
noStroke();
rect (0, 324, 599, 4);
rect (0, 340, 599, 4);
rect (0, 360, 599, 4);
rect (0, 383, 599, 4);
rect (0, 415, 599, 4);
rect (0, 454, 599, 4);
rect (0, 490, 600, 4);
//vertical lines in the board
rect (101, 324, 5, 16);
rect (283, 342, 5, 20);
rect (64, 362, 5, 22);
rect (532, 419, 5, 35);
rect (202, 384, 5, 34);
//creates clouds across the screen by using
// a for loop to incrmentally draw them across the screen
for(int i2 = 0; i2 <= 4; i2++)
{
fill(255);
noStroke();
ellipse(cloudX,cloudY,250,40);
//if the loop has drawn the first cloud change the x and y for the next cloud
if (i2 == 1)
{
cloudX += 120;
cloudY += 15;
}
//same idea for the next two as well
else if (i2 == 2)
{
cloudX += 300;
cloudY += 80;
}
else if (i2 == 3)
{
cloudX += 80;
cloudY += -25;
}
//finally reset the cloud postion to the orginal area it started so that when
//draw loop loops back around the clouds will start at were they orginally were
else if (i2 == 4)
{
cloudX = 50;
cloudY = 30;
}
}
//instructions for the player
text ("hit the nails into the wood it takes three hits", 20,100);
}