1 REVE An othello game. SYNOPSIS $ reve [ -animate ] [ -bestmove ] [ -black ] [ -clock ] [ -d difficulty ] [ -e edgefile ] [ -g geometry ] [ -h helpfile ] [ -help ] [ -i ] [ -last ] [ -load gamefile ] [ -log ] [ -m ] [ -notes ] [ -number ] [ -opponent user@host ] [ -props ] [ -quick ] [ -r reve_proc ] [ -v ] [ -white ] [ -? ] [ -Wi ] [ -Wp x y ] [ -WP x y ] 2 DESCRIPTION Reve is a version of the popular Othello game. It contains graphical interfaces for SunView, X11 and XView, as well as being able to function on normal display terminals using a termcap interface. Reve is played on an 8 x 8 board, with stones which should be considered to be black on one side and white on the other. A legal move consists of placing a stone of one's own color on the board so as to "sandwich" one or more rows (orthogonal or diagonal) of stones of the opposite color between the stone just placed and another stone of the same color. All stones so sandwiched are flipped over to reveal the color of the other side (your own color). The object of the game, is to have more stones than the opponent at the end of the game (ie. when the board is full or neither side has a legal move). If you have no legal move, you simply miss a turn. Black goes first. With reve, to place one of your own stones simply click with the mouse over the square in which you want your stone to go. Note that it is also possible to supply a number and a letter pair, to indicate where you would like your new stone to go. This is the only method to place stones with the dumb tty interface. The square containing the last move will be shown with a black outline. This is updated with each new move. If you hold the mouse button down as you move around the board, the square you are currently over will be highlighted. There are various buttons, choice, toggles and cyclic selec- tions available. Their meanings are given below, plus an indication of their keyboard equivalents. With the cyclic selections, clicking over the left half of the cycle item increments the selection, and clicking over the right half of the cycle item decrements the selection. Control-l is a keyboard accelerator for redrawing the reve windows. By default, a human will play black, and the computer will play white. If you want a human vs human startup or some other combination, then you should use the appropriate com- mand line options (see below). 2 REVE_BUTTONS With the graphics versions, there are ten buttons that are normally displayed at the top of the reve window. Each of these buttons, has a keyboard equivalent which is given in brackets below. Note that the XView version has a slightly different appearance, but it should be easy to deduce what each option does. load [ L ] Load a game file. The format of this game file is given below. With the graphical versions, a text field is displayed between the done and quit buttons for you to enter the filename of this game file. Clicking over the cancel button or press- ing the Escape key will cancel the load operation. When you press the Return key, filename entry is complete, and the pro- gram will try to load this file. If it's unsuccessful, it will stop on the invalid line, and display an error message. As each line is successfully read from the game file, the stone is displayed on the board, and the appropriate stones flipped. moves? [ A ] Show all the valid moves for the current board. This is useful for beginners, and for teaching purposes. new game [ n ] Start a new game of reve help [ H ] Display a window containing the online reve help information. A cycle at the top of this window allows you to page through this file. redo [ r ] Redo the last "move". If the opponent is the computer, then two "moves" are redone. A "move" is considered to be all consecu- tive moves by the opponent. To redo a move, you must have undone a move. props [ p ] Display a property sheet containing choices and toggles which will alter vari- ous reve properties. save [ S ] Save the current game to file. See the entry for the load button above for details of how to enter the filename. suggest [ s ] Let the computer suggest a good move for you. This move will be dependent upon the current level of difficulty set. print [ P ] Print the current game to a PostScript printer. The default print command is "trans | lpr", but this can be over-ridden for the X11 and XView versions with an X resource (see below). undo [ u ] Undo the last "move". If the opponent is the computer, then two "moves" are undone. A "move" is considered to be all previous consecutive moves by the opponent. quit [ q ] Exit the reve program. 2 REVE_PROPERTY_SHEET_SELECTIONS With the graphical versions, there is a property sheet win- dow which can be displayed. The property sheet has two choice items, one cyclic item, and six toggle items. Click with the left mouse button over the option you want from the choice items. With the cyclic items, click with the left mouse button over the appropriate half, to either increment or decrement the current value. Clicking left over the tog- gle item boxes, will toggle the value of that item on or off. The choice and toggle items also have keyboard equivalents which are given in brackets below. The choice items must be followed by the value of the new selection you wish to make. The dumb tty version has the equivalent of these items displayed to the right of the reve board display. Computer plays: [ C ] A choice item which selects what color[s] the computer should play. The keyboard equivalents are 'b' for black, 'w' for white, 'n' for neither, and 'a' for all (both). Difficulty: [ D ] A choice item which sets the degree of difficulty for the computers moves. Key- board selection values are in the range '1' to '9'. The computer move is deter- mined on a time basis. The degree of dif- ficulty determines the total amount of time that the computer will take to make all its moves. Here are the time periods for each level of difficulty: Difficulty Time 1 Time allocation disabled (fast simple move). 2 1 minutes. 3 3 minutes. 4 5 minutes. 5 10 minutes. 6 15 minutes. 7 20 minutes. 8 30 minutes. 9 60 minutes. Level eight is tournament level. Set search depth: [ No keyboard equivalent ] A cyclic item which sets the maximum search depth for each and every computer move. By default this option is turned off, and the computer uses a clock to time it's moves. Depending on where in the game you are, the search depth usually varies by one or two plys. Turning on this option disables the clock. Animate move option. [ O followed by a or A ] A toggle item for animating the computer move and the dragging of human pieces. Show current best move option. [ O followed by b or B ] A toggle item for showing the current best move as the computer makes it's move. Show last move option. [ O followed by l or L ] A toggle item for outlining the square containing the last move. Show evaluation information option. [ O followed by e or E ] A toggle item for displaying evaluation information for each computer move. In short, a positive number indicates a good move for the computer, and a negative number is good for the opponent. The evaluation information also includes the depth to which the computer searched for it's move. If that depth value is nega- tive, it indicates the search was not com- pleted at that depth, due to the timer expiring. Number last move option. [ O followed by n or N ] A toggle item for number the last move stone. Don't show flip option. [ O followed by f or F ] A toggle item to prevent the flip of the stones as a turn is completed. Invalid move shows legal moves option. [ O followed by m or M ] A toggle item which will show all the pos- sible legal moves if the user makes an invalid move. Use Clocks to Time Moves. [ O followed by c or C ] A toggle item to display timer clocks for each player. If timer clocks are shown, then each player is allowed a certain amount of time to play all their moves. This amount of time depends on the current level of difficulty. 2 OPTIONS -animate Show animation. The computer's stone will glide in from the top left corner of the board, and when you hold the left mouse button down, your stone is dragged around. -bestmove As the computer is making it's move, continually show the position of the best move found so far. -black Black will be played by a human. -clock Display clocks to time each move. A total amount of time is allowed for each player depending upon the level of difficulty. When that time has expired, then the game is over. -d difficulty The level of difficulty for computer moves. See the Difficulty: cyclic item description above for more information. -e edgefile Specify an alternate location for the reve edge stabil- ity table file. Normally the location of this file is compiled in when the program is created, but reve will search every directory on your search path looking file a file called reve.edgetable. -g geometry Used with the X11 variant of reve to give geometry information. -h helpfile Specify an alternate location for the reve online help file. Normally the location of this file is compiled in when the program is created, but reve will search every directory on your search path looking file a file called reve.help. -help Initially show the reve help window. -i Invert the reve window before displaying it. For use by people who started their graphics environment in inverse mode. This option is currently only implemented for the SunView version. -last Show where the last stone was placed, by outlining the square. -load gamefile Load a game file. The format of this game file is given below. The board will be setup with these stones. -log Save a log of computer move information to the file reve.res as the game progresses. This information is probably only useful to people trying to improve the computer algorithm. -m Always display in monochrome, even on a color screen. -notes Display computer notes. -number Show the move number on the last stone placed. -opponent user@host Play a game against another human on another networked machine. Reve will send an invitation to that person asking if the want to play, and they will then invoke reve on their machine (using your username and host- name), and the connection is established. Note that both machines need to have the reve network daemon con- figured. See the README file for information on how to do this. -props Initially show the reve property window. -quick Play a quick game. Don't flash the stones as they are being turned. -r reve_proc Full pathname of the computer strategy reve_proc pro- gram. -? Print the version number and usage message for this release of the reve program. -v Print the version number and usage message for this release of the reve program. -white White will be played by a human. -Wi Start the reve program up in iconic form. The SunView and XView version of reve will automatically uses this flag, but the X11 version will also. -Wp x y Start the open window position at x y -WP x y Start the icon position at x y 2 RESOURCES On startup, the X11 and XView version of reve will use the following X resources. These resources can be placed in all the normal X places. You can also set a REVEDEFAULTS environment variable to point to a file containing them, or place them in a .reverc file in your home directory. Resource: reve.animate Values: True, False (False) Description Indicates whether various animation effects are shown. Resource: reve.bestmove Values: True, False (False) Description Indicates whether to continually show the best move so far, as the computer is making it's move. Resource: reve.boardSize Values: Board size (numeric) Description The initial size in pixels of the reve game board. Resource: reve.difficulty Values: Difficulty value (numeric) Description The computer difficulty level. Resource: reve.last Values: True, False (False) Description Indicates whether the position of the last stone placed is shown by a square. Resource: reve.log Values: True, False (False) Description Indicates whether to save a log of computer information to the file reve.res/ Resource: reve.notes Values: True, False (False) Description Indicates whether todisplay computer notes. Resource: reve.number Values: True, False (False) Description Indicates whether the last stone placed in numbered. Resource: reve.quick Values: True, False (False) Description Indicates whether a quick game should be played. Stones are not flashed as they are placed, if this resource is set true. Resource: reve.properties Values: True, False (False) Description Indicates whether the properties window is initially displayed. Resource: reve.showClocks Values: True, False (False) Description Indicates whether timer clocks for each player are initially displayed. Resource: reve.showHelp Values: True, False (False) Description Indicates whether the online help window is initially displayed. Resource: reve.showLegalMoves Values: True, False (False) Description Indicates whether an invalid move should show all legal moves. Resource: reve.iconiseForOpponentMove Values: True, False (False) Description Indicates whether the reve window should be closed during the opponents move. Resource: reve.bellAfterOpponentMove Values: True, False (False) Description Indicates whether there should be a beep sounded after the opponents move. Resource: reve.raiseAfterOpponentMove Values: True, False (False) Description Indicates whether the reve window should be automatically raised to the top after the opponents move. Resource: reve.panelColor Values: Color name string or hexadecimal color specification string Description The background color of the main and property panels. Resource: reve.boardColor Values: Color name string or hexadecimal color specification string Description The color of the reve playing board. Resource: reve.boardBorderColor Values: Color name string or hexadecimal color specification string Description The border color of the reve playing board. Resource: reve.gridColor Values: Color name string or hexadecimal color specification string Description The color of the grid lines on the reve play- ing board. Resource: reve.textColor Values: Color name string or hexadecimal color specification string Description The color of all text panel text items. Resource: reve.itemColor Values: Color name string or hexadecimal color specification string Description The background color of the button and cycle items. Resource: reve.blackStoneColor Values: Color name string or hexadecimal color specification string Description The color of the "black" stones. Resource: reve.whiteStoneColor Values: Color name string or hexadecimal color specification string Description The color of the "white" stones. Resource: reve.blackStoneName Values: Black stone name string Description The name to be displayed in all "black" stone messages. Resource: reve.whiteStoneName Values: White stone name string. Description The name to be displayed in all "white" stone messages. Resource: reve.printCommand Values: Print command string Description The print command to use to print reve game transcripts. Resource: reve.boardFont Values: Font name string Description The name of the font used to display text on the reve game board. Resource: reve.boldFont Values: Font name string Description The name of the font used to display bold text. Resource: reve.helpFont Values: Font name string Description The name of the font used to display the online help information. Resource: reve.normalFont Values: Font name string Description The name of the font used to display normal text. 2 REVE_GAMES_FILE_FORMAT Reve has the ability to load or save games. The format of the games files are: 1, - [ remarks field ] 2, - [ remarks field ] There is one move per line. Lines starting with a '#' and blank lines are ignored. The first field of each line is the move number. This will be present before the comma. It is used as a consistency check. Next are the black and white fields. If the '<' character is present before the white. The three characters between the '<' and '>' are the move, and give the column and row. The column letter can be in either lower or upper case. It is possible for one player to have two or more consequen- tive moves, hence the need for the above scheme. Reve is flexible about white space (except between the '<' and '>' characters). The remarks field is ignored. The program will stop on the first line it thinks is in error, and display the reason for this. As valid lines are read from a game file, the board is updated. 2 FILES CENA_X:reve.edgetable CENA_X:reve.help 2 AUTHORS Computer strategy: Yves Gallot (no net address at present). Graphics interface: Rich Burridge richb@Aus.Sun.COM 2 VMS_PORT Patrick Moreau, CENA/Athis-Mons, FRANCE (pmoreau@ada.cenaath.cena.dgac.fr)