Name: Joseph Song github id: joesong96
Name: Chang Rey Tang github id: changreytang
(a) Brief Description of the project: It is a version of the classic board game Battleship with LAN multiplayer and computer player functionality. (b) A set of user stories based on what it currently can do: As someone who would like to play Battleship alone, I would like to play against a CPU so that I do not need to find another player. As someone who would like to play Battleship with a friend, I want multiplayer capabilities so that I could play with my friend. (c) Assessment of whether the software runs or not, and what it does: The software runs very well. It is a version of the board game Battleship that allows you to play against a computer against another human on a local network. Against a human the types of ships are fixed, but against a computer you can choose what size ships you would like to use, and the computer uses the same size ships as you do. (c2) Set of user stories that could be added: As a player who would like to have a more immersive experience, I would like to hear sound effects so it is like I am in the game. As a player who would like to be challenged, I would like the hard difficulty to be harder so that I have more fun. As a player with a creative mind, I would like to choose my ships color so that the game is more visually appealing. As a player, I would like for there to be a play again button to make replaying easier. (d) The current quality of the README.md is pretty good. It has good documentation of how to start the game and what functionality is available. Some fixes we can do is to should replace figure 0 and figure 1 with more professional messages. Also, there are are some typos on the page (i.e. custimize) that we should correct. (e) Overall, the build.xml file decent state but a lot can be improved. Some improvement are to add more descriptions for the different tasks and take out old legacy JWS stuff. (i.e. publish) (f) The issues on github for the project seem reasonable and the description for them are pretty good. They add up to about 950 points right now but we can add more to reach 1000. (g) New Issue Links: Add capability to select player colors: ucsb-cs56-projects#28 Add more test coverage: ucsb-cs56-projects#29 (h) Code Organization: - Currently utilizing Model, View, Controller design model - Model has classes: Computer, GuessGenerator, and Player - View has classes: BattleshipGUI - Controller has classes: BattleshipController Clarity: - The naming conventions and design model makes the code very easy to read and understand - Testing can be improved because it is nested inside BattleshipGUI class which should probably be abstracted to another class Code Summary: The Battleship Controller is the master class that brings together the model and the view to make sure the game runs smoothly. In the View, the BattleshipGUI contains all the JFrame/GUI elements that the player interacts with. Lastly, the classes in the model folder contains all the logic regarding the player, computer, and guessing mechanisms. (i) They do have testing for the game but it is nested within the BattleshipGUI class (which is bad). This means that we should abstract the tests out of that class and test it using JUnit instead of their current testing mechanisms. Currently they just test the gameplay mechanisms by generating random actions the player might do. We will approach the JUnit testing by figuring out edges cases in which we test the extremes that the user might put our program under. (i.e. choosing only size 7 ships etc.)
Things to work on: Adding sound effects Including a play again button Increasing computer hard difficulty (giving it all coords of ships and then giving it some more random coords to choose from) Making it so there is a minimum and a limit to # of blocks in computer mode Making ship size error message more professional There is little to no test coverage so we will be adding more tests. We will also create a standalone test class as the test method is currently sitting in BattleshipGUI Clean up the build.xml (Remove publish, add descriptions to many tasks) Fix typos in javadoc "comptuer" in Computer Class