Submit an electronic copy of the assignment to the Dropbox (ex: TicTacToe.java and TicTacToeTest.java)
Create a class to play a game of tic-tac-toe with a user. Then, write a driver to play a game of tic- tac-toe between the computer program and the user, creating an instance of the class. The class should address the following design requirements in its programming:
1) The class should ask the user if he wants to go first (be X) or second (be O)
2) The class should have the ability to make "intelligent moves acting either as the X-player or the 0-player. It should make no illegal or impossible moves, nor remove any previous move until the game is over
3) The class should have referee capability which can determine whether a move is a good move and also whether a game has been won by X-player or 0-player. It should stop the player from making an impossible move (c.g. one not on the game board) and an illegal move (cg. one that attempts to place X or O over an already occupied location).
4) The class should re-display the current board after each move, and should have the following appearance, including the matrix indices. (Take this as an example of a game in progress)
(0,0) (0,2) (2,0) (2,2)
5) The user should be able to enter his move by answering at a prompt ”Your move:" with the location of his next move: r c (that is, row#" column#). For instance, in the game above, the user being X could have responded with 2,2 -in which case he would have been notified that he won the game, Tic-tac-toe!" But, for example, if the user had entered, 1,0 he would have been told that it is illegal to attempt to move on to an already occupied location
IMPORTANT: FOLLOW GOOD PROGRAMMING STYLE CONVENTION FOR NAMING ALL YOUR OBJECTS/VARIABLES. ADD COMMENTS ON TOP OF EACH METHOD AND AT TOP OF THE FILE (SEE EXAMPLE AT THE LAST PAGE).