Mancala Game
I developed this software for an assignment in an AI course at CEng at Middle East Technical University to implement the Alpha-Beta Pruned Search Algorithm.
Installation
- Download and extract mancala.zip. Execute mancala.exe in the extracted Mancala folder.
- Click on the buttons with numbers on them, they represent bins with beads in them. You can change options about rules and computer play.
Rules of the Game
- THE REAL GAME: The buttons represent the bins carved into a wooden block, and the numbers represent the stones placed in these bins.
- 2 PLAYERS: Player1 controls the bottom row of bins and has the store on the right, player2 controls the top row, and owns the other store.
- MOVE: On your turn, you take the stones in one of your six bins; and drop them one by one, starting with the next bin or store, proceeding counter-clockwise. [option: you do not drop into opponent's store.]
- FREE MOVE: If the last stone lands in your store, you go again. * STEAL: If the last stone lands in an empty space on your side, you take the stones that are across from it on your opponent's side, and put them into your store. [option: you steal the piece that landed in the empty space.]
- END: When all the bins on one side become empty, the game ends. * RESULT: Whoever has more stones in his/her/its store, wins.
Program Features
- This program is written using MSVC 6.0, as an excercise, while learning MFC and practicing my AI skills.
- The search engine uses an Alpha-Beta Pruned Search Algorithm.
- The evaluation function for a position is the difference in the stores, plus the maximum possible immediate gains, before the opponent gets his turn.
- To simulate the human play, a randomness variable is introduced for selection of moves. When randomness=0, a move is selected among only the best moves. As randomness increases, the good moves loose weight.
- When the auto-adjust option is on, the computer adjusts its strength in order to minimize the difference b/w the storages.
- This is a single-threaded application. So, do not expect to get a response from your mouse inputs while the engine is searching.