Carrom Game was initially developed for Windows 98 with a SuperVGA graphics library sometime back as a hobby project, and later it was converted to OpenGL. However these versions were never published.
The main game progresses as a series of polymorphic commands issued by an object called “Referee”. Referee checks the game status and gets a sequence of appropriate actions from “GameRules” object and issues polymorphic commands to current “Player” object. The player, human or computer implements these commands and returns control back to "Referee".