Ryan Allen - rowallen Ryan Kemper - ryankemper
a) The states quiz is an implementation of a simple geography quiz game. The user must guess the location of a random US state or capital on a map.
b) As a student, I can quiz myself on states so that I can improve my knowledge of US Geography. As a teacher, I can have my students quiz themselves on capitals so they can study for an upcoming exam.
c) The software runs smoothly. The starting screen has buttons to select different game modes, and depending on the game mode the program prompts the user for a given state or capital. However, there are some very minor UI issues.
d) The readme gives a good comprehensive overview of how the game works and how the program's elements were designed. From a programming perspective, there is considerably more explanation of how the State and Country classes work than how the user interface works.
e) The build.xml is clean and up to date overall, with only a few exceptions. The 'jws' and 'publish' targets don't have descriptions, but they can be easily added. The file includes targets for run, compile, clean, and javadoc and there isn't any need for any other targets.
f) The most important issues are adding more game modes/difficulties, as well as revamping QuestionManager.java to be more efficient and flexible. Other issues are that the game awards points regardless of the number of attempts, and that the game lacks a "hint" feature. Solving these issues involves a significant amount of restructuring, so there are more than enough issues to satisfy the requirement.
g) Added an issue reflecting the need for general UI improvements
h) The information regarding a given country, state, or capital can be found in the Country and State objects. A Country holds an ArrayList of States, and a State contains the name of the the State and its given capital. The main program functionality is in QuestionManager.java, which handles running the quiz. The main graphics class is GameFrame, which holds a FrontPanel (the start screen) and a GamePanel. GameFrame is where the program actually begins executing. The code is well documented and clean, and makes good usage of abstraction. However, some of the graphics classes could be redesigned to be more sensible (for example, perhaps the GamePanel class and MapPanel class should be more separated).
i) The program does not contain any JUnit tests. As such, there is room to add some basic testing. Simple tests could verify that the Country and State objects are working properly. Also, the scoring could be tested to ensure it is being updated properly to reflect a correct or incorrect guess.