This is a revised version of the game I previously developed back in 2021. Ultimate Tic Tac Toe is a board game composed of nine tic-tac-toe boards arranged in a 3 × 3 grid. Players take turns playing on the smaller tic-tac-toe boards until one of them wins on the larger board. Compared to traditional tic-tac-toe, strategy in this game is conceptually more difficult and has proven more challenging for computers.
The main features of this project are:
- Rich and friendly UI
- Multiplayer mode
- Unbeatable bot using minimax algorithm
This project is divided into four main branches, reflecting the four main features:
modules
: Main branch where every production-ready changes get merged. Also, it keeps track of the repository's important branches, releases, actions, issues, and pull requests.bot
: The experimental branch where tests and simulations are run on different bots.backend
: The development environment with Express library, Node.js runtime with Firebase as database to save games history or help connect two players in real-time. It will also serve the frontend files from the frontend branch.frontend
: This branch contains the React development environment with build and production files. Checkout this issue for more information: #17
To ensure no merge conflicts occur when developing these separate features, each of this branches will contain only one sub-directory under which their development would take place, except for the modules (main) branch:
- bot: Game/
- backend: Backend/
- frontend: Frontend/
To play the game, you need to clone this repository and install the dependencies using npm install
. Then, you can run the game using npm start
. You can choose to play against another human player or against the bot. The rules of the game are as follows:
- The first player is X and the second player is O.
- On each turn, the player marks one of the small squares within one of the nine sub-boards.
- The choice of sub-board for the next move is determined by the previous move.
- If the sub-board where the next move must be made is already won or tied, then the player can choose any other sub-board instead.
- The game is won by the player who wins three sub-boards in a row (horizontally, vertically, or diagonally), or by the player who wins the most sub-boards if all of them are filled.
Contribution guidelines for this project.
This project is licensed under the {placeholder}
License - see the LICENSE file for details.