35.1. The Problem

In this section we deal with a program that allows the user to play REVERSI against the computer. This program: • keeps track of the moves of the game • acts as a referee • plays REVERSI against the user

35.2. Objectives

REVERSI belongs to the class of strategic board games along with CHESS, GO, and other similar games. It has a long tradition just as these others do, even though it slipped into oblivion and was just recently rediscovered. In spite of (or perhaps because of) the relative simplicity of the game in as far as the rules are concerned, the game has an inviting level of complexity.

REVERSI also acts as an example for the kind of game that has no known winning strategy (such as is known for, say, TIC-TAC-TOE); good REVERSI players rely more on heuristics, or rules-of-thumb, to determine what are good moves or game positions. Often, these have the form "in general, you should watch out that . . ." and are mostly imprecise, fuzzy, or are given in such a general fashion that they may not apply to specific game positions. REVERSI shares these properties with Go and CHESS; however, in contrast to these, a REVERSI program is a project whose complexity is reasonable for the scope of this book (although it certainly is towards the top end of the range).

35.3. The Rules of the Game

REVERSI is played on a square 8 X 8 board. Each player has an unlimited number of playing pieces available, each with a black side and a white side (we represent the black side with an "X" and the white side with an "O"). The players take turns; one player using the black side of the pieces and the other using the white side of the piece.