/*CATCH THE EGGS FOR THE EASTER BUNNY!
Catch the eggs as they fall from the screen by matching the egg colour
to the basket colour! */
int basCol = #DE242A; //initializing colour for basket
int EggCols = 0; //initilizing colours for eggs
int counter = 0; //keeping track of score
float Xpos = random(10,390); //for randomizing positions
float Ypos = 0; //y position for eggs
boolean drawnEgg = false; //controlling colours
void setup() { //startup
size(400,400);
smooth();
frameRate(60);
//explaining controls
println("Click to change the basket between Red, Blue, and Green!");
println("Match the Eggs with the Basket to catch them!");
}
void draw() {
background(#EDF8FF);
ellipseMode(CENTER);
rectMode(CORNER);
noStroke();
if (keyPressed && key == 'r') { //reset score to 0 when R is presed
counter = 0;
}
//draw striped background
for (int stripe = 0; stripe < 15; stripe += 2) {
fill(#B9E5FF);
rect(0,stripe*40,400,40);
}
//draw text score at the top left
textSize(20);
fill(255);
text("Score:",10,30);
text(counter,70,30);
drawBunny(); //drawing the background bunny
//draw sun
ellipseMode(CENTER);
fill(#FFFFB9);
stroke(2);
stroke(#FF8C52);
ellipse(100,100,80,80);
//draw hills
noStroke();
ellipseMode(CENTER);
fill(#84CB84);
ellipse(0,400,600,280);
fill(#A2E8A2);
ellipse(400,450,780,280);
drawRandomEgg(); //draw random eggs falling down the screen
matchColors(); // check if colours match
//draw basket
rectMode(CENTER);
stroke(0);
fill(basCol);
rect(mouseX,375,60,40);
}
/* mousePressed instead of mouseClicked because it will not work if basket
is moving*/
void mousePressed() { //basket will change colour when mouse is pressed
if (basCol == #DE242A) { //change to blue if red
basCol = #4578E3;
} else if (basCol == #4578E3) { //change to green if blue
basCol = #5CF222;
} else { //change to red if green
basCol = #DE242A;
}
}
void drawBunny() {
//draw bunny head
fill(255);
ellipseMode(CORNER);
ellipse(150,210,240,160);
ellipse(230,80,30,40);
ellipse(350,80,30,40);
quad(230,100,260,100,250,220,220,220);
quad(350,100,380,100,350,230,320,220);
//bunny eyes
stroke(#00aef0);
ellipse(190,260,60,60);
ellipse(280,270,60,60);
//floats to constrain pupils to sclera
float eyeX1 = constrain(mouseX,195,215);
float eyeX2 = constrain(mouseX,285,305);
float eyeY1 = constrain(mouseY,265,285);
float eyeY2 = constrain(mouseY,275,295);
//pupils that move with the mouse
fill(#00aef0);
ellipse(eyeX1,eyeY1,30,30);
ellipse(eyeX2,eyeY2,30,30);
}
void drawRandomEgg() {
//randomizing colour for eggs
if(drawnEgg == false){
EggCols = int(random(0, 3)); //randomizing colours using numbers
if (EggCols == 0) { //if 0 then colour is red
EggCols = #DE242A;
} else if (EggCols == 1) { //if 1 then colour is blue
EggCols = #4578E3;
} else { //if 2 then colour is green
EggCols = #5CF222;
}
drawnEgg = true; //stop from constantly randomizing colour
}
fill(EggCols); //drawing the egg
stroke(0);
ellipse(Xpos,Ypos,30,40);
if (counter <= 10) {
Ypos = Ypos + 5;
} else if (counter >= 10) { //increase Y speed after 10 eggs
Ypos = Ypos + 8;
}
if (Ypos >= height) { //when egg hits the bottom
drawnEgg = false;
Ypos = 0;
println("NOOOOoooooo!!"); //print if egg is missed
Xpos = random(10,390); //bring egg back to top
}
}
void matchColors() { //collision if colours match
if (abs(mouseX - Xpos) <= 30 && Ypos >= 375 && EggCols == basCol) {
drawnEgg = false; //bring back to top
Ypos = 0;
Xpos = random(10,390);
counter = counter + 1; //increase score by 1
}
}