billr@saab.CNA.TEK.COM (Bill Randle) (09/20/89)
Submitted-by: Scott Turner <srt@lanai.cs.ucla.edu> Posting-number: Volume 8, Issue 31 Archive-name: hotel/Patch1 Patch-To: hotel: Volume 7, Issue 15-16 [I applied the patch to my source without the -l option (see below) and everything worked just fine. -br] [[The following is the first "official" patch to Hotel. It fixes some minor bugs and adds two new features: (1) a -n option which allows the user to specify the number of players on the command line and subsequently skip the startup screens. (2) a -i option ("informed") which keeps track on-screen of the stock held by each player. Apply this patch with the -l option. Due to some strangenesses, at least one of the patches will fail without -l. Enjoy! -- Scott Turner]] #! /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 shell archive." # Contents: patches01 # Wrapped by billr@saab on Wed Sep 20 05:50:42 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'patches01' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'patches01'\" else echo shar: Extracting \"'patches01'\" \(21075 characters\) sed "s/^X//" >'patches01' <<'END_OF_FILE' Xdiff -c Orig/comp.c ./comp.c X*** Orig/comp.c Mon Sep 18 15:18:09 1989 X--- ./comp.c Mon Sep 18 10:12:23 1989 X*************** X*** 414,423 **** X X /* Figure the maximum you can trade. */ X X! if ((int) players[p].shares[sunk]/2 > hotels[sunk].shares) X maxtrade = hotels[sunk].shares * 2; X else X! maxtrade = players[p].shares[sunk]; X X /* If game is old, trade all possible. */ X X--- 414,423 ---- X X /* Figure the maximum you can trade. */ X X! if (players[p].shares[sunk]/2 > hotels[sunk].shares) X maxtrade = hotels[sunk].shares * 2; X else X! maxtrade = ((int) players[p].shares[sunk]/2) * 2; X X /* If game is old, trade all possible. */ X X*************** X*** 454,460 **** X * X */ X X! *trade = randum(maxtrade); X *sell = randum(players[p].shares[sunk] - *trade); X return; X X--- 454,460 ---- X * X */ X X! *trade = (randum((int) maxtrade/2) * 2); X *sell = randum(players[p].shares[sunk] - *trade); X return; X Xdiff -c Orig/defs.h ./defs.h X*** Orig/defs.h Mon Sep 18 15:18:18 1989 X--- ./defs.h Mon Sep 18 10:13:08 1989 X*************** X*** 105,107 **** X--- 105,108 ---- X extern WINDOW *iowin; X extern int debug; /* Debug flag */ X extern int human_player; X+ extern int be_informed; /* Should humans be told about computer players? */ Xdiff -c Orig/help.c ./help.c X*** Orig/help.c Mon Sep 18 15:18:20 1989 X--- ./help.c Mon Sep 18 15:12:44 1989 X*************** X*** 110,121 **** X clear(); X printw("\nGeneral\n\n"); X printw("Most of the time, the 'q' key will quit the game and ^L will refresh\n"); X! printw("the screen. 'h' will usually give some help.\n"); X printw("\nCredits\n\n"); X! printw("Hotel was written by Scott R. Turner (srt@cs.ucla.edu). Special thanks\n"); X! printw("must go to Matthew Merzbacher (matthew@cs.ucla.edu) for help in debugging\n"); X! printw("and testing the various versions, and for helping me win the 1989 ACM\n"); X! printw("Scholastic Programming Championship.\n\n"); X printw("---Hit any key to continue---"); X refresh(); X ch = getch(); X--- 110,134 ---- X clear(); X printw("\nGeneral\n\n"); X printw("Most of the time, the 'q' key will quit the game and ^L will refresh\n"); X! printw("the screen. 'h' will usually give some help.\n\n"); X! printw("\nOptions\n\n"); X! printw("Hotel has two options: hotel [-i] [-n #].\n\n"); X! printw("The -i option turns on `information'. This changes the display so that\n"); X! printw("you are kept informed of who holds what stock. It makes the game a little\n"); X! printw("easier.\n\n"); X! printw("The -n option (followed by a number from 2 to 7) sets the number of\n"); X! printw("players. This will also skip the credit screen and the instructions.\n\n"); X! printw("---Hit any key to continue---"); X! refresh(); X! ch = getch(); X! clear(); X printw("\nCredits\n\n"); X! printw("Hotel was written by Scott R. Turner (srt@cs.ucla.edu). Bug fixes and some\n"); X! printw("new features have been contributed by Lex Mierop (lex@nrc.com), Carlton\n"); X! printw("B. Hommel (carlton@apollo.com) and Michael Urban (urban%rcc@rand.org).\n\n"); X! printw("Special thanks must go to Matthew Merzbacher (matthew@cs.ucla.edu) for\n"); X! printw("help in debugging and testing various versions, and for helping me\n"); X! printw("win the 1989 ACM Scholastic Programming Championship.\n\n"); X printw("---Hit any key to continue---"); X refresh(); X ch = getch(); Xdiff -c Orig/hotel.c ./hotel.c X*** Orig/hotel.c Mon Sep 18 15:18:11 1989 X--- ./hotel.c Mon Sep 18 15:14:35 1989 X*************** X*** 49,54 **** X--- 49,92 ---- X * X * The main program and declarations for Hotel. X * X+ * Bug Fixes and Modifications X+ * X+ * From Lex Mierop(lex@nrc.com) (July 7, 1989) X+ * X+ * Fixes to two problems. First, the human player was not getting X+ * informed of what the computer players were doing during merges. X+ * This is clearly wrong, except that human players should not be X+ * informed of the number of stocks remaining, unless the "be_informed" X+ * option is on. X+ * X+ * Second, Lex discovered a bug in the liquidation routines - computer X+ * players were sometimes getting gypped out of a stock due to a X+ * rounding error. X+ * X+ * From Carlton B. Hommel <carlton@apollo.com> (July 21, 1989) X+ * X+ * In the original version of Hotel, the human player was not kept X+ * informed of the shares held by computer opponents. He could, of X+ * course, calculate this information by hand and keep track of it, X+ * but the program did not track it for him. Carlton and others X+ * thought this annoying, and so Carlton modified pcdisp.c to keep X+ * track on the screen of all the stock. Personally, I think this X+ * just shows a certain lack of character :-), but I've included this X+ * patch (in a modified form) as a command-line option, -i. X+ * X+ * From Michael Urban <urban%rcc@rand.org> (Sept. 5, 1989) X+ * X+ * Michael discovered that *trade was uninitialized in human_liquidate, X+ * which can cause obvious problems. X+ * X+ * From Scott R. Turner <srt@cs.ucla.edu> (9/18/1989) X+ * X+ * Added a command line option for the number of players, -n. If you X+ * use -n you will skip over the title and instruction screens. X+ * X+ * Cleaned up the pcdisp code by removing the commented out stuff X+ * from the old version. Fixed the makefile. X+ * X */ X X #include "defs.h" X*************** X*** 75,80 **** X--- 113,119 ---- X X int numplayers, numhotels, boardsize, numshares, numtiles, startcash; X int turn, maxbuy, debug, pnum; X+ int be_informed = 0; X X /* Externals */ X X*************** X*** 113,121 **** X }; X }; X X! main () X { X! int i,j,k,x,y,hotelchoice,played; X int purchases[MAXHOTELS]; X extern long time(); X #ifdef UNIX X--- 152,174 ---- X }; X }; X X! /* X! * Usage and exit. X! * X! */ X! X! void usage() X { X! printf("Usage: hotel [-i] [-n #]."); X! exit(0); X! }; X! X! X! main(argc,argv) X! int argc; X! char **argv; X! { X! int i,j,k,x,y,hotelchoice,played,argn; X int purchases[MAXHOTELS]; X extern long time(); X #ifdef UNIX X*************** X*** 145,150 **** X--- 198,229 ---- X #endif X X /* X+ * Options X+ * X+ * -i = be informed == what stocks do computer players hold? X+ * -n = number of players X+ * X+ */ X+ X+ argn = 0; X+ numplayers = 0; X+ while (++argn < argc) { X+ if (strlen(argv[argn]) != 2 || argv[argn][0] != '-') usage(); X+ switch(argv[argn][1]) { X+ case 'i': X+ be_informed = 1; X+ break; X+ case 'n': X+ sscanf(argv[++argn],"%d",&numplayers); X+ if (numplayers < 2 || numplayers > 7) usage(); X+ break; X+ default: X+ usage(); X+ exit(1); X+ } X+ }; X+ X+ /* X Curses Initialization. X */ X X*************** X*** 373,378 **** X--- 452,458 ---- X X hotel_merge(x,y,p) X int x,y,p; X+ X { X int adj[MAXHOTELS+1],shares[MAXHOTELS+1]; X int i, j, k, count, max, dup, winner, hot, maxhot; X*************** X*** 473,478 **** X--- 553,562 ---- X players[cp].cash += sell*share_cost(j); X players[cp].shares[j] -= sell; X hotels[j].shares += sell; X+ printw("%s sold %d", X+ players[cp].name, sell); X+ } else { X+ printw("%s sold 0",players[cp].name); X }; X X /* Trade as many as possible. */ X*************** X*** 484,495 **** X hotels[j].shares += numtraded; X players[cp].shares[maxhot] += round(numtraded / 2); X hotels[maxhot].shares -= round(numtraded / 2); X }; X X /* Everything left gets held. */ X }; X- X }; X X /* X * Merge all the chains other than the winner into the winner. X--- 568,586 ---- X hotels[j].shares += numtraded; X players[cp].shares[maxhot] += round(numtraded / 2); X hotels[maxhot].shares -= round(numtraded / 2); X+ printw(" and traded %d", numtraded); X }; X X /* Everything left gets held. */ X+ if (be_informed) { X+ printw(" and held on to %d shares of %s.\n", X+ players[cp].shares[j], hotels[j].name); X+ } else { X+ printw(" shares of %s.\n",hotels[j].name); X+ }; X }; X }; X+ any_key(); X X /* X * Merge all the chains other than the winner into the winner. Xdiff -c Orig/human.c ./human.c X*** Orig/human.c Mon Sep 18 15:18:12 1989 X--- ./human.c Mon Sep 18 10:12:21 1989 X*************** X*** 235,240 **** X--- 235,241 ---- X refresh(); X if(players[p].shares[sunk]) { X *sell = MAXSHARES + 1; X+ *trade = 0; X while(*sell+*trade > players[p].shares[sunk]) { X move((boardsize+5),0); X clrtobot(); Xdiff -c Orig/init.c ./init.c X*** Orig/init.c Mon Sep 18 15:18:13 1989 X--- ./init.c Mon Sep 18 14:59:47 1989 X*************** X*** 128,156 **** X }; X X /* Copyright Screen */ X! clear(); X! move(3,0); X! printw(" H*O*T*E*L\n"); X! printw(" Copyright 1989 by Scott R. Turner\n"); X! refresh(); X! sleep(1); X! clear(); X X! /* Time to query the user. */ X X! printw("Welcome to the game of Hotel.\n\n"); X! printw("Instructions? (Y/N) "); X! refresh(); X! noecho(); X! crmode(); X! ch = getch(); X! if (ch == 'Y' || ch == 'y') help(); X! printw("\nHow many players? (2 to %d) ",MAXPLAYERS); X! refresh(); X! numplayers = getnum(2,MAXPLAYERS); X for(i=1;i<=numplayers;i++){ X players[i].strategy = 1; X }; X human_player = randum(numplayers); X players[human_player].strategy = 0; X strcpy(players[human_player].name,"You"); X--- 128,160 ---- X }; X X /* Copyright Screen */ X! if (!numplayers) { X! clear(); X! move(3,0); X! printw(" H*O*T*E*L\n"); X! printw(" Copyright 1989 by Scott R. Turner\n"); X! refresh(); X! sleep(1); X! clear(); X X! /* Time to query the user. */ X X! printw("Welcome to the game of Hotel.\n\n"); X! printw("Instructions? (Y/N) "); X! refresh(); X! noecho(); X! crmode(); X! ch = getch(); X! if (ch == 'Y' || ch == 'y') help(); X! printw("\nHow many players? (2 to %d) ",MAXPLAYERS); X! refresh(); X! numplayers = getnum(2,MAXPLAYERS); X! }; X! X for(i=1;i<=numplayers;i++){ X players[i].strategy = 1; X }; X+ X human_player = randum(numplayers); X players[human_player].strategy = 0; X strcpy(players[human_player].name,"You"); X*************** X*** 172,177 **** X--- 176,183 ---- X break; X }; X printw(" player.\n"); X+ noecho(); X+ crmode(); X any_key(); X clear(); X Xdiff -c Orig/makefile ./makefile X*** Orig/makefile Mon Sep 18 15:18:21 1989 X--- ./makefile Mon Sep 18 15:14:33 1989 X*************** X*** 1,7 **** X # Makefile for Hotel X X! OBJECTS = hotel.o human.o comp.o init.o utils.o costs.o help.o my_wgets.o display.o X! PCOBJECTS = hotel.obj human.obj comp.obj init.obj utils.obj costs.obj display.obj help.obj my_wgets.obj X SOURCE = init.c utils.c hotel.c human.c costs.c comp.c help.c my_wgets.c X CFLAGS = -DUNIX X X--- 1,7 ---- X # Makefile for Hotel X X! OBJECTS = hotel.o human.o comp.o init.o utils.o costs.o help.o my_wgets.o pcdisp.o X! PCOBJECTS = hotel.obj human.obj comp.obj init.obj utils.obj costs.obj pcdisp.obj help.obj my_wgets.obj X SOURCE = init.c utils.c hotel.c human.c costs.c comp.c help.c my_wgets.c X CFLAGS = -DUNIX X X*************** X*** 20,26 **** X hotel.2: hotel.c human.c init.c utils.c my_wgets.c my_wgets.h Notice X shar hotel.c human.c init.c utils.c display.c my_wgets.c my_wgets.h Notice > hotel.2 X X! display.obj: defs.h X comp.c: defs.h X hotel.obj: defs.h X init.obj: defs.h X--- 20,26 ---- X hotel.2: hotel.c human.c init.c utils.c my_wgets.c my_wgets.h Notice X shar hotel.c human.c init.c utils.c display.c my_wgets.c my_wgets.h Notice > hotel.2 X X! pcdisp.obj: defs.h X comp.c: defs.h X hotel.obj: defs.h X init.obj: defs.h X*************** X*** 29,35 **** X costs.obj: defs.h X help.obj: defs.h X X! display.o: defs.h X comp.c: defs.h X hotel.o: defs.h X init.o: defs.h X--- 29,35 ---- X costs.obj: defs.h X help.obj: defs.h X X! pcdisp.o: defs.h X comp.c: defs.h X hotel.o: defs.h X init.o: defs.h Xdiff -c Orig/pcdisp.c ./pcdisp.c X*** Orig/pcdisp.c Mon Sep 18 15:18:23 1989 X--- ./pcdisp.c Mon Sep 18 14:54:30 1989 X*************** X*** 97,103 **** X print_board(p) X int p; X { X! int i,j,tile,x,y; X X getyx(stdscr,y,x); X tile = 1; X--- 97,104 ---- X print_board(p) X int p; X { X! int i,j,k,tile,x,y; X! char buf[10]; X X getyx(stdscr,y,x); X tile = 1; X*************** X*** 105,111 **** X addch(DULCORNER); X for(i=1;i<=boardsize;i++) { X move(2,(i-1)*2+4); X- /* addstr("MM"); */ X addch(DLINE); X addch(DLINE); X } X--- 106,111 ---- X*************** X*** 112,129 **** X move(2,boardsize*2+4); X addch(DLINE); X addch(DURCORNER); X- /* addstr("M;"); */ X for(i=1;i<=boardsize;i++) { X move(i+2,3); X- /* addch(':'); */ X addch(DVERTICAL); X for(j=1;j<=boardsize;j++) { X move(i+2,(2 * j)+3); X if (board[i][j] == UNUSED) { X- /* addch('~'); */ X addch(BLOCK); X } else if (board[i][j] == 0) { X- /* addch('y'); */ X addch(POINT); X } else if (board[i][j] == -p) { X standout(); X--- 112,125 ---- X*************** X*** 130,157 **** X addch('0' + tile++); X standend(); X } else if (board[i][j] == UNPLAYABLE && debug) { X! addch('*'); X } else if (board[i][j] < 0) { X- /* addch('y'); */ X addch(POINT); X } else X addch(board[i][j] + 'A' - 1); X }; X move(i+2,(boardsize*2+5)); X- /* addch(':'); */ X addch(DVERTICAL); X }; X move(boardsize+3,3); X- /* addch('H'); */ X addch(DLLCORNER); X for(i=1;i<=boardsize;i++) { X move(boardsize+3,(i-1)*2+4); X- /* addstr("MM"); */ X addch(DLINE); X addch(DLINE); X } X move(boardsize+3,boardsize*2+4); X- /* addstr("M<"); */ X addch(DLINE); X addch(DLRCORNER); X X--- 126,148 ---- X addch('0' + tile++); X standend(); X } else if (board[i][j] == UNPLAYABLE && debug) { X! addch('x'); X } else if (board[i][j] < 0) { X addch(POINT); X } else X addch(board[i][j] + 'A' - 1); X }; X move(i+2,(boardsize*2+5)); X addch(DVERTICAL); X }; X move(boardsize+3,3); X addch(DLLCORNER); X for(i=1;i<=boardsize;i++) { X move(boardsize+3,(i-1)*2+4); X addch(DLINE); X addch(DLINE); X } X move(boardsize+3,boardsize*2+4); X addch(DLINE); X addch(DLRCORNER); X X*************** X*** 158,208 **** X /* Now do rhs info. */ X X move(2,(boardsize*2+8)); X! printw("Hotel Cost Yours Available"); X! move(3,(boardsize*2+8)); X! for (i=1;i<=6;i++) addch(LINE); X! addch(LINETEE); X! for (i=1;i<=8;i++) addch(LINE); X! addch(LINETEE); X! for (i=1;i<=7;i++) addch(LINE); X! addch(LINETEE); X! for (i=1;i<=10;i++) addch(LINE); X! /* printw("D D D D D D B D D D D D D D D B D D D D D D D B D D D D D D D D D D"); */ X for(i=1;i<=numhotels;i++) { X! move(i+3,(boardsize*2+10)); X clrtoeol(); X addch(i+'A'-1); X if(hotels[i].size > 0) { X! move(i+3,(boardsize*2+17)); X! printw("$%d",share_cost(i)); X } else { X! move(i+3,(boardsize*2+16)); X printw("($%d)",share_cost(i)); X }; X! if (players[p].shares[i] > 0) { X! move(i+3,(boardsize*2+27)); X! printw("%d",players[p].shares[i]); X }; X- move(i+3,(boardsize*2+36)); X- printw("%d",hotels[i].shares); X- move(i+3,(boardsize*2+14)); X- /* addch('3'); */ X- addch(VERTICAL); X- move(i+3,(boardsize*2+23)); X- /* addch('3'); */ X- addch(VERTICAL); X- move(i+3,(boardsize*2+31)); X- /* addch('3'); */ X- addch(VERTICAL); X }; X X move(numhotels+6,(boardsize*2+18)); X clrtoeol(); X printw("Cash = $%d",players[p].cash); X move(0,0); X- /* printw("ZDDDDDDDDDDDDDDDDDDDDDDDDD 4 pHpOpTpEpLp C D D D D D D D D D D D D D D D D D D D D D D D D ?"); */ X addch(ULCORNER); X for(i=1;i<=25;i++) addch(LINE); X addch(LHORTEE); addch(' '); X addch(TRIPLELINE); addch('H'); X addch(TRIPLELINE); addch('O'); X--- 149,298 ---- X /* Now do rhs info. */ X X move(2,(boardsize*2+8)); X! if (be_informed) { X! /* X! * The top line: Hotel Cost Bank ... Player Names X! * X! */ X! printw("H Cost Bank "); X! for (k=1; k<=numplayers; k++) { X! sprintf(buf, "%-4.4s ", players[k].name); X! if (k != p) X! printw(buf); X! else { X! standout(); X! printw(buf); X! standend(); X! } X! } X! /* X! * The line under the title line. X! * X! */ X! move(3,(boardsize*2+8)); X! addch(LINE); /* A-G */ X! addch(LINETEE); X! for (i=1;i<=6;i++) addch(LINE); /* Cost */ X! addch(LINETEE); X! for (i=1;i<=4;i++) addch(LINE); /* Bank */ X! for (k=1; k<=numplayers; k++) { /* Players */ X! addch(LINETEE); X! for (i=1;i<=4;i++) addch(LINE); X! } X! } else { X! /* X! * The title line, regular version. X! * X! */ X! printw("Hotel Cost Yours Available"); X! move(3,(boardsize*2+8)); X! for (i=1;i<=6;i++) addch(LINE); X! addch(LINETEE); X! for (i=1;i<=8;i++) addch(LINE); X! addch(LINETEE); X! for (i=1;i<=7;i++) addch(LINE); X! addch(LINETEE); X! for (i=1;i<=10;i++) addch(LINE); X! }; X! X! /* X! * For each hotel, print some information on its stock and price. X! * In the informed version, print everyone's holdings. X! * X! */ X for(i=1;i<=numhotels;i++) { X! if (be_informed) X! move(i+3,(boardsize*2+8)); X! else X! move(i+3,(boardsize*2+10)); X clrtoeol(); X+ /* X+ * The hotel initial X+ * X+ */ X addch(i+'A'-1); X+ if (be_informed) addch(VERTICAL); X+ /* X+ * The price of the hotel, in parens if not active. X+ * X+ */ X if(hotels[i].size > 0) { X! if (be_informed) X! move(i+3,(boardsize*2+11)); X! else X! move(i+3,(boardsize*2+17)); X! printw("$%d ",share_cost(i)); X! if (be_informed) addch(VERTICAL); X } else { X! if (be_informed) X! move(i+3,(boardsize*2+10)); X! else X! move(i+3,(boardsize*2+16)); X printw("($%d)",share_cost(i)); X+ if (be_informed) addch(VERTICAL); X }; X! /* X! * Stock information X! * X! */ X! if (be_informed) { X! move(i+3,(boardsize*2+18)); X! /* X! * The bank's shares X! * X! */ X! printw("%2d ",hotels[i].shares); X! addch(VERTICAL); X! /* X! * Each player. X! * X! */ X! for (k=1; k<=numplayers; k++) { /* Players */ X! if (players[k].shares[i] > 0) { X! move(i+3,(boardsize*2+23 + 5*(k-1) )); X! printw("%2d ",players[k].shares[i]); X! if (k != numplayers) addch(VERTICAL); X! } else { X! move(i+3,(boardsize*2+26 + 5*(k-1))); X! if (k != numplayers) addch(VERTICAL); X! } X! } X! } else { X! /* X! * Regular version, only player and bank. X! * X! */ X! if (players[p].shares[i] > 0) { X! move(i+3,(boardsize*2+27)); X! printw("%d",players[p].shares[i]); X! }; X! move(i+3,(boardsize*2+36)); X! printw("%d",hotels[i].shares); X! move(i+3,(boardsize*2+14)); X! addch(VERTICAL); X! move(i+3,(boardsize*2+23)); X! addch(VERTICAL); X! move(i+3,(boardsize*2+31)); X! addch(VERTICAL); X }; X }; X X+ /* X+ * Player's cash. X+ * X+ */ X move(numhotels+6,(boardsize*2+18)); X clrtoeol(); X printw("Cash = $%d",players[p].cash); X+ /* X+ * Exterior box. Size to fit if playing the informed version. X+ * X+ */ X move(0,0); X addch(ULCORNER); X for(i=1;i<=25;i++) addch(LINE); X+ if (be_informed) X+ for(i=1;i<numplayers;i++) addch(LINE); X addch(LHORTEE); addch(' '); X addch(TRIPLELINE); addch('H'); X addch(TRIPLELINE); addch('O'); X*************** X*** 211,229 **** X addch(TRIPLELINE); addch('L'); X addch(' '); addch(RHORTEE); X for(i=1;i<=25;i++) addch(LINE); X addch(URCORNER); X for(i=1;i<=(boardsize+3);i++) { X move(i,0); X- /* addch('3'); */ X addch(VERTICAL); X move(i,65); X! /* addch('3'); */ X addch(VERTICAL); X }; X move((boardsize + 4),0); X- /* printw("@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDY"); */ X addch(LLCORNER); X for(i=1;i<=64;i++) addch(LINE); X addch(LRCORNER); X move(y,x); X refresh(); X--- 301,324 ---- X addch(TRIPLELINE); addch('L'); X addch(' '); addch(RHORTEE); X for(i=1;i<=25;i++) addch(LINE); X+ if (be_informed) X+ for(i=1;i<numplayers;i++) addch(LINE); X addch(URCORNER); X for(i=1;i<=(boardsize+3);i++) { X move(i,0); X addch(VERTICAL); X move(i,65); X! if (be_informed) move(i,65+2*(numplayers-1)); X addch(VERTICAL); X }; X move((boardsize + 4),0); X addch(LLCORNER); X for(i=1;i<=64;i++) addch(LINE); X+ if (be_informed) X+ for (i=1;i<numplayers;i++) { X+ addch(LINE); X+ addch(LINE); X+ }; X addch(LRCORNER); X move(y,x); X refresh(); X END_OF_FILE if test 21075 -ne `wc -c <'patches01'`; then echo shar: \"'patches01'\" unpacked with wrong size! fi # end of 'patches01' fi echo shar: End of shell archive. exit 0