/* Bath Time is Scary An Interactive Drawing by Keana Almario I dedicate this piece to my dog who always freaks out whenever I give him a bath. (This is for your own good!) */ void setup() { //Set the canvas size to 400x400 size(400, 400); } void draw() { //Remove outlines noStroke(); //Set the modes for drawing shapes so that the ellipses depend on the center coordinates and the rectangles depend on the corner coordinates. ellipseMode(CENTER); rectMode(CORNERS); //Set the background to blue (for the wall) background(70+(mouseY/5), 120+(mouseY/5), 150+(mouseY/5)); //Background gets darker as the cursor rises //Draw the window fill(250+(mouseY/5), 250+(mouseY/5), 200+(mouseY/5)); //Window gets darker as the cursor rises rect(10, 0, 200, 50+(height-mouseY)/15); //Draw the floor, which moves with the bathtub fill(160+(mouseY/5), 190+(mouseY/5), 190+(mouseY/5)); //Floor gets darker as the cursor rises rect(0, 200+(height-mouseY)/15, width, height); //Draw the shadow of the tub fill(100, ((height-mouseY)/5)+20); triangle(130, 240+(height-mouseY)/9, 230+(height-mouseY)/9, height, width, height); triangle(130, 240+(height-mouseY)/9, width, height, width, 200+(height-mouseY)/15); //Draw the tub behind the rising water fill(255); triangle(180, 100+(height-mouseY)/9, 130, 150+(height-mouseY)/9, 180, 150+(height-mouseY)/9); rect(180, 100+(height-mouseY)/9, 395, 120+(height-mouseY)/9); fill(230); rect(185, 105+(height-mouseY)/9, 390, 170+(height-mouseY)/9); fill(220); triangle(185, 105+(height-mouseY)/9, 135, 155+(height-mouseY)/9, 185, 155+(height-mouseY)/9); //Draw the water that rises as the cursor rises fill(126, 211, 255); rect(185, 170-(height-mouseY)/50, 390, 200-(height-mouseY)/50); fill(116, 201, 245); triangle(185, 170-(height-mouseY)/50, 185, 200-(height-mouseY)/50, 155, 200-(height-mouseY)/50); //Draw the tub in front of the rising water fill(255); triangle(385, 100+(height-mouseY)/9, 335, 150+(height-mouseY)/9, 385, 150+(height-mouseY)/9); rect(385, 100+(height-mouseY)/9, 395, 120+(height-mouseY)/9); rect(140, 143+(height-mouseY)/9, 360, 200+(height-mouseY)/9); //shadowed part in the front fill(230+(mouseY/5), 230+(mouseY/5), 230+(mouseY/5)); rect(130, 150+(height-mouseY)/9, 345, 240+(height-mouseY)/9); //shadowed part on the side fill(220+(mouseY/5), 220+(mouseY/5), 220+(mouseY/5)); triangle(395, 100+(height-mouseY)/9, 345, 150+(height-mouseY)/9, 395, 150+(height-mouseY)/9); rect(345, 150+(height-mouseY)/9, 395, 190+(height-mouseY)/9); triangle(345, 190+(height-mouseY)/9, 395, 190+(height-mouseY)/9, 345, 240+(height-mouseY)/9); //Draw the door fill(98, 81, 48); rect(310+(height-mouseY)/3, 0, width, height); //*************DOG*************** //Set the rect mode to CENTER for convenience rectMode(CENTER); //Draw the dog (dark brown parts) fill(219, 159, 86); //left ear ellipse(40+mouseY/5-mouseX/10, 145+mouseY/30, 30, 30); ellipse(30+mouseY/5-mouseX/10, 210+mouseY/30, 60, 30); triangle(25+mouseY/5-mouseX/10, 140+mouseY/30, 0+mouseY/5-mouseX/10, 210+mouseY/30, 80+mouseY/5-mouseX/10, 220+mouseY/30); //right ear ellipse(120+mouseY/5-mouseX/10, 145+mouseY/30, 30, 30); ellipse(130+mouseY/5-mouseX/10, 210+mouseY/30, 60, 30); triangle(135+mouseY/5-mouseX/10, 140+mouseY/30, 160+mouseY/5-mouseX/10, 210+mouseY/30, 80+mouseY/5-mouseX/10, 220+mouseY/30); //body rect(80+mouseY/5-mouseX/10, 300+mouseY/30, 90, 140, 40, 40, 40, 40); //Draw the dog (light brown parts) fill(245, 189, 84); //head rect(80+mouseY/5-mouseX/10, 180+mouseY/30, 110, 80, 50, 50, 40, 40); rect(80+mouseY/5-mouseX/10, 220+mouseY/30, 80, 70, 50, 50, 60, 60); //cheeks triangle(27+mouseY/5-mouseX/10, 196+mouseY/30, 45+mouseY/5-mouseX/10, 240+mouseY/30, 80+mouseY/5-mouseX/10, 180+mouseY/30); triangle(133+mouseY/5-mouseX/10, 196+mouseY/30, 115+mouseY/5-mouseX/10, 240+mouseY/30, 80+mouseY/5-mouseX/10, 180+mouseY/30); //Draw the human hands (in the front) fill(252, 205, 158); //left hand ellipse(40+mouseY/5-mouseX/10, 310+mouseY/30, 40, 40); triangle(40+mouseY/5-mouseX/10, 330+mouseY/30, 61+mouseY/5-mouseX/10, 310+mouseY/30, 74+mouseY/5-mouseX/10, 350+mouseY/30); ellipse(40+mouseY/5-mouseX/10, 360+mouseY/30, 70, 80); rect(55+mouseY/5-mouseX/10, 450+mouseY/30, 40, 180); //right hand ellipse(120+mouseY/5-mouseX/10, 310+mouseY/30, 40, 40); triangle(120+mouseY/5-mouseX/10, 330+mouseY/30, 99+mouseY/5-mouseX/10, 310+mouseY/30, 86+mouseY/5-mouseX/10, 350+mouseY/30); ellipse(120+mouseY/5-mouseX/10, 360+mouseY/30, 70, 80); rect(105+mouseY/5-mouseX/10, 450+mouseY/30, 40, 180); //Set the rect mode to CORNERS since I will be decreasing only the height of the second corner for the dog's tongue rectMode(CORNERS); //Draw the dog (pink part) fill(245, 111, 99); //tongue rect(72.5+mouseY/5-mouseX/10, 240+mouseY/30, 87.5+mouseY/5-mouseX/10, 230+mouseY/10, 0, 0, 10, 10); //Set the rect mode back to CENTER rectMode(CENTER); //Draw the dog (light brown parts in the front) fill(245, 189, 84); //part to hide tongue triangle(80+mouseY/5-mouseX/10, 235+mouseY/30, 70+mouseY/5-mouseX/10, 245+mouseY/30, 60+mouseY/5-mouseX/10, 235+mouseY/30); triangle(80+mouseY/5-mouseX/10, 235+mouseY/30, 90+mouseY/5-mouseX/10, 245+mouseY/30, 100+mouseY/5-mouseX/10, 235+mouseY/30); //arms rect(45+mouseY/5-mouseX/10, 285+mouseY/30, 40, 70, 40, 40, 40, 40); rect(115+mouseY/5-mouseX/10, 285+mouseY/30, 40, 70, 40, 40, 40, 40); //Draw the dog's details (dark dark brown) fill(95, 67, 37); //eyes ellipse(50+mouseY/5-mouseX/10, 200+mouseY/30, 20, 20); ellipse(110+mouseY/5-mouseX/10, 200+mouseY/30, 20, 20); //nose triangle(70+mouseY/5-mouseX/10, 230+mouseY/30, 90+mouseY/5-mouseX/10, 230+mouseY/30, 80+mouseY/5-mouseX/10, 240+mouseY/30); //mouth stroke(95, 67, 37); //lets strokeWeight(3); line(80+mouseY/5-mouseX/10, 237+mouseY/30, 70+mouseY/5-mouseX/10, 245+mouseY/30); line(80+mouseY/5-mouseX/10, 237+mouseY/30, 90+mouseY/5-mouseX/10, 245+mouseY/30); //Draw the dog's details (white) noStroke(); fill(255); //white part of eyes ellipse(50+mouseY/5-mouseX/10, 200+mouseY/40, 10, 10); ellipse(110+mouseY/5-mouseX/10, 200+mouseY/40, 10, 10); //Draw the dark blue overlay over the dog fill(38, 30, 90, (height-mouseY)/5); rect(80+mouseY/5-mouseX/10, 180+mouseY/30, 110, 80, 50, 50, 40, 40); } void mousePressed(){ println("PLEASE DON'T GIVE ME A BATH I DON'T LIKE BATH"); }