//////// Exercise 1 rough //////// Nick Ferro (CST 112; 9-12-2015) //// GLOBALS: coordinates, speed, etc. float x, y; // Position of creature. float dx, dy; // Speed. float horizon, gravity; float treeStart = random(0,width); //spawn location for trees float shade = 175; //transparency on tree mask float trees = 0; //number of trees float len = 60; //length of tree trunk int state = 0; //state for growing forest float a50 =70; //variation on lower foliage float a210 =200; //variation on upper foliage //// SETUP: window size, initialization (start in middle of screen). void setup() { size( 640,480); horizon= height/4; gravity = 0.1; x= width/2; y= height/2; dx= 3; dy= 2; } //// NEXT FRAME: scene, action, show. void draw() { //// SCENE: sky, sun, tree, house, etc. noStroke(); background( 100,150,200 ); // sky fill( 255,255,0 ); ellipse( width*3/4, height/8, 40,40 ); // sun // Grass fill( 100,200,100 ); rectMode(CORNER); rect( 0,horizon, width,height*3/4 ); // grass. //forest if (state == 1) { //when 'r' is pressed, generate forest trees = 0; //reset variables for forest shade = 175; len = 60; a50 =70; a210 =200; background( 100,150,200 ); // redraw forest fill( 100,200,100 ); noStroke(); rectMode(CORNER); rect( 0,horizon+50, width,height*3/4 ); while (trees <= 40){ drawTree(treeStart,250, shade, len); treeStart = random(0,width); a50 =a50-0.5; a210 =a210+.5; shade = shade -3; trees=trees+1; len = len + 1; } state = 0; } // house fill(0); text( "Nick Ferro", 10,height-20 ); //// ACTION: move (x,y) coordinates. x= x + dx; y= y + dy; dy = dy + gravity; //// SHOW: display the creature at (x,y) /* INSERT YOUR CODE HERE! */ /* fill(255,0,0); rect( x,y, 30,50 ); text( "Fred", x -10, y -25 ); if ((x>width-30) || (x<0)){ dx = dx * -.95; } if (y < 0) { dy = dy * -1; } if (y>height-50) { dy = dy * -0.95; } */ } //////// FUNCTIONS void drawTree(float treeX, float treeY, float trans, float lenin){ rectMode(CORNER); noStroke(); fill(139,69,19); rect(treeX-5, treeY-a50, 10, lenin); fill(34,139,34); quad(treeX-50, treeY-a50, treeX-25, treeY-100, treeX+25, treeY-100, treeX+50, treeY-a50); quad(treeX-40, treeY-100, treeX-15, treeY-150, treeX+15, treeY-150, treeX+40, treeY-100); triangle(treeX-30, treeY-150, treeX+30, treeY-150, treeX, treeY-a210); noStroke(); //MASK fill(0,trans); rect(treeX-5, treeY-a50, 10, lenin); quad(treeX-50, treeY-a50, treeX-25, treeY-100, treeX+25, treeY-100, treeX+50, treeY-a50); quad(treeX-40, treeY-100, treeX-15, treeY-150, treeX+15, treeY-150, treeX+40, treeY-100); triangle(treeX-30, treeY-150, treeX+30, treeY-150, treeX, treeY-a210); } //////// HANDLERS: mouse clicks, keys void mousePressed() { x= mouseX; // Set (x,y) to mouse y= mouseY; // dx= random( -20, +20); // random speed. dy= random( -20, +20 ); } void keyPressed() { if (key == 'q') { exit(); // press 'q' key to QUIT. } if (key == 'r'){ //press 'r' to reset forest state = 1; } }