Angela Yung, Abhijit K
a) Description of project: The project involves the animation of a shark that can be controlled through mouse clicks, where the shark gains points when it collides with fish animations,and loses points when in touch with jellyfish. Once the shark gains a certain amount of points, it wins the game but if it falls below a number of points, it fails the game session.
b) User stories: As a player, I can use mouse clicks so that I can move the shark. As a player, I can collect fish so that I can gain points. As a player, I can avoid jellyfish so that I can avoid losing points. As a player, I can view the instructions so that I understand how to play the game. As a player, I can set difficulty level so that I can play more challenging levels of the game. As a player, I can save my game session so that I can resume when needed.
c) Software The software runs currently. First you can choose between viewing instructions or playing the game. Once you click "play game" you can either resume an earlier saved session or start a new session with a customized difficulty. Once you start the game, you can maneuver the shark to gain points to win the game.
d) Possible user stories: As a player, I want arrow key functionalities so that I can move the shark without clicking. As a player, I want high score charts so that I can gauge my skills against previous players. As a player, I want more variety in fish so that I can have a more vibrant game. As a player, I want the ability to see shark health so that I can know when I am about to lose the game. As a player, I want to have a time mode to see how long I'll survive without eating a jellyfish so I can further gauge my skills.
e) README.md The current README is lacking since it only says "A fish animation" and previous contributors. The README can be improved with screenshots of the game, tutorial, instructions, and all the functionality that the game provides.
f) build.xml The current targets are clean, compile, javadoc, run and runEnv, all of which work except for runEnv. There is also jar and run-from-jar which are old tags that create a jar file and lets the user run the program from the jar. All the targets have descriptions except for "jar" and "run-from-jar."
g) Issues: The current issues are pretty varied and desired features are intuitive. There are enough points in order for us to reach 1000, as there are 20 open issues. Each issue has its own description of what is wanted and they are pretty clear.
h) Additional issues: there were sufficient issues for us and none needed to be added as of now.
i) Code: There is an abstract class called ScumOfTheSea that encompasses any object that can exists in the sea. The classes that extend the scumOfTheSea class are Fish, Shark, and JellyFish. This abstract class involves the x and y coordinates of marine objects as well as movement. The Fish, Shark, and JellyFish support creation of that object anywhere on the screen and its movements.
There is a menu class that deals with the menu feature of the program. It creates a bunch of JButtons.
Most of the programming is in the FishAnimationEnvironment class. They use arrayLists to hold the fish, bubbles, and jellyfish and variables that set the default sizes of the program. The default amount of fish that are added to the fish arrayList is 75, and the number of jellyfish correspond to the difficulty level of the program. There is a non default constructor for reading in a file that was created when the player saved and exited the game. When the "load" variable is true, the non-default constructor is called as it signifies a saved game was selected to be resumed. There is an inner class with a custom JPanel for animating all the elements in the program. There is a mouse handler that adds a mouse listener for controlling the shark There is an animate class that animates the fish and the bubbles Class FishInfo contains information about each individual fish, such as the x,y coordinates and width/height. A display() method which checks the events each frame at a time. If a fish was eaten, then a new fish would be added (so that 75 fish will be on the screen at a time).
There is also a GeneralPathWrapper class created by Prof. Conrad that will help draw the lines and curves of the sea objects.
Serializable class was implemented by the FishAnimationEnvironment that allows the game session to be saved.
Opinion: the classes are all fairly easy to understand and the methods are also pretty intuitive in how they are used.
j) Code Quality: There is no tester file to test this program so there are no JUnit tests. There may be some opportunities to expand test but for the most part, the easiest way in order make sure the code is running is to just run the game.