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