richb@sunaus.oz (Rich Burridge) (12/10/90)
------CUT HERE------ patch3 - part7 ------CUT HERE------
------- rev_eval.c -------
*** /tmp/da07623 Sun Dec 9 15:17:12 1990
--- rev_eval.c Wed Dec 5 10:37:09 1990
***************
*** 47,65 ****
int niv ;
{
register int *d, *p ;
! register int i, x, y ;
register long note ;
register int vp, vo ;
register long tnote, cx ;
d = damier[niv] ;
if (mnb > 60 - profmax)
{
note = 0 ;
for (p = &d[0]; p < &d[64]; p++)
! if (*p == macouleur) note++ ;
! else if (*p == tacouleur) note-- ;
return(note) ;
}
else
--- 47,67 ----
int niv ;
{
register int *d, *p ;
! register int i, x, y, tc, mc ;
register long note ;
register int vp, vo ;
register long tnote, cx ;
d = damier[niv] ;
+ tc = tacouleur ;
+ mc = macouleur ;
if (mnb > 60 - profmax)
{
note = 0 ;
for (p = &d[0]; p < &d[64]; p++)
! if (*p == mc) note++ ;
! else if (*p == tc) note-- ;
return(note) ;
}
else
***************
*** 66,73 ****
{
x = y = 0 ;
for (p = &d[0]; p < &d[64]; p++)
! if (*p == macouleur) x++ ;
! else if (*p == tacouleur) y++ ;
if (x == 0) return(-100000000) ;
if (y == 0) return( 100000000) ;
--- 68,75 ----
{
x = y = 0 ;
for (p = &d[0]; p < &d[64]; p++)
! if (*p == mc) x++ ;
! else if (*p == tc) y++ ;
if (x == 0) return(-100000000) ;
if (y == 0) return( 100000000) ;
***************
*** 78,163 ****
for (p = &d[0]; p < &d[8]; p++)
{
i += i + i ;
! if (*p == FREE) i++ ;
! else if (*p == macouleur) i += 2 ;
}
note = edges[i] ;
- if (((i == 2191) && (d[13] == macouleur)) ||
- ((i == 2917) && (d[10] == macouleur)) ||
- ((i == 3643) && (d[10] == tacouleur)) ||
- ((i == 4369) && (d[13] == tacouleur)))
- note -= edges[i] ;
-
i = 0 ;
for (p = &d[56]; p < &d[64]; p++)
{
i += i + i ;
! if (*p == FREE) i++ ;
! else if (*p == macouleur) i += 2 ;
}
note += edges[i] ;
- if (((i == 2191) && (d[53] == macouleur)) ||
- ((i == 2917) && (d[50] == macouleur)) ||
- ((i == 3643) && (d[50] == tacouleur)) ||
- ((i == 4369) && (d[53] == tacouleur)))
- note -= edges[i] ;
-
i = 0 ;
for (p = &d[0]; p < &d[64]; p += 8)
{
i += i + i ;
! if (*p == FREE) i++ ;
! else if (*p == macouleur) i += 2 ;
}
note += edges[i] ;
- if (((i == 2191) && (d[41] == macouleur)) ||
- ((i == 2917) && (d[17] == macouleur)) ||
- ((i == 3643) && (d[17] == tacouleur)) ||
- ((i == 4369) && (d[41] == tacouleur)))
- note -= edges[i] ;
-
i = 0 ;
for (p = &d[7]; p < &d[64]; p += 8)
{
i += i + i ;
! if (*p == FREE) i++ ;
! else if (*p == macouleur) i += 2 ;
}
note += edges[i] ;
- if (((i == 2191) && (d[46] == macouleur)) ||
- ((i == 2917) && (d[22] == macouleur)) ||
- ((i == 3643) && (d[22] == tacouleur)) ||
- ((i == 4369) && (d[46] == tacouleur)))
- note -= edges[i] ;
-
cx = 8 * (50 - mnb - profmax) ;
if (d[0] == FREE)
{
! if (d[9] == macouleur) note -= cx ;
! else if (d[9] == tacouleur) note += cx ;
}
if (d[7] == FREE)
{
! if (d[14] == macouleur) note -= cx ;
! else if (d[14] == tacouleur) note += cx ;
}
if (d[56] == FREE)
{
! if (d[49] == macouleur) note -= cx ;
! else if (d[49] == tacouleur) note += cx ;
}
if (d[63] == FREE)
{
! if (d[54] == macouleur) note -= cx ;
! else if (d[54] == tacouleur) note += cx ;
}
tnote = c1 * note + c2 * (long) 1000 * (vp0 - vo0) / (vp0 + vo0 + 2) ;
--- 80,141 ----
for (p = &d[0]; p < &d[8]; p++)
{
i += i + i ;
! if (*p == FREE) i++ ;
! else if (*p == mc) i += 2 ;
}
note = edges[i] ;
i = 0 ;
for (p = &d[56]; p < &d[64]; p++)
{
i += i + i ;
! if (*p == FREE) i++ ;
! else if (*p == mc) i += 2 ;
}
note += edges[i] ;
i = 0 ;
for (p = &d[0]; p < &d[64]; p += 8)
{
i += i + i ;
! if (*p == FREE) i++ ;
! else if (*p == mc) i += 2 ;
}
note += edges[i] ;
i = 0 ;
for (p = &d[7]; p < &d[64]; p += 8)
{
i += i + i ;
! if (*p == FREE) i++ ;
! else if (*p == mc) i += 2 ;
}
note += edges[i] ;
cx = 8 * (50 - mnb - profmax) ;
if (d[0] == FREE)
{
! if (d[9] == mc) note -= cx ;
! else if (d[9] == tc) note += cx ;
}
if (d[7] == FREE)
{
! if (d[14] == mc) note -= cx ;
! else if (d[14] == tc) note += cx ;
}
if (d[56] == FREE)
{
! if (d[49] == mc) note -= cx ;
! else if (d[49] == tc) note += cx ;
}
if (d[63] == FREE)
{
! if (d[54] == mc) note -= cx ;
! else if (d[54] == tc) note += cx ;
}
tnote = c1 * note + c2 * (long) 1000 * (vp0 - vo0) / (vp0 + vo0 + 2) ;
***************
*** 167,173 ****
for (y = 0; y < 8; y++)
{
i = (x << 3) + y ;
! if (d[i] == tacouleur)
{
if ((x > 0) && (d[i - 8] == FREE)) vp++ ;
else if ((x < 7) && (d[i + 8] == FREE)) vp++ ;
--- 145,151 ----
for (y = 0; y < 8; y++)
{
i = (x << 3) + y ;
! if (d[i] == tc)
{
if ((x > 0) && (d[i - 8] == FREE)) vp++ ;
else if ((x < 7) && (d[i + 8] == FREE)) vp++ ;
***************
*** 178,184 ****
else if ((x > 0) && (y < 7) && (d[i - 7] == FREE)) vp++ ;
else if ((x < 7) && (y < 7) && (d[i + 9] == FREE)) vp++ ;
}
! if (d[i] == macouleur)
{
if ((x > 0) && (d[i - 8] == FREE)) vo++ ;
else if ((x < 7) && (d[i + 8] == FREE)) vo++ ;
--- 156,162 ----
else if ((x > 0) && (y < 7) && (d[i - 7] == FREE)) vp++ ;
else if ((x < 7) && (y < 7) && (d[i + 9] == FREE)) vp++ ;
}
! if (d[i] == mc)
{
if ((x > 0) && (d[i - 8] == FREE)) vo++ ;
else if ((x < 7) && (d[i + 8] == FREE)) vo++ ;
***************
*** 200,222 ****
i = (x << 3) + y ;
if (d[i] == FREE)
{
! if ((x > 0) && (d[i - 8] == tacouleur)) vp++ ;
! else if ((x < 7) && (d[i + 8] == tacouleur)) vp++ ;
! else if ((y > 0) && (d[i - 1] == tacouleur)) vp++ ;
! else if ((y < 7) && (d[i + 1] == tacouleur)) vp++ ;
! else if ((x > 0) && (y > 0) && (d[i - 9] == tacouleur)) vp++ ;
! else if ((x < 7) && (y > 0) && (d[i + 7] == tacouleur)) vp++ ;
! else if ((x > 0) && (y < 7) && (d[i - 7] == tacouleur)) vp++ ;
! else if ((x < 7) && (y < 7) && (d[i + 9] == tacouleur)) vp++ ;
! if ((x > 0) && (d[i - 8] == macouleur)) vo++ ;
! else if ((x < 7) && (d[i + 8] == macouleur)) vo++ ;
! else if ((y > 0) && (d[i - 1] == macouleur)) vo++ ;
! else if ((y < 7) && (d[i + 1] == macouleur)) vo++ ;
! else if ((x > 0) && (y > 0) && (d[i - 9] == macouleur)) vo++ ;
! else if ((x < 7) && (y > 0) && (d[i + 7] == macouleur)) vo++ ;
! else if ((x > 0) && (y < 7) && (d[i - 7] == macouleur)) vo++ ;
! else if ((x < 7) && (y < 7) && (d[i + 9] == macouleur)) vo++ ;
}
}
--- 178,200 ----
i = (x << 3) + y ;
if (d[i] == FREE)
{
! if ((x > 0) && (d[i - 8] == tc)) vp++ ;
! else if ((x < 7) && (d[i + 8] == tc)) vp++ ;
! else if ((y > 0) && (d[i - 1] == tc)) vp++ ;
! else if ((y < 7) && (d[i + 1] == tc)) vp++ ;
! else if ((x > 0) && (y > 0) && (d[i - 9] == tc)) vp++ ;
! else if ((x < 7) && (y > 0) && (d[i + 7] == tc)) vp++ ;
! else if ((x > 0) && (y < 7) && (d[i - 7] == tc)) vp++ ;
! else if ((x < 7) && (y < 7) && (d[i + 9] == tc)) vp++ ;
! if ((x > 0) && (d[i - 8] == mc)) vo++ ;
! else if ((x < 7) && (d[i + 8] == mc)) vo++ ;
! else if ((y > 0) && (d[i - 1] == mc)) vo++ ;
! else if ((y < 7) && (d[i + 1] == mc)) vo++ ;
! else if ((x > 0) && (y > 0) && (d[i - 9] == mc)) vo++ ;
! else if ((x < 7) && (y > 0) && (d[i + 7] == mc)) vo++ ;
! else if ((x > 0) && (y < 7) && (d[i - 7] == mc)) vo++ ;
! else if ((x < 7) && (y < 7) && (d[i + 9] == mc)) vo++ ;
}
}
***************
*** 229,251 ****
i = (x << 3) + y ;
if (d[i] == FREE)
{
! if ((x > 0) && (d[i - 8] == tacouleur)) vp++ ;
! if ((x < 7) && (d[i + 8] == tacouleur)) vp++ ;
! if ((y > 0) && (d[i - 1] == tacouleur)) vp++ ;
! if ((y < 7) && (d[i + 1] == tacouleur)) vp++ ;
! if ((x > 0) && (y > 0) && (d[i - 9] == tacouleur)) vp++ ;
! if ((x < 7) && (y > 0) && (d[i + 7] == tacouleur)) vp++ ;
! if ((x > 0) && (y < 7) && (d[i - 7] == tacouleur)) vp++ ;
! if ((x < 7) && (y < 7) && (d[i + 9] == tacouleur)) vp++ ;
! if ((x > 0) && (d[i - 8] == macouleur)) vo++ ;
! if ((x < 7) && (d[i + 8] == macouleur)) vo++ ;
! if ((y > 0) && (d[i - 1] == macouleur)) vo++ ;
! if ((y < 7) && (d[i + 1] == macouleur)) vo++ ;
! if ((x > 0) && (y > 0) && (d[i - 9] == macouleur)) vo++ ;
! if ((x < 7) && (y > 0) && (d[i + 7] == macouleur)) vo++ ;
! if ((x > 0) && (y < 7) && (d[i - 7] == macouleur)) vo++ ;
! if ((x < 7) && (y < 7) && (d[i + 9] == macouleur)) vo++ ;
}
}
--- 207,229 ----
i = (x << 3) + y ;
if (d[i] == FREE)
{
! if ((x > 0) && (d[i - 8] == tc)) vp++ ;
! if ((x < 7) && (d[i + 8] == tc)) vp++ ;
! if ((y > 0) && (d[i - 1] == tc)) vp++ ;
! if ((y < 7) && (d[i + 1] == tc)) vp++ ;
! if ((x > 0) && (y > 0) && (d[i - 9] == tc)) vp++ ;
! if ((x < 7) && (y > 0) && (d[i + 7] == tc)) vp++ ;
! if ((x > 0) && (y < 7) && (d[i - 7] == tc)) vp++ ;
! if ((x < 7) && (y < 7) && (d[i + 9] == tc)) vp++ ;
! if ((x > 0) && (d[i - 8] == mc)) vo++ ;
! if ((x < 7) && (d[i + 8] == mc)) vo++ ;
! if ((y > 0) && (d[i - 1] == mc)) vo++ ;
! if ((y < 7) && (d[i + 1] == mc)) vo++ ;
! if ((x > 0) && (y > 0) && (d[i - 9] == mc)) vo++ ;
! if ((x < 7) && (y > 0) && (d[i + 7] == mc)) vo++ ;
! if ((x > 0) && (y < 7) && (d[i - 7] == mc)) vo++ ;
! if ((x < 7) && (y < 7) && (d[i + 9] == mc)) vo++ ;
}
}
***************
*** 254,256 ****
--- 232,235 ----
return(tnote / 1000) ;
}
}
+
------- rev_ip.c -------
*** /tmp/da07626 Sun Dec 9 15:17:13 1990
--- rev_ip.c Sat Dec 8 18:12:25 1990
***************
*** 23,34 ****
#include <signal.h>
#include <setjmp.h>
#include <sys/types.h>
- #ifdef SYSV
- #include <sys/times.h>
- #else
- #include <sys/time.h>
- #endif /*SYSV*/
-
#include "reve.h"
extern int saveres ;
--- 23,28 ----
***************
*** 35,41 ****
extern time_t timeleft, time() ;
extern int damier[NIVEAUMAX][64] ;
extern int tacouleur, macouleur ;
! extern int mnb, profmax ;
extern long c1, c2, c3 ;
/* Reve structure. Play_Reve evaluates a board and returns a move and a note
--- 29,35 ----
extern time_t timeleft, time() ;
extern int damier[NIVEAUMAX][64] ;
extern int tacouleur, macouleur ;
! extern int mnb, profmax, max_depth ;
extern long c1, c2, c3 ;
/* Reve structure. Play_Reve evaluates a board and returns a move and a note
***************
*** 167,173 ****
if (d0[cpk[cp]] == JPJ) k++ ;
count = note = cpmax = 0 ;
! timeused = profmax = 1 ;
if (((k == 1) && (mnb < 52)) || (mnb == 1))
{
--- 161,168 ----
if (d0[cpk[cp]] == JPJ) k++ ;
count = note = cpmax = 0 ;
! timeused = 1 ;
! profmax = max_depth - 1 ;
if (((k == 1) && (mnb < 52)) || (mnb == 1))
{
***************
*** 221,227 ****
}
else
{
! allotime = timeleft * 3 / (61 - mnb) ;
firsttime = time((time_t *) NULL) ;
cpmaxi[0] = cpmaxi[1] = cpmaxi[2] = cpmaxi[3] = 0 ;
--- 216,222 ----
}
else
{
! allotime = timeleft * 4 / (61 - mnb) ;
firsttime = time((time_t *) NULL) ;
cpmaxi[0] = cpmaxi[1] = cpmaxi[2] = cpmaxi[3] = 0 ;
***************
*** 378,384 ****
--- 373,383 ----
{
if (d0[cpk[cp]] == TPJ)
{
+ #ifdef hp9000s300
+ for (k = 0; k < 64; k++) damier[niv + 1][k] = damier[niv][k] ;
+ #else
for (k = 0; k < 64; k++) d1[k] = d0[k] ;
+ #endif
tujouesen(cpi[cp], cpj[cp], niv + 1) ;
if (niv == profmax) lnote = evalue(niv + 1) ;
else if (jepeuxjouer(niv + 1) == TRUE)
***************
*** 427,433 ****
--- 426,436 ----
{
if (d0[cpk[cp]] == JPJ)
{
+ #ifdef hp9000s300
+ for (k = 0; k < 64; k++) damier[niv + 1][k] = damier[niv][k] ;
+ #else
for (k = 0; k < 64; k++) d1[k] = d0[k] ;
+ #endif
jejoueen(cpi[cp], cpj[cp], niv + 1) ;
if (niv == profmax) lnote = evalue(niv + 1) ;
else if (tupeuxjouer(niv + 1) == TRUE)
------- reve.man -------
*** /tmp/da07629 Sun Dec 9 15:17:14 1990
--- reve.man Sun Dec 9 14:35:12 1990
***************
*** 1,5 ****
.\" %Z%%M% %I% %E%
! .TH REVE 6 "18 October 1990"
.SH NAME
reve \- an othello game.
.SH SYNOPSIS
--- 1,5 ----
.\" %Z%%M% %I% %E%
! .TH REVE 6 "29 November 1990"
.SH NAME
reve \- an othello game.
.SH SYNOPSIS
***************
*** 7,12 ****
--- 7,14 ----
[
.B \-animate
] [
+ .B \-bestmove
+ ] [
.B \-black
.I [ display ]
] [
***************
*** 28,33 ****
--- 30,37 ----
.B \-load
.I gamefile
] [
+ .B \-log
+ ] [
.B \-m
] [
.B \-notes
***************
*** 36,43 ****
] [
.B \-quick
] [
- .B \-r
- ] [
.B \-v
] [
.B \-white
--- 40,45 ----
***************
*** 82,93 ****
down as you move around the board, the square you are currently over will
be highlighted.
.LP
! There are various buttons and cyclic selections 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. With the SunView and XView versions, it is also possible to
! make a selection from a popup menu using the right mouse button.
.LP
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
--- 84,94 ----
down as you move around the board, the square you are currently over will
be highlighted.
.LP
! There are various buttons, choice, toggles and cyclic selections 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.
.LP
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
***************
*** 95,102 ****
.SH REVE BUTTONS
.LP
With the graphics versions, there are eight buttons that are normally
! displayed at the top of the Reve window. Each of these buttons, except
! the "done" button has a keyboard equivalent which is given in brackets below.
.LP
.IP "\fBload [ L ]\fP" 18
Load a game file. The format of this game file is given below. With the
--- 96,103 ----
.SH REVE BUTTONS
.LP
With the graphics versions, there are eight 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.
.LP
.IP "\fBload [ L ]\fP" 18
Load a game file. The format of this game file is given below. With the
***************
*** 124,158 ****
Undo the last "move". If the opponent is the computer, the two "moves" are
undone. A "move" is considered to be all previous consecutive moves by
the opponent.
! .IP "\fBdone [ No keyboard equivalent]\fP" 18
! Change \fIreve\fP to an icon.
.IP "\fBquit [ q ]\fP" 18
Exit the
.I reve
program.
! .SH REVE CYCLIC SELECTIONS
! With the graphical versions, just below the eight buttons are four cycle items.
! These can either be selected with the left mouse button, to increment or
! decrement the current selection (depending upon which half on the item
! you click over), or a selection can be made from a popup menu when you
! click with the right mouse button (SunView and XView versions only).
! Each cycle value has a keyboard equivalent which is given in brackets below.
! This 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.
.LP
! .IP "\fBBlack: [ B ]\fP" 18
! Select whether the black player should be a human or the computer. The
! keyboard equivalents are 'h' for human, and 'c' for computer.
! .IP "\fBWhite: [ W ]\fP" 18
! Select whether the white player should be a human or the computer. The
! keyboard equivalents are the same as for the \fBBlack:\fP item.
.IP "\fBDifficulty: [ D ]\fP" 18
! Sets the degree of difficulty for the computers moves. Keyboard selection
! values are in the range '1' to '9'. The computer move is determined on a
! time basis. The degree of difficulty 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:
.LP
Difficulty Time
.LP
--- 125,160 ----
Undo the last "move". If the opponent is the computer, the two "moves" are
undone. A "move" is considered to be all previous consecutive moves by
the opponent.
! .IP "\fBprops [ p ]\fP" 18
! Display a property sheet containing choices and toggles which will
! alter various \fIreve\fP properties.
.IP "\fBquit [ q ]\fP" 18
Exit the
.I reve
program.
! .SH REVE PROPERTY SHEET SELECTIONS
! With the graphical versions, there is a property sheet window 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 toggle item boxes, will toggle the value of that item
! on or off.
! The choice items also have keyboard equivalents which are given in brackets
! below. They 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.
.LP
! .IP "\fBComputer plays: [ C ]\fP" 18
! 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).
.IP "\fBDifficulty: [ D ]\fP" 18
! A choice item which sets the degree of difficulty for the computers moves.
! Keyboard selection values are in the range '1' to '9'. The computer move is
! determined on a time basis. The degree of difficulty 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:
.LP
Difficulty Time
.LP
***************
*** 175,184 ****
9 60 minutes.
.LP
Level eight is tournament level.
! .IP "\fBNotes: [ N ]\fP" 18
! Select whether computer notes are displayed. When you are playing against
! the computer, the note gives the position of the last computer move, and
! an indication of whether it was a good or bad move.
.SH OPTIONS
.TP
.B \-animate
--- 177,198 ----
9 60 minutes.
.LP
Level eight is tournament level.
! .IP "\fBSet search depth: [ No keyboard equivalent ]\fP" 18
! A cyclic item which sets the maximum search depth for a computer move.
! .IP "\fBAnimate move option. [ No keyboard equivalent ]\fP" 18
! A toggle item for animating the computer move and the dragging of human pieces.
! .IP "\fBShow current best move option. [ No keyboard equivalent ]\fP" 18
! A toggle item for showing the current best move as the computer makes it's
! move.
! .IP "\fBShow last move option. [ No keyboard equivalent ]\fP" 18
! A toggle item for outlining the square containing the last move.
! .IP "\fBShow evaluation information option. [ No keyboard equivalent ]\fP" 18
! A toggle information for displaying evaluation information for each computer
! move.
! .IP "\fBNumber last move option. [ No keyboard equivalent ]\fP" 18
! A toggle item for number the last move stone.
! .IP "\fBDon't show flip option. [ No keyboard equivalent ]\fP" 18
! A toggle item to prevent the flip of the stones as a turn is completed.
.SH OPTIONS
.TP
.B \-animate
***************
*** 186,191 ****
--- 200,209 ----
corner of the board, and when you hold the left mouse button down, your
stone is dragged around.
.TP
+ .B \-bestmove
+ As the computer is making it's move, continually show the position of the
+ best move found so far.
+ .TP
.BI \-black " [ display ]"
Black will be played by a human. With the X11 variant of
.I reve
***************
*** 225,230 ****
--- 243,254 ----
Load a game file. The format of this game file is given below. The board
will be setup with these stones.
.TP
+ .B \-log
+ Save a log of computer move information to the file
+ .I reve.res
+ as the game progresses. This information is probably only useful to
+ people trying to improve the computer algorithm.
+ .TP
.B \-m
Always display in monochrome, even on a color screen.
.TP
***************
*** 237,248 ****
.B \-quick
Play a quick game. Don't flash the stones as they are being turned.
.TP
- .B \-r
- Save a log of computer move information to the file
- .I reve.res
- as the game progresses. This information is probably only useful to
- people trying to improve the computer algorithm.
- .TP
.B \-?
Print the version number and usage message for this release of the
.I reve
--- 261,266 ----
***************
*** 272,277 ****
--- 290,383 ----
.BI \-WP " x y"
Start the icon position at
.I x y
+ .SH RESOURCES
+ On startup, the X11 and XView version of
+ .I reve
+ will use the following X resources:
+ .TP 15
+ .PD 0
+ .B Resource:
+ reve.animate
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether various animation effects are shown.
+ .sp
+ .TP
+ .B Resource:
+ reve.bestmove
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether to continually show the best move so far, as the computer
+ is making it's move.
+ .sp
+ .TP
+ .B Resource:
+ reve.difficulty
+ .TP
+ .B Values:
+ Difficulty value (numeric)
+ .TP
+ .B Description
+ The computer difficulty level.
+ .sp
+ .TP
+ .B Resource:
+ reve.last
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether the position of the last stone placed is shown by a square.
+ .sp
+ .TP
+ .B Resource:
+ reve.log
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether to save a log of computer information to the file
+ .I reve.res/
+ .sp
+ .TP
+ .B Resource:
+ reve.notes
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether todisplay computer notes.
+ .sp
+ .TP
+ .B Resource:
+ reve.number
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether the last stone placed in numbered.
+ .sp
+ .TP
+ .B Resource:
+ reve.quick
+ .TP
+ .B Values:
+ True, False (False)
+ .TP
+ .B Description
+ Indicates whether a quick game should be played. Stones are not flashed as
+ they are placed, if this resource is set true.
+ .sp
.SH REVE GAMES FILE FORMAT
.I Reve
has the ability to load or save games. The format of the games files are:
------- reve.man.text -------
*** /tmp/da07632 Sun Dec 9 15:17:15 1990
--- reve.man.text Sun Dec 9 14:35:19 1990
***************
*** 9,19 ****
reve - an othello game.
SYNOPSIS
! reve [ -animate ] [ -b [ display ] ] [ -c ] [ -d difficulty
! ] [ -e edgefile ] [ -g geometry ] [ -i ] [ -last ] [ -load
! gamefile ] [ -m ] [ -notes ] [ -number ] [ -quick ] [ -r ] [
! -v ] [ -w [ display ] ] [ -? ] [ -Wi ] [ -Wp x y ] [ -WP x y
! ]
DESCRIPTION
Reve is a version of the popular Othello game. It contains
--- 9,19 ----
reve - an othello game.
SYNOPSIS
! reve [ -animate ] [ -bestmove ] [ -black [ display ] ] [ -c
! ] [ -d difficulty ] [ -e edgefile ] [ -g geometry ] [ -i ] [
! -last ] [ -load gamefile ] [ -log ] [ -m ] [ -notes ] [
! -number ] [ -quick ] [ -v ] [ -white [ display ] ] [ -? ] [
! -Wi ] [ -Wp x y ] [ -WP x y ]
DESCRIPTION
Reve is a version of the popular Othello game. It contains
***************
*** 46,66 ****
the board, the square you are currently over will be
highlighted.
! There are various buttons and cyclic selections 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 selec-
! tion, and clicking over the right half of the cycle item
! decrements the selection. With the SunView and XView ver-
! sions, it is also possible to make a selection from a popup
! menu using the right mouse button.
By default, a human will play black, and the computer will
play white. If you want a human vs human startup or some
! Sun Release 4.1 Last change: 18 October 1990 1
--- 46,66 ----
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.
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).
! Sun Release 4.1 Last change: 29 November 1990 1
***************
*** 71,84 ****
- other combination, then you should use the appropriate com-
- mand line options (see below).
-
REVE BUTTONS
With the graphics versions, there are eight buttons that are
normally displayed at the top of the Reve window. Each of
! these buttons, except the "done" button has a keyboard
! equivalent which is given in brackets below.
load [ L ] Load a game file. The format of this game
file is given below. With the graphical
--- 71,81 ----
REVE BUTTONS
With the graphics versions, there are eight 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.
load [ L ] Load a game file. The format of this game
file is given below. With the graphical
***************
*** 115,132 ****
A "move" is considered to be all previous
consecutive moves by the opponent.
! done [ No keyboard equivalent]
! Change reve to an icon.
quit [ q ] Exit the reve program.
! REVE CYCLIC SELECTIONS
! With the graphical versions, just below the eight buttons
! are four cycle items. These can either be selected with the
! Sun Release 4.1 Last change: 18 October 1990 2
--- 112,132 ----
A "move" is considered to be all previous
consecutive moves by the opponent.
! props [ p ] Display a property sheet containing
! choices and toggles which will alter vari-
! ous reve properties.
quit [ q ] Exit the reve program.
! 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
! Sun Release 4.1 Last change: 29 November 1990 2
***************
*** 137,171 ****
! left mouse button, to increment or decrement the current
! selection (depending upon which half on the item you click
! over), or a selection can be made from a popup menu when you
! click with the right mouse button (SunView and XView ver-
! sions only). Each cycle value has a keyboard equivalent
! which is given in brackets below. This 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.
! Black: [ B ] Select whether the black player should be
! a human or the computer. The keyboard
! equivalents are 'h' for human, and 'c' for
! computer.
! White: [ W ] Select whether the white player should be
! a human or the computer. The keyboard
! equivalents are the same as for the Black:
! item.
- Difficulty: [ D ] Sets the degree of difficulty for the com-
- puters moves. Keyboard selection values
- are in the range '1' to '9'. The computer
- move is determined on a time basis. The
- degree of difficulty 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).
--- 137,169 ----
! 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 items also have keyboard equivalents which
! are given in brackets below. They 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).
***************
*** 180,212 ****
Level eight is tournament level.
! Notes: [ N ] Select whether computer notes are
! displayed. When you are playing against
! the computer, the note gives the position
! of the last computer move, and an indica-
! tion of whether it was a good or bad move.
! OPTIONS
! -animate
! Show animation. The computer's stone will glide in from
- Sun Release 4.1 Last change: 18 October 1990 3
REVE(6) GAMES AND DEMOS REVE(6)
the top left corner of the board, and when you hold the
left mouse button down, your stone is dragged around.
! -b [ display ]
Black will be played by a human. With the X11 variant
of reve it is possible to give an optional display
value.
--- 178,236 ----
Level eight is tournament level.
! Set search depth: [ No keyboard equivalent ]
! A cyclic item which sets the maximum
! search depth for a computer move.
! Animate move option. [ No keyboard equivalent ]
! A toggle item for animating the computer
! move and the dragging of human pieces.
+ Show current best move option. [ No keyboard equivalent ]
+ A toggle item for showing the current best
+ move as the computer makes it's move.
+ Sun Release 4.1 Last change: 29 November 1990 3
+
REVE(6) GAMES AND DEMOS REVE(6)
+ Show last move option. [ No keyboard equivalent ]
+ A toggle item for outlining the square
+ containing the last move.
+
+ Show evaluation information option. [ No keyboard equivalent ]
+ A toggle information for displaying
+ evaluation information for each computer
+ move.
+
+ Number last move option. [ No keyboard equivalent ]
+ A toggle item for number the last move
+ stone.
+
+ Don't show flip option. [ No keyboard equivalent ]
+ A toggle item to prevent the flip of the
+ stones as a turn is completed.
+
+ 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 [ display ]
Black will be played by a human. With the X11 variant
of reve it is possible to give an optional display
value.
***************
*** 231,236 ****
--- 255,274 ----
information.
-i Invert the reve window before displaying it. For use by
+
+
+
+ Sun Release 4.1 Last change: 29 November 1990 4
+
+
+
+
+
+
+ REVE(6) GAMES AND DEMOS REVE(6)
+
+
+
people who started their graphics environment in
inverse mode. This option is currently only implemented
for the SunView version.
***************
*** 243,248 ****
--- 281,291 ----
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
***************
*** 255,279 ****
Play a quick game. Don't flash the stones as they are
being turned.
-
-
-
- Sun Release 4.1 Last change: 18 October 1990 4
-
-
-
-
-
-
- REVE(6) GAMES AND DEMOS REVE(6)
-
-
-
- -r 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.
-
-? Print the version number and usage message for this
release of the reve program.
--- 298,303 ----
***************
*** 280,286 ****
-v Print the version number and usage message for this
release of the reve program.
! -w [ display ]
White will be played by a human. With the X11 variant
of reve it is possible to give an optional display
value.
--- 304,310 ----
-v Print the version number and usage message for this
release of the reve program.
! -white [ display ]
White will be played by a human. With the X11 variant
of reve it is possible to give an optional display
value.
***************
*** 295,346 ****
-WP x y
Start the icon position at x y
REVE GAMES FILE FORMAT
Reve has the ability to load or save games. The format of
the games files are:
-
1, <C-4> - [ remarks field ]
2, - <E-3> [ 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.
- FILES
- /usr/local/lib/reve.edgetable
- Sun Release 4.1 Last change: 18 October 1990 5
-
-
REVE(6) GAMES AND DEMOS REVE(6)
edge stability table for all possible edge combina-
tions.
-
BUGS
See the TODO file for the list of known problems.
-
AUTHORS
Computer strategy: Yves Gallot galloty@cernvax.cern.ch
Graphics interface: Rich Burridge richb@Aus.Sun.COM
--- 319,422 ----
-WP x y
Start the icon position at x y
+ RESOURCES
+ On startup, the X11 and XView version of reve will use the
+
+
+
+ Sun Release 4.1 Last change: 29 November 1990 5
+
+
+
+
+
+
+ REVE(6) GAMES AND DEMOS REVE(6)
+
+
+
+ following X resources:
+
+ 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.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.
+
REVE GAMES FILE FORMAT
Reve has the ability to load or save games. The format of
the games files are:
1, <C-4> - [ remarks field ]
2, - <E-3> [ 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.
+ Sun Release 4.1 Last change: 29 November 1990 6
REVE(6) GAMES AND DEMOS REVE(6)
+ 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.
+ FILES
+ /usr/local/lib/reve.edgetable
edge stability table for all possible edge combina-
tions.
BUGS
See the TODO file for the list of known problems.
AUTHORS
Computer strategy: Yves Gallot galloty@cernvax.cern.ch
Graphics interface: Rich Burridge richb@Aus.Sun.COM
***************
*** 380,396 ****
!
!
!
!
!
!
!
!
!
!
! Sun Release 4.1 Last change: 18 October 1990 6
--- 456,462 ----
! Sun Release 4.1 Last change: 29 November 1990 7