|
| 1 | +<h1 align="center">⚫ Othello/Reversi ⚪ </h1> |
| 2 | + |
| 3 | +A GUI-equipped, [Othello/Reversi](https://www.worldothello.org/about/about-othello/othello-rules/official-rules/english) game made in **Python3** using the `pygame` library. Featuring two-player as well as Play with Computer modes. |
| 4 | + |
| 5 | +## 📜 Description |
| 6 | +Othello is a board-game played on a 8x8 board, with 64 discs that are black on one side and white on the other. Each player gets 32 such discs, out of which 2 from each player are kept on the board in the following manner: |
| 7 | + |
| 8 | + |
| 9 | + |
| 10 | +<br> |
| 11 | + |
| 12 | +A move consists of "outflanking" your opponent's disc(s), then flipping the "outflanked" disc(s) to your color. |
| 13 | +To outflank means, if your disc is kept on square X, and you have another disc on square Y, such that: |
| 14 | +- X and Y lie on the same row, or |
| 15 | +- X and Y lie on the same column, or |
| 16 | +- X and Y lie on the same diagonal, |
| 17 | + |
| 18 | +If any one (or more) of the above is the case while playing, then the Opponent's discs between X and Y get flipped to your color. |
| 19 | + |
| 20 | +<br> |
| 21 | + |
| 22 | +Example: |
| 23 | + |
| 24 | +> Here White disc A was already present on the board, after placing White disc B, the row of Black discs between White disc A and B got outflanked, |
| 25 | +
|
| 26 | + |
| 27 | + |
| 28 | +> And thus the outflanked Black discs flipped to White. |
| 29 | +
|
| 30 | + |
| 31 | + |
| 32 | +For a more comprehensive explanation of the game rules, check out this [link](https://www.worldothello.org/about/about-othello/othello-rules/official-rules/english). |
| 33 | + |
| 34 | +<br> |
| 35 | + |
| 36 | +### 🎯 Game Modes |
| 37 | + |
| 38 | +#### ⚔ Two-Player Mode |
| 39 | +Two players can play the game, alternating their turns. |
| 40 | + |
| 41 | +#### 🤖 Play with Computer |
| 42 | +Play with the computer! It makes use of the minimax algorithm with alpha-beta pruning. |
| 43 | + |
| 44 | +Currently the algorithm makes use of the following heuristics for a position's evaluation: |
| 45 | +- Coin parity |
| 46 | +- Mobility |
| 47 | +- Corner Values |
| 48 | + |
| 49 | +### How to Play the Game 🎮 |
| 50 | +1. Download the source code. (Either clone the repository or download the whole code from GitHub) |
| 51 | +2. Make sure to install Python3 on your Computer along with `pip`. (Python3.10+ is required) |
| 52 | +3. Open your terminal, navigate to `~/PYTHON-BEGINNER-PROJECTS/projects/Othello` and type the command: |
| 53 | + ``` |
| 54 | + pip install -r requirements |
| 55 | + ``` |
| 56 | +5. Navigate to the `src` directory, run the `main.py` file and play the game! |
| 57 | +> P.S. You can change color modes using the 'L' key! |
0 commit comments