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