Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
/*
Title: Fishybois
By: Chavaiz Amil
Instructions:
Move the mouse to move the fish, seaweed, bottle of feed, and tank
Press the mouse to drop feed into the tank and activate text
*/


void setup() {
  size(400, 400);
  noStroke();
  rectMode(CORNERS);
  ellipseMode(CENTER);
}

void draw() {
  frameRate(60);

  //wall
  background(180, 180, 180);
  fill(100, 100, 100);
  rect(-15, 370, 415, 415);

  //desk
  fill(44, 29, 14);
  rect(-15-mouseX/25, 340+mouseY/25, 415-mouseX/25, 370+mouseY/25);
  fill(82, 54, 27);
  rect(-15-mouseX/25, 240+mouseY/25, 415-mouseX/25, 340+mouseY/25);

  //tank back panel
  fill(201, 219, 220, 200);
  rect(90-mouseX/25, 90+mouseY/25, 310-mouseX/25, 250+mouseY/25);

  //filter
  fill(50, 50, 50);
  rect(180-mouseX/25, 90+mouseY/25, 200-mouseX/25, 140+mouseY/25);
  rect(190-mouseX/25, 140+mouseY/25, 200-mouseX/25, 160+mouseY/25);

  //bubbles
  fill(150, 150, 255, 150+sin(millis()/100)*30);
  ellipse(195-mouseX/25, 165+mouseY/25, 5+sin(millis()/200)*.85, 5+sin(millis()/200)*.85);
  ellipse(203-mouseX/25, 168+mouseY/25, 5.5+sin(millis()/100)*.85, 5.5+sin(millis()/100)*.85);
  fill(150, 150, 255, 150+sin(millis()/150)*30);
  ellipse(207-mouseX/25, 155+mouseY/25, 6+sin(millis()/200)*1, 6+sin(millis()/200)*1);
  ellipse(212-mouseX/25, 145+mouseY/25, 7+sin(millis()/100)*.85, 7+sin(millis()/100)*.85);

  //tank bottom
  fill(194, 178, 128);
  quad(10-mouseX/25, 320+mouseY/25, 90-mouseX/25, 250+mouseY/25, 310-mouseX/25, 250+mouseY/25, 390-mouseX/25, 320+mouseY/25);

  //side panel
  fill(201, 219, 220, 100);
  //left
  quad(10-mouseX/25, 50+mouseY/25, 90-mouseX/25, 90+mouseY/25, 90-mouseX/25, 250+mouseY/25, 10-mouseX/25, 320+mouseY/25);
  //right
  quad(310-mouseX/25, 250+mouseY/25, 390-mouseX/25, 320+mouseY/25, 390-mouseX/25, 50+mouseY/25, 310-mouseX/25, 90+mouseY/25);

  //rock
  fill(115, 115, 115);
  rectMode(CENTER);
  rect(110-mouseX/25, 265+mouseY/25, 40, 25, 200);

  //coral
  fill(115, 20, 20);
  rect(315-mouseX/25, 270+mouseY/25, 20, 40, 200);
  rect(321-mouseX/25, 250+mouseY/25, 7, 15, 200);
  rect(310-mouseX/25, 250+mouseY/25, 9, 20, 200);
  rect(313-mouseX/25, 258+mouseY/25, 30, 8, 200);

  //seaweed - wavybois
  stroke(69, 199, 69);
  strokeWeight(3);
  //left patch
  line(110-mouseX/25, 280+mouseY/25, 117-pmouseX*2/25+cos(millis()/200)*2, 250+mouseY/25);
  line(113-mouseX/25, 282+mouseY/25, 120-pmouseX*2/25+sin(millis()/200)*2, 253+mouseY/25);
  line(116-mouseX/25, 280+mouseY/25, 123-pmouseX*2/25+sin(millis()/200)*2, 248+mouseY/25);
  line(119-mouseX/25, 283+mouseY/25, 123-pmouseX*2/25+cos(millis()/200)*2, 256+mouseY/25);
  line(122-mouseX/25, 280+mouseY/25, 126-pmouseX*2/25+cos(millis()/200)*2, 253+mouseY/25);
  line(125-mouseX/25, 281+mouseY/25, 129-pmouseX*2/25+sin(millis()/200)*2, 250+mouseY/25);  
  line(128-mouseX/25, 280+mouseY/25, 135-pmouseX*2/25+cos(millis()/200)*2, 253+mouseY/25);
  line(121-mouseX/25, 279+mouseY/25, 135-pmouseX*2/25+sin(millis()/200)*2, 253+mouseY/25);
  //left middle patch
  line(160-mouseX/25, 280+mouseY/25, 165-pmouseX*2/25+sin(millis()/200)*2, 250+mouseY/25);
  line(165-mouseX/25, 282+mouseY/25, 172-pmouseX*2/25+cos(millis()/200)*2, 253+mouseY/25);
  line(170-mouseX/25, 280+mouseY/25, 179-pmouseX*2/25+sin(millis()/200)*2, 248+mouseY/25);
  line(173-mouseX/25, 283+mouseY/25, 184-pmouseX*2/25+cos(millis()/200)*2, 256+mouseY/25);
  line(176-mouseX/25, 280+mouseY/25, 187-pmouseX*2/25+cos(millis()/200)*2, 253+mouseY/25);
  line(180-mouseX/25, 281+mouseY/25, 190-pmouseX*2/25+sin(millis()/200)*2, 250+mouseY/25);  
  line(182-mouseX/25, 280+mouseY/25, 190-pmouseX*2/25+sin(millis()/200)*2, 253+mouseY/25);
  line(185-mouseX/25, 279+mouseY/25, 192-pmouseX*2/25+cos(millis()/200)*2, 253+mouseY/25);
  //right middle patch
  line(200-mouseX/25, 280+mouseY/25, 207-pmouseX*2/25+cos(millis()/200)*2, 250+mouseY/25);
  line(205-mouseX/25, 282+mouseY/25, 210-pmouseX*2/25+cos(millis()/200)*2, 253+mouseY/25);
  line(210-mouseX/25, 280+mouseY/25, 210-pmouseX*2/25+sin(millis()/200)*2, 248+mouseY/25);
  line(213-mouseX/25, 283+mouseY/25, 213-pmouseX*2/25+cos(millis()/200)*2, 256+mouseY/25);
  line(216-mouseX/25, 280+mouseY/25, 216-pmouseX*2/25+sin(millis()/200)*2, 253+mouseY/25);
  line(220-mouseX/25, 281+mouseY/25, 222-pmouseX*2/25+sin(millis()/200)*2, 250+mouseY/25);  
  line(222-mouseX/25, 280+mouseY/25, 219-pmouseX*2/25+cos(millis()/200)*2, 253+mouseY/25);
  line(225-mouseX/25, 279+mouseY/25, 225-pmouseX*2/25+cos(millis()/200)*2, 253+mouseY/25);
  //right patch
  line(230-mouseX/25, 280+mouseY/25, 237-pmouseX*2/25+sin(millis()/200)*2, 250+mouseY/25);
  line(235-mouseX/25, 282+mouseY/25, 240-pmouseX*2/25+sin(millis()/200)*2, 253+mouseY/25);
  line(240-mouseX/25, 280+mouseY/25, 240-pmouseX*2/25+cos(millis()/200)*2, 248+mouseY/25);
  line(243-mouseX/25, 283+mouseY/25, 243-pmouseX*2/25+cos(millis()/200)*2, 256+mouseY/25);
  line(246-mouseX/25, 280+mouseY/25, 246-pmouseX*2/25+cos(millis()/200)*2, 253+mouseY/25);
  line(250-mouseX/25, 281+mouseY/25, 252-pmouseX*2/25+sin(millis()/200)*2, 250+mouseY/25);  
  line(252-mouseX/25, 280+mouseY/25, 259-pmouseX*2/25+sin(millis()/200)*2, 253+mouseY/25);
  line(255-mouseX/25, 279+mouseY/25, 265-pmouseX*2/25+sin(millis()/200)*2, 253+mouseY/25);

  //disable stroke
  noStroke();

  //bottle thing
  fill(255, 165, 0);
  rectMode(CENTER);
  ellipse(mouseX, 28, 20, 20);
  rect(mouseX, 45, 20, 40);
  fill(255, 255, 255);
  rect(mouseX, 45, 20, 20); 

  //feesh
  fill(255, 135, 0);
  rect(70+mouseX/1.5, 150+mouseY/3, 40, 27, 50);
  triangle(50+mouseX/1.5, 150+mouseY/3, 40+mouseX/1.5, 140+mouseY/3, 40+mouseX/1.5, 160+mouseY/3);

  rect(330-mouseX/1.5, 250-mouseY/3, 40, 27, 50);
  triangle(350-mouseX/1.5, 250-mouseY/3, 360-mouseX/1.5, 240-mouseY/3, 360-mouseX/1.5, 260-mouseY/3);
  fill(255);
  rect(330-mouseX/1.5, 250-mouseY/3, 10, 27);

  fill(0);  
  ellipse(85+mouseX/1.5, 147+mouseY/3, 3, 3);
  ellipse(315-mouseX/1.5, 247-mouseY/3, 3, 3);

  //tank front panel - inside all behind this
  fill(201, 219, 220, 75);
  rectMode(CORNERS);
  rect(10-mouseX/25, 50+mouseY/25, 390-mouseX/25, 320+mouseY/25);
}

void mousePressed() {
  frameRate(2);
  //feed
  ellipseMode(CENTER);
  fill(240, 140, 0, 100);
  ellipse(pmouseX+5, pmouseY-5, 5, 5);
  ellipse(pmouseX-9, pmouseY-13, 5, 5);
  ellipse(pmouseX+10, pmouseY-10, 5, 5);
  ellipse(pmouseX-5, pmouseY-7, 5, 5);
  ellipse(pmouseX, pmouseY-15, 5, 5);

  println("Have you seen my son???");
}