Revised Requirements Specifications

Places where the problem set was unclear:

The problem set mentions that the machine_player should play better at higher levels than at lower levels, but never mentions what the range of valid level numbers are. Therefore, we have arbitrarily decided that the skill level of the machine player will range from 1 to 5.

Another place where the problem set was unclear was whether the "name" and "time-left" commands are only for setting the human player's name and time, or whether they should be able to set the name and time for both players. When asked to clarify this, Leo said that probably both players' info should be changeable, so we have extended the commands recognized by antichess to include "name-other" and "time-left-other" in addition to the commands listed on page 9 of the problem set.

The user interface

The problem set leaves the details of the user interface mostly unspecified. We have decided that the program will accept both keyboard input and mouse input.

When typing input, the user types a single line of input and presses return. That line on input may be either a valid move string as described on page 8 of the problem set, or it may be a command. To enter a command, the user types the name of the command as listed on page 9 of the problem set (or one of the two additional commands mentioned above). For the "new" and "quit" commands, the command name should appear alone on the line. All of the other commands require a single argument, and for those commands the line should consist of the command name, one or more blank spaces, and the argument.

The user can also do all of these things using the mouse. To make a move, the user can press down the mouse button while the mouse cursor is on the piece the user wishes to move, and then drag the mouse to the destination square, and release the mouse button. The user can also execute commands with the mouse. For each command listed on page 9, plus the two commands mentioned above, there will be a button in the antichess window. For the commands that require an argument, clicking on the button will make a text box appear to accept the input.