The following project is to be done in groups of two people.
You job is to write a program for playing Tic-Tac-Toe. Input and output will be through a graphical user interface. The specifics of the layout and look and feel are up to you, and you should use your creativity. Have fun with this!
The following features must also be supported (and the UI designed to accomodate them):
The user(s) should be able to choose from a number of board dimensions, from 3 x 3 up to 6 x 6. Square dimensions are the only available options, however.
The game must allow the user to select from a number of board topologies:
>a cylinder: the rightmost squares are consider adjacent to and to the left of the leftmost squares, but the top and bottom are unconnected. For example, a winning 3-in-a-row configuration for X is
X - O - O - O X - - X - X - O O
a torus: the left and right sides of the board are connected, as are the top and bottom sides. For example, the following is a winning configuration for the "O" player:
X O - O X - X - O
Whew! There's a lot there! You'll need to work out a fairly careful design in order to divide labor in a way that makes this tractable. Think in terms of division into cleanly-separated modules, each with clearly-defined interfaces. Strive for elegance in the features (methods) offered by each component: neither too many nor too few. For the not yet built parts, make prototypes, so that you can build early and often. Don't try to add every feature in its full version all at once, but rather think about how you can approach this in an iterative fashion, in which you continually refine a simplification of the feature.
On Friday, you will demo your software, reveal the secrets you've gleaned about other teams' implementations, and we'll critique the components as a group.