/*Wish to play with a cat? Then, here you go! Try to make the kitten pounce! Programmer: Dominique Watt You can move your mouse, and you'll move a toy mouse on screen! (it's a cute little connection no?) Move the mouse left and right and taunt the kitty! (Moving the mouse up and down causes the cat's butt to move a little) Clicking the screen causes the toy to squeek! Pressing the button cause the mouse to switch colours? Go ahead! Try and make the kitten pounce on the mouse! */ void setup() { //Setting the size of the program size(400, 400); } void draw() { //setting background colour, setting frameRate to make the program not freeze when actions happen frameRate(60); noStroke(); background(255); /*FLOOR SECTION*/ //Floor colour fill(18,24,38); rect(0, 190, 400, 270); //Cat floor shadows fill(150); ellipse(200, 240, 100, 22); ellipse(200, 222, 100, 20); /*WALL SECTION*/ //Wall colour noStroke(); fill(8,60,98); rect(0, 0, 400, 180); //The BIG window frame fill(255); noStroke(); rect(65, 15, 280, 130); //BIG window frame details noFill(); stroke(0); line(65, 15, 80, 30); line(330, 30, 344, 15); line(79, 130, 65, 144); line(344, 144, 330, 130); /*OUTSIDE WINDOW BACKGROUND*/ fill(18,1,36); noStroke(); rect(80, 30, 250, 100); /*PRETTY MOON SECTION*/ //drawing the moon and brightness layers, moving mouse adjusts brightness slightly fill(255); noStroke(); ellipse(200, 70, 10, 10); fill(255, 255, 255, 180+(mouseX*0.03)); ellipse(200, 70, 20, 20); fill(255, 255, 255, 160+(mouseX*0.03)); ellipse(200, 70, 30, 30); fill(255, 255, 255, 140+(mouseX*0.03)); ellipse(200, 70, 40, 40); fill(255, 255, 255, 120+(mouseX*0.03)); ellipse(200, 70, 50, 50); fill(255,255,255,100+(mouseX*0.03)); ellipse(200,70,60,60); /*PRETTY STARS SECTION (it's all just stars)*/ //drawing stars, moving mouse causes some to brighten or disappear fill(255, 255, 255, 220); noStroke(); ellipse(100, 50, 5, 5); fill(255, 255, 255, 100-mouseX); ellipse(100, 50, 7, 7); fill(255, 255, 255, 220+mouseX); ellipse(250, 100, 5, 5); fill(255, 255, 255, 100+mouseX); ellipse(250, 100, 7, 7); fill(255, 255, 255, 220-mouseX); ellipse(130, 100, 3, 3); fill(255, 255, 255, 100-mouseX); ellipse(130, 100, 5, 5); fill(255, 255, 255, 220+mouseX); ellipse(300, 60, 3, 3); fill(255, 255, 255, 100+mouseX); ellipse(300, 60, 5, 5); fill(255, 255, 255, 220+mouseX); ellipse(280, 120, 5, 5); fill(255, 255, 255, 100-mouseX); ellipse(280, 120, 7, 7); fill(255, 255, 255, 220-mouseX); ellipse(150, 70, 3, 3); fill(255, 255, 255, 100+mouseX); ellipse(150, 70, 6, 6); fill(255, 255, 255, 220-mouseX); ellipse(260, 60, 3, 3); fill(255, 255, 255, 100-mouseX); ellipse(260, 60, 6, 6); /* FRAMED MOUSE PHOTO IN THE CORNER*/ //Frame's background fill(255); rect(0, 20, 46, 56); fill(150); rect(5, 25, 36, 46); noStroke(); //Framed mouse's body fill(0); ellipse(20, 58, 30, 25); //Framed mouse's head fill(20); ellipse(20, 40, 20, 20); fill(255); //Framed mouse's ears ellipse(13, 30, 5, 5); ellipse(28, 30, 5, 5); //Framed mouse's eyes ellipse(15+(mouseX*0.01), 40, 3, 3); ellipse(23+(mouseX*0.01), 40, 3, 3); //Framed mouse's nose ellipse(20,47,2,2); /* THE ACTUAL CAT SECTION*/ //Tail, uses frame count plus sin functions to make it move noFill(); stroke(150); strokeWeight(5); curve(sin(frameCount*0.05)*200, 150, 200, 100, 180, 200, sin(frameCount*0.05)*150, 240); //Cat's body noStroke(); fill(85); ellipse(200+(mouseX*0.01), 200+(mouseY*0.01), 70, 70); fill(90); ellipse(200, 210, 60, 50); //Cat's ears //Right ear fill(35); triangle(207+(mouseX*0.01), 200, 227+(mouseX*0.01), 185, 230+(mouseX*0.01), 215); fill(252, 176, 212); triangle(205+(mouseX*0.01), 210, 225+(mouseX*0.01), 190, 226+(mouseX*0.01), 215); //Left ear fill(35); triangle(170+(mouseX*0.01), 215, 177.5+(mouseX*0.01), 184, 205+(mouseX*0.01), 210); fill(252, 176, 212); triangle(174+(mouseX*0.01), 213, 178.5+(mouseX*0.01), 190, 195+(mouseX*0.01), 210); //Cat's Head noStroke(); fill(90); ellipseMode(CENTER); ellipse(200+(mouseX*0.01), 220, 67, 48); //The cat's unique marking fill(255); ellipse(200+(mouseX*0.01), 205, 20, 15); fill(30); ellipse(205+(mouseX*0.01), 205, 10, 5); fill(255); //Cat snout ellipse(200+(mouseX*0.02), 230, 15, 15); //The cat's eyes ellipse(180+(mouseX*0.03), 225, 7, 7); ellipse(210+(mouseX*0.03), 225, 7, 7); //Cat's eye-brows (for the expressions) ellipse(215+(mouseX*0.02), 220, 15, 5); ellipse(185+(mouseX*0.02), 220, 15, 5); //Cat's mouth strokeWeight(1); stroke(0); line(200+(mouseX*0.02), 230, 203+(mouseX*0.02), 233); line(200+(mouseX*0.02), 230, 197+(mouseX*0.02), 233); //Cat's nose fill(0); triangle(197+(mouseX*0.02), 227, 200+(mouseX*0.02), 230, 203+(mouseX*0.02), 227); //CAT WHISKERS line(205+(mouseX*0.02), 230, 213+(mouseX*0.02), 235); line(205+(mouseX*0.02), 230, 215+(mouseX*0.02), 230); line(195+(mouseX*0.02), 230, 187+(mouseX*0.02), 235); line(195+(mouseX*0.02), 230, 185+(mouseX*0.02), 230); //CAT PAWS fill(255); noStroke(); ellipse(225+(mouseX*0.01), 240, 20, 15); ellipse(175+(mouseX*0.01), 240, 20, 15); /* MOUSE SECTION */ //Shadow under mouse fill(100); ellipse(mouseX, 310, 30, 20); //Toy Mouse body fill(255); ellipse(mouseX, 300, 25, 35); //Toy Mouse ears fill(150); ellipse(mouseX+10, 290, 6, 5); ellipse(mouseX-10, 290, 6, 5); //Toy Mouse eyes ellipse(mouseX-6, 287, 2, 2); ellipse(mouseX+6, 287, 2, 2); //Toy Mouse tail curve(mouseX+20, 280, mouseX+10, 320, mouseX, 310, mouseX+30, 400); //Fireflies in the background, adds a little touch of beauty, framecount and sin functions used to make them move fill(255); ellipse(130+(frameCount % 200), 91 + sin(frameCount * 0.03) * 30, 4, 4); fill(255, 255, 255, 30); ellipse(130+(frameCount % 200), 91 + sin(frameCount * 0.03) * 32, 20 + cos(frameCount*0.03), 20 + cos(frameCount*0.03)); fill(255); ellipse(90 + (frameCount * 0.95 % 240), 80 + cos(frameCount * 0.02) * 32, 4, 4); fill(255, 255, 255, 30); ellipse(90 + (frameCount * 0.95 % 240), 80 + cos(frameCount * 0.02) * 32, 20 + cos(frameCount), 20 + cos(frameCount)); fill(255); ellipse(100 + (frameCount * 0.95 % 200), 80 + cos(frameCount * 0.04) * 32, 4, 4); fill(255, 255, 255, 30); ellipse(100 + (frameCount * 0.95 % 200), 80 + cos(frameCount * 0.04) * 32, 20 + cos(frameCount), 20 + cos(frameCount)); } /* When you press the mouse, the mouse squeeks, causing the cat to be surprised! */ void mousePressed() { //holds the expression of the cat for a bit frameRate(3); println("squeek!"); //hides the original expression fill(90); ellipse(215+(mouseX*0.02), 220, 17, 7); ellipse(185+(mouseX*0.02), 220, 17, 7); //replaces the expression with a surprised one fill(255); ellipse(215+(mouseX*0.02), 215, 15, 5); ellipse(185+(mouseX*0.02), 215, 15, 5); ellipse(180+(mouseX*0.03), 225, 6, 6); ellipse(210+(mouseX*0.03), 225, 6, 6); //adds an exclamation mark, to show some surprise fill(255, 0, 0); ellipse(155, 220, 10, 25); ellipse(155, 240, 5, 5); } //The mouse switches colours with the one in the picture. Cat is suspicous... void keyPressed() { //holds the expression of the cat and the mouse's colour change before changing it back frameRate(2); //mouse changes to a black mouse fill(0); ellipse(mouseX, 300, 25, 35); fill(255); ellipse(mouseX+10, 290, 6, 5); ellipse(mouseX-10, 290, 6, 5); ellipse(mouseX-6, 287, 2, 2); ellipse(mouseX+6, 287, 2, 2); curve(mouseX+20, 280, mouseX+10, 320, mouseX, 310, mouseX+30, 400); //pictured mouse switches to a white mouse noStroke(); fill(220); ellipse(20, 58, 30, 25); fill(255); ellipse(20, 40, 20, 20); fill(150); ellipse(13, 30, 5, 5); ellipse(28, 30, 5, 5); ellipse(16+(mouseX*0.01), 40, 3, 3); ellipse(23+(mouseX*0.01), 40, 3, 3); ellipse(20,47,2,2); //hiding the old expression by filling it in fill(90); ellipse(215+(mouseX*0.02), 220, 17, 7); ellipse(185+(mouseX*0.02), 220, 17, 7); ellipse(180+(mouseX*0.03), 225, 8, 8); ellipse(210+(mouseX*0.03), 225, 8, 8); //the change in the Cat's expression (more suspicous) fill(255); ellipse(215+(mouseX*0.02), 222, 15, 5); ellipse(185+(mouseX*0.02), 222, 15, 5); ellipse(180+(mouseX*0.03), 225, 3, 3); ellipse(210+(mouseX*0.03), 225, 3, 3); println("..."); }