[comp.sources.games.bugs] Reve status.

richb@sunaus.oz (Rich Burridge) (11/02/90)

As you've probably seen, Reve (an othello game) has just been posted to
comp.sources.games. Between the time of sending it to Bill, and it's
appearance in csg, several bugs have been fixed. These are listed below.

Rather than post the patch for these right away, I'd also like to include
fixes for any porting problems people have in trying to run Reve on other
equipment.

If you do have to make any changes to get Reve to *just* run on your machine,
please send them to me, and I'll add them to this first patch. Obviously I'm
also interested in bugs you find that aren't on the list below.

In about a weeks time, I'll post this patch to comp.sources.games.bugs.

----------------

Changes/fixes (so far) in patch #1 are:

       * Time allocation function was out by 1. All the levels are shifted
         by 1. This explains why computer move selection at level 1 is so
         "slow".

       * The sandwich routine in makemove.c, was accessing out of bounds
         elements in the square array.

       * The play_reve routine in rev_ip.c, was accessing out-of bounds
         elements in the cpi, cpj and cpk arrays.

       * black_dpy and white_dpy were declared inconsistently in main.c and
         extern.h

       * If you select White->human, then Black->computer, Reve correctly
         plays the black computer move. If you then select Black->human
         followed by White->computer, Reve incorrectly made another move
         for black. There was a similar problem when starting a new game
         with Black being played by computer.

       * Fixed up a few other inconsistencies found by Saber-C.

       * Extraction of the optional X11 display names for the -b and -w
         options in get_options() was incorrect.

       * If you used the suggest button, to get the computer to suggest a
         move, it was decrementing the time allowed for the computer.

       * Adjusted entries 2191 and 2917 of the Reve edge stability table
         (in reve.edge2).

       * Added in the code for a new tree algorithm from Yves (rev_eval.c
         and rev_ip.c).

       * Added a -r command line option, which will write some computer
         move information to a reve.rs file after each computer move. This
         is probably only of use to people trying to improve the computer
         algorithm. The manual pages has been updated.

       * The computer move timing function in rev_ip.c now uses an alarm and
         signal, so should be independent of the machine it's running on.

       * Changed the variable "depth" to "level". As Reve now uses a timing
         function to calculate it's computer moves, "depth" is not a true
         indication of depth.

       * Changed all #include <strings.h> to #include string.h or strings.h
         depending upon whether SYSV was defined.

       * The amount of computer time left for moves is now stored for each
         move, so that if a move is undone against the computer, the previous
         time left value is restored.

       * Added in a -m command line line, which will start up Reve in
         monochrome only, even on a color screen.

       * The last move made is now shown by putting a black square around
         the piece on the board. This is updated when a new move is made. The
         manual pages have been changed to mention this.

       * The "last" panel button has been replaced with a "show all" panel
         button (and rearranged to be alphabetical), which displays all the
         valid moves at any particular time. This is very useful for
         beginners and for teaching purposes. The manual pages have been
         updated to reflect these changes.

       * Added in more hooks for two screen support for the X11 version.

Here's the current TODO list:

1/ Finish off the X11 "two screens on two machines" version. The hooks are
   all in place, but not enough spare time...
   ~ The cursors in x11.c will need to be allocated for each screen
     separately.
   ~ In the process_event routine, only allow the FRAME_REPAINT event
     through if it's now this persons go. Otherwise output a panel message
     telling the user to wait her/his turn.
   ~ Changing the Black: and White: cyclic items should have a null effect
     if dtype is XTWO. Output a message to this effect.
   ~ If dtype is XTWO, then message and draw_piece should output to both
     screens. There are probably other routines where this should be the case.
   ~ There will be a few other places where certain routines will need to
     output to both displays if dtype is XTWO.
 
2/ Allow the computer to play itself. Currently this option is disabled,
   because of the inability with some of the graphics versions to interrupt
   it, once it's started.
 
3/ From Valerie Haecky <vmh@Eng>
   It might be nice to have an additional button for <help>. It pops up an
   alert, giving a short summary of the rules and explaining things, like
   how Difficulty is measured.
 
4/ With the XView version, disable MS_LEFT whilst the computer is having
   its move. At the moment, if you press the left mouse button while the
   computer is doing something, the server will hang.
 
5/ The color icon doesn't display properly with the XView version.

6/ There appears to be a bug with the X11 implementation on an IBM RS6000.
   When the computer moves a piece from the upper-left border to its place,
   a "trace" appears along its path. The color of this trace is the color of
   the background of the screen.