Christian Newkirk, Christiannewkirk Sarah Zhong, sarahmzhong
(a) This project is a connect 4 game. There are two modes: multiplayer PvP, and singleplayer PvAI.
(b) As a player, I can make a move, so that a piece is placed. I can undo a move, so that a piece is removed. I can exit the game, so that I can either exit the program or start a new game.
(c) Yes, the software runs. It does everything listed under "Features" under the "Rules" section reachable from the Main Menu. It is unclear what Pop Out Mode is meant to do. Pop Out Mode does not appear to currently do anything. Overall, it behaves as expected, except for some minor known bugs. However, there are still many improvements that could be made.
As a player, I would like a prettier selection menu, so as to improve
my user experience.
As a player, I would like to see additional features mid-game, such as: an
in-game move counter, text that says who's turn it is, and have the game
show what column the player is about to place the piece in.
As a player, I would like to see more challenging single-player modes.
As a player, I would like to see a timed-turn mode, where each player
has a limited amount of time to make his/her move.
(d) We evaluate the README file as fairly comprehensive. The use of images was very helpful in aiding our understanding of the program. The table of contents was very helpful as well. Our only complaint is that it does not explain what Pop Out Mode does.
(e) Publish and download have already been removed. A few targets: test, javadoc, and jar do not have descriptions when ant -p is used. These need to be added.
(f) Only two issues are listed. One seems to be related to lag when run through ssh. This seems to be expected behavior, so we are not sure why this is a bug. We can investigate further to see if there is any way to reduce this lag.
The second issue seems to be a minor visual bug with going back to the
menu after being in a game, which we can also try to fix.
*After re-evaluating the above bug, we have realized that along with
displacing the buttons of the main menu, the game does not actually
quit. The command line still acts as if the player has not left the
game--if you click on a part of the panel that does not have a
button, the move-counter changes and a new statement is printed.
The amount of issues that we can earn points fixing seems to depend on
what sort of issue is causing the first bug. However, we feel that we
can earn points by improving other aspects of the game, including adding
and improving features.
(g) Pop Out Mode does not seem to do anything. In single player mode, along with the lag issue already stated in the README, the output in Unix while the game is running, states that the player move "didn't work", even though the move worked.
(h) After looking at the code in depth, our analysis is that it is very intuitive and fairly easy to follow. The comments are extremely helpful when the code was hard to understand, and we feel like we have a good feel for what previous groups were doing with the code written.
It is very obvious how the classes are related to one another as each
class is named according to the code inside of it. Especially after
running the game and looking at the code, it is easy to see how all
the classes synthesize and work together.
If we had to explain the project in the format of a quick summary, we
would say that the project at hand is to improve a Connect Four
game made by previous generations of CS56 students.
Our first goal is to fix the existing problems mentioned in the
README.md file. We are unsure at the moment what is causing these bugs.
Our second goal is to improve the user interface to simply look better.
This can be done by working on the inGameMenuPanel.java file and
modifying pieces of the code. Then it can be tested by running the
program from the root directory with ant run.
Our third goal is to add in-game features. A move counter and turn
variables and methods modifying them already exist, so it should just be
a matter of working on the graphics to display them. A piece-preview
objective can be done with a mouseMotionListener and using graphical
methods.
Our fourth goal is to add more difficult AI for single player mode. This
can be done by using smarter algorithms and more specific cases in the
singlePlayerAdvanced class in order to analyze the player's moves and
perform better actions.
Our fifth goal is to make a timed mode using graphical interfaces and
a timer for each turn. This could potentially be done by adding a new
class specifically for timed games.
Not all of these goals may be feasible to be completed in the time
allotted for the project, but we will analyze each goal and try our
best to improve the project as much as possible.
(i) There are no tests. A test target exists in the build.xml which can be used if there were test cases or if test cases were created. There are definitely opportunities to expand test coverage, as there is currently no test coverage.