/* Tim Lee "froge" will follow the buzzing fly on your cursor. The sky's colour and the clouds' position will change along with the cursor. On clicking, "froge" will become enraged and attempt to eat your cursor, and telepathically display the word "Ribbit" on the Console. Have fun! */ void setup() { size (400, 400); } //start loop and rectmode void draw() { //set framerate frameRate(60); rectMode(CENTER); //sky background(250-((mouseX+mouseY)/25), 187+((mouseX+mouseY)/12), 0+((mouseX+mouseY)/3)); //back cloud stroke(230, 230, 230); fill(255, 255, 255, 144); ellipse(75+(mouseX+mouseY)/8, 75, 250, 75); //sun noStroke(); fill(255, 127, 0); ellipse(0, 0, 350-((mouseX+mouseY)/4), 350-((mouseX+mouseY)/4)); fill(255, 255, 0); ellipse(0, 0, 280-((mouseX+mouseY)/4), 280-((mouseX+mouseY)/4)); //water strokeWeight(2); stroke(0, 165, 221); fill(4, 200, 249); rect(200, 300, 402, 200); noStroke(); fill(0, 185, 232); rect(200, 350, 402, 200); fill(0, 172, 216); rect(200, 400, 402, 200); fill(0, 168, 211); rect(200, 450, 402, 200); //lilypad stroke(15, 137, 0); fill(20, 175, 0); ellipse(200, 300, 250, 125); //place lilypad water triangle noStroke(); fill(0, 172, 216); triangle(243, 362, 225, 315, 288, 347); //lilypad cutout outline stroke(15, 137, 0); line(243, 358, 225, 315); line(225, 315, 284, 345); //front cloud stroke(230, 230, 230); fill(255, 255, 255, 144); ellipse(100+(mouseX+mouseY)/3, 100, 250, 75); //place down back left and right legs stroke(38, 153, 0); fill(48, 196, 0); quad(110, 295, 95, 235, 140, 265, 145, 285); quad(260, 295, 275, 235, 230, 265, 225, 285); //body (head more like) ellipse(185, 240, 140, 90); //place left and right eyeballs stroke(0); fill(255); ellipse(140, 205, 30, 30); ellipse(230, 205, 30, 30); //place left and right pupils fill(0); ellipse(140+(mouseX-200)/20, 207+(mouseY-200)/60, 5, 5); ellipse(230+(mouseX-200)/20, 207+(mouseY-200)/60, 5, 5); //place left and right eyelids stroke(38, 153, 0); fill(48, 196, 0); arc(140, 205, 30, 30, -PI, 0); arc(230, 205, 30, 30, -PI, 0); //place down front legs and feet ellipse(155, 290, 30, 35); ellipse(215, 290, 30, 35); ellipse(110, 290, 30, 25); ellipse(260, 290, 30, 25); //place down toes //back left ellipse(95, 300, 10, 10); ellipse(110, 305, 10, 10); ellipse(125, 300, 10, 10); //front left ellipse(140, 305, 10, 10); ellipse(155, 310, 10, 10); ellipse(170, 305, 10, 10); //front right ellipse(200, 305, 10, 10); ellipse(215, 310, 10, 10); ellipse(230, 305, 10, 10); //back right ellipse(245, 300, 10, 10); ellipse(260, 305, 10, 10); ellipse(275, 300, 10, 10); //nostrils stroke(1); fill(1); ellipse(170, 225, 2, 2); ellipse(200, 225, 2, 2); //mouth noFill(); stroke(38, 153, 0); curve(150, 350, 120, 250, 250, 250, 200, 350); //fly on cursor stroke(0); fill(0); ellipse(mouseX+sin(frameCount)*5, mouseY+sin(frameCount)*9, 4, 4); } //tongue and eyes changing on click void mousePressed() { //red eyes //place left and right eyeballs stroke(0); strokeWeight(2); fill(255); ellipse(140, 205, 30, 30); ellipse(230, 205, 30, 30); //place left and right pupils noStroke(); fill(255, 0, 0); ellipse(140+(mouseX-200)/20, 207+(mouseY-200)/60, 10, 10); ellipse(230+(mouseX-200)/20, 207+(mouseY-200)/60, 10, 10); //tongue flying out on click rectMode(CORNER); frameRate(1); //framerate slows down to make the instant more visible strokeWeight(5); stroke(253, 191, 255); line(185, 238, mouseX, mouseY); //little message println("Ribbit."); }