Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
//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;
}
}