//Michael Mirabile
//Object Oriented Toy
//2016
//You are a bee trying to pollinate flowers.
//Land on the flowers and return pollen to your honey comb
//Avoid Toxic green pesticide gases and jump into white waterclouds to heal yourself
//As you pollinate flowers, your score will increase symbolized by sun flying in the sky
//Calling objects from their respectful classes
Sun sun = new Sun();
WClouds wcloud = new WClouds();
PClouds pcloud = new PClouds();
Moon moon = new Moon();
//Initializing the global variables
boolean pollenPickup;
//Clouds work with lifebar to create a health system. Green = toxic, White = healthy
PVector CloudXpos = new PVector (0,800);
float PCloudYpos = random(200,600);
float PCloudXpos = 800;
//Lifebar alters location of LifeBar rect
int lifebar = 100;
//Influences sun and moon position
int Score = 1;
//Creating array for flower position
float[] FlowerrandX = new float [3];
float[] FlowerrandY = new float [3];
void setup () {
//Randomly generate flower position
for (int i = 0; i < 2; i++) {
FlowerrandX[i] = random(500,800);
}
for (int i = 0; i < 2; i++) {
FlowerrandY[i] = random(300,500);
}
FlowerrandX[2] = random(300,400);
FlowerrandY[2] = random(300,400);
//Create random white cloud position
CloudXpos.x = random(200,600);
//PollenPickup is used for score
pollenPickup = false;
//size
size(800,600);
//Grey Background
fill (100,100,100);
rect(0,0,1000,1000);
}
void draw() {
//Set basic components
frameRate(30);
drawBackground();
//Call Objects and their methods
sun.drawSun();
moon.drawMoon();
drawGrass();
drawFlower();
drawBee();
drawNest();
wcloud.drawWClouds();
pcloud.drawPClouds();
drawLifebar();
//Check if player has reached the flowers
if ((dist(mouseX,mouseY,FlowerrandX[0],FlowerrandY[0]) < 100) || (dist(mouseX,mouseY,FlowerrandX[1],FlowerrandY[1]) < 100) || (dist(mouseX,mouseY,FlowerrandX[2],FlowerrandY[2]) < 100)) {
pollenPickup = true;
}
FlowerResponse();
//Check if player has returned to basket from flowers
if (dist(mouseX,mouseY,100,400) < 100) {
if (pollenPickup == true) {
pollenPickup = false;
Score = Score + 1;}
}
//Lifebar system based on Clouds
if (lifebar > 100) {
lifebar = 100;
}
if (lifebar < 0) {
fill(0,0,0);
rect (0,0,1000,1000);
}
//Score raises the sun in the sky
if (Score == 10) {
fill(250,250,250);
rect(0,0,1000,1000);
}
if(dist(PCloudXpos,PCloudYpos,CloudXpos.y,CloudXpos.x) < 100) {
CloudXpos.y = CloudXpos.y + 150;
}
}
void drawBee () {
//Bee follows mouse
fill(220,250,100);
ellipse(mouseX,mouseY,60,30);
rect(mouseX-5,mouseY-15,7,30);
triangle(mouseX+30,mouseY,mouseX + 10,mouseY,mouseX + 30, mouseY - 20);
triangle(mouseX+30,mouseY,mouseX + 10,mouseY,mouseX + 30, mouseY + 20);
fill(250,250,250,150);
ellipse(mouseX,mouseY-10,10,sin(frameCount/7)*30);
ellipse(mouseX,mouseY,10,sin(frameCount/7)*30);
fill(50,50,50);
ellipse(mouseX+20,mouseY,30,30);
fill(150,150,150);
ellipse(mouseX+15,mouseY-5,5,5);
ellipse(mouseX+25,mouseY-5,5,5);
arc(mouseX+20, mouseY, 20, 20, 0, PI);
fill(50,50,50);
ellipse(mouseX,mouseY,3,30);
ellipse(mouseX-10,mouseY,3,30);
ellipse(mouseX-20,mouseY,3,30);
}
void drawBackground() {
//Blue sky layer
noStroke();
fill(100,100,250);
rect(0,300,1000,100);
fill(120,120,250);
rect(0,200,1000,100);
fill(150,150,250);
rect(0,100,1000,100);
fill(200,200,250);
rect(0,0,1000,100);
}
void drawGrass() {
//Green grass layer
stroke(0);
fill(100,250,100);
rect(-10,350,1000,400);
fill(100,225,100);
rect(200,350,1000,400);
fill(100,200,100);
rect(400,350,1000,400);
fill(100,150,100);
rect(600,350,1000,400);
fill(100,250,100);
noStroke();
for (int i = 1; i < 1000; i += 20) {
triangle(-50 + i,350,0 + i,350,0 + i,300);
}
}
void drawFlower() {
//Creates the flower shape
fill(50,200,50);
rect(FlowerrandX[0],FlowerrandY[0],10,100);
rect(FlowerrandX[1],FlowerrandY[1],10,100);
rect(FlowerrandX[2],FlowerrandY[2],10,100);
fill(200,50,200);
ellipse(FlowerrandX[0]+15,FlowerrandY[0] + 15,50,50);
ellipse(FlowerrandX[0]-15,FlowerrandY[0] - 15,50,50);
ellipse(FlowerrandX[0]+15,FlowerrandY[0] - 15,50,50);
ellipse(FlowerrandX[0]-15,FlowerrandY[0] + 15,50,50);
ellipse(FlowerrandX[1] + 5,FlowerrandY[1],50,50);
ellipse(FlowerrandX[1]-15,FlowerrandY[1] - 15,50,50);
ellipse(FlowerrandX[1]+15,FlowerrandY[1] - 15,50,50);
ellipse(FlowerrandX[1]-15,FlowerrandY[1] + 15,50,50);
ellipse(FlowerrandX[2] + 15,FlowerrandY[2]+15,50,50);
ellipse(FlowerrandX[2]-15,FlowerrandY[2] - 15,50,50);
ellipse(FlowerrandX[2]+15,FlowerrandY[2] - 15,50,50);
ellipse(FlowerrandX[2]-15,FlowerrandY[2] + 15,50,50);
fill(200,200,150);
ellipse(FlowerrandX[0],FlowerrandY[0],30,30);
ellipse(FlowerrandX[1] + 5,FlowerrandY[1],30,30);
ellipse(FlowerrandX[2] + 10,FlowerrandY[2],30,30);
}
//Creates a pollen like haze around player
void FlowerResponse () {
if (pollenPickup == true) {
fill(200,50,200);
for (int j = 0; j < 5; j++) {
ellipse(mouseX + random(-20,20),mouseY + random(-20,20),5,5);
}
}
}
void drawNest() {
//Creates the basket shape
fill(200,175,50);
ellipse(125,475,50,50);
fill(250,200,0);
rect(100,400,50,75);
fill(50,50,50);
ellipse(125,400,50,50);
}
void drawLifebar() {
//Bar that changes with health
fill(50,50,50);
rect(600 + ((100-lifebar)*2),20,250,30);
}
class PClouds{
//Poison toxic clouds
void drawPClouds() {
fill(0,250,0,0);//noFillBoundingBox
rect(PCloudXpos,PCloudYpos,50,50);
//VisibleObject
fill(0,250,0,150);
ellipse(PCloudXpos + 10,PCloudYpos,75,75);
ellipse(PCloudXpos - 10,PCloudYpos,75,75);
ellipse(PCloudXpos-20,PCloudYpos,75,75);
ellipse(PCloudXpos+20,PCloudYpos,75,75);
ellipse(PCloudXpos-10,PCloudYpos+10,75,75);
ellipse(PCloudXpos-20,PCloudYpos+20,75,75);
PCloudXpos = PCloudXpos - random(0,10);
if (PCloudXpos < 0) {
PCloudYpos = random(200,600);
PCloudXpos = 800;
}
if (dist(mouseX,mouseY,PCloudXpos,PCloudYpos) < 50) {
lifebar = lifebar - 5;
}
}
}