The goal of this project was to implement a Tic Tac Toe application that can play perfectly. It has a number of different features:
- You can choose to play human vs. human, human vs. bot, or bot vs. bot.
- Games of size 4x4 and 5x5 are also available.
- There's one AI that chooses random moves, and another which plays perfectly with the minimax algorithm.
Because it's so computationally intensive, the minimax bot is only allowed to play on the 3x3 board. It's strangely rewarding to watch the two random bots play each other on the larger boards.
I got a lot out of building this project. I was able to refresh my familiarity with Java, and also get practice designing GUIs. Now that I've implemented an app that can play Tic Tac Toe, I can reuse much of the same code for future explorations. My next goal is a Checkers AI that uses alpha-beta pruning.