In the last two days I engaged in developing Reversi, just to learn how the minimax algorithm works. To make it easier to share, and remove GUI toolkit dependencies, my approach was using HTML (a simple page with a 8×8 table), three images (empty cell, black or white cells), a CSS file that fills empty cells or used cells, and highlights movement possibilities, and a couple of JavaScript files (jquery, a reversi-board.js file to handle the board as an object, a reversi.js file to handle the interface between the board and the HTML file, and finally a minimax.js file to handle the minimax algorithm.
At the moment the game is playable, and not too slow. The code can be optimized to make it faster. In the next couple of days I might do that.
Also, regarding the AI code, it can be made better. In one side, the minimax algorithm can try to analyze more moves in advance (only three at the moment), in the other, the board evaluation function can be made better as well.
If you wish to play, go ahead: http://eremita.di.uminho.pt/~ambs/reversi
As expected, others did this before. For instance, check http://davidbau.com/reversi/. Mine has some nicer things, this has some others. But my goal wasn’t to make something new, just to try out the minimax algorithm.