MP7: 3D TIC-TAC-TOE
Leonel Bueno
lbueno@eecs
4/25/2001 


Description
-------------------------------------------------------------------------
This game is a variation of the 2-dimensional Tic-Tac-Toe game extended to 3 dimensions

General Environment
-------------------------------------------------------------------------
The game takes place on a board that consists of 3 levels, each of which is 3 rows deep and 3 columns across, making a total of 27 squares on a pseudo three-dimensional board. 
NOTE: The 3-dimensional board is simulated using 3 2D boards (grids), each representing a level

Game play
-------------------------------------------------------------------------

Two players (human vs. CPU, human vs. human) alternate between placing a red X or a black O on a square. Once that piece is placed, it can neither be moved nor removed during the same game.

Goal
-------------------------------------------------------------------------

The goal of the game is for a player to place a sequence of 3 markers in a straight line. Possible winning combinations are 
	o horizontal, diagonal, vertical on the same level
	o horizontal, diagonal, vertical spanning multiple levels.

The first player (human, CPU) to accomplish this is declared the winner and the current game is finished.

Controls
-------------------------------------------------------------------------

During game play, the player clicks a button to indicate where the marker should be placed in the board. The controls available to the human player are:

* new game	
Begins a new game. Player is then asked to choose for either a 1-player or 2-player game.

* quit		
Quit game play and exit 

* help?
Displays a help dialog box to user informing them about goal of gameplay and controls

* about
Displays information about the author (me!) of the program 

Description of Objects
-------------------------------------------------------------------------

* Player (Human)	
This object will represent a human player. Its function will be to collect user input (i.e., process key presses, final marker selection)

* Player (CPU) 	
This object will represent the computer player. It will implement some sort of heuristics for making intelligent decisions on where to place its marker during game play.

* Square
An object that will take on two values (X, O, blank). 

* Board	
A container object of squares that will represent 3 2D grids, consisting of the game board.

* Game	
An object that will coordinate the game play (i.e., create a board object, determine if player has one)


Summary
-------------------------------------------------------------------------

In comparing the final program with that depicted in MP5, I would say it did not stray
much. I changed the controls to implement the mouse as opposed to a cumbersome "selection"
marker that would have been changed by use of keyboard keys. I found that using the
mouse was far easier and convenient for the users. If I had to make any improvements, they
would lie in implementing some type of heuristics to make the CPU player a bit smarter (i.e., 
ability to block opponent). I would also make the game a bit more colorful by replacing the
text buttons with buttons with image icons.
