November 9, 2008

Project: DOthello

DOthello is my implementation of the classic Othello (aka Reversi) board game. The starting point of the project was an AI lab assignment regarding game trees (minmax, alpha-beta pruning, etc). I've decided not only to implement these algorithms but also incorporate them into a fun and easy to use application. DOthello has a quick in-game save and load mechanism and the position of the game board can be adjusted by selecting its margin and dragging it.
The program was written in Delphi and for the graphics part I've used OpenGL. For DOthello, I've also designed my own meshes and textures.
The game features the following AI players:
1. Dazzy - a random player;
2. Jabba - an alpha-beta player with a mainly greedy evaluation function
3. Bugzy - an alpha-beta player with a mainly very basic mobility based evaluation function;
4. BOB - an alpha-beta player with with a mobility function that combines basic mobility with piece count and weighted positions;
5. Dexter - an alpha-beta player with a slightly more advance mobility limiting evaluation function that also relies on piece count and weighted positions; 

All AI's perform searches to a depth of 5 ply in early and midgame and 13 ply in endgame. Here are two snapshots from the application:

I don't think that any experienced Othello player would have a problem in defeating all of these AI's easily as they are fairly basic, but for a novice the game should be rather interesting.
I submitted DOthello to FDAC on delphi.about a few months back. You can download a fully working version of DOthello (source code and resources included) by clicking here or from my Downloads box (

Application platform: Win32 + OpenGL support


Anonymous said...

The graphics of this game ROCK!!! Please make at least 1 undefeatable AI.

Ciprian said...

Thank you very much. As time will allow me, I'll try to go back on this project and design a better AI :)).