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.