This week's project was to take project two and add the ability to save state as well as the ability to change the look/layout of the buttons. We already are using the Observer and Command design patterns from what was created in project 1 and 2.
There are now two new buttons, one of which is "Change Layout," which the user can click to switch between a Flow Layout and a Border Layout. By default, the game starts in a Border Layout. When making the program window bigger or smaller, the buttons also change size to match (however, you cannot make the window thinner than the game's window itself (we want to be sure you can see the whole game). We moved the controls out of the same panel that houses the clock (as we wanted to have the clock near the top and the controls near the bottom).
The "Save State" button allows a player to save a state of the game, so that he/she could continue playing it later. The game state is saved to XML file, where information about the game variables is stored. If there is a saved state, the user will be prompted to either start a new game or load from what was saved. Once in the game, they can unpause or restart.