# Package edu.uky.ai.tic

This package provides the game of Tic Tac Toe and the tools for building AI players.

You should start by running `Main`. This program plays some number of games of Tic Tac Toe against two different kinds of bot. Initially, both bots simply choose moves at random.

Your task is to built a more intelligent bot using adversarial game tree search techniques.

To save time, reduce `Main.NUMBER_OF_GAMES` to 10. Then fill in the missing code from `MinMaxBot`. MinMax bot will expand the entire game tree before making its decision. This is possible for a game as small as Tic Tac Toe, but it would not be possible for larger games.

When you are done, change `Main.getXBot()` to return an instance of your new MinMax bot. Now, player X should win or tie every game, but the amount of work required to make decisions is incredibly high.

Now fill in the missing code from `AlphaBetaBot`. This bot uses a modified version of min max search that can prune large portions of the game tree which are irrelevant to making the best decision.

When you are done, change `Main.getXBot()` to return an instance of your new AlphaBeta bot. Player X should still win or tie every game, but the amount of work required to make decisions will be much lower. You should now be able to change `Main.NUMBER_OF_GAMES` back to 100.

- Class Summary
  Class | Description
  --- | ---
  Game | Plays a game of Tic Tac Toe and measures how many moves each player considers during the game.
  Main | Plays `Main.NUMBER_OF_GAMES` games of Tic Tac Toe and reports the results.