#CMPSC 56 Lab03 Fall 2016 ##Brian Lee - brianslee (1) ##Peter Master - peter-master (2)
A. A game of connect-four, where two players stack chips of their own color on a board in an effort to get four of their chips in a row. The first player to do so wins.
B.
-
As a player, I can select one of three difficulty levels of the AI to play in a singleplayer game.
-
As a player, I can select two of several different colors for my and my opponent's pieces to be.
-
As a player, I can select multiplayer mode and play a friend who's next to me in real life.
-
As a developer, I can select the TestMode option in order to test the AI.
C. The game runs just fine. running the program brings up a title screen and the start button. Pressing start brings up the main menu. From the main menu, I can select 5 choices: Single Player, Multiplayer, Settings, Rules, and Exit. In reverse order, Exit closes the program. Rules brings up a page with the rules of connect four written out, and a button that returns you to the Main Menu. Settings brings up a checkbox that enables "Testing Mode". Testing Mode brings up a button to Print Board during gameplay. There is another button in Settings that takes you back to the Main Menu. Multiplayer brings up a menu with a list of colors to represent the first player. Selecting a color brings up the same menu again, with the color previously selected removed and these colors are to represent the second player. Selecting a color begins the game. An empty board, a 7 x 7 grid with circles in the center, is presented, along with buttons that read Print Board (if testing mode is on), Undo, Restart, Main Menu, and Exit. Clicking a column fills the lowest empty grid in the column with a counter with the current player's color. This continues until a player has four of their counters in a row and wins the game, or all of the grids are full which leads to a draw. Print board does what the button says. Undo undos the last move. Restart clears the board and starts the game again. Main Menu leads back to the main menu, and Exit exits the program. Finally, Single player acts similarly to Multiplayer save a few differences. You must select a difficulty level before you select counters for yourself and the computer opponent. And after you make a move in the game, the computer makes the next move. The difficulty levels do affect the computer's behavior.
D. User stories:
-
Brian Lee: I believe that adding music, a cleaner UI, and maybe a new game mode, like 5-in-a-row mode would improve the game. The first two would make the experience more enjoyable while the last one would help replayability.
-
Adding a coin toss to randomize who gets to go first would help make the first turn advantage a bit less unfair.
-
Implementing a or multiple stronger AI, perhaps including one that is literally unbeatable.
-
Add a score counter to be displayed and used whenever players replay the same mode in a session.
-
Add a move timer for "speed Connect 4."
E. The README.md file is clearly written, and concise. Everything there is nice, straightforward, and summarized. The only complaint I would have is the lack of actual details on what changes were enacted and who did them, however, this would only complicate the README file and make it less intuitive. As for what could be added, again, an overview of what each project team contributed to the project.
F. The build.xml file looks like it works fine. There could be a few more descriptions, but otherwise, it appears sufficient for our current needs.
G. There do appear to be enough issues to earn 1000 points on this project; 1350 points of issues have been listed by the people who worked on this project in summer. These issues do seem to vary in difficulty. Some appear to be less issues and more like improvements to the game as is, but they are still valid points nonetheless. The wording of some of the issues could use some work, but they are adequate enough to get the point across.
H. At the moment, no issues to add. This may change in the future.
I. Overall: There are clear discriptions for each function in each class. The names give you information about what each class conatins and they are grouped together by their functions and how they interact with each other. The AI, for example, are all grouped together in the AI folder, with each class' names detailing the level of the AI, and details within the classes about just what each function is supposed to do. Each menu in the GUI has their own class, as do the game board and the game itself. The descriptors within the classes are sufficient for someone who is relatively unfamiliar with the project to be brought back up to speed in a reasonable amount of time, if they have the patience to go through and read the comments left by the previous programmers.
J. There are tests for the behavior of the three different levels of AI and a test for the UI on the game board. That's about it, and it seems sufficient as that covers effectively everything that cannot outright be seen by running the program.