1 / 37

Aquarium Lab Series

Aquarium Lab Series. Developed by Alyce Brady of Kalamazoo College. Why Use This?. Review of concepts Declaring object variables, creating objects using constructors, invoking methods Conditional Execution (ifs) Iteration (for loops) One-dimensional Arrays

helia
Download Presentation

Aquarium Lab Series

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Aquarium Lab Series Developed by Alyce Brady of Kalamazoo College

  2. Why Use This? • Review of concepts • Declaring object variables, creating objects using constructors, invoking methods • Conditional Execution (ifs) • Iteration (for loops) • One-dimensional Arrays • Encapulating behavior (classes) • Intro to Marine Biology Case Study

  3. Getting Started • Instructions are at: • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/ • Download the zip file and unzip it • AquariumLabSeries.zip • Add full path to jpt.jar to the classpath • This holds the user interface classes • Compile all source • Don’t forget the files in the BlackBoxClasses directory

  4. First View of the Aquarium • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/ObjConstLabs.shtml#start • Run the main in AquaSimApplication • Click on the Start button • You will see the initial empty aquarium • Click the top right X to close the window

  5. First View of the Aquarium

  6. Add 3 Fish • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/ObjConstLabs.shtml#construct • Edit the main in AquaSimApplication.java • Create 3 AquaFish objects • After the start button is pushed • Before the user interface is asked to show the aquarium • Still no fish!

  7. Add 3 Fish

  8. Show the 3 Fish • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/ObjConstLabs.shtml#invoke • Edit the main in AquaSimApplication.java • Check the documentation on AquaSimGUI for how to draw fish (cause them to show up) • Add calls to this method for each of the 3 fish in the main • After you create the fish and draw the aquarium • Before you repaint to show the result

  9. Show The 3 Fish

  10. Make the Fish Move • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/ObjConstLabs.shtml#invoke • Check the AquaFish documentation to find the method to move the fish • Add calls to this method for each of the 3 fish in the main after you have displayed them • After the last code you added to the main to draw the fish • Add the code to draw the aquarium and fish again and repaint to show the changes

  11. Possible Problems • If you forget to redraw the aquarium • you will see both locations of the fish • If you don’t show the fish again • You won’t see them move • If you don’t repaint after showing the fish again • You won’t see them move • They display and move so fast • You won’t see them move

  12. Pause Between Movements • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/ObjConstLabs.shtml#invoke • Check the documentation for the AquaSimGUI class • To see how to pause • Add a call to this method • Before you move the fish

  13. Reverse at Wall • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/ConditionalLabs.shtml#if • Fish get stuck when they hit the wall • Find a method in AquaFish that returns true when the fish is at the wall • Find the method that reverses the fish • Add code in the main to test if the fish is at the wall and if so reverse it • After you ask the fish to move

  14. Reverse at Wall

  15. Red or Blue Fish • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/ConditionalLabs.shtml#else • Check the documentation for RandNumGenerator for how to get an object of the class Random • Put this before you create the fish in the main • Declare a variable to hold the fish color • Color fishColor; • Find how to get 0 or 1 from Random • If 0 set the fish color to Color.RED • Else set the fish color to Color.BLUE • Specify the color when you create the fish

  16. Red or Blue Fish

  17. Rainbow of Colors • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/ConditionalLabs.shtml#elseif • Change random.nextInt(int maxVal) to 6 to give you a number from 0 to 5 • Use if, and else if to assign the color • 0 = Color.RED • 1 = Color.ORANGE • 2 = Color.YELLOW • 3 = Color.GREEN • 4 = Color.BLUE • 5 = Color.MAGENTA

  18. A Better Way • Fish color shouldn’t be assigned in the main • They should be assigned in the constructor that doesn’t take a color • But, this means changing the first line which currently calls the other constructor • Instead pull out the code in the other constructor and put it in an initialize

  19. Rainbow of Colors

  20. Loop 10 Times • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/RepetitionLabs.shtml#for • Instead of moving forward just once move forward 10 times • Pause to see the previous position • Move the fish • Draw the aquarium and fish • Be sure to repaint the user interface to see the changes • Either start at 0 and loop while < 10 or start at 1 and loop while <= 10

  21. User Specified Number of Steps • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/RepetitionLabs.shtml#input • You can use the userInterface to ask the user for how many steps to use • Change the constructor parameters • Find the method that return the number of steps • Change your loop to use this number

  22. User Specified Number of Steps

  23. Add ¼ Chance of Reversing • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/RepetitionLabs.shtml#or • When a fish moves • Still reverse if at the wall • But also reverse if a random value from 0 to 3 is 0 (1/4 chance of reversing) • Do this in one if statement boolean expression (using ‘or’)

  24. Add ¼ Chance of Reversing

  25. Add an Array of Fish • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/MoreFish.shtml#LIDS • Change the constructor call for AquaSimGUI to ask the user how many fish to use • Ask the user interface how many to use • Create an array of AquaFish of that size

  26. Add an Array of Fish

  27. Create First and Last Fish • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/MoreFish.shtml#AccessFish • Create a fish at the first position in the array and at the last and show both as well as the aquarium

  28. Create First and Last Fish

  29. Looping Through an Array • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/MoreFish.shtml#ProcessAll • Use a for loop to create all the fish in the array • Use another for loop to show them all

  30. Looping Through an Array

  31. Moving the Fish Again • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/MoreFish.shtml#School%20in%20Motion • Add another loop to move each of the fish • You will need a nested loop • Be sure to use a different index variable • Don’t forget to show the fish again

  32. Moving the Fish Again

  33. Up and Down Fish • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/ImplementingClasses.shtml • Add ascend and descend methods to AquaFish (by height) • In the main before the fish moves do: • A fish at the surface has a 2/3 chance of descending and a 1/3 chance of staying at the surface. • A fish at the bottom has a 1/3 chance of ascending and a 2/3 chance of staying at the bottom. • A fish that is neither at the surface nor at the bottom has a 1/3 chance of ascending, a 1/3 chance of descending, and a 1/3 chance of staying at the same depth.

  34. Up and Down Fish

  35. AquaFish Move Method • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/ImplementingClasses.shtml • The main should only create objects and start them doing something – it shouldn’t have behavior in it! • Create a new move method in AquaFish and move all code related to moving the fish there • Change the main to call the new move method • Test to make sure you get the same behavior

  36. AquaFish Move Method

  37. Adding a Simulation Object • http://max.cs.kzoo.edu/patterns/JavaPatternLabs/AquariumLabSeries/ImplementingClasses.shtml • Finish the Simulation class • Finish the constructor • Finish the run method • Finish the step method • In the main method • Create a simulation object • Tell it to run the user specified number of steps • Test to see if you get the same results

More Related