Have a look at all the checks that are done. Add constants for useless ones. Look at what should be static Detect end of game. This will be done with heuristics because number of pieces on the games will be a parameter of the heuristic function. Be able to let the computer play against himself. I haven't implemented the draw at all !!! Allow undo. Improve speed by adding a function : is there a legal move ?