Modify a text file: $/final/final.java
$/final/final.java
//// CST-112 FINAL EXAM -- Your Name Here //// ////-----********notice ////to quickly look at certain instructions (etc. 1, 2, 3...13) ////use the find tool and put an '@' symbol directly before the number (i.e. @2, @5) ////they are behind all modifications that were instructed ////for 5, 6, and 7, they are all combine (@5. 6. 7.) ////so just put @5 for all three String student="Christopher Tristano"; String title="CST-112 FINAL EXAM: " + student; String news= "Click to move objects"; //////// GLOBAL DECLARATIONS //////// int score=0; float left=50, top=50, right=750, bottom=550; Animal zoog, cat, bird; //@9. Animal bird2; Animal submarine; // Animal ant; //@5. 6. 7. Animal[] bugs = new Animal[5]; //////// SKETCH FUNCTIONS //////// void setup() { //// Setup. size( 800, 600 ); right=width-50; bottom=height-50; reset(); } void reset() { //// initialize the menagarie. cat= new Animal( 50, 30, 20, 4, 0 ); cat.setRGB( 200,150,50 ); cat.x=100; cat.y=100; cat.name= "cat"; // zoog= new Animal( 40, 80, 0, 2, 7 ); zoog.setRGB( 200,150,150 ); zoog.x= 200; zoog.y= 200; zoog.name= "Zoog"; // bird= new Animal( 3,0,0, 50, 15, 12, 0, 0 ); bird.setRGB( 50,50,250 ); bird.x= 300; bird.y= 300; //@9. bird2= new Animal( 3, 0, 0, 50, 15, 12, 0, 0 ); bird2.setRGB( 100,50,0); bird2.x = 400; bird2.y = 100; //@3. Declare a "submarine" object (Animal with shape=2), using your new constructor Make it move up & down rapidly (dy= +/- 8), left/right slowly (dx= +/- 0.5) submarine= new Animal( 2, 80, 40, 1); submarine.setRGB( 155,155,255 ); submarine.x= 400; submarine.y= 400; submarine.name= "Nautilus"; // // ant= new Animal(); // ant.y= bottom ; //// Creat five bugs //// //@5. 6. 7. for (int i=0; i<5; i++) { bugs[i] = new Animal( 6,0,3, random(10 , 25) ,random( 30, 55 ), int( random( 200 ,255 ) ), int( random( 20,80 ) ), int( random( 20,80 ) ) ); bugs[i].y = bottom; } } void draw() { //// Next frame. scene(); action(); // Move all objects, check collisions, etc. show(); // Draw objects on screen. messages(); } void action() { //// Move, check collisions, etc. //// //@10. if( cat.activate == true ) { cat.move(); } if( bird.activate == true ) { bird.move(); } if( bird2.activate == true ) { bird2.move(); } if( zoog.activate == true ) { zoog.move(); } if( submarine.activate == true ) { //@4. Add code to move and show the "submarine" in each frame. submarine.move(); } crash(); // // ant.move(); // if (ant.y < top+20) { // ant.dy=0; // Dead ant -- Stop rising. // ant.setRGB( 150, 50, 50 ); // Change color // if (ant.x > right-20 ) { // Float off end; new ant. // ant= new Animal( 6,0,3, 15,45, int( random( 255 ) ), int(random( 255 ) ), int( random( 255 ) ) ); // ant.y= bottom; // } // } //// Move the bugs -- same as the ant. //@5. 6. 7. for( int i = 0; i < 5; i++) { bugs[i].move(); if (bugs[i].y < top + 20) { bugs[i].dy=0; // Dead bugs[i] -- Stop rising. bugs[i].setRGB( 150, 50, 50 ); // Change color if (bugs[i].x > right-20 ) { // Float off end; new bugs[i]. bugs[i] = new Animal( 6,0,3, random(10 , 25) ,random( 30, 55 ), int( random( 200 ,255 ) ), int( random( 20,80 ) ), int( random( 20,80 ) ) ); bugs[i].y= bottom; } } } } void crash() { //// Check for collisions //// //@13. // zoog kicks the cat (+50) -- move cat to right side. if (zoog.hit( cat ) ) { cat.x = right - 20; score += 50; } // cat catches bird (-100) -- move bird to left side. if( cat.hit( bird ) ) { bird.x = left + 20; score -= 100; } if( cat.hit( bird2 ) ) { bird2.x = left + 20; score -= 100; } // bird hits Zoog (-50) -- move Zoog to random position. if( bird.hit( zoog ) ) { zoog.randomXY(); score -= 50; } if( bird2.hit( zoog ) ) { zoog.randomXY(); score -= 50; } // bird catches any bug (+10) -- start new bug at bottom for(int i = 0; i < 5; i++ ) { if( bird.hit(bugs[i]) ) { bugs[i].y = bottom - 20; score += 25; } if( bird2.hit(bugs[i]) ) { bugs[i].y = bottom - 20; score += 25; } } // cat catches any bug (+25) -- start new bug at bottom for(int i = 0; i < 5; i++ ) { if( cat.hit(bugs[i]) ) { bugs[i].y = bottom - 20; score += 25; } } //zoog catches a bird (+50) ----- start bird at left if (zoog.hit( bird ) ) { bird.x = left + 20; score += 50; } if (zoog.hit( bird2 ) ) { bird2.x = left + 20; score += 50; } //submarine captures the zoog (+1000) both go to random positions if (submarine.hit( zoog ) ){ submarine.randomXY(); zoog.randomXY(); score +=1000; } } void show() { //// Draw objects on screen. //// cat.show(); bird.show(); //@9. bird2.show(); zoog.show(); submarine.show(); for (int i=0; i<5; i++) { //// Display the bugs //// //@5. 6. 7. bugs[i].show(); } } void scene() { //// Background, scene, etc. //// background( 255,255,200 ); stroke(0,0,0); fill( 150,200,150 ); rectMode(CORNERS); rect( left, top, right, bottom ); //// Blades of grass across the bottom //// stroke(0,150,0); // Grass color. strokeWeight(3); //@11. if( cat.dx > 0 ) { for(int i = 5; i < right / 10; i++) { line(i * 10, bottom, i * 10 + 10, bottom - 20); } } else if ( cat.dx < 0 ) { for(int i = 6; i < right/ 10 + 1; i++) { line(i * 10, bottom, i * 10 - 10, bottom - 20); } } else { for(int i = 5; i < right/ 10; i++) { line(i * 10, bottom, i * 10, bottom - 20); } } } void messages() { //// Display messages fill(0); textSize( 20 ); text( title, width/3, 25 ); textSize( 14 ); text( news, left, 40 ); //@12. if(score != 0) { text("your score is " + score, width/2, height*19/20); } } //////// EVENT HANDLERS //////// void keyPressed() { //// Handle keys //// if (key == 'q') { exit(); } if (key == 'r') { reset(); } if (key == 'c') { cat.randomXY(); } if (key == 'z') { zoog.randomXY(); } if (key == 'b') { bird.randomXY(); bird.dx= 12; bird.dy= .5; } } //@10 //if the mouse is clicked on the animal, it will start moving void mousePressed() { if( cat.hit( mouseX, mouseY ) == true ) { cat.activate = true; cat.setDXDY( -2 , 3 ); } if( submarine.hit( mouseX, mouseY ) == true ) { submarine.activate = true; submarine.setDXDY( -0.5 , 8); } if( bird.hit( mouseX, mouseY ) == true ) { bird.activate = true; bird.setDXDY( 4 , 1 ); } if( bird2.hit( mouseX, mouseY ) == true ) { bird2.activate = true; bird2.setDXDY( 3 , 1 ); } if( zoog.hit( mouseX, mouseY ) == true ) { zoog.activate = true; zoog.setDXDY( 0.5 , 0.2 ); } } //////// CLASS DEFINITION //////// class Animal { //// Animal has a body, an optional head, legs, pairs of arms, etc. //// Animal is wide and tall, and has other properties such as color. //// Also: position (x,y) and velocity (dx,dy). //// Desription and drawing info. float wide=30, tall=50, head=0, tail=0; int legs=0, armpairs=0, reach=20; String name=""; int r,g,b; // Color. int shape=4; //// Position, velocity, boundaries float x=400,y=300, dx=0,dy=0; boolean activate = false; //// CONSTRUCTORS (and set functions) //// Animal( int shape, int legs ) { //// 2-arg Constructor: shape, wide, tall //// this.shape= shape; randomXY(); //Random x,y, dx,dy } Animal( int shape, int legs, int armpairs, float wide, float tall, int r, int g, int b) { //// 8-arg Constructor: shape, wide, tall //// this.shape= shape; this.legs= legs; this.armpairs= armpairs; this.wide= wide; this.tall= tall; randomXY(); //Random x,y, dx,dy setRGB( r, g, b ); } Animal( float wide, float tall, float head, int legs, int armpairs ) { //// 5-arg Constructor //// this.wide= wide; this.tall= tall; this.head= head; this.legs= legs; this.armpairs= armpairs; } ////@1. In the "Animal" class, add a constructor with a different number of arguments ////than any other constructor Animal( int shape, float wide, float tall, int armpairs ) { //// 4 - arg Constructor this.shape= shape; this.wide= wide; this.tall= tall; this.armpairs= armpairs; } void setRGB( int r, int g, int b) { this.r= r; this.g= g; this.b= b; } void randomXY() { x= random(100,700); y= random(100,500); dx= random(1.5,2.5); dy= random(0.5,1.5); } void setDXDY( float dx, float dy ) { this.dx = dx; this.dy = dy; } //// METHODS to move and show //// void move() { //// Check for boundaries, and move to new coordinates (x+dx, y+dy). if (x
right) dx= -dx; if (y
bottom) dy= -dy; //// x += dx; y += dy; } void show() { stroke(0); strokeWeight(1); //// Draw the Animal on the screen //// rectMode( CENTER ); ellipseMode( CENTER ); fill(r,g,b); //// Front & back depend on dx //// float front=x+wide/2, rear=x-wide/2; if (dx<0) { front= x-wide/2; rear= x+wide/2; } //// Draw different shapes. //// if (shape == 0) { ellipse( x, y, wide, tall ); } else if (shape == 4) { rect( x, y, wide, tall ); } else if (shape == 3) { triangle( front,y, rear,y-tall/2, rear,y+tall/2 ); //@8. //flap of the birds wings if(( millis() / 1000) % 2 == 1 ) { if( dx > 0 ) { triangle( front - wide / 2, y, rear - wide / 2, y - tall / 2, rear, y + tall / 2 ); } else { triangle( front + wide / 2, y, rear + wide / 2, y - tall / 2, rear, y + tall / 2 ); } } else { if( dx > 0 ) { triangle( front - wide / 2, y, rear + wide, y + tall, rear, y + tall / 2 ); } else { triangle( front + wide / 2, y, rear - wide, y + tall, rear, y + tall / 2 ); } } } else if (shape == 2) { ///@2. Add code to the "Animal" class to draw objects with shape = 2 (submarine): ellipse with rectangle on top, and one pair of "arms". ellipse( x, y, wide, tall ); rect( x, y - tall / 2, wide / 3, tall / 5 ); } else if (shape == 6) { ellipse(x,y-tall*2/3, wide, tall/3 ); ellipse(x,y-tall/3, wide, tall/3 ); ellipse(x,y, wide, tall/3 ); reach= 8; } else { // ++++++++++ ADD YOUR CODE HERE. +++++++++++++ // text( "undefined object is here!", x, y ); } //// Head if (head>0) { // Head (if any) // ellipseMode( CENTER ); ellipse( front, y-tall/2-head/2, head, head ); // Head at front rect( rear, y-tall/2, 20, 6 ); // Tail at rear } limbs(); //// Name fill( 256-r, 256-g, 256-b ); text( name, x-wide/3, y ); } void limbs() { //// Legs & Arms //// float legX= x - wide/2; // First leg is at the left float legY= y + tall/2; // Legs start at bottom of rectangle. if (legs > 0) { line( legX,legY, legX,legY+reach ); // First leg. } if (legs > 1) { float legSpacing= wide / (legs-1); for (int i=1; i
1 ) { for (int i=0; i
this.x + this.wide/2) return false; if (y < this.y - this.tall/2) return false; if (y > this.y + this.tall/2) return false; return true; } boolean hit( Animal other ) { //// Return true iff other hits this one. return hit( other.x, other.y ); } }