[comp.sources.games] v11i099: reve - an othello game, Patch2c

billr@saab.CNA.TEK.COM (Bill Randle) (12/20/90)

Submitted-by: Rich Burridge <rburridge@sun.COM>
Posting-number: Volume 11, Issue 99
Archive-name: reve/Patch2c
Patch-To: reve: Volume 11, Issue 52-58
Environment: SunView, XView, X11R4, termcap



#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 3 (of 3)."
# Contents:  patches02c
# Wrapped by billr@saab on Wed Dec 19 16:32:51 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patches02c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patches02c'\"
else
echo shar: Extracting \"'patches02c'\" \(37905 characters\)
sed "s/^X//" >'patches02c' <<'END_OF_FILE'
X------- reve.h -------
X*** /tmp/da02145	Wed Nov 28 11:00:32 1990
X--- reve.h	Fri Nov 23 23:16:36 1990
X***************
X*** 25,31 ****
X  #include <stdio.h>
X  #include <sys/types.h>
X  
X! #define  FCLOSE        (void) fclose      /* To make lint happy. */
X  #define  FFLUSH        (void) fflush
X  #define  FGETS         (void) fgets
X  #define  FSEEK         (void) fseek
X--- 25,32 ----
X  #include <stdio.h>
X  #include <sys/types.h>
X  
X! #define  ALARM         (void) alarm       /* To make lint happy. */
X! #define  FCLOSE        (void) fclose
X  #define  FFLUSH        (void) fflush
X  #define  FGETS         (void) fgets
X  #define  FSEEK         (void) fseek
X***************
X*** 64,70 ****
X  #else
X  #define  CELL_SIZE     (int) ((TOTAL_WIDTH-(2*BBORDER)) / BOARD_SIZE)
X  #define  CY            ((NOROWS*BHEIGHT) + ((NOROWS-1)*BGAP) + (2*BBORDER))
X! #define  NOROWS        6        /* Number of rows of reve items. */
X  #define  TOTAL_HEIGHT  CY + (8 * CELL_SIZE) + (2 * BBORDER)
X  #define  TOTAL_WIDTH   ((NOBUTS*BWIDTH) + ((NOBUTS-1)*BGAP) + (2*BBORDER))
X  #endif /*XVIEW*/
X--- 65,71 ----
X  #else
X  #define  CELL_SIZE     (int) ((TOTAL_WIDTH-(2*BBORDER)) / BOARD_SIZE)
X  #define  CY            ((NOROWS*BHEIGHT) + ((NOROWS-1)*BGAP) + (2*BBORDER))
X! #define  NOROWS        7        /* Number of rows of reve items. */
X  #define  TOTAL_HEIGHT  CY + (8 * CELL_SIZE) + (2 * BBORDER)
X  #define  TOTAL_WIDTH   ((NOBUTS*BWIDTH) + ((NOBUTS-1)*BGAP) + (2*BBORDER))
X  #endif /*XVIEW*/
X***************
X*** 231,239 ****
X  void do_move(),            do_selection(),       domove() ;
X  void done(),               draw_button(),        draw_cycle() ;
X  void draw_cycle_item(),    draw_image(),         draw_line() ;
X! void draw_piece(),         draw_rect(),          draw_stencil() ;
X! void draw_text(),          draw_textfield() ;
X! void generate_graphics(),  get_filename() ;
X  void get_options(),        get_xy(),             getparam() ;
X  void handle_board_event(), handle_event(),       handle_item() ;
X  void handle_key(),         init_canvas(),        init_edge_table() ;
X--- 232,240 ----
X  void do_move(),            do_selection(),       domove() ;
X  void done(),               draw_button(),        draw_cycle() ;
X  void draw_cycle_item(),    draw_image(),         draw_line() ;
X! void draw_outline(),       draw_piece(),         draw_rect() ;
X! void draw_square(),        draw_stencil(),       draw_text() ;
X! void draw_textfield(),     generate_graphics(),  get_filename() ;
X  void get_options(),        get_xy(),             getparam() ;
X  void handle_board_event(), handle_event(),       handle_item() ;
X  void handle_key(),         init_canvas(),        init_edge_table() ;
X***************
X*** 245,253 ****
X  void message(),            nap_upto(),           new_game() ;
X  void position_popup(),     process_event(),      quit() ;
X  void remove_textfield(),   save_game(),          set_cursor() ;
X! void set_cycle(),          set_display_types() ;
X! void set_timer(),          set_score(),          set_turn() ;
X! void show_all(),           show_all_moves(),     show_last() ;
X  void show_suggestion(),    start_tool() ;
X  void suggest(),            think(),              undo() ;
X  void update_board_image(), usage(),              who_wins() ;
X--- 246,255 ----
X  void message(),            nap_upto(),           new_game() ;
X  void position_popup(),     process_event(),      quit() ;
X  void remove_textfield(),   save_game(),          set_cursor() ;
X! void set_cycle(),          set_display_types(),  set_eval() ;
X! void set_score(),          set_timer(),          set_turn() ;
X! void show_all(),           show_all_moves(),     show_best() ;
X! void show_last(),          show_number() ;
X  void show_suggestion(),    start_tool() ;
X  void suggest(),            think(),              undo() ;
X  void update_board_image(), usage(),              who_wins() ;
X
X------- reve.man.text -------
X*** /tmp/da02148	Wed Nov 28 11:00:33 1990
X--- reve.man.text	Fri Nov 23 07:05:48 1990
X***************
X*** 9,18 ****
X       reve - an othello game.
X  
X  SYNOPSIS
X!      reve [ -b [ display ] ] [ -c ] [ -d difficulty ] [ -e  edge-
X!      file  ] [ -g geometry ] [ -i ] [ -l gamefile ] [ -m ] [ -n ]
X!      [ -r ] [ -v ] [ -w [ display ] ] [ -? ] [ -Wi ] [ -Wp x y  ]
X!      [ -WP x y ]
X  
X  DESCRIPTION
X       Reve is a version of the popular Othello game.  It  contains
X--- 9,19 ----
X       reve - an othello game.
X  
X  SYNOPSIS
X!      reve [ -animate ] [ -b [ display ] ] [ -c ] [ -d  difficulty
X!      ]  [  -e edgefile ] [ -g geometry ] [ -i ] [ -last ] [ -load
X!      gamefile ] [ -m ] [ -notes ] [ -number ] [ -quick ] [ -r ] [
X!      -v ] [ -w [ display ] ] [ -? ] [ -Wi ] [ -Wp x y ] [ -WP x y
X!      ]
X  
X  DESCRIPTION
X       Reve is a version of the popular Othello game.  It  contains
X***************
X*** 20,47 ****
X       being able to function on normal display terminals  using  a
X       termcap interface.
X  
X!      Reve is played on an 8 x 8 board, with pieces  which  should
X       be  considered  to  be  black  on  one side and white on the
X!      other. A legal move consists of placing a piece of one's own
X       color  on  the  board  so  as to "sandwich" one or more rows
X!      (orthogonal or diagonal) of pieces  of  the  opposite  color
X!      between  the piece just placed and another piece of the same
X!      color. All pieces so sandwiched are flipped over  to  reveal
X       the color of the other side (your own color).
X  
X!      The object of the game, is to  have  more  pieces  than  the
X       opponent  at the end of the game (ie. when the board is full
X       or neither side has a legal move).  If  you  have  no  legal
X       move, you simply miss a turn.  Black goes first.
X  
X!      With reve, to place one of your own pieces simply click with
X!      the  mouse  over  the square in which you want your piece to
X       go. Note that it is also possible to supply a number  and  a
X!      letter pair, to indicate where you would like your new piece
X!      to go. This is the only method to place pieces with the dumb
X       tty  interface.  The square containing the last move will be
X       shown with a black outline. This is updated  with  each  new
X!      move.
X  
X       There are various buttons and cyclic  selections  available.
X       Their  meanings are given below, plus an indication of their
X--- 21,50 ----
X       being able to function on normal display terminals  using  a
X       termcap interface.
X  
X!      Reve is played on an 8 x 8 board, with stones  which  should
X       be  considered  to  be  black  on  one side and white on the
X!      other. A legal move consists of placing a stone of one's own
X       color  on  the  board  so  as to "sandwich" one or more rows
X!      (orthogonal or diagonal) of stones  of  the  opposite  color
X!      between  the stone just placed and another stone of the same
X!      color. All stones so sandwiched are flipped over  to  reveal
X       the color of the other side (your own color).
X  
X!      The object of the game, is to  have  more  stones  than  the
X       opponent  at the end of the game (ie. when the board is full
X       or neither side has a legal move).  If  you  have  no  legal
X       move, you simply miss a turn.  Black goes first.
X  
X!      With reve, to place one of your own stones simply click with
X!      the  mouse  over  the square in which you want your stone to
X       go. Note that it is also possible to supply a number  and  a
X!      letter pair, to indicate where you would like your new stone
X!      to go. This is the only method to place stones with the dumb
X       tty  interface.  The square containing the last move will be
X       shown with a black outline. This is updated  with  each  new
X!      move.  If  you hold the mouse button down as you move around
X!      the board,  the  square  you  are  currently  over  will  be
X!      highlighted.
X  
X       There are various buttons and cyclic  selections  available.
X       Their  meanings are given below, plus an indication of their
X***************
X*** 54,65 ****
X  
X       By default, a human will play black, and the  computer  will
X       play  white.  If  you  want a human vs human startup or some
X-      other combination, then you should use the appropriate  com-
X-      mand line options (see below).
X  
X  
X  
X- 
X  Sun Release 4.1   Last change: 18 October 1990                  1
X  
X  
X--- 57,65 ----
X***************
X*** 71,76 ****
X--- 71,79 ----
X  
X  
X  
X+      other combination, then you should use the appropriate  com-
X+      mand line options (see below).
X+ 
X  REVE BUTTONS
X       With the graphics versions, there are eight buttons that are
X       normally  displayed  at  the top of the Reve window. Each of
X***************
X*** 90,97 ****
X                         unsuccessful, it will stop on the  invalid
X                         line,  and  display  an  error message. As
X                         each line is successfully  read  from  the
X!                        game  file,  the piece is displayed on the
X!                        board, and the appropriate pieces flipped.
X  
X       moves? [ A ]      Show all the valid moves for  the  current
X                         board.  This  is useful for beginners, and
X--- 93,100 ----
X                         unsuccessful, it will stop on the  invalid
X                         line,  and  display  an  error message. As
X                         each line is successfully  read  from  the
X!                        game  file,  the stone is displayed on the
X!                        board, and the appropriate stones flipped.
X  
X       moves? [ A ]      Show all the valid moves for  the  current
X                         board.  This  is useful for beginners, and
X***************
X*** 120,128 ****
X  REVE CYCLIC SELECTIONS
X       With the graphical versions, just below  the  eight  buttons
X       are four cycle items.  These can either be selected with the
X-      left mouse button, to increment  or  decrement  the  current
X-      selection  (depending  upon which half on the item you click
X-      over), or a selection can be made from a popup menu when you
X  
X  
X  
X--- 123,128 ----
X***************
X*** 137,142 ****
X--- 137,145 ----
X  
X  
X  
X+      left mouse button, to increment  or  decrement  the  current
X+      selection  (depending  upon which half on the item you click
X+      over), or a selection can be made from a popup menu when you
X       click  with  the  right mouse button (SunView and XView ver-
X       sions only).  Each cycle value  has  a  keyboard  equivalent
X       which  is given in brackets below.  This must be followed by
X***************
X*** 184,197 ****
X                         tion of whether it was a good or bad move.
X  
X  OPTIONS
X!      -b [ display ]
X!           Black will be played by a human. With the  X11  variant
X!           of  reve  it  is  possible  to give an optional display
X!           value.
X  
X  
X  
X- 
X  Sun Release 4.1   Last change: 18 October 1990                  3
X  
X  
X--- 187,197 ----
X                         tion of whether it was a good or bad move.
X  
X  OPTIONS
X!      -animate
X!           Show animation. The computer's stone will glide in from
X  
X  
X  
X  Sun Release 4.1   Last change: 18 October 1990                  3
X  
X  
X***************
X*** 203,210 ****
X  
X  
X  
X       -c   The computer will play. Presence or absence of  -b  and
X!           -w options determine which piece the computer plays.
X  
X       -d difficulty
X            The level of difficulty for  computer  moves.  See  the
X--- 203,218 ----
X  
X  
X  
X+           the top left corner of the board, and when you hold the
X+           left mouse button down, your stone is dragged around.
X+ 
X+      -b [ display ]
X+           Black will be played by a human. With the  X11  variant
X+           of  reve  it  is  possible  to give an optional display
X+           value.
X+ 
X       -c   The computer will play. Presence or absence of  -b  and
X!           -w options determine which stone the computer plays.
X  
X       -d difficulty
X            The level of difficulty for  computer  moves.  See  the
X***************
X*** 227,240 ****
X            inverse mode. This option is currently only implemented
X            for the SunView version.
X  
X!      -l gamefile
X            Load a game file. The format of this game file is given
X!           below. The board will be setup with these pieces.
X  
X       -m   Always display in monochrome, even on a color screen.
X  
X!      -n   Display computer notes.
X  
X       -r   Save a log of computer move  information  to  the  file
X            reve.res  as  the  game progresses. This information is
X            probably only useful to people trying  to  improve  the
X--- 235,274 ----
X            inverse mode. This option is currently only implemented
X            for the SunView version.
X  
X!      -last
X!           Show where the last stone was placed, by outlining  the
X!           square.
X! 
X!      -load gamefile
X            Load a game file. The format of this game file is given
X!           below. The board will be setup with these stones.
X  
X       -m   Always display in monochrome, even on a color screen.
X  
X!      -notes
X!           Display computer notes.
X  
X+      -number
X+           Show the move number on the last stone placed.
X+ 
X+      -quick
X+           Play a quick game. Don't flash the stones as  they  are
X+           being turned.
X+ 
X+ 
X+ 
X+ 
X+ Sun Release 4.1   Last change: 18 October 1990                  4
X+ 
X+ 
X+ 
X+ 
X+ 
X+ 
X+ REVE(6)                  GAMES AND DEMOS                  REVE(6)
X+ 
X+ 
X+ 
X       -r   Save a log of computer move  information  to  the  file
X            reve.res  as  the  game progresses. This information is
X            probably only useful to people trying  to  improve  the
X***************
X*** 255,274 ****
X            and  XView version of reve will automatically uses this
X            flag, but the X11 version will also.
X  
X- 
X- 
X- 
X- Sun Release 4.1   Last change: 18 October 1990                  4
X- 
X- 
X- 
X- 
X- 
X- 
X- REVE(6)                  GAMES AND DEMOS                  REVE(6)
X- 
X- 
X- 
X       -Wp x y
X            Start the open window position at x y
X  
X--- 289,294 ----
X***************
X*** 291,297 ****
X       and give the column and row. The column  letter  can  be  in
X       either lower or upper case.
X  
X!      It is possible for one piece to have two or more  consequen-
X       tive  moves,  hence  the need for the above scheme.  Reve is
X       flexible about white space (except between the '<'  and  '>'
X       characters).  The remarks field is ignored. The program will
X--- 311,317 ----
X       and give the column and row. The column  letter  can  be  in
X       either lower or upper case.
X  
X!      It is possible for one player to have two or more consequen-
X       tive  moves,  hence  the need for the above scheme.  Reve is
X       flexible about white space (except between the '<'  and  '>'
X       characters).  The remarks field is ignored. The program will
X***************
X*** 301,306 ****
X--- 321,340 ----
X  
X  FILES
X       /usr/local/lib/reve.edgetable
X+ 
X+ 
X+ 
X+ Sun Release 4.1   Last change: 18 October 1990                  5
X+ 
X+ 
X+ 
X+ 
X+ 
X+ 
X+ REVE(6)                  GAMES AND DEMOS                  REVE(6)
X+ 
X+ 
X+ 
X            edge stability table for  all  possible  edge  combina-
X            tions.
X  
X***************
X*** 324,330 ****
X  
X  
X  
X! Sun Release 4.1   Last change: 18 October 1990                  5
X  
X  
X  
X--- 358,396 ----
X  
X  
X  
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! 
X! Sun Release 4.1   Last change: 18 October 1990                  6
X  
X  
X  
X
X------- sunview.c -------
X*** /tmp/da02151	Wed Nov 28 11:00:34 1990
X--- sunview.c	Mon Nov 19 18:26:46 1990
X***************
X*** 178,183 ****
X--- 178,185 ----
X    int rop ;
X  
X    rop = opvals[(int) op] ;
X+   if (!iscolor[(int) cur_dpyno] && color == C_WHITE)
X+     rop = opvals[(int) RCLR] ;
X    PW_VECTOR(cpw, x1, y1, x2, y2, rop | PIX_COLOR(color), 1) ;
X  }
X  
X***************
X*** 272,278 ****
X    PW_PUTCOLORMAP(cpw, 0, OTH_COLORSIZE, red, green, blue) ;
X    if (inv_video) PW_REVERSEVIDEO(cpw, 0, OTH_COLORSIZE) ;
X  
X!   if (iscolor)
X      {
X        frame_pw = (Pixwin *) window_get(frame, WIN_PIXWIN) ;
X        PW_SETCMSNAME(frame_pw, colorname) ;
X--- 274,280 ----
X    PW_PUTCOLORMAP(cpw, 0, OTH_COLORSIZE, red, green, blue) ;
X    if (inv_video) PW_REVERSEVIDEO(cpw, 0, OTH_COLORSIZE) ;
X  
X!   if (iscolor[(int) cur_dpyno])
X      {
X        frame_pw = (Pixwin *) window_get(frame, WIN_PIXWIN) ;
X        PW_SETCMSNAME(frame_pw, colorname) ;
X***************
X*** 408,414 ****
X  start_tool(dtype)      /* Display window and start the notifier. */
X  enum disp_type dtype ;
X  {
X!   if (iscolor)
X      {
X        reve_icon = (Icon) window_get(frame, FRAME_ICON) ;
X        ICON_SET(reve_icon, ICON_IMAGE, &cicon_pr, 0) ;
X--- 410,416 ----
X  start_tool(dtype)      /* Display window and start the notifier. */
X  enum disp_type dtype ;
X  {
X!   if (iscolor[(int) cur_dpyno])
X      {
X        reve_icon = (Icon) window_get(frame, FRAME_ICON) ;
X        ICON_SET(reve_icon, ICON_IMAGE, &cicon_pr, 0) ;
X
X------- tty.c -------
X*** /tmp/da02154	Wed Nov 28 11:00:35 1990
X--- tty.c	Thu Nov 22 11:17:28 1990
X***************
X*** 349,369 ****
X                    othervals[(int) PANEL_MES].row, str, TRUE) ;
X        return ;
X      }
X!   else if (x == 237 && y == 195)       /* Note message. */
X      {
X        draw_string(othervals[(int) EVAL_MES].column,
X                    othervals[(int) EVAL_MES].row, str, TRUE) ;
X        return ;
X      }
X!   else if (x == 15 && y == 237)        /* Score message. */
X      {
X!       if (sscanf(str, "Black: %d, White: %d", &black, &white) == 2)
X          SPRINTF(str, "Black (O): %d, White (X): %d", black, white) ;
X        draw_string(othervals[(int) SCORE_MES].column,
X                    othervals[(int) SCORE_MES].row, str, TRUE) ;
X        return ;
X      }
X!   else if (x == 237 && y == 237)       /* Turn message. */
X      {
X        draw_string(othervals[(int) TURN_MES].column,
X                    othervals[(int) TURN_MES].row, str, TRUE) ;
X--- 349,369 ----
X                    othervals[(int) PANEL_MES].row, str, TRUE) ;
X        return ;
X      }
X!   else if (x == 15 && y == 237)       /* Note message. */
X      {
X        draw_string(othervals[(int) EVAL_MES].column,
X                    othervals[(int) EVAL_MES].row, str, TRUE) ;
X        return ;
X      }
X!   else if (x == 15 && y == 279)        /* Score message. */
X      {
X!       if (sscanf(str, "Stones: Black: %d White: %d", &black, &white) == 2)
X          SPRINTF(str, "Black (O): %d, White (X): %d", black, white) ;
X        draw_string(othervals[(int) SCORE_MES].column,
X                    othervals[(int) SCORE_MES].row, str, TRUE) ;
X        return ;
X      }
X!   else if (x == 237 && y == 279)       /* Turn message. */
X      {
X        draw_string(othervals[(int) TURN_MES].column,
X                    othervals[(int) TURN_MES].row, str, TRUE) ;
X***************
X*** 377,382 ****
X--- 377,383 ----
X        if (ttyvals[i].column != -1)
X          {
X                 if (EQUAL(str, "load"))     STRCPY(str, "Load") ;
X+           else if (EQUAL(str, "moves?"))   STRCPY(str, "Moves?") ;
X            else if (EQUAL(str, "save"))     STRCPY(str, "Save") ;
X            else if (EQUAL(str, "show all")) STRCPY(str, "show All") ;
X            draw_string(ttyvals[i].column, ttyvals[i].row, str, FALSE) ;
X
X------- x11.c -------
X*** /tmp/da02157	Wed Nov 28 11:00:36 1990
X--- x11.c	Fri Nov 23 07:01:40 1990
X***************
X*** 29,44 ****
X  #include "images.h"
X  #include <sys/time.h>
X  
X- #ifdef SYSV
X- #include <string.h>
X- #else
X- #include <strings.h>
X- #endif /*SYSV*/
X- 
X  #include <X11/Xlib.h>
X  #include <X11/Xutil.h>
X  #include <X11/Xatom.h>
X  #include <X11/cursorfont.h>
X  
X  #define  BOLDFONT    "lucidasanstypewriter-bold-12"
X  #define  DEFFONT     "fixed"
X--- 29,40 ----
X  #include "images.h"
X  #include <sys/time.h>
X  
X  #include <X11/Xlib.h>
X  #include <X11/Xutil.h>
X  #include <X11/Xatom.h>
X+ #include <X11/Xos.h>
X  #include <X11/cursorfont.h>
X+ #include <X11/keysym.h>
X  
X  #define  BOLDFONT    "lucidasanstypewriter-bold-12"
X  #define  DEFFONT     "fixed"
X***************
X*** 608,613 ****
X--- 604,610 ----
X  {
X    XClientMessageEvent *ev ;
X    XKeyPressedEvent *key_event ;
X+   KeySym keysym ;
X    char chs[2] ;
X    int d ;
X  
X***************
X*** 628,637 ****
X                                curx = key_event->x ;
X                                cury = key_event->y ;
X                                (void) XLookupString(key_event, chs, 1,
X!                                                    (KeySym *)  NULL,
X                                                     (XComposeStatus *) NULL) ;
X!                               cur_ch = chs[0] ;
X!                               nextc = KEYBOARD ;
X                                break ;
X        case EnterNotify      : nextc = ENTER_WINDOW ;
X                                break ;
X--- 625,639 ----
X                                curx = key_event->x ;
X                                cury = key_event->y ;
X                                (void) XLookupString(key_event, chs, 1,
X!                                                    &keysym,
X                                                     (XComposeStatus *) NULL) ;
X!                               if (keysym == XK_Shift_L ||
X!                                   keysym == XK_Shift_R) nextc = IGNORE_EVENT ;
X!                               else
X!                                 {
X!                                   cur_ch = chs[0] ;
X!                                   nextc = KEYBOARD ;
X!                                 }
X                                break ;
X        case EnterNotify      : nextc = ENTER_WINDOW ;
X                                break ;
X
X------- FILES -------
X*** /tmp/da02160	Wed Nov 28 11:00:37 1990
X--- FILES	Wed Nov 28 10:57:53 1990
X***************
X*** 26,33 ****
X  CHANGES                     - change history. Updated with each new patch.
X  README                      - describes what reve is, and how to get started.
X  TODO                        - bugs and suggested enhancements. Volunteers?
X! reve.6                      - the reve manual page (troff/nroff -man format).
X! reve.man                    - plain text version of the reve manual pages.
X  MANIFEST                    - tells you what archive part each file was in.
X  FILES                       - what you're reading now.
X  reve.edge1                  - first half of the Reve edge stability table.
X--- 26,33 ----
X  CHANGES                     - change history. Updated with each new patch.
X  README                      - describes what reve is, and how to get started.
X  TODO                        - bugs and suggested enhancements. Volunteers?
X! reve.man                    - the reve manual page (troff/nroff -man format).
X! reve.man.text               - plain text version of the reve manual pages.
X  MANIFEST                    - tells you what archive part each file was in.
X  FILES                       - what you're reading now.
X  reve.edge1                  - first half of the Reve edge stability table.
X***************
X*** 44,57 ****
X  --------------------------------------------------------------------------
X  images/black.icon           - black reve piece.
X  images/reve.icon            - reve icon (monochrome screens and XView).
X! images/reve.color.icon      - reve icon (color screens).
X  images/white.icon           - white reve piece.
X! images/button.invert.icon   - button panel item in inverted mode.
X! images/button.normal.icon   - button panel item in normal mode.
X! images/button.stencil.icon  - stencil for normal/inverted button panel items.
X! images/cycle.glyph.icon     - cycle panel item in normal mode.
X! images/cycle.linvert.icon   - cycle panel item with left side inverted.
X! images/cycle.rinvert.icon   - cycle panel item with right side inverted.
X! images/cycle.stencil.icon   - stencil for normal/inverted cycle panel items.
X  images/hglass.cursor        - hour glass cursor for computer move.
X  images/nocur.cursor         - no cursor when piece is being dragged.
X--- 44,57 ----
X  --------------------------------------------------------------------------
X  images/black.icon           - black reve piece.
X  images/reve.icon            - reve icon (monochrome screens and XView).
X! images/Creve.icon           - reve icon (color screens).
X  images/white.icon           - white reve piece.
X! images/Ibutton.icon         - button panel item in inverted mode.
X! images/Nbutton.icon         - button panel item in normal mode.
X! images/Sbutton.icon         - stencil for normal/inverted button panel items.
X! images/Ncycle.icon          - cycle panel item in normal mode.
X! images/Lcycle.icon          - cycle panel item with left side inverted.
X! images/Rcycle.icon          - cycle panel item with right side inverted.
X! images/Scycle.icon          - stencil for normal/inverted cycle panel items.
X  images/hglass.cursor        - hour glass cursor for computer move.
X  images/nocur.cursor         - no cursor when piece is being dragged.
X
X------- MANIFEST -------
X*** /tmp/da02163	Wed Nov 28 11:00:38 1990
X--- MANIFEST	Wed Nov 28 10:55:07 1990
X***************
X*** 23,32 ****
X  CHANGES                                |    3
X  README                                 |    3
X  TODO                                   |    3
X- reve.6                                 |    3
X  reve.man                               |    3
X  MANIFEST                               |    3
X  FILES                                  |    3
X  Makefile.dist                          |    3
X  tty.c                                  |    4
X  x11.c                                  |    4
X--- 23,32 ----
X  CHANGES                                |    3
X  README                                 |    3
X  TODO                                   |    3
X  reve.man                               |    3
X  MANIFEST                               |    3
X  FILES                                  |    3
X+ reve.man.text                          |    3
X  Makefile.dist                          |    3
X  tty.c                                  |    4
X  x11.c                                  |    4
X***************
X*** 35,49 ****
X  Imakefile                              |    5
X  images/black.icon                      |    5
X  images/reve.icon                       |    5
X! images/reve.color.icon                 |    5
X  images/white.icon                      |    5
X! images/button.invert.icon              |    5
X! images/button.normal.icon              |    5
X! images/button.stencil.icon             |    5
X! images/cycle.glyph.icon                |    5
X! images/cycle.linvert.icon              |    5
X! images/cycle.rinvert.icon              |    5
X! images/cycle.stencil.icon              |    5
X  images/hglass.cursor                   |    5
X  images/nocur.cursor                    |    5
X  reve.edge1                             |    6
X--- 35,49 ----
X  Imakefile                              |    5
X  images/black.icon                      |    5
X  images/reve.icon                       |    5
X! images/Creve.icon                      |    5
X  images/white.icon                      |    5
X! images/Ibutton.icon                    |    5
X! images/Nbutton.icon                    |    5
X! images/Sbutton.icon                    |    5
X! images/Ncycle.icon                     |    5
X! images/Lcycle.icon                     |    5
X! images/Rcycle.icon                     |    5
X! images/Scycle.icon                     |    5
X  images/hglass.cursor                   |    5
X  images/nocur.cursor                    |    5
X  reve.edge1                             |    6
X
X------- reve.man -------
X*** /tmp/da02166	Wed Nov 28 11:00:38 1990
X--- reve.man	Fri Nov 23 08:47:02 1990
X***************
X*** 5,11 ****
X  .SH SYNOPSIS
X  .B "reve
X  [
X! .B \-b
X  .I [ display ]
X  ] [
X  .B \-c
X--- 5,13 ----
X  .SH SYNOPSIS
X  .B "reve
X  [
X! .B \-animate
X! ] [
X! .B \-black
X  .I [ display ]
X  ] [
X  .B \-c
X***************
X*** 21,38 ****
X  ] [
X  .B \-i
X  ] [
X! .B \-l
X  .I gamefile
X  ] [
X  .B \-m
X  ] [
X! .B \-n
X  ] [
X  .B \-r
X  ] [
X  .B \-v
X  ] [
X! .B \-w
X  .I [ display ]
X  ] [
X  .B \-?
X--- 23,46 ----
X  ] [
X  .B \-i
X  ] [
X! .B \-last
X! ] [
X! .B \-load
X  .I gamefile
X  ] [
X  .B \-m
X  ] [
X! .B \-notes
X  ] [
X+ .B \-number
X+ ] [
X+ .B \-quick
X+ ] [
X  .B \-r
X  ] [
X  .B \-v
X  ] [
X! .B \-white
X  .I [ display ]
X  ] [
X  .B \-?
X***************
X*** 51,64 ****
X  for SunView, X11 and XView, as well as being able to function on
X  normal display terminals using a termcap interface.
X  .LP
X! Reve is played on an 8 x 8 board, with pieces which should be considered to
X  be black on one side and white on the other. A legal move consists of placing
X! a piece of one's own color on the board so as to "sandwich" one or more rows
X! (orthogonal or diagonal) of pieces of the opposite color between the piece
X! just placed and another piece of the same color. All pieces so sandwiched are
X  flipped over to reveal the color of the other side (your own color).
X  .LP
X! The object of the game, is to have more pieces than the opponent at
X  the end of the game (ie. when the board is full or neither side has
X  a legal move). If you have no legal move, you simply miss a turn.
X  Black goes first.
X--- 59,72 ----
X  for SunView, X11 and XView, as well as being able to function on
X  normal display terminals using a termcap interface.
X  .LP
X! Reve is played on an 8 x 8 board, with stones which should be considered to
X  be black on one side and white on the other. A legal move consists of placing
X! a stone of one's own color on the board so as to "sandwich" one or more rows
X! (orthogonal or diagonal) of stones of the opposite color between the stone
X! just placed and another stone of the same color. All stones so sandwiched are
X  flipped over to reveal the color of the other side (your own color).
X  .LP
X! The object of the game, is to have more stones than the opponent at
X  the end of the game (ie. when the board is full or neither side has
X  a legal move). If you have no legal move, you simply miss a turn.
X  Black goes first.
X***************
X*** 65,76 ****
X  .LP
X  With
X  .I reve,
X! to place one of your own pieces simply click with the mouse over the
X! square in which you want your piece to go. Note that it is also possible
X  to supply a number and a letter pair, to indicate where you would like your
X! new piece to go. This is the only method to place pieces with the dumb tty
X  interface. The square containing the last move will be shown with a black
X! outline. This is updated with each new move.
X  .LP
X  There are various buttons and cyclic selections available. Their meanings
X  are given below, plus an indication of their keyboard equivalents. With the
X--- 73,86 ----
X  .LP
X  With
X  .I reve,
X! to place one of your own stones simply click with the mouse over the
X! square in which you want your stone to go. Note that it is also possible
X  to supply a number and a letter pair, to indicate where you would like your
X! new stone to go. This is the only method to place stones with the dumb tty
X  interface. The square containing the last move will be shown with a black
X! outline. This is updated with each new move. If you hold the mouse button
X! down as you move around the board, the square you are currently over will
X! be highlighted.
X  .LP
X  There are various buttons and cyclic selections available. Their meanings
X  are given below, plus an indication of their keyboard equivalents. With the
X***************
X*** 96,103 ****
X  load operation. When you press the Return key, filename entry is complete,
X  and the program will try to load this file. If it's unsuccessful, it will
X  stop on the invalid line, and display an error message. As each line is
X! successfully read from the game file, the piece is displayed on the board,
X! and the appropriate pieces flipped.
X  .IP "\fBmoves? [ A ]\fP" 18
X  Show all the valid moves for the current board. This is useful for beginners,
X  and for teaching purposes.
X--- 106,113 ----
X  load operation. When you press the Return key, filename entry is complete,
X  and the program will try to load this file. If it's unsuccessful, it will
X  stop on the invalid line, and display an error message. As each line is
X! successfully read from the game file, the stone is displayed on the board,
X! and the appropriate stones flipped.
X  .IP "\fBmoves? [ A ]\fP" 18
X  Show all the valid moves for the current board. This is useful for beginners,
X  and for teaching purposes.
X***************
X*** 171,177 ****
X  an indication of whether it was a good or bad move.
X  .SH OPTIONS
X  .TP
X! .BI \-b " [ display ]"
X  Black will be played by a human. With the X11 variant of
X  .I reve
X  it is possible to give an optional display value.
X--- 181,192 ----
X  an indication of whether it was a good or bad move.
X  .SH OPTIONS
X  .TP
X! .B \-animate
X! Show animation. The computer's stone will glide in from the top left
X! corner of the board, and when you hold the left mouse button down, your
X! stone is dragged around.
X! .TP
X! .BI \-black " [ display ]"
X  Black will be played by a human. With the X11 variant of
X  .I reve
X  it is possible to give an optional display value.
X***************
X*** 178,184 ****
X  .TP
X  .B \-c
X  The computer will play. Presence or absence of \fB\-b\fP and \fB\-w\fP
X! options determine which piece the computer plays.
X  .TP
X  .BI \-d " difficulty"
X  The level of difficulty for computer moves. See the \fBDifficulty:\fP
X--- 193,199 ----
X  .TP
X  .B \-c
X  The computer will play. Presence or absence of \fB\-b\fP and \fB\-w\fP
X! options determine which stone the computer plays.
X  .TP
X  .BI \-d " difficulty"
X  The level of difficulty for computer moves. See the \fBDifficulty:\fP
X***************
X*** 203,218 ****
X  started their graphics environment in inverse mode. This option is
X  currently only implemented for the SunView version.
X  .TP
X! .BI \-l " gamefile"
X  Load a game file. The format of this game file is given below. The board
X! will be setup with these pieces.
X  .TP
X  .B \-m
X  Always display in monochrome, even on a color screen.
X  .TP
X! .B \-n
X  Display computer notes.
X  .TP
X  .B \-r
X  Save a log of computer move information to the file
X  .I reve.res
X--- 218,242 ----
X  started their graphics environment in inverse mode. This option is
X  currently only implemented for the SunView version.
X  .TP
X! .B \-last
X! Show where the last stone was placed, by outlining the square.
X! .TP
X! .BI \-load " gamefile"
X  Load a game file. The format of this game file is given below. The board
X! will be setup with these stones.
X  .TP
X  .B \-m
X  Always display in monochrome, even on a color screen.
X  .TP
X! .B \-notes
X  Display computer notes.
X  .TP
X+ .B \-number
X+ Show the move number on the last stone placed.
X+ .TP
X+ .B \-quick
X+ Play a quick game. Don't flash the stones as they are being turned.
X+ .TP
X  .B \-r
X  Save a log of computer move information to the file
X  .I reve.res
X***************
X*** 229,235 ****
X  .I reve
X  program.
X  .TP
X! .BI \-w " [ display ]"
X  White will be played by a human. With the X11 variant of
X  .I reve
X  it is possible to give an optional display value.
X--- 253,259 ----
X  .I reve
X  program.
X  .TP
X! .BI \-white " [ display ]"
X  White will be played by a human. With the X11 variant of
X  .I reve
X  it is possible to give an optional display value.
X***************
X*** 265,271 ****
X  give the column and row. The column letter can be in either lower or
X  upper case.
X  .LP
X! It is possible for one piece to have two or more consequentive moves, hence
X  the need for the above scheme.
X  .I Reve
X  is flexible about white space (except between the '<' and '>' characters).
X--- 289,295 ----
X  give the column and row. The column letter can be in either lower or
X  upper case.
X  .LP
X! It is possible for one player to have two or more consequentive moves, hence
X  the need for the above scheme.
X  .I Reve
X  is flexible about white space (except between the '<' and '>' characters).
X
X------- reve.edge1 -------
X*** /tmp/da02170	Wed Nov 28 11:00:40 1990
X--- reve.edge1	Fri Nov 23 06:44:36 1990
X***************
X*** 728,734 ****
X  edges[ 727] =   -2439 [ -xxxxxoo ]
X  edges[ 728] =    4036 [ xxxxxxoo ]
X  edges[ 729] =   -7641 [ oooooo-o ]
X! edges[ 730] =   -1166 [ -ooooo-o ]
X  edges[ 731] =      34 [ xooooo-o ]
X  edges[ 732] =   -2436 [ o-oooo-o ]
X  edges[ 733] =   -1236 [ --oooo-o ]
X--- 728,734 ----
X  edges[ 727] =   -2439 [ -xxxxxoo ]
X  edges[ 728] =    4036 [ xxxxxxoo ]
X  edges[ 729] =   -7641 [ oooooo-o ]
X! edges[ 730] =    4000 [ -ooooo-o ]
X  edges[ 731] =      34 [ xooooo-o ]
X  edges[ 732] =   -2436 [ o-oooo-o ]
X  edges[ 733] =   -1236 [ --oooo-o ]
X
X------- reve.edge2 -------
X*** /tmp/da02173	Wed Nov 28 11:00:42 1990
X--- reve.edge2	Fri Nov 23 06:44:56 1990
X***************
X*** 548,554 ****
X  edges[2187] =   -7571 [ ooooooo- ]
X  edges[2188] =     -80 [ -oooooo- ]
X  edges[2189] =    1304 [ xoooooo- ]
X! edges[2190] =   -1166 [ o-ooooo- ]
X  edges[2191] =     100 [ --ooooo- ]
X  edges[2192] =    1234 [ x-ooooo- ]
X  edges[2193] =    1434 [ oxooooo- ]
X--- 548,554 ----
X  edges[2187] =   -7571 [ ooooooo- ]
X  edges[2188] =     -80 [ -oooooo- ]
X  edges[2189] =    1304 [ xoooooo- ]
X! edges[2190] =    4000 [ o-ooooo- ]
X  edges[2191] =     100 [ --ooooo- ]
X  edges[2192] =    1234 [ x-ooooo- ]
X  edges[2193] =    1434 [ oxooooo- ]
X
X------- Imakefile -------
X*** /tmp/da02176	Wed Nov 28 11:00:43 1990
X--- Imakefile	Mon Nov 12 16:46:01 1990
X***************
X*** 79,86 ****
X  		  procs.o rev_eval.o rev_ip.o rev_iycp.o x11.o
X  
X  ComplexProgramTarget(reve)
X! MakeDirectories(install,$(LIBDIR))
X! InstallNonExec($(ETABLE),$(LIBDIR))
X  
X  install:: install.man
X  
X--- 79,86 ----
X  		  procs.o rev_eval.o rev_ip.o rev_iycp.o x11.o
X  
X  ComplexProgramTarget(reve)
X! MakeDirectories(install,$(LIBDIR)$(PATHSEP)reve)
X! InstallNonExec($(ETABLE),$(LIBDIR)$(PATHSEP)reve)
X  
X  install:: install.man
X  
X
END_OF_FILE
if test 37905 -ne `wc -c <'patches02c'`; then
    echo shar: \"'patches02c'\" unpacked with wrong size!
fi
# end of 'patches02c'
fi
echo shar: End of archive 3 \(of 3\).
cp /dev/null ark3isdone
MISSING=""
for I in 1 2 3 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 3 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0