Presentation is loading. Please wait.

Presentation is loading. Please wait.

Aquarium Lab Series Developed by Alyce BradyAlyce Brady of Kalamazoo CollegeKalamazoo College.

Similar presentations


Presentation on theme: "Aquarium Lab Series Developed by Alyce BradyAlyce Brady of Kalamazoo CollegeKalamazoo College."— Presentation transcript:

1 Aquarium Lab Series Developed by Alyce BradyAlyce Brady of Kalamazoo CollegeKalamazoo 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/Aqu ariumLabSeries/http://max.cs.kzoo.edu/patterns/JavaPatternLabs/Aqu ariumLabSeries/ Download the zip file and unzip it –AquariumLabSeries.zipAquariumLabSeries.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/JavaPatter nLabs/AquariumLabSeries/ObjConstLabs. shtml#starthttp://max.cs.kzoo.edu/patterns/JavaPatter nLabs/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/JavaPatter nLabs/AquariumLabSeries/ObjConstLabs. shtml#constructhttp://max.cs.kzoo.edu/patterns/JavaPatter nLabs/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/JavaPatter nLabs/AquariumLabSeries/ObjConstLabs. shtml#invokehttp://max.cs.kzoo.edu/patterns/JavaPatter nLabs/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)AquaSimGUI –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/JavaPatternLab s/AquariumLabSeries/ObjConstLabs.shtml#invo kehttp://max.cs.kzoo.edu/patterns/JavaPatternLab s/AquariumLabSeries/ObjConstLabs.shtml#invo ke Check the AquaFish documentation to find the method to move the fishAquaFish –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/JavaPatter nLabs/AquariumLabSeries/ObjConstLabs. shtml#invokehttp://max.cs.kzoo.edu/patterns/JavaPatter nLabs/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/JavaPatternLab s/AquariumLabSeries/ConditionalLabs.shtml#ifhttp://max.cs.kzoo.edu/patterns/JavaPatternLab s/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/Aquari umLabSeries/ConditionalLabs.shtml#elsehttp://max.cs.kzoo.edu/patterns/JavaPatternLabs/Aquari umLabSeries/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/JavaPatternLab s/AquariumLabSeries/ConditionalLabs.shtml#els eifhttp://max.cs.kzoo.edu/patterns/JavaPatternLab s/AquariumLabSeries/ConditionalLabs.shtml#els eif 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/JavaPatternLab s/AquariumLabSeries/RepetitionLabs.shtml#forhttp://max.cs.kzoo.edu/patterns/JavaPatternLab s/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/JavaPatter nLabs/AquariumLabSeries/RepetitionLabs.shtml#inputhttp://max.cs.kzoo.edu/patterns/JavaPatter nLabs/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/JavaPatter nLabs/AquariumLabSeries/RepetitionLabs.shtml#orhttp://max.cs.kzoo.edu/patterns/JavaPatter nLabs/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/JavaPatter nLabs/AquariumLabSeries/MoreFish.shtml #LIDShttp://max.cs.kzoo.edu/patterns/JavaPatter nLabs/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/JavaPatter nLabs/AquariumLabSeries/MoreFish.shtml #AccessFishhttp://max.cs.kzoo.edu/patterns/JavaPatter nLabs/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/JavaPatter nLabs/AquariumLabSeries/MoreFish.shtml #ProcessAllhttp://max.cs.kzoo.edu/patterns/JavaPatter nLabs/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/JavaPatter nLabs/AquariumLabSeries/MoreFish.shtml #School%20in%20Motionhttp://max.cs.kzoo.edu/patterns/JavaPatter nLabs/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/Aquari umLabSeries/ImplementingClasses.shtmlhttp://max.cs.kzoo.edu/patterns/JavaPatternLabs/Aquari umLabSeries/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/JavaPatternLab s/AquariumLabSeries/ImplementingClasses.sht mlhttp://max.cs.kzoo.edu/patterns/JavaPatternLab s/AquariumLabSeries/ImplementingClasses.sht ml 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/JavaPatternLab s/AquariumLabSeries/ImplementingClasses.sht mlhttp://max.cs.kzoo.edu/patterns/JavaPatternLab s/AquariumLabSeries/ImplementingClasses.sht ml 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


Download ppt "Aquarium Lab Series Developed by Alyce BradyAlyce Brady of Kalamazoo CollegeKalamazoo College."

Similar presentations


Ads by Google