//////////////////////////////////////////////////// //*Mower Vs. UFO /////////////////////////////////// //*An interactive toy created in Processing 2.2.1/// //*By Saahil Dhar/////////////////////////////////// //////////////////////////////////////////////////// float g=0; float m=-40; float w= mouseX; //////////////// /**************/ /*WINDOW SETUP*/ /**************/ //////////////// void setup() { size(800, 500); smooth(); frameRate(30); background(#D8EAFF); println("Use arrow keys to move the mower."); println("Use the mouse to move the UFO."); println("Click and hold the Left mouse button to grow grass under the UFO."); ellipseMode(CENTER); rectMode(CORNERS); drawSun(); drawClouds(); } ////////////// /************/ /*PRIME LOOP*/ /************/ ////////////// void draw() { ////////////////////// //DRAW INTITAL GRASS// ////////////////////// while (g<width) { drawGrass(); g=g+10; } /////// //UFO// /////// drawUFO(); updateUFO(); ///////////////// //CONTROL MOWER// ///////////////// if (keyPressed) { mowerMoving(); } ////////////// //GROW GRASS// ////////////// if (mousePressed) { drawGrowth(); } } //////////////////// /******************/ /*STATIC FUNCTIONS*/ /******************/ //////////////////// ///////// //GRASS// ///////// void drawGrass() { noStroke(); fill(0, 255, 0); triangle(g, 450, g+10, 450, random (g, g+10), random(400, 450)); rect(0, 450, 800, 500); } /////// //SUN// /////// void drawSun() { noStroke(); fill(#E3F0FF); ellipse(100, 50, 400, 400); fill(235, 255, 108, 50); ellipse(100, 50, 200, 200); fill(235, 255, 108, 150); ellipse(100, 50, 100, 100); fill(255); ellipse(100, 50, 60, 60); } ////////// //CLOUDS// ////////// void drawClouds() { noStroke(); fill(255); //top right ellipse(780, 80, 360, 120); ellipse(660, 100, 220, 80); //mid ellipse(430, 170, 100, 40); ellipse(470, 190, 100, 30); ellipse(385, 195, 110, 35); //top mid ellipse(345, 45, 50, 20); ellipse(365, 50, 40, 10); //left ellipse(10, 160, 200, 70); ellipse(80, 170, 140, 50); } ///////// //MOWER// ///////// //MOWER GOING RIGHT// void drawMowerRight() { noStroke(); //BODY// fill(#B70D18); rect(m-100, 410, m, 445); rect(m-30, 400, m-20, 410); arc(m+20, 445, 40, 40, PI+HALF_PI, TWO_PI); fill(0); quad(m, 420, m, 410, m-20, 410, m-10, 420); rect(m-20, 400, m-10, 410); fill(0); arc(m-10, 410, 20, 20, PI+HALF_PI, TWO_PI); //MOTOR// fill(0); quad(m-80, 390, m-70, 400, m-40, 370, m-80, 370); rect(m-70, 390, m-30, 410); fill(#838383); quad(m-40, 370, m-40, 390, m-25, 390, m-25, 380); rect(m-60, 370, m-40, 390); //BAG// fill(#474848); quad(m-160, 370, m-160, 430, m-100, 430, m-100, 390 ); //HANDLE// fill(#CDD1D8); quad(m-100, 390, m-100, 395, m-185, 310, m-180, 310); fill(0); quad(m-100, 390, m-110, 400, m-90, 420, m-80, 410); quad(m-180, 310, m-185, 305, m-210, 305, m-210, 310); //WHEELS// fill(#482727); ellipse(m+10, 430, 40, 40); ellipse(m-100, 430, 40, 40); //CORDS// fill(0); stroke(0); line(m-80, 370, m-180, 310); line(m-80, 390, m-90, 400); } //MOWER GOING LEFT// void drawMowerLeft() { noStroke(); //BODY// fill(#B70D18); rect(m-185, 410, m-85, 445); rect(m-165, 400, m-155, 410); arc(m-205, 445, 40, 40, PI, PI+HALF_PI); fill(0); quad(m-185, 420, m-185, 410, m-165, 410, m-175, 420); rect(m-165, 400, m-175, 410); fill(0); arc(m-175, 410, 20, 20, PI, PI+HALF_PI); //MOTOR// fill(0); quad(m-105, 390, m-115, 400, m-145, 370, m-105, 370); rect(m-115, 390, m-155, 410); fill(#838383); quad(m-145, 370, m-145, 390, m-160, 390, m-160, 380); rect(m-125, 370, m-145, 390); //BAG// fill(#474848); quad(m-25, 370, m-25, 430, m-85, 430, m-85, 390 ); //HANDLE// fill(#CDD1D8); quad(m-85, 390, m-85, 395, m, 310, m-5, 310); fill(0); quad(m-85, 390, m-75, 400, m-95, 420, m-105, 410); quad(m-5, 310, m, 305, m+25, 305, m+25, 310); //WHEELS// fill(#482727); ellipse(m-195, 430, 40, 40); ellipse(m-85, 430, 40, 40); //CORDS// fill(0); stroke(0); line(m-105, 370, m-5, 310); line(m-105, 390, m-95, 400); } //////////////////// /******************/ /*UPDATE FUNCTIONS*/ /******************/ //////////////////// /////////////// //MOWER MOVING// //////////////// void mowerMoving() { if (keyCode==RIGHT) { drawMowRight(); drawMowerRight(); m=m+5; } else if (keyCode==LEFT) { drawMowLeft(); drawMowerLeft(); m=m-5; } else { drawMowRight(); drawMowerRight(); } } ///////////// //MOWN LAWN// ///////////// void drawMowRight() { noStroke(); fill(#D8EAFF); rect(m-225, 300, m+40, 445); fill(#D8EAFF); rect(m-210, 445, m+10, 450); } void drawMowLeft() { noStroke(); fill(#D8EAFF); rect(m+40, 300, m-215, 445); fill(#D8EAFF); rect(m+25, 445, m-190, 450); } ///////////////// //GROWING GRASS// ///////////////// void drawGrowth() { noStroke(); fill(0, 255, 0); triangle(w, 450, w+10, 450, random (w, w+10), random(400, 450)); } /////// //UFO// /////// void drawUFO() { noStroke(); fill(#D8EAFF); rect(0, 250, 800, 300); noStroke(); fill(#909090); ellipse (w, 270, 90, 20); fill(0); arc(w, 261, 30, 20, PI, TWO_PI); fill(255); arc(w-5, 258, 10, 7, PI, PI+HALF_PI+QUARTER_PI); fill(#92FF3B); triangle(w, 290, w+15, 280, w-15, 280); fill(#909090); triangle(w-20, 275, w-15, 275, w-2.5, 290); triangle(w+20, 275, w+15, 275, w+2.5, 290); fill(0); rect(w-2.5, 287, w+2.5, 290); } void updateUFO() { w=constrain(mouseX, 0, 800); }