/* "Moonlit Woods" Made by: Kent Anderson-Brettell - In the moonlit woods, you control the wolf. By moving your mouse in any direction the wolf will follow its every movement. - The stars will move slightly across the sky as you move the mouse left and right across the screen. - The moon will rise and set, although never fully, as well as make its way across the sky as you move the mouse, rising and setting with upwards and downwards movements, and progressing across the sky with left and right movements. - When you click the mouse, the wolf will open its mouth and bark for you. - When you press a key on the keyboard, the wolf will open its mouth and howl for you. */ void setup() { size(400, 400); } void draw() { //Set Frame Rate to 60 fps frameRate(60); //set Ellipses and rects to center mode ellipseMode(CENTER); rectMode(CENTER); // Draw a background, then draw a sky //WHY DID I DO IT THIS WAY, I DON'T WANT TO HAVE TO REDRAW THIS, //SO IT WILL STAY IN THIS STUPID ORDER background(1, 74, 29); strokeWeight(1); noStroke(); fill(2, 65, 72); rect(200, 125, 400, 250); //Draw Stars, and set them to move slightly fill(232, 225, 183, 50); ellipse(10+mouseX/10, 30, 3, 3); ellipse(156+mouseX/10, 75, 3, 3); ellipse(75+mouseX/10, 140, 3, 3); ellipse(226+mouseX/10, 200, 3, 3); ellipse(310+mouseX/10, 100, 3, 3); ellipse(200+mouseX/10, 200, 3, 3); ellipse(40+mouseX/10, 10, 3, 3); ellipse(87+mouseX/10, 96, 3, 3); ellipse(375+mouseX/10, 45, 3, 3); ellipse(76+mouseX/10, 67, 3, 3); ellipse(105+mouseX/10, 99, 3, 3); //Draw Moon, and tie its movements to the mouse fill(232, 225, 183); ellipse(20+mouseX/1.1, 10+mouseY/3, 50, 50); fill(232, 225, 183, 75); ellipse(20+mouseX/1.1, 10+mouseY/3, 75, 75); fill(232, 225, 183, 40); ellipse(20+mouseX/1.1, 10+mouseY/3, 100, 100); //Draw (way too many pieces of) trees fill(58, 32, 3); rect(50, 240, 20, 40); rect(20, 265, 20, 40); rect(80, 265, 20, 40); rect(350, 240, 20, 40); rect(380, 265, 20, 40); rect(320, 265, 20, 40); fill(1, 74, 29); stroke(1, 49, 19); triangle(50, 195, 83, 245, 17, 245); triangle(50, 185, 80, 230, 20, 230); triangle(50, 175, 78, 215, 22, 215); triangle(50, 165, 75, 200, 25, 200); triangle(50, 155, 73, 185, 27, 185); triangle(50, 150, 70, 170, 30, 170); triangle(20, 225, 53, 275, -13, 275); triangle(20, 215, 50, 260, -10, 260); triangle(20, 205, 48, 245, -8, 245); triangle(20, 195, 45, 230,-5, 230); triangle(20, 185, 43, 215,-3, 215); triangle(20, 180, 40, 200, 0, 200); triangle(80, 225, 113, 275, 47, 275); triangle(80, 215, 110, 260, 50, 260); triangle(80, 205, 108, 245, 52, 245); triangle(80, 195, 105, 230, 55, 230); triangle(80, 185, 103, 215, 57, 215); triangle(80, 180, 100, 200, 60, 200); //Draw the Right trees triangle(350, 195, 317, 245, 383, 245); triangle(350, 185, 320, 230, 380, 230); triangle(350, 175, 322, 215, 378, 215); triangle(350, 165, 325, 200, 375, 200); triangle(350, 155, 327, 185, 373, 185); triangle(350, 150, 330, 170, 370, 170); triangle(380, 225, 347, 275, 413, 275); triangle(380, 215, 350, 260, 410, 260); triangle(380, 205, 352, 245, 408, 245); triangle(380, 195, 355, 230, 405, 230); triangle(380, 185, 357, 215, 403, 215); triangle(380, 180, 360, 200, 400, 200); triangle(320, 225, 287, 275, 353, 275); triangle(320, 215, 290, 260, 350, 260); triangle(320, 205, 292, 245, 348, 245); triangle(320, 195, 295, 230, 345, 230); triangle(320, 185, 297, 215, 343, 215); triangle(320, 180, 300, 200, 340, 200); //Draw Kingsley's hair behind the head noStroke(); fill(48, 40, 29); quad(mouseX-79, mouseY-36, mouseX-72, mouseY-10, mouseX-55, mouseY+110, mouseX-80, mouseY+120); quad(mouseX-56, mouseY+110, mouseX-73, mouseY-10, mouseX, mouseY, mouseX, mouseY+88); quad(mouseX+79, mouseY-36, mouseX+72, mouseY-10, mouseX+55, mouseY+110, mouseX+80, mouseY+120); quad(mouseX+56, mouseY+110, mouseX+73, mouseY-10, mouseX, mouseY, mouseX, mouseY+88); //Draw Kingsley's head base fill(237, 214, 183); ellipse(mouseX, mouseY, 150, 150); //Draw Kingsley's grey facial colour fill(138, 129, 112); arc(mouseX, mouseY, 150, 150, HALF_PI+QUARTER_PI+QUARTER_PI/1.5, TWO_PI+QUARTER_PI/3); //Draw Kingsley's 'mask' fill(152, 120, 73); ellipse(mouseX-30, mouseY-20, 40, 40); ellipse(mouseX+30, mouseY-20, 40, 40); ellipse(mouseX, mouseY+20, 18, 18); quad(mouseX-40, mouseY-5, mouseX-5, mouseY+27, mouseX, mouseY+10, mouseX-10, mouseY-20); quad(mouseX+40, mouseY-5, mouseX+5, mouseY+27, mouseX, mouseY+10, mouseX+10, mouseY-20); rect(mouseX, mouseY, 15, 20); //Draw Kingsley's eye dots fill(237, 214, 183); ellipse(mouseX-25, mouseY-30, 10, 10); triangle(mouseX-30, mouseY-10, mouseX-25, mouseY-23, mouseX-18, mouseY-3); ellipse(mouseX+25, mouseY-30, 10, 10); triangle(mouseX+30, mouseY-10, mouseX+25, mouseY-23, mouseX+18, mouseY-3); //Draw Kingsley's eyes fill(255); stroke(0); ellipse(mouseX-30, mouseY-20, 15, 20); ellipse(mouseX+30, mouseY-20, 15, 20); fill (255, 234, 107); ellipse(mouseX-30, mouseY-17, 7, 10); ellipse(mouseX+30, mouseY-17, 7, 10); fill(0); ellipse(mouseX-30, mouseY-15, 2, 2); ellipse(mouseX+30, mouseY-15, 2, 2); //Draw Kingsley's nose fill(48, 40, 29); stroke(48, 40, 29); strokeWeight(2); triangle(mouseX-18, mouseY+15, mouseX+18, mouseY+15, mouseX, mouseY+32); line(mouseX, mouseY+31, mouseX, mouseY+42); noFill(); curve(mouseX-20, mouseY, mouseX-30, mouseY+42, mouseX, mouseY+42, mouseX-10, mouseY); curve(mouseX+20, mouseY, mouseX+30, mouseY+42, mouseX, mouseY+42, mouseX+10, mouseY); //Draw Kingsley's ears noStroke(); fill(116, 63, 45); triangle(mouseX-70, mouseY-25, mouseX-70, mouseY-110, mouseX-30, mouseY-69); triangle(mouseX+70, mouseY-25, mouseX+70, mouseY-110, mouseX+30, mouseY-69); fill(237, 214, 183); triangle(mouseX-60, mouseY-35, mouseX-60, mouseY-90, mouseX-35, mouseY-65); triangle(mouseX+60, mouseY-35, mouseX+60, mouseY-90, mouseX+35, mouseY-65); //Draw Kingsley's hair fill(48, 40, 29); quad(mouseX, mouseY-85, mouseX, mouseY-65, mouseX-35, mouseY-65, mouseX-35, mouseY-80); quad(mouseX-35, mouseY-65, mouseX-35, mouseY-80, mouseX-80, mouseY-35, mouseX-65, mouseY-20); triangle(mouseX-55, mouseY-45, mouseX-5, mouseY-75, mouseX-35, mouseY-75); triangle(mouseX-80, mouseY-36, mouseX-65, mouseY-21, mouseX-73, mouseY-10); quad(mouseX, mouseY-85, mouseX, mouseY-65, mouseX+35, mouseY-65, mouseX+35, mouseY-80); quad(mouseX+35, mouseY-65, mouseX+35, mouseY-80, mouseX+80, mouseY-35, mouseX+65, mouseY-20); triangle(mouseX+55, mouseY-45, mouseX+5, mouseY-75, mouseX+35, mouseY-75); triangle(mouseX+80, mouseY-36, mouseX+65, mouseY-21, mouseX+73, mouseY-10); //Draw Kingsley's glasses strokeWeight(2); stroke(0); noFill(); curve(mouseX-5, mouseY+35, mouseX-15, mouseY-5, mouseX+15, mouseY-5, mouseX+5, mouseY+35); fill(145, 241, 255, 100); rect(mouseX-30, mouseY-5, 30, 17); rect(mouseX+30, mouseY-5, 30, 17); //Draw Kingsley's cheek fluff noStroke(); fill(48, 40, 29); triangle(mouseX-60, mouseY+19, mouseX-75, mouseY+19, mouseX-75, mouseY-15); triangle(mouseX+60, mouseY+19, mouseX+75, mouseY+19, mouseX+75, mouseY-15); } void mousePressed() { //Set Frame Rate to 1fps so that this stuff is visible frameRate(1); //redraw head so as to not cause overlay during changes to mouth //Draw Kingsley's hair back strokeWeight(1); noStroke(); fill(48, 40, 29); quad(mouseX-79, mouseY-36, mouseX-72, mouseY-10, mouseX-55, mouseY+110, mouseX-80, mouseY+120); quad(mouseX-56, mouseY+110, mouseX-73, mouseY-10, mouseX, mouseY, mouseX, mouseY+88); quad(mouseX+79, mouseY-36, mouseX+72, mouseY-10, mouseX+55, mouseY+110, mouseX+80, mouseY+120); quad(mouseX+56, mouseY+110, mouseX+73, mouseY-10, mouseX, mouseY, mouseX, mouseY+88); //Draw Kingsley's head base fill(237, 214, 183); ellipse(mouseX, mouseY, 150, 150); //Draw Kingsley's grey facial colour fill(138, 129, 112); arc(mouseX, mouseY, 150, 150, HALF_PI+QUARTER_PI+QUARTER_PI/1.5, TWO_PI+QUARTER_PI/3); //Draw Kingsley's 'mask' fill(152, 120, 73); ellipse(mouseX-30, mouseY-20, 40, 40); ellipse(mouseX+30, mouseY-20, 40, 40); ellipse(mouseX, mouseY+20, 18, 18); quad(mouseX-40, mouseY-5, mouseX-5, mouseY+27, mouseX, mouseY+10, mouseX-10, mouseY-20); quad(mouseX+40, mouseY-5, mouseX+5, mouseY+27, mouseX, mouseY+10, mouseX+10, mouseY-20); rect(mouseX, mouseY, 15, 20); //Draw Kingsley's eye dots fill(237, 214, 183); ellipse(mouseX-25, mouseY-30, 10, 10); triangle(mouseX-30, mouseY-10, mouseX-25, mouseY-23, mouseX-18, mouseY-3); ellipse(mouseX+25, mouseY-30, 10, 10); triangle(mouseX+30, mouseY-10, mouseX+25, mouseY-23, mouseX+18, mouseY-3); //Draw Kingsley's eyes fill(255); stroke(0); ellipse(mouseX-30, mouseY-20, 15, 20); ellipse(mouseX+30, mouseY-20, 15, 20); fill (255, 234, 107); ellipse(mouseX-30, mouseY-17, 7, 10); ellipse(mouseX+30, mouseY-17, 7, 10); fill(0); ellipse(mouseX-30, mouseY-15, 2, 2); ellipse(mouseX+30, mouseY-15, 2, 2); //****Draw Kingsley's open mouth**** noStroke(); fill(237, 214, 183); rect(mouseX, mouseY+62, 45, 55); fill(0); rect(mouseX, mouseY+62, 33, 40); fill(237, 121, 82); rect(mouseX, mouseY+62, 28, 35); //Teeth fill(255); triangle(mouseX-8, mouseY+80, mouseX, mouseY+80, mouseX-4, mouseY+72); triangle(mouseX-8, mouseY+80, mouseX-16, mouseY+80, mouseX-12, mouseY+72); triangle(mouseX+8, mouseY+80, mouseX, mouseY+80, mouseX+4, mouseY+72); triangle(mouseX+8, mouseY+80, mouseX+16, mouseY+80, mouseX+12, mouseY+72); //Cover up the extra mouth parts fill(237, 214, 183); curve(mouseX-20, mouseY-20, mouseX-30, mouseY+42, mouseX, mouseY+42, mouseX-10, mouseY-20); curve(mouseX+20, mouseY-20, mouseX+30, mouseY+42, mouseX, mouseY+42, mouseX+10, mouseY-20); //*****Draw Kingsley's nose/mouth REDRAW more happy***** fill(48, 40, 29); stroke(48, 40, 29); strokeWeight(2); triangle(mouseX-18, mouseY+15, mouseX+18, mouseY+15, mouseX, mouseY+32); line(mouseX, mouseY+31, mouseX, mouseY+42); noFill(); curve(mouseX-20, mouseY-20, mouseX-30, mouseY+42, mouseX, mouseY+42, mouseX-10, mouseY-20); curve(mouseX+20, mouseY-20, mouseX+30, mouseY+42, mouseX, mouseY+42, mouseX+10, mouseY-20); //Draw Kingsley's ears noStroke(); fill(116, 63, 45); triangle(mouseX-70, mouseY-25, mouseX-70, mouseY-110, mouseX-30, mouseY-69); triangle(mouseX+70, mouseY-25, mouseX+70, mouseY-110, mouseX+30, mouseY-69); fill(237, 214, 183); triangle(mouseX-60, mouseY-35, mouseX-60, mouseY-90, mouseX-35, mouseY-65); triangle(mouseX+60, mouseY-35, mouseX+60, mouseY-90, mouseX+35, mouseY-65); //Draw Kingsley's hair fill(48, 40, 29); quad(mouseX, mouseY-85, mouseX, mouseY-65, mouseX-35, mouseY-65, mouseX-35, mouseY-80); quad(mouseX-35, mouseY-65, mouseX-35, mouseY-80, mouseX-80, mouseY-35, mouseX-65, mouseY-20); triangle(mouseX-55, mouseY-45, mouseX-5, mouseY-75, mouseX-35, mouseY-75); triangle(mouseX-80, mouseY-36, mouseX-65, mouseY-21, mouseX-73, mouseY-10); quad(mouseX, mouseY-85, mouseX, mouseY-65, mouseX+35, mouseY-65, mouseX+35, mouseY-80); quad(mouseX+35, mouseY-65, mouseX+35, mouseY-80, mouseX+80, mouseY-35, mouseX+65, mouseY-20); triangle(mouseX+55, mouseY-45, mouseX+5, mouseY-75, mouseX+35, mouseY-75); triangle(mouseX+80, mouseY-36, mouseX+65, mouseY-21, mouseX+73, mouseY-10); //Draw Kingsley's glasses strokeWeight(2); stroke(0); noFill(); curve(mouseX-5, mouseY+35, mouseX-15, mouseY-5, mouseX+15, mouseY-5, mouseX+5, mouseY+35); fill(145, 241, 255, 100); rect(mouseX-30, mouseY-5, 30, 17); rect(mouseX+30, mouseY-5, 30, 17); //Draw Kingsley's cheek fluff noStroke(); fill(48, 40, 29); triangle(mouseX-60, mouseY+19, mouseX-75, mouseY+19, mouseX-75, mouseY-15); triangle(mouseX+60, mouseY+19, mouseX+75, mouseY+19, mouseX+75, mouseY-15); //Text Box //strokeWeight(4); //stroke(0); fill(255); rect(322, 50, 150, 100); noStroke(); triangle(247, 80, 240, 150, 290, 95); //W fill(0); quad(252, 25, 257, 25, 265, 75, 265, 85); quad(265, 85, 265, 75, 270, 25, 273, 25); quad(270, 25, 273, 25, 278, 75, 278, 85); quad(278, 85, 278, 75, 283, 25, 288, 25); //F rect(342, 54, 3, 58); rect(355, 25, 30, 3); rect(355, 54, 30, 3); //! ellipse(385, 80, 10, 10); quad(380, 70, 390, 70, 392, 25, 378, 25); //OO strokeWeight(3); stroke(0); fill(255); ellipse(300, 54, 20, 58); ellipse(325, 54, 20, 58); } void keyPressed() { //Set frame rate to 1fps so this stuff is visible frameRate(1); //redraw head so as to not cause overlay during changes to mouth //Draw Kingsley's hair back strokeWeight(1); noStroke(); fill(48, 40, 29); quad(mouseX-79, mouseY-36, mouseX-72, mouseY-10, mouseX-55, mouseY+110, mouseX-80, mouseY+120); quad(mouseX-56, mouseY+110, mouseX-73, mouseY-10, mouseX, mouseY, mouseX, mouseY+88); quad(mouseX+79, mouseY-36, mouseX+72, mouseY-10, mouseX+55, mouseY+110, mouseX+80, mouseY+120); quad(mouseX+56, mouseY+110, mouseX+73, mouseY-10, mouseX, mouseY, mouseX, mouseY+88); //Draw Kingsley's head base fill(237, 214, 183); ellipse(mouseX, mouseY, 150, 150); //Draw Kingsley's grey facial colour fill(138, 129, 112); arc(mouseX, mouseY, 150, 150, HALF_PI+QUARTER_PI+QUARTER_PI/1.5, TWO_PI+QUARTER_PI/3); //Draw Kingsley's 'mask' fill(152, 120, 73); ellipse(mouseX-30, mouseY-20, 40, 40); ellipse(mouseX+30, mouseY-20, 40, 40); ellipse(mouseX, mouseY+20, 18, 18); quad(mouseX-40, mouseY-5, mouseX-5, mouseY+27, mouseX, mouseY+10, mouseX-10, mouseY-20); quad(mouseX+40, mouseY-5, mouseX+5, mouseY+27, mouseX, mouseY+10, mouseX+10, mouseY-20); rect(mouseX, mouseY, 15, 20); //Draw Kingsley's eye dots fill(237, 214, 183); ellipse(mouseX-25, mouseY-30, 10, 10); triangle(mouseX-30, mouseY-10, mouseX-25, mouseY-23, mouseX-18, mouseY-3); ellipse(mouseX+25, mouseY-30, 10, 10); triangle(mouseX+30, mouseY-10, mouseX+25, mouseY-23, mouseX+18, mouseY-3); //Draw Kingsley's eyes fill(255); stroke(0); ellipse(mouseX-30, mouseY-20, 15, 20); ellipse(mouseX+30, mouseY-20, 15, 20); fill (255, 234, 107); ellipse(mouseX-30, mouseY-17, 7, 10); ellipse(mouseX+30, mouseY-17, 7, 10); fill(0); ellipse(mouseX-30, mouseY-15, 2, 2); ellipse(mouseX+30, mouseY-15, 2, 2); //****Draw Kingsley's open mouth**** noStroke(); fill(237, 214, 183); rect(mouseX, mouseY+62, 45, 55); fill(0); rect(mouseX, mouseY+62, 33, 40); fill(237, 121, 82); rect(mouseX, mouseY+62, 28, 35); //Teeth fill(255); triangle(mouseX-8, mouseY+80, mouseX, mouseY+80, mouseX-4, mouseY+72); triangle(mouseX-8, mouseY+80, mouseX-16, mouseY+80, mouseX-12, mouseY+72); triangle(mouseX+8, mouseY+80, mouseX, mouseY+80, mouseX+4, mouseY+72); triangle(mouseX+8, mouseY+80, mouseX+16, mouseY+80, mouseX+12, mouseY+72); fill(237, 214, 183); curve(mouseX-20, mouseY-20, mouseX-30, mouseY+42, mouseX, mouseY+42, mouseX-10, mouseY-20); curve(mouseX+20, mouseY-20, mouseX+30, mouseY+42, mouseX, mouseY+42, mouseX+10, mouseY-20); //*****Draw Kingsley's nose/mouth REDRAW***** fill(48, 40, 29); stroke(48, 40, 29); strokeWeight(2); triangle(mouseX-18, mouseY+15, mouseX+18, mouseY+15, mouseX, mouseY+32); line(mouseX, mouseY+31, mouseX, mouseY+42); noFill(); curve(mouseX-20, mouseY-20, mouseX-30, mouseY+42, mouseX, mouseY+42, mouseX-10, mouseY-20); curve(mouseX+20, mouseY-20, mouseX+30, mouseY+42, mouseX, mouseY+42, mouseX+10, mouseY-20); //Draw Kingsley's ears noStroke(); fill(116, 63, 45); triangle(mouseX-70, mouseY-25, mouseX-70, mouseY-110, mouseX-30, mouseY-69); triangle(mouseX+70, mouseY-25, mouseX+70, mouseY-110, mouseX+30, mouseY-69); fill(237, 214, 183); triangle(mouseX-60, mouseY-35, mouseX-60, mouseY-90, mouseX-35, mouseY-65); triangle(mouseX+60, mouseY-35, mouseX+60, mouseY-90, mouseX+35, mouseY-65); //Draw Kingsley's hair fill(48, 40, 29); quad(mouseX, mouseY-85, mouseX, mouseY-65, mouseX-35, mouseY-65, mouseX-35, mouseY-80); quad(mouseX-35, mouseY-65, mouseX-35, mouseY-80, mouseX-80, mouseY-35, mouseX-65, mouseY-20); triangle(mouseX-55, mouseY-45, mouseX-5, mouseY-75, mouseX-35, mouseY-75); triangle(mouseX-80, mouseY-36, mouseX-65, mouseY-21, mouseX-73, mouseY-10); quad(mouseX, mouseY-85, mouseX, mouseY-65, mouseX+35, mouseY-65, mouseX+35, mouseY-80); quad(mouseX+35, mouseY-65, mouseX+35, mouseY-80, mouseX+80, mouseY-35, mouseX+65, mouseY-20); triangle(mouseX+55, mouseY-45, mouseX+5, mouseY-75, mouseX+35, mouseY-75); triangle(mouseX+80, mouseY-36, mouseX+65, mouseY-21, mouseX+73, mouseY-10); //Draw Kingsley's glasses strokeWeight(2); stroke(0); noFill(); curve(mouseX-5, mouseY+35, mouseX-15, mouseY-5, mouseX+15, mouseY-5, mouseX+5, mouseY+35); fill(145, 241, 255, 100); rect(mouseX-30, mouseY-5, 30, 17); rect(mouseX+30, mouseY-5, 30, 17); //Draw Kingsley's cheek fluff noStroke(); fill(48, 40, 29); triangle(mouseX-60, mouseY+19, mouseX-75, mouseY+19, mouseX-75, mouseY-15); triangle(mouseX+60, mouseY+19, mouseX+75, mouseY+19, mouseX+75, mouseY-15); //Text Box fill(255); rect(78, 50, 150, 100); noStroke(); triangle(153, 80, 160, 150, 110, 95); //A fill(0); quad(5, 85, 10, 85, 25, 25, 20, 25); quad(20, 25, 25, 25, 37, 85, 32, 85); quad(15, 54, 16, 58, 27, 58, 28, 54); //W fill(0); quad(30, 25, 35, 25, 43, 75, 43, 85); quad(43, 85, 43, 75, 48, 25, 51, 25); quad(48, 25, 51, 25, 56, 75, 56, 85); quad(56, 85, 56, 75, 61, 25, 66, 25); //OO strokeWeight(3); stroke(0); fill(255); ellipse(75, 54, 20, 58); ellipse(100, 54, 20, 58); //! fill(0); ellipse(125, 80, 10, 10); quad(120, 70, 130, 70, 132, 25, 118, 25); }