A simple implementation of tic-tac-toe: You can play with the AI or with a friend. If you get bored you can watch two AI's fighting too.
To participate, select the user mode. As a player, you can select which
position to mark by entering the column (numbers at bottom) and row (numbers on
the left side). See the Example section.
For AI, there is easy, medium, and unbeatable mode.
The easy mode simply makes random moves.
The medium mode AI makes a move using the following process:
- If it can win in one move (if it has two in a row), it places a third to get three in a row and win.
- If the opponent can win in one move, it plays the third itself to block the opponent to win.
- Otherwise, it makes a random move.
The unbeatable mode AI uses minmax
algorithm which makes it unbeatable.
The example below shows how the program works. The greater-than symbol followed
by space (>) represents the user input. Notice that it's not the part of the
input.
Enter mode for Player 1: > user
Enter mode for Player 2: > medium
---------
3 | |
2 | |
1 | |
---------
1 2 3
Enter the coordinates: > 2 2
---------
3 | |
2 | X |
1 | |
---------
1 2 3
Making move level "medium"
---------
3 | |
2 | X |
1 | O |
---------
1 2 3
Enter the coordinates: > 1 3
---------
3 | X |
2 | X |
1 | O |
---------
1 2 3
Making move level "medium"
---------
3 | X |
2 | X |
1 | O O |
---------
1 2 3
Enter the coordinates: > 2 1
---------
3 | X |
2 | X |
1 | O X O |
---------
1 2 3
Making move level "medium"
---------
3 | X O |
2 | X |
1 | O X O |
---------
1 2 3
Enter the coordinates: > 1 2
---------
3 | X O |
2 | X X |
1 | O X O |
---------
1 2 3
Making move level "medium"
---------
3 | X O |
2 | X X O |
1 | O X O |
---------
1 2 3
Enter the coordinates: > 3 3
---------
3 | X O X |
2 | X X O |
1 | O X O |
---------
1 2 3
Draw
Enter mode for Player 1: > medium
Enter mode for Player 2: > user
---------
3 | |
2 | |
1 | |
---------
1 2 3
Making move level "medium"
---------
3 | |
2 | |
1 | X |
---------
1 2 3
Enter the coordinates: > 2 2
---------
3 | |
2 | O |
1 | X |
---------
1 2 3
Making move level "medium"
---------
3 | |
2 | O |
1 | X X |
---------
1 2 3
Enter the coordinates: > 3 1
---------
3 | |
2 | O |
1 | X X O |
---------
1 2 3
Making move level "medium"
---------
3 | X |
2 | O |
1 | X X O |
---------
1 2 3
Enter the coordinates: > 1 2
---------
3 | X |
2 | O O |
1 | X X O |
---------
1 2 3
Making move level "medium"
---------
3 | X |
2 | O O X |
1 | X X O |
---------
1 2 3
Enter the coordinates: > 3 3
---------
3 | X O |
2 | O O X |
1 | X X O |
---------
1 2 3
Making move level "medium"
---------
3 | X X O |
2 | O O X |
1 | X X O |
---------
1 2 3
Draw
Enter mode for Player 1: > exit
This project is licensed under the MIT License. For details, check the LICENSE file.