///////////////
/*Catch Flies*/
///// by //////
//*Bora Ocal*//
///////////////
float xInsideSpeed = 3;
float yInsideSpeed = 3;
float randomJarX = random(150, 250);
float randomJarY = random(240, 333);
float bugPosX = 100;
float bugPosY = 100 ;
float xSpeed = 3;
float ySpeed = 3;
float randomSpeedX = random(1, 4);
float randomSpeedY = random(1, 4);
boolean spawnFireFly =true ;
boolean killFireFly ;
boolean increaseY = true;
boolean increaseX = true;
boolean spawnFireFlyInJar = true;
boolean changeBugPos = false;
boolean flashlightKill = false;
float bugHit = 0;
float lightX = 100;
float lightY = 100;
int score;
void setup() {
size(400, 400);
frameRate(120);
noCursor();
informationPanel();
noStroke();
}
void draw() {
background(0);
drawStars();
drawFences();
drawTable();
lightShow();
scoreBoard();
//change bug positon when I press the mouse
if (changeBugPos == false) {
drawABug();
} else {
DrawABugInsideJar();
}
drawJar();
showFlashlight();
}
void drawJar() {
////jar
stroke(0);
fill(#D6BA2E, 155);
rectMode(CORNERS);
rect(150, 240, 250, 340);
//top
stroke(0);
fill(#D6BA2E, 155);
ellipseMode(CORNERS);
ellipse(150, 230, 250, 250);
//bottom
stroke(0);
fill(#D6BA2E, 155);
ellipseMode(CORNERS);
ellipse(150, 320, 250, 360);
}
void drawStars() {
stroke(random(122, 245));
point(4, 40);
stroke(random(122, 245));
point(23, 46);
stroke(random(122, 245));
point(50, 110);
stroke(random(122, 245));
point(43, 224);
stroke(random(122, 245));
point(250, 650);
stroke(random(100, 245));
point(300, 118);
stroke(random(100, 245));
point(200, 80);
stroke(random(100, 245));
point(223, 50);
stroke(random(100, 245));
point(231, 20);
stroke(random(100, 245));
point(320, 30);
stroke(random(100, 245));
point(60, 30);
stroke(random(100, 245));
point(232, 100);
stroke(random(100, 245));
point(320, 250);
stroke(random(100, 245));
point(340, 240);
stroke(random(100, 245));
point(320, 60);
stroke(random(122, 245));
point(344, 40);
stroke(random(122, 245));
point(323, 230);
stroke(random(122, 245));
point(250, 200);
stroke(random(122, 245));
point(9, 200);
stroke(random(122, 245));
point(10, 220);
stroke(random(100, 245));
point(30, 220);
stroke(random(100, 245));
point(56, 245);
stroke(random(100, 245));
point(76, 235);
stroke(random(100, 245));
point(43, 225);
stroke(random(100, 245));
point(330, 215);
stroke(random(100, 245));
point(60, 105);
stroke(random(100, 245));
point(232, 125);
stroke(random(100, 245));
point(344, 124);
stroke(random(100, 245));
point(245, 165);
stroke(random(100, 245));
point(370, 6);
}
void drawTable() {
stroke(0);
fill(#44702C, 210);
rect(0, 320, 400, 400);
}
void drawFences() {
////fences
stroke(0);
fill(142, 60, 13);
rect(0, 348, 400, 310);
//loop for fences
for (int i = 0; i<width; i++) {
stroke(0);
fill(142, 60, 13);
rect(i*40-5, 400, i*40+20, 275);
triangle(i*40-5, 275, i*40+8, 250, i*40+20, 275);
}
}
void DrawABugInsideJar() {
//body
noStroke();
fill(0);
ellipseMode(CENTER);
ellipse(randomJarX, randomJarY, 12, 12);
////wings
//left
noStroke();
fill(122);
ellipseMode(CENTER);
ellipse(randomJarX -13, randomJarY, 17, 12);
//right
noStroke();
fill(122);
ellipseMode(CENTER);
ellipse(randomJarX +14, randomJarY, -17, 12);
////spawn firefly and add speed to it
//if it the X positon bigger than 250 decrease speed
if (spawnFireFlyInJar == true) {
if (randomJarX > 250) {
randomJarX = randomJarX - xInsideSpeed;
increaseX = false;
}
//if it the X positon smaller than 150 increase speed
if (randomJarX < 150) {
randomJarX = randomJarX + xInsideSpeed;
increaseX = true;
}
//if it the x positon is between increase and decrease
if (randomJarX > 150 && randomJarX < 250) {
if (increaseX) {
randomJarX = randomJarX + xInsideSpeed;
} else {
randomJarX = randomJarX - xInsideSpeed;
}
}
//bugPosY = bugPosY + ySpeed;
//if it the Y positon bigger than 340 decrease speed
if (randomJarY > 340) {
randomJarY = randomJarY - yInsideSpeed;
increaseY = false;
}
//if it the Y positon smaller than 240 increase speed
if (randomJarY < 240) {
randomJarY = randomJarY + yInsideSpeed;
increaseY = true;
}
//if it the Y positon is between increase and decrease
if (randomJarY > 240 && randomJarY < 340) {
if (increaseY) {
randomJarY = randomJarY + yInsideSpeed;
} else {
randomJarY = randomJarY - yInsideSpeed;
}
}
}
}
void drawABug() {
////firefly
//body
noStroke();
fill(0);
ellipseMode(CENTER);
ellipse(bugPosX, bugPosY, 12, 12);
////wings
//left
noStroke();
fill(122);
ellipseMode(CENTER);
ellipse(bugPosX -13, bugPosY, 17, 12);
//right
noStroke();
fill(122);
ellipseMode(CENTER);
ellipse(bugPosX +14, bugPosY, -17, 12);
bugPosX = bugPosX + xSpeed;
////if bug hits the edge flip the bug
if (spawnFireFly == true) {
if (bugPosX > width) {
xSpeed = -xSpeed;
}
if (bugPosX < 0) {
xSpeed = -xSpeed;
}
bugPosY = bugPosY + ySpeed;
if (bugPosY > 230) {
ySpeed = -ySpeed;
}
if (bugPosY < 0) {
ySpeed = -ySpeed;
}
}
}
void mousePressed() {
//if distance is less then 50 kill bug
if (dist(mouseX, mouseY, bugPosX, bugPosY)<50) {
changeBugPos = true;
score ++;
}
}
void keyPressed() {
//if I press space restart the game
if (key == ' ') {
changeBugPos = false;
}
}
void showFlashlight()
{
if (mouseX>0 && mouseX<150) {
////draw flashlight on the left
//draw main part
stroke(0);
fill(122, 122, 122);
quad(35, 285, 75, 292, 60, 380, 20, 375);
//draw top part
stroke(0);
fill(122, 122, 122);
quad(30, 260, 90, 270, 75, 292, 35, 285);
//draw switch
stroke(0);
fill(255, 0, 0);
ellipseMode(CENTER);
ellipse(50, 321, 15, 15);
}
if (mouseX>150 && mouseX<250) {
////draw flashlight on middle
//bottom part
stroke(0);
fill(122, 122, 122);
rectMode(CORNERS);
rect(180, 310, 220, 400);
//switch
stroke(0);
fill(255, 0, 0);
ellipseMode(CENTER);
ellipse(200, 343, 15, 15);
//top part
stroke(0);
fill(122, 122, 122);
quad(170, 285, 230, 285, 220, 310, 180, 310);
}
if (mouseX>250 && mouseX<400) {
////draw flashlight on right
//bottom part
stroke(0);
fill(122, 122, 122);
quad(365, 285, 325, 292, 340, 380, 380, 375);
//switch
stroke(0);
fill(255, 0, 0);
ellipseMode(CENTER);
ellipse(350, 321, 15, 15);
//top part
stroke(0);
fill(122, 122, 122);
quad(310, 270, 370, 260, 365, 285, 325, 292 );
}
}
void lightShow() {
//light
stroke(255);
strokeWeight(2);
fill(255, 255, 255, 190);
ellipseMode(CENTER);
ellipse(mouseX, mouseY, lightX, lightY);
fill(255);
ellipseMode(CENTER);
ellipse(mouseX, mouseY, lightX/2, lightY/2);
}
void scoreBoard() {
noStroke();
fill(255, 0, 0);
text("SCORE:", 330, 20);
text(score, 380, 20);
}
void informationPanel() {
println("Your objective is to collect bugs");
println("Press Space to Reset");
}