//variables
float tadColorR;
float tadColorB;
float tadColorG;
int foodcount = 0;
boolean fed = false;
boolean fat = false;
boolean play = false;
boolean love = false;
boolean coloractive = false;
boolean canevolve = false;
boolean evolved = false;
void setup() {
size(400, 400);
rectMode(CORNERS);
noStroke();
//sets base tadpole color
tadColorR = 40;
tadColorB = 90;
tadColorG = 240;
}
void draw() {
//calls on functions
enviroment();
tadpole();
}
//create the enviroment
void enviroment() {
//backwall
fill (100);
rect(0, 0, 400, 300);
fill (50);
rect(0, 300, 400, 400);
//wall lines
for (int linex = 1; linex < 40; linex = linex+1) {
fill(0);
rect(linex*10, 0, linex*10+1, 300);
}
//light
fill (255, 255, 200, 50+sin(millis()/200)*30);
ellipse (50, 40, 60, 60);
fill (255, 255, 200, 50+sin(millis()/150)*30);
ellipse (200, 40, 60, 60);
fill (255, 255, 200, 50+sin(millis()/250)*30);
ellipse (350, 40, 60, 60);
//lightbulbs
fill (255, 255, 200, 200+sin(millis()/220)*30);
ellipse (50, 30, 20, 20);
ellipse (350, 30, 20, 20);
ellipse (200, 30, 20, 20);
//lamps
fill (200);
arc(50, 30, 50, 50, PI, TWO_PI);
arc(200, 30, 50, 50, PI, TWO_PI);
arc(350, 30, 50, 50, PI, TWO_PI);
//tank
fill(230);
rect(120, 310, 280, 330);
rect(120, 100, 280, 120);
//glass
fill (255, 90);
rect(100, 310, 300, 120);
//water
fill (170, 170, 255, 170);
rect (105, 305, 295, 130+sin(millis()/300*1.8));
//button backs
stroke(255);
fill(0);
rect(30, 394, 68, 358);
rect(105, 394, 143, 358);
rect(181, 394, 219, 358);
rect(257, 394, 295, 358);
rect(333, 394, 371, 358);
//food button
noStroke();
fill (255);
rect(38, 390, 60, 385);
rect(37, 383, 61, 381);
rect(39, 379, 59, 376);
rect(37, 374, 61, 372);
arc(49, 370, 22, 15, PI, TWO_PI);
//toy button
ellipse(120, 371, 15, 15);
ellipse(129, 387, 7, 7);
stroke(255);
strokeWeight(3);
line(120, 371, 129, 387);
noStroke();
//color button
arc(200, 373, 7, 20, PI, TWO_PI);
triangle(198, 373, 202, 373, 200, 392);
//compliment button
ellipse(276, 373, 20, 15);
triangle(275, 378, 280, 378, 285, 389);
//food bar
fill(150);
rect(80, 150, 90, 200);
////evolve button
fill(150);
ellipse(348, 376, 15, 15);
triangle(350, 380, 350, 372, 370, 376);
}
void tadpole() {
//only if it's still a tadpole
if (evolved == false) {
//love your buddy
if (love == true && fat == false) {
fill (255, 200, 200);
triangle (200, 158+sin(millis()/300*1.5), 207, 150+sin(millis()/300*1.5), 193, 150+sin(millis()/300*1.5));
triangle (207, 150+sin(millis()/300*1.5), 200, 150+sin(millis()/300*1.5), 204, 145+sin(millis()/300*1.5));
triangle (200, 150+sin(millis()/300*1.5), 193, 150+sin(millis()/300*1.5), 196, 145+sin(millis()/300*1.5));
} else if (love == true && fat == true) {
//nothing
}
//feed and over feed
if (fed == true && foodcount == 1) {
fill(255);
rect(255, 205, 250, 210);
rect(80, 190, 90, 200);
} else if (fed == true && foodcount == 2) {
fill(255);
rect(255, 205, 250, 210);
rect(235, 235, 230, 240);
fill(0, 255, 0);
rect(80, 180, 90, 200);
} else if (fed == true && foodcount == 3) {
fill(255);
rect(255, 205, 250, 210);
rect(235, 235, 230, 240);
rect(150, 200, 155, 205);
fill(255, 255, 0);
rect(80, 170, 90, 200);
} else if (fed == true && foodcount == 4) {
fill(255);
rect(255, 205, 250, 210);
rect(235, 235, 230, 240);
rect(150, 200, 155, 205);
rect(160, 240, 165, 245);
fill(255, 150, 0);
rect(80, 160, 90, 200);
} else if (fed ==true && foodcount >= 5) {
fat = true;
fill(255);
rect(255, 205, 250, 210);
rect(235, 235, 230, 240);
rect(150, 200, 155, 205);
rect(160, 240, 165, 245);
rect(130, 250, 135, 255);
rect(280, 250, 285, 255);
fill(255, 0, 0);
rect(80, 150, 90, 200);
}
//play with if it's not dead
if (play == true && fat == false) {
fill(tadColorR+20, tadColorG+20, tadColorB+20);
triangle(210+sin(millis()/350)*10, 260, 190+sin(millis()/350)*10, 260, 200+sin(millis()/350)*1.5, 210);
triangle(210+sin(millis()/350)*10, 240, 190+sin(millis()/350)*10, 240, 200+sin(millis()/350)*1.5, 210);
fill(tadColorR, tadColorG, tadColorB);
ellipse(200, 190, 50, 50);
triangle(210+sin(millis()/350)*1.5, 210, 190+sin(millis()/350)*1.5, 210, 200+sin(millis()/350)*10, 270);
fill(255);
ellipse(187+cos(millis()/350)*1.5, 190, 10, 10);
ellipse(213+cos(millis()/350)*1.5, 190, 10, 10);
fill(0);
ellipse(185+cos(millis()/350)*1.5+(mouseX/75), 187+(mouseY/75), 4, 4);
ellipse(211+cos(millis()/350)*1.5+(mouseX/75), 187+(mouseY/75), 4, 4);
fill(0);
//smile
arc(200+cos(millis()/350)*1.5, 202, 8, 8, 0, PI);
//toy
fill(255, 220, 220);
ellipse(269+cos(millis()/350)*5, 201, 15, 15);
ellipse(269+cos(millis()/350)*2, 217, 7, 7);
stroke(255, 220, 220);
strokeWeight(3);
line(269+cos(millis()/350)*5, 201, 269+cos(millis()/350)*2, 217);
noStroke();
fill(255, 220, 220);
ellipse(131+cos(millis()/350)*5, 201, 15, 15);
ellipse(131+cos(millis()/350)*2, 217, 7, 7);
stroke(255, 220, 220);
line(131+cos(millis()/350)*5, 201, 131+cos(millis()/350)*2, 217);
noStroke();
strokeWeight(2);
}
//normal alive tadpole
if (coloractive == false && fat == false && play == false) {
fill(tadColorR+20, tadColorG+20, tadColorB+20);
triangle(210+sin(millis()/350)*10, 260, 190+sin(millis()/350)*10, 260, 200+sin(millis()/350)*1.5, 210);
triangle(210+sin(millis()/350)*10, 240, 190+sin(millis()/350)*10, 240, 200+sin(millis()/350)*1.5, 210);
fill(tadColorR, tadColorG, tadColorB);
ellipse(200, 190, 50, 50);
triangle(210+sin(millis()/350)*1.5, 210, 190+sin(millis()/350)*1.5, 210, 200+sin(millis()/350)*10, 270);
fill(255);
ellipse(187+cos(millis()/350)*1.5, 190, 10, 10);
ellipse(213+cos(millis()/350)*1.5, 190, 10, 10);
fill(0);
ellipse(185+cos(millis()/350)*1.5+(mouseX/75), 187+(mouseY/75), 4, 4);
ellipse(211+cos(millis()/350)*1.5+(mouseX/75), 187+(mouseY/75), 4, 4);
stroke(0);
strokeWeight(2);
line(198+cos(millis()/350)*1.5, 205, 202+cos(millis()/350)*1.5, 205);
noStroke();
} else if (coloractive == true && fat == false && play ==false) {
//alive fancy colored tadpole
fill(tadColorR+20, tadColorG+20, tadColorB+20);
triangle(210+sin(millis()/350)*10, 260, 190+sin(millis()/350)*10, 260, 200+sin(millis()/350)*1.5, 210);
triangle(210+sin(millis()/350)*10, 240, 190+sin(millis()/350)*10, 240, 200+sin(millis()/350)*1.5, 210);
fill(tadColorR, tadColorG, tadColorB);
ellipse(200, 190, 50, 50);
triangle(210+sin(millis()/350)*1.5, 210, 190+sin(millis()/350)*1.5, 210, 200+sin(millis()/350)*10, 270);
fill(255);
ellipse(187+cos(millis()/350)*1.5, 190, 10, 10);
ellipse(213+cos(millis()/350)*1.5, 190, 10, 10);
fill(0);
ellipse(185+cos(millis()/350)*1.5+(mouseX/75), 187+(mouseY/75), 4, 4);
ellipse(211+cos(millis()/350)*1.5+(mouseX/75), 187+(mouseY/75), 4, 4);
stroke(0);
strokeWeight(2);
line(198+cos(millis()/350)*1.5, 205, 202+cos(millis()/350)*1.5, 205);
noStroke();
} else if (coloractive == true && fat == false && play == true) {
//play with fancy color tadpole
fill(tadColorR+20, tadColorG+20, tadColorB+20);
triangle(210+sin(millis()/350)*10, 260, 190+sin(millis()/350)*10, 260, 200+sin(millis()/350)*1.5, 210);
triangle(210+sin(millis()/350)*10, 240, 190+sin(millis()/350)*10, 240, 200+sin(millis()/350)*1.5, 210);
fill(tadColorR, tadColorG, tadColorB);
ellipse(200, 190, 50, 50);
triangle(210+sin(millis()/350)*1.5, 210, 190+sin(millis()/350)*1.5, 210, 200+sin(millis()/350)*10, 270);
fill(255);
ellipse(187+cos(millis()/350)*1.5, 190, 10, 10);
ellipse(213+cos(millis()/350)*1.5, 190, 10, 10);
fill(0);
ellipse(185+cos(millis()/350)*1.5+(mouseX/75), 187+(mouseY/75), 4, 4);
ellipse(211+cos(millis()/350)*1.5+(mouseX/75), 187+(mouseY/75), 4, 4);
//smile
arc(200+cos(millis()/350)*1.5, 202, 8, 8, 0, PI);
} else if (fat == true && play == false) {
//grey dead tadpole
fill(200);
triangle(210, 260+sin(millis()/350)*2, 190, 260+sin(millis()/350)*2, 200, 210+sin(millis()/350)*2);
triangle(210, 240+sin(millis()/350)*2, 190, 240+sin(millis()/350)*2, 200, 210+sin(millis()/350)*2);
fill(150);
ellipse(200, 190+sin(millis()/350)*2, 50, 50);
triangle(210, 210+sin(millis()/350)*2, 190, 210+sin(millis()/350)*3, 200, 270+sin(millis()/350)*2);
fill(255);
ellipse(187, 190+sin(millis()/350)*2, 10, 10);
ellipse(213, 190+sin(millis()/350)*2, 10, 10);
stroke(0);
strokeWeight(2);
line(198, 205+sin(millis()/350)*2, 202, 205+sin(millis()/350)*2);
noStroke();
} else if (play == true && fat == true) {
//grey dead tadpole that you played with one time
fill(200);
triangle(210, 260+sin(millis()/350)*2, 190, 260+sin(millis()/350)*2, 200, 210+sin(millis()/350)*2);
triangle(210, 240+sin(millis()/350)*2, 190, 240+sin(millis()/350)*2, 200, 210+sin(millis()/350)*2);
fill(150);
ellipse(200, 190+sin(millis()/350)*2, 50, 50);
triangle(210, 210+sin(millis()/350)*2, 190, 210+sin(millis()/350)*3, 200, 270+sin(millis()/350)*2);
fill(255);
ellipse(187, 190+sin(millis()/350)*2, 10, 10);
ellipse(213, 190+sin(millis()/350)*2, 10, 10);
stroke(0);
strokeWeight(2);
line(198, 205+sin(millis()/350)*2, 202, 205+sin(millis()/350)*2);
noStroke();
//toy
fill(0);
ellipse(269, 201, 15, 15);
ellipse(269, 217, 7, 7);
stroke(0);
strokeWeight(3);
line(269, 201, 269, 217);
noStroke();
fill(0);
ellipse(131, 201, 15, 15);
ellipse(131, 217, 7, 7);
stroke(0);
line(131, 201, 131, 217);
noStroke();
strokeWeight(2);
}
}
if (fed == true && play == true && coloractive == true && love == true && fat == false) {
//activates evolve option once you've tried all the things as long as your buddy didn't die
canevolve = true;
fill(255);
ellipse(348, 376, 15, 15);
triangle(350, 380, 350, 372, 370, 376);
} else if (evolved == true); {
//if everything is wrong, check if you can be a frog
frog();
}
}
void frog() {
if (evolved == true) {
//draws frog
fill (tadColorR, tadColorG, tadColorB);
ellipse(200, 220+cos(millis()/350)*1.5, 50, 70);
ellipse (200, 190+cos(millis()/350)*1.5, 70, 40);
ellipse (220, 180+cos(millis()/350)*1.5, 30, 30);
ellipse (180, 180+cos(millis()/350)*1.5, 30, 30);
rect (160, 210+cos(millis()/350)*1.5, 240, 220+cos(millis()/350)*1.5);
rect (150, 245+cos(millis()/350)*1.5, 250, 250+cos(millis()/350)*1.5);
rect (160, 240+cos(millis()/350)*1.5, 240, 250+cos(millis()/350)*1.5);
rect(140, 250+cos(millis()/350)*1.5, 150, 230+cos(millis()/350)*1.5);
rect(250, 250+cos(millis()/350)*1.5, 260, 230+cos(millis()/350)*1.5);
ellipse (160+cos(millis()/350)*1.5, 210+cos(millis()/350)*1.5, 20, 20);
ellipse (240+cos(millis()/350)*1.5, 220+cos(millis()/350)*1.5, 20, 20);
fill(255);
ellipse (220, 180+cos(millis()/350)*1.5, 20, 20);
ellipse (180, 180+cos(millis()/350)*1.5, 20, 20);
fill(0);
rect(180, 200+cos(millis()/350)*1.5, 220, 202+cos(millis()/350)*1.5);
ellipse (215+(mouseX/35), 175+cos(millis()/350)*1.5+(mouseY/35), 5, 5);
ellipse (175+(mouseX/35), 175+cos(millis()/350)*1.5+(mouseY/35), 5, 5);
//restart button
fill(255,0,0);
stroke(0);
strokeWeight(2);
rect(195, 315, 205, 325);
noStroke();
}
}
void mousePressed() {
//first button, feed
if (mouseX > 30 && mouseX < 68 && mouseY > 358 && mouseY < 394) {
fed = true;
foodcount += 1;
//second button, play
} else if (mouseX > 105 && mouseX < 143 && mouseY < 394 && mouseY > 358) {
play = true;
//third button, change color
} else if (mouseX > 181 && mouseX < 219 && mouseY > 358 && mouseY < 394) {
coloractive = true;
for (int colorpick = 0; colorpick < 3; colorpick = colorpick + 1) {
tadColorR = random(0, 255);
tadColorG = random(0, 255);
tadColorB = random(0, 255);
}
//fourth button, give love
} else if (mouseX > 257 && mouseX < 295 && mouseY > 358 && mouseY < 394) {
love = true;
//last button, evolve your tadpole if it is allowed
} else if (mouseX > 333 && mouseX < 371 && mouseY > 358 && mouseY < 394 && canevolve == true) {
evolved=true;
//resets scene
} else if (mouseX> 195 && mouseX< 205 && mouseY > 315 && mouseY < 325 && evolved == true){
evolved = false;
canevolve = false;
fed = false;
play = false;
coloractive = false;
love = false;
foodcount = 0;
tadColorR = 40;
tadColorB = 90;
tadColorG = 240;
}
}