diff options
Diffstat (limited to 'games/monop')
-rw-r--r-- | games/monop/Makefile | 26 | ||||
-rw-r--r-- | games/monop/brd.dat | 78 | ||||
-rw-r--r-- | games/monop/cards.c | 208 | ||||
-rw-r--r-- | games/monop/cards.inp | 122 | ||||
-rw-r--r-- | games/monop/deck.h | 48 | ||||
-rw-r--r-- | games/monop/execute.c | 262 | ||||
-rw-r--r-- | games/monop/getinp.c | 116 | ||||
-rw-r--r-- | games/monop/houses.c | 269 | ||||
-rw-r--r-- | games/monop/initdeck.c | 184 | ||||
-rw-r--r-- | games/monop/jail.c | 127 | ||||
-rw-r--r-- | games/monop/misc.c | 272 | ||||
-rw-r--r-- | games/monop/mon.dat | 44 | ||||
-rw-r--r-- | games/monop/monop.6 | 188 | ||||
-rw-r--r-- | games/monop/monop.c | 162 | ||||
-rw-r--r-- | games/monop/monop.def | 123 | ||||
-rw-r--r-- | games/monop/monop.ext | 57 | ||||
-rw-r--r-- | games/monop/monop.h | 137 | ||||
-rw-r--r-- | games/monop/morg.c | 209 | ||||
-rw-r--r-- | games/monop/pathnames.h | 36 | ||||
-rw-r--r-- | games/monop/print.c | 192 | ||||
-rw-r--r-- | games/monop/prop.c | 211 | ||||
-rw-r--r-- | games/monop/prop.dat | 58 | ||||
-rw-r--r-- | games/monop/rent.c | 92 | ||||
-rw-r--r-- | games/monop/roll.c | 74 | ||||
-rw-r--r-- | games/monop/spec.c | 86 | ||||
-rw-r--r-- | games/monop/trade.c | 306 |
26 files changed, 0 insertions, 3687 deletions
diff --git a/games/monop/Makefile b/games/monop/Makefile deleted file mode 100644 index a1e8f2d47a4f..000000000000 --- a/games/monop/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -# @(#)Makefile 8.1 (Berkeley) 5/31/93 - -PROG= monop -SRCS= monop.c cards.c execute.c getinp.c houses.c jail.c misc.c morg.c \ - print.c prop.c rent.c roll.c spec.c trade.c -MAN6= monop.6 -DPADD= ${LIBCOMPAT} -LDADD= -lcompat -HIDEGAME=hidegame -CLEANFILES+=initdeck cards.pck - -all: ${PROG} ${MAN6} - -monop: cards.pck - -cards.pck: initdeck - ./initdeck ${.CURDIR}/cards.inp - -initdeck: initdeck.c - ${CC} ${CFLAGS} -o ${.TARGET} ${.CURDIR}/initdeck.c - -beforeinstall: - install -c -o ${BINOWN} -g ${BINGRP} -m 444 cards.pck \ - ${DESTDIR}/usr/share/games - -.include <bsd.prog.mk> diff --git a/games/monop/brd.dat b/games/monop/brd.dat deleted file mode 100644 index ff8498d0fc8f..000000000000 --- a/games/monop/brd.dat +++ /dev/null @@ -1,78 +0,0 @@ -/*- - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)brd.dat 5.5 (Berkeley) 5/31/93 - */ - -/* name (COLOR) owner type desc cost */ - -{"=== GO ===", -1, SAFE, 0 }, -{"Mediterranean ave. (P)", -1, PRPTY, &prop[0], 60 }, -{"Community Chest i", -1, CC, }, -{"Baltic ave. (P)", -1, PRPTY, &prop[1], 60 }, -{"Income Tax", -1, INC_TAX, }, -{"Reading RR", -1, RR, &rr[0], 200 }, -{"Oriental ave. (L)", -1, PRPTY, &prop[2], 100 }, -{"Chance i", -1, CHANCE, }, -{"Vermont ave. (L)", -1, PRPTY, &prop[3], 100 }, -{"Connecticut ave. (L)", -1, PRPTY, &prop[4], 120 }, -{"Just Visiting", -1, SAFE, 0 }, -{"St. Charles pl. (V)", -1, PRPTY, &prop[5], 140 }, -{"Electric Co.", -1, UTIL, &util[0], 150 }, -{"States ave. (V)", -1, PRPTY, &prop[6], 140 }, -{"Virginia ave. (V)", -1, PRPTY, &prop[7], 160 }, -{"Pennsylvania RR", -1, RR, &rr[1], 200 }, -{"St. James pl. (O)", -1, PRPTY, &prop[8], 180 }, -{"Community Chest ii", -1, CC, }, -{"Tennessee ave. (O)", -1, PRPTY, &prop[9], 180 }, -{"New York ave. (O)", -1, PRPTY, &prop[10], 200 }, -{"Free Parking", -1, SAFE, 0 }, -{"Kentucky ave. (R)", -1, PRPTY, &prop[11], 220 }, -{"Chance ii", -1, CHANCE, }, -{"Indiana ave. (R)", -1, PRPTY, &prop[12], 220 }, -{"Illinois ave. (R)", -1, PRPTY, &prop[13], 240 }, -{"B&O RR", -1, RR, &rr[2], 200 }, -{"Atlantic ave. (Y)", -1, PRPTY, &prop[14], 260 }, -{"Ventnor ave. (Y)", -1, PRPTY, &prop[15], 260 }, -{"Water Works", -1, UTIL, &util[1], 150 }, -{"Marvin Gardens (Y)", -1, PRPTY, &prop[16], 280 }, -{"GO TO JAIL", -1, GOTO_J, }, -{"Pacific ave. (G)", -1, PRPTY, &prop[17], 300 }, -{"N. Carolina ave. (G)", -1, PRPTY, &prop[18], 300 }, -{"Community Chest iii", -1, CC, }, -{"Pennsylvania ave. (G)", -1, PRPTY, &prop[19], 320 }, -{"Short Line RR", -1, RR, &rr[3], 200 }, -{"Chance iii", -1, CHANCE, }, -{"Park place (D)", -1, PRPTY, &prop[20], 350 }, -{"Luxury Tax", -1, LUX_TAX, }, -{"Boardwalk (D)", -1, PRPTY, &prop[21], 400 }, -{"JAIL", -1, IN_JAIL, } diff --git a/games/monop/cards.c b/games/monop/cards.c deleted file mode 100644 index 74248207a0f9..000000000000 --- a/games/monop/cards.c +++ /dev/null @@ -1,208 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)cards.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include "monop.ext" -# include "pathnames.h" - -/* - * These routine deal with the card decks - */ - -# define GOJF 'F' /* char for get-out-of-jail-free cards */ - -# ifndef DEV -static char *cardfile = _PATH_CARDS; -# else -static char *cardfile = "cards.pck"; -# endif - -static FILE *deckf; - -/* - * This routine initializes the decks from the data file, - * which it opens. - */ -init_decks() { - - if ((deckf=fopen(cardfile, "r")) == NULL) { -file_err: - perror(cardfile); - exit(1); - } - if (fread(deck, sizeof (DECK), 2, deckf) != 2) - goto file_err; - set_up(&CC_D); - set_up(&CH_D); -} -/* - * This routine sets up the offset pointers for the given deck. - */ -set_up(dp) -DECK *dp; { - - reg int r1, r2; - int i; - - dp->offsets = (long *) calloc(sizeof (long), dp->num_cards); - if (fread(dp->offsets, sizeof(long), dp->num_cards, deckf) != dp->num_cards) { - perror(cardfile); - exit(1); - } - dp->last_card = 0; - dp->gojf_used = FALSE; - for (i = 0; i < dp->num_cards; i++) { - reg long temp; - - r1 = roll(1, dp->num_cards) - 1; - r2 = roll(1, dp->num_cards) - 1; - temp = dp->offsets[r2]; - dp->offsets[r2] = dp->offsets[r1]; - dp->offsets[r1] = temp; - } -} -/* - * This routine draws a card from the given deck - */ -get_card(dp) -DECK *dp; { - - reg char type_maj, type_min; - reg int num; - int i, per_h, per_H, num_h, num_H; - OWN *op; - - do { - fseek(deckf, dp->offsets[dp->last_card], 0); - dp->last_card = ++(dp->last_card) % dp->num_cards; - type_maj = getc(deckf); - } while (dp->gojf_used && type_maj == GOJF); - type_min = getc(deckf); - num = getw(deckf); - printmes(); - switch (type_maj) { - case '+': /* get money */ - if (type_min == 'A') { - for (i = 0; i < num_play; i++) - if (i != player) - play[i].money -= num; - num = num * (num_play - 1); - } - cur_p->money += num; - break; - case '-': /* lose money */ - if (type_min == 'A') { - for (i = 0; i < num_play; i++) - if (i != player) - play[i].money += num; - num = num * (num_play - 1); - } - cur_p->money -= num; - break; - case 'M': /* move somewhere */ - switch (type_min) { - case 'F': /* move forward */ - num -= cur_p->loc; - if (num < 0) - num += 40; - break; - case 'J': /* move to jail */ - goto_jail(); - return; - case 'R': /* move to railroad */ - spec = TRUE; - num = (int)((cur_p->loc + 5)/10)*10 + 5 - cur_p->loc; - break; - case 'U': /* move to utility */ - spec = TRUE; - if (cur_p->loc >= 12 && cur_p->loc < 28) - num = 28 - cur_p->loc; - else { - num = 12 - cur_p->loc; - if (num < 0) - num += 40; - } - break; - case 'B': - num = -num; - break; - } - move(num); - break; - case 'T': /* tax */ - if (dp == &CC_D) { - per_h = 40; - per_H = 115; - } - else { - per_h = 25; - per_H = 100; - } - num_h = num_H = 0; - for (op = cur_p->own_list; op; op = op->next) - if (op->sqr->type == PRPTY) - if (op->sqr->desc->houses == 5) - ++num_H; - else - num_h += op->sqr->desc->houses; - num = per_h * num_h + per_H * num_H; - printf("You had %d Houses and %d Hotels, so that cost you $%d\n", num_h, num_H, num); - if (num == 0) - lucky(""); - else - cur_p->money -= num; - break; - case GOJF: /* get-out-of-jail-free card */ - cur_p->num_gojf++; - dp->gojf_used = TRUE; - break; - } - spec = FALSE; -} -/* - * This routine prints out the message on the card - */ -printmes() { - - reg char c; - - printline(); - fflush(stdout); - while ((c = getc(deckf)) != '\0') - putchar(c); - printline(); - fflush(stdout); -} diff --git a/games/monop/cards.inp b/games/monop/cards.inp deleted file mode 100644 index 1867e87bb08b..000000000000 --- a/games/monop/cards.inp +++ /dev/null @@ -1,122 +0,0 @@ -FF ->> GET OUT OF JAIL FREE << -Keep this card until needed or sold -%% -++25 -Receive for Services $25. -%% -++200 -Bank Error in Your Favor. -Collect $200. -%% -++20 -Income Tax Refund. -Collect $20. -%% ---100 -Pay Hospital $100 -%% -++100 -Life Insurance Matures. -Collect $100 -%% -++45 -From sale of Stock You get $45. -%% -TX -You are Assessed for street repairs. - $40 per House - $115 per Hotel -%% -++100 -X-mas Fund Matures. -Collect $100. -%% -++11 -You have won Second Prize in a Beauty Contest -Collect $11 -%% -MF0 -Advance to GO -(Collect $200) -%% -++100 -You inherit $100 -%% ---150 -Pay School Tax of $150. -%% -MJ - >> GO TO JAIL << -Go Directly to Jail. Do not pass GO Do not collect $200. -%% -+A50 - >> GRAND OPERA OPENING << -Collect $50 from each player for opening night seats. -%% ---50 -Doctor's Fee: Pay $50. -%- -FF ->> GET OUT OF JAIL FREE << -Keep this card until needed or sold -%% -MR -Advance to the nearest Railroad, and pay owner -Twice the rental to which he is otherwise entitled. -If Railroad is unowned you may buy it from the bank -%% -MU -Advance to the nearest Utility. -If unowned, you may buy it from the bank. -If owned, throw dice and pay oner a total of ten times -the amount thrown. -%% -MB3 -Go Back 3 Spaces -%% -MR -Advance to the nearest Railroad, and pay owner -Twice the rental to which he is otherwise entitled. -If Railroad is unowned you may buy it from the bank -%% -MJ - >> GO DIRECTLY TO JAIL << -Do not pass GO, Do not Collect $200. -%% -MF5 -Take a Ride on the Reading. -If you pass GO, collect $200. -%% -MF39 -Take a Walk on the Board Walk. - (Advance To Board Walk) -%% -MF24 -Advance to Illinos Ave. -%% -MF0 -Advance to Go -%% -MF11 -Advance to St. Charles Place. -If you pass GO, collect $200. -%% -TX -Make general repairs on all of your Property. -For Each House pay $25. -For Each Hotel pay $100. -%% --A50 -You have been elected Chairman of the Board. -Pay each player $50. -%% ---15 -Pay Poor Tax of $15 -%% -++50 -Bank pays you Dividend of $50. -%% -++150 -Your Building and Loan Matures. -Collect $150. diff --git a/games/monop/deck.h b/games/monop/deck.h deleted file mode 100644 index 604937da4b4f..000000000000 --- a/games/monop/deck.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)deck.h 8.1 (Berkeley) 5/31/93 - */ - -# define bool char - -# define CC_D deck[0] -# define CH_D deck[1] - -struct dk_st { /* deck description structure */ - int num_cards; /* number of cards in deck */ - int last_card; /* number of last card picked */ - bool gojf_used; /* set if gojf card out of deck */ - long *offsets; /* offests for start of cards */ -}; - -typedef struct dk_st DECK; diff --git a/games/monop/execute.c b/games/monop/execute.c deleted file mode 100644 index f7704325fdc2..000000000000 --- a/games/monop/execute.c +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)execute.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include "monop.ext" -# include <sys/types.h> -# include <sys/stat.h> -# include <sys/time.h> - -# define SEGSIZE 8192 - -typedef struct stat STAT; -typedef struct tm TIME; - -extern char etext[], /* end of text space */ - rub(); - -static char buf[257], - *yn_only[] = { "yes", "no"}; - -static bool new_play; /* set if move on to new player */ - -/* - * This routine executes the given command by index number - */ -execute(com_num) -reg int com_num; { - - new_play = FALSE; /* new_play is true if fixing */ - (*func[com_num])(); - notify(); - force_morg(); - if (new_play) - next_play(); - else if (num_doub) - printf("%s rolled doubles. Goes again\n", cur_p->name); -} -/* - * This routine moves a piece around. - */ -do_move() { - - reg int r1, r2; - reg bool was_jail; - - new_play = was_jail = FALSE; - printf("roll is %d, %d\n", r1=roll(1, 6), r2=roll(1, 6)); - if (cur_p->loc == JAIL) { - was_jail++; - if (!move_jail(r1, r2)) { - new_play++; - goto ret; - } - } - else { - if (r1 == r2 && ++num_doub == 3) { - printf("That's 3 doubles. You go to jail\n"); - goto_jail(); - new_play++; - goto ret; - } - move(r1+r2); - } - if (r1 != r2 || was_jail) - new_play++; -ret: - return; -} -/* - * This routine moves a normal move - */ -move(rl) -reg int rl; { - - reg int old_loc; - - old_loc = cur_p->loc; - cur_p->loc = (cur_p->loc + rl) % N_SQRS; - if (cur_p->loc < old_loc && rl > 0) { - cur_p->money += 200; - printf("You pass %s and get $200\n", board[0].name); - } - show_move(); -} -/* - * This routine shows the results of a move - */ -show_move() { - - reg SQUARE *sqp; - - sqp = &board[cur_p->loc]; - printf("That puts you on %s\n", sqp->name); - switch (sqp->type) { - case SAFE: - printf("That is a safe place\n"); - break; - case CC: - cc(); break; - case CHANCE: - chance(); break; - case INC_TAX: - inc_tax(); break; - case GOTO_J: - goto_jail(); break; - case LUX_TAX: - lux_tax(); break; - case PRPTY: - case RR: - case UTIL: - if (sqp->owner < 0) { - printf("That would cost $%d\n", sqp->cost); - if (getyn("Do you want to buy? ") == 0) { - buy(player, sqp); - cur_p->money -= sqp->cost; - } - else if (num_play > 2) - bid(sqp); - } - else if (sqp->owner == player) - printf("You own it.\n"); - else - rent(sqp); - } -} -/* - * This routine saves the current game for use at a later date - */ -save() { - - reg char *sp; - reg int outf, num; - time_t t; - int *dat_end; - struct stat sb; - unsgn start, end; - - printf("Which file do you wish to save it in? "); - sp = buf; - while ((*sp++=getchar()) != '\n') - continue; - *--sp = '\0'; - - /* - * check for existing files, and confirm overwrite if needed - */ - - if (stat(buf, &sb) > -1 - && getyn("File exists. Do you wish to overwrite? ", yn_only) > 0) - return; - - if ((outf=creat(buf, 0644)) < 0) { - perror(buf); - return; - } - printf("\"%s\" ", buf); - time(&t); /* get current time */ - strcpy(buf, ctime(&t)); - for (sp = buf; *sp != '\n'; sp++) - continue; - *sp = '\0'; -# if 0 - start = (((int) etext + (SEGSIZE-1)) / SEGSIZE ) * SEGSIZE; -# else - start = 0; -# endif - end = sbrk(0); - while (start < end) { /* write out entire data space */ - num = start + 16 * 1024 > end ? end - start : 16 * 1024; - write(outf, start, num); - start += num; - } - close(outf); - printf("[%s]\n", buf); -} -/* - * This routine restores an old game from a file - */ -restore() { - - reg char *sp; - - printf("Which file do you wish to restore from? "); - for (sp = buf; (*sp=getchar()) != '\n'; sp++) - continue; - *sp = '\0'; - rest_f(buf); -} -/* - * This does the actual restoring. It returns TRUE if the - * backup was successful, else false. - */ -rest_f(file) -reg char *file; { - - reg char *sp; - reg int inf, num; - char buf[80]; - unsgn start, end; - STAT sbuf; - - if ((inf=open(file, 0)) < 0) { - perror(file); - return FALSE; - } - printf("\"%s\" ", file); - if (fstat(inf, &sbuf) < 0) { /* get file stats */ - perror(file); - exit(1); - } -# if 0 - start = (((int) etext + (SEGSIZE-1)) / SEGSIZE ) * SEGSIZE; -# else - start = 0; -# endif - brk(end = start + sbuf.st_size); - while (start < end) { /* write out entire data space */ - num = start + 16 * 1024 > end ? end - start : 16 * 1024; - read(inf, start, num); - start += num; - } - close(inf); - strcpy(buf, ctime(&sbuf.st_mtime)); - for (sp = buf; *sp != '\n'; sp++) - continue; - *sp = '\0'; - printf("[%s]\n", buf); - return TRUE; -} diff --git a/games/monop/getinp.c b/games/monop/getinp.c deleted file mode 100644 index 3a4b9d7e60a8..000000000000 --- a/games/monop/getinp.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)getinp.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include <stdio.h> -# include <ctype.h> - -# define reg register - -# define LINE 70 - -static char buf[257]; - -getinp(prompt, list) -char *prompt, *list[]; { - - reg int i, n_match, match; - char *sp; - int plen; - static int comp(); - - for (;;) { -inter: - printf(prompt); - for (sp = buf; (*sp=getchar()) != '\n'; ) - if (*sp == -1) /* check for interupted system call */ - goto inter; - else if (sp != buf || *sp != ' ') - sp++; - if (buf[0] == '?' && buf[1] == '\n') { - printf("Valid inputs are: "); - for (i = 0, match = 18; list[i]; i++) { - if ((match+=(n_match=strlen(list[i]))) > LINE) { - printf("\n\t"); - match = n_match + 8; - } - if (*list[i] == '\0') { - match += 8; - printf("<RETURN>"); - } - else - printf(list[i]); - if (list[i+1]) - printf(", "); - else - putchar('\n'); - match += 2; - } - continue; - } - *sp = '\0'; - for (sp = buf; *sp; sp++) - if (isupper(*sp)) - *sp = tolower(*sp); - for (i = n_match = 0; list[i]; i++) - if (comp(list[i])) { - n_match++; - match = i; - } - if (n_match == 1) - return match; - else if (buf[0] != '\0') - printf("Illegal response: \"%s\". Use '?' to get list of valid answers\n", buf); - } -} - -static -comp(s1) -char *s1; { - - reg char *sp, *tsp, c; - - if (buf[0] != '\0') - for (sp = buf, tsp = s1; *sp; ) { - c = isupper(*tsp) ? tolower(*tsp) : *tsp; - tsp++; - if (c != *sp++) - return 0; - } - else if (*s1 != '\0') - return 0; - return 1; -} diff --git a/games/monop/houses.c b/games/monop/houses.c deleted file mode 100644 index 5134c204edab..000000000000 --- a/games/monop/houses.c +++ /dev/null @@ -1,269 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)houses.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include "monop.ext" - -static char *names[N_MON+2], - cur_prop[80]; - -static MON *monops[N_MON]; - -/* - * These routines deal with buying and selling houses - */ -buy_houses() { - - reg int num_mon; - reg MON *mp; - reg OWN *op; - bool good,got_morg; - int i,p; - -over: - num_mon = 0; - good = TRUE; - got_morg = FALSE; - for (op = cur_p->own_list; op && op->sqr->type != PRPTY; op = op->next) - continue; - while (op) - if (op->sqr->desc->monop) { - mp = op->sqr->desc->mon_desc; - names[num_mon] = (monops[num_mon]=mp)->name; - num_mon++; - got_morg = good = FALSE; - for (i = 0; i < mp->num_in; i++) { - if (op->sqr->desc->morg) - got_morg++; - if (op->sqr->desc->houses != 5) - good++; - op = op->next; - } - if (!good || got_morg) - --num_mon; - } - else - op = op->next; - if (num_mon == 0) { - if (got_morg) - printf("You can't build on mortgaged monopolies.\n"); - else if (!good) - printf("You can't build any more.\n"); - else - printf("But you don't have any monopolies!!\n"); - return; - } - if (num_mon == 1) - buy_h(monops[0]); - else { - names[num_mon++] = "done"; - names[num_mon--] = 0; - if ((p=getinp("Which property do you wish to buy houses for? ", names)) == num_mon) - return; - buy_h(monops[p]); - goto over; - } -} - -buy_h(mnp) -MON *mnp; { - - reg int i; - reg MON *mp; - reg int price; - shrt input[3],temp[3]; - int tot; - PROP *pp; - - mp = mnp; - price = mp->h_cost * 50; -blew_it: - list_cur(mp); - printf("Houses will cost $%d\n", price); - printf("How many houses do you wish to buy for\n"); - for (i = 0; i < mp->num_in; i++) { - pp = mp->sq[i]->desc; -over: - if (pp->houses == 5) { - printf("%s (H):\n", mp->sq[i]->name); - input[i] = 0; - temp[i] = 5; - continue; - } - (void)sprintf(cur_prop, "%s (%d): ", - mp->sq[i]->name, pp->houses); - input[i] = get_int(cur_prop); - temp[i] = input[i] + pp->houses; - if (temp[i] > 5) { - printf("That's too many. The most you can buy is %d\n", - 5 - pp->houses); - goto over; - } - } - if (mp->num_in == 3 && (abs(temp[0] - temp[1]) > 1 || - abs(temp[0] - temp[2]) > 1 || abs(temp[1] - temp[2]) > 1)) { -err: printf("That makes the spread too wide. Try again\n"); - goto blew_it; - } - else if (mp->num_in == 2 && abs(temp[0] - temp[1]) > 1) - goto err; - for (tot = i = 0; i < mp->num_in; i++) - tot += input[i]; - if (tot) { - printf("You asked for %d houses for $%d\n", tot, tot * price); - if (getyn("Is that ok? ", yn) == 0) { - cur_p->money -= tot * price; - for (tot = i = 0; i < mp->num_in; i++) - mp->sq[i]->desc->houses = temp[i]; - } - } -} - -/* - * This routine sells houses. - */ -sell_houses() { - - reg int num_mon; - reg MON *mp; - reg OWN *op; - bool good; - int p; - -over: - num_mon = 0; - good = TRUE; - for (op = cur_p->own_list; op; op = op->next) - if (op->sqr->type == PRPTY && op->sqr->desc->monop) { - mp = op->sqr->desc->mon_desc; - names[num_mon] = (monops[num_mon]=mp)->name; - num_mon++; - good = 0; - do - if (!good && op->sqr->desc->houses != 0) - good++; - while (op->next && op->sqr->desc->mon_desc == mp - && (op=op->next)); - if (!good) - --num_mon; - } - if (num_mon == 0) { - printf("You don't have any houses to sell!!\n"); - return; - } - if (num_mon == 1) - sell_h(monops[0]); - else { - names[num_mon++] = "done"; - names[num_mon--] = 0; - if ((p=getinp("Which property do you wish to sell houses from? ", names)) == num_mon) - return; - sell_h(monops[p]); - notify(); - goto over; - } -} - -sell_h(mnp) -MON *mnp; { - - reg int i; - reg MON *mp; - reg int price; - shrt input[3],temp[3]; - int tot; - PROP *pp; - - mp = mnp; - price = mp->h_cost * 25; -blew_it: - printf("Houses will get you $%d apiece\n", price); - list_cur(mp); - printf("How many houses do you wish to sell from\n"); - for (i = 0; i < mp->num_in; i++) { - pp = mp->sq[i]->desc; -over: - if (pp->houses == 0) { - printf("%s (0):\n", mp->sq[i]->name); - input[i] = temp[i] = 0; - continue; - } - if (pp->houses < 5) - (void)sprintf(cur_prop,"%s (%d): ", - mp->sq[i]->name,pp->houses); - else - (void)sprintf(cur_prop,"%s (H): ",mp->sq[i]->name); - input[i] = get_int(cur_prop); - temp[i] = pp->houses - input[i]; - if (temp[i] < 0) { - printf("That's too many. The most you can sell is %d\n", pp->houses); - goto over; - } - } - if (mp->num_in == 3 && (abs(temp[0] - temp[1]) > 1 || - abs(temp[0] - temp[2]) > 1 || abs(temp[1] - temp[2]) > 1)) { -err: printf("That makes the spread too wide. Try again\n"); - goto blew_it; - } - else if (mp->num_in == 2 && abs(temp[0] - temp[1]) > 1) - goto err; - for (tot = i = 0; i < mp->num_in; i++) - tot += input[i]; - if (tot) { - printf("You asked to sell %d houses for $%d\n",tot,tot * price); - if (getyn("Is that ok? ", yn) == 0) { - cur_p->money += tot * price; - for (tot = i = 0; i < mp->num_in; i++) - mp->sq[i]->desc->houses = temp[i]; - } - } -} - -list_cur(mp) -reg MON *mp; { - - reg int i; - reg SQUARE *sqp; - - for (i = 0; i < mp->num_in; i++) { - sqp = mp->sq[i]; - if (sqp->desc->houses == 5) - printf("%s (H) ", sqp->name); - else - printf("%s (%d) ", sqp->name, sqp->desc->houses); - } - putchar('\n'); -} diff --git a/games/monop/initdeck.c b/games/monop/initdeck.c deleted file mode 100644 index 87b64f4983a3..000000000000 --- a/games/monop/initdeck.c +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1980, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)initdeck.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include <stdio.h> -# include "deck.h" - -/* - * This program initializes the card files for monopoly. - * It reads in a data file with Com. Chest cards, followed by - * the Chance card. The two are seperated by a line of "%-". - * All other cards are seperated by lines of "%%". In the front - * of the file is the data for the decks in the same order. - * This includes the seek pointer for the start of each card. - * All cards start with their execution code, followed by the - * string to print, terminated with a null byte. - */ - -# define TRUE 1 -# define FALSE 0 - -# define bool char -# define reg register - -char *infile = "cards.inp", /* input file */ - *outfile = "cards.pck"; /* "packed" file */ - -extern long ftell(); -extern char *calloc(); - -DECK deck[2]; - -FILE *inf, *outf; - -main(ac, av) -int ac; -char *av[]; { - - getargs(ac, av); - if ((inf = fopen(infile, "r")) == NULL) { - perror(infile); - exit(1); - } - count(); - /* - * allocate space for pointers. - */ - CC_D.offsets = (long *)calloc(CC_D.num_cards + 1, sizeof (long)); - CH_D.offsets = (long *)calloc(CH_D.num_cards + 1, sizeof (long)); - fseek(inf, 0L, 0); - if ((outf = fopen(outfile, "w")) == NULL) { - perror(outfile); - exit(0); - } - - fwrite(deck, sizeof (DECK), 2, outf); - fwrite(CC_D.offsets, sizeof (long), CC_D.num_cards, outf); - fwrite(CH_D.offsets, sizeof (long), CH_D.num_cards, outf); - putem(); - - fclose(inf); - fseek(outf, 0, 0L); - fwrite(deck, sizeof (DECK), 2, outf); - fwrite(CC_D.offsets, sizeof (long), CC_D.num_cards, outf); - fwrite(CH_D.offsets, sizeof (long), CH_D.num_cards, outf); - fclose(outf); - printf("There were %d com. chest and %d chance cards\n", CC_D.num_cards, CH_D.num_cards); - exit(0); -} - -getargs(ac, av) -int ac; -char *av[]; { - - if (ac > 1) - infile = av[1]; - if (ac > 2) - outfile = av[2]; -} - -/* - * count the cards - */ -count() { - - reg bool newline; - reg DECK *in_deck; - reg char c; - - newline = TRUE; - in_deck = &CC_D; - while ((c=getc(inf)) != EOF) - if (newline && c == '%') { - newline = FALSE; - in_deck->num_cards++; - if (getc(inf) == '-') - in_deck = &CH_D; - } - else - newline = (c == '\n'); - in_deck->num_cards++; -} -/* - * put strings in the file - */ -putem() { - - reg bool newline; - reg DECK *in_deck; - reg char c; - reg int num; - - in_deck = &CC_D; - CC_D.num_cards = 1; - CH_D.num_cards = 0; - CC_D.offsets[0] = ftell(outf); - putc(getc(inf), outf); - putc(getc(inf), outf); - for (num = 0; (c=getc(inf)) != '\n'; ) - num = num * 10 + (c - '0'); - putw(num, outf); - newline = FALSE; - while ((c=getc(inf)) != EOF) - if (newline && c == '%') { - putc('\0', outf); - newline = FALSE; - if (getc(inf) == '-') - in_deck = &CH_D; - while (getc(inf) != '\n') - continue; - in_deck->offsets[in_deck->num_cards++] = ftell(outf); - if ((c=getc(inf)) == EOF) - break; - putc(c, outf); - putc(c = getc(inf), outf); - for (num = 0; (c=getc(inf)) != EOF && c != '\n'; ) - num = num * 10 + (c - '0'); - putw(num, outf); - } - else { - putc(c, outf); - newline = (c == '\n'); - } - putc('\0', outf); -} diff --git a/games/monop/jail.c b/games/monop/jail.c deleted file mode 100644 index e0334c5ef2d9..000000000000 --- a/games/monop/jail.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)jail.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include "monop.ext" - -/* - * This routine uses a get-out-of-jail-free card to get the - * player out of jail. - */ -card() { - - if (cur_p->loc != JAIL) { - printf("But you're not IN Jail\n"); - return; - } - if (cur_p->num_gojf == 0) { - printf("But you don't HAVE a get out of jail free card\n"); - return; - } - ret_card(cur_p); - cur_p->loc = 10; /* just visiting */ - cur_p->in_jail = 0; -} -/* - * This routine returns the players get-out-of-jail-free card - * to a deck. - */ -ret_card(plr) -reg PLAY *plr; { - - plr->num_gojf--; - if (CC_D.gojf_used) - CC_D.gojf_used = FALSE; - else - CH_D.gojf_used = FALSE; -} -/* - * This routine deals with paying your way out of jail. - */ -pay() { - - if (cur_p->loc != JAIL) { - printf("But you're not IN Jail\n"); - return; - } - cur_p->loc = 10; - cur_p->money -= 50; - cur_p->in_jail = 0; - printf("That cost you $50\n"); -} -/* - * This routine deals with a move in jail - */ -move_jail(r1, r2) -reg int r1, r2; { - - if (r1 != r2) { - printf("Sorry, that doesn't get you out\n"); - if (++(cur_p->in_jail) == 3) { - printf("It's your third turn and you didn't roll doubles. You have to pay $50\n"); - cur_p->money -= 50; -moveit: - cur_p->loc = 10; - cur_p->in_jail = 0; - move(r1+r2); - r1 = r2 - 1; /* kludge: stop new roll w/doub */ - return TRUE; - } - return FALSE; - } - else { - printf("Double roll gets you out.\n"); - goto moveit; - } -} -printturn() { - - if (cur_p->loc != JAIL) - return; - printf("(This is your "); - switch (cur_p->in_jail) { - case 0: - printf("1st"); - break; - case 1: - printf("2nd"); - break; - case 2: - printf("3rd (and final)"); - break; - } - printf(" turn in JAIL)\n"); -} diff --git a/games/monop/misc.c b/games/monop/misc.c deleted file mode 100644 index ed2653407e1b..000000000000 --- a/games/monop/misc.c +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)misc.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include "monop.ext" -# include <ctype.h> -# include <signal.h> - -/* - * This routine executes a truncated set of commands until a - * "yes or "no" answer is gotten. - */ -getyn(prompt) -reg char *prompt; { - - reg int com; - - for (;;) - if ((com=getinp(prompt, yn)) < 2) - return com; - else - (*func[com-2])(); -} -/* - * This routine tells the player if he's out of money. - */ -notify() { - - if (cur_p->money < 0) - printf("That leaves you $%d in debt\n", -cur_p->money); - else if (cur_p->money == 0) - printf("that leaves you broke\n"); - else if (fixing && !told_em && cur_p->money > 0) { - printf("-- You are now Solvent ---\n"); - told_em = TRUE; - } -} -/* - * This routine switches to the next player - */ -next_play() { - - player = ++player % num_play; - cur_p = &play[player]; - num_doub = 0; -} -/* - * This routine gets an integer from the keyboard after the - * given prompt. - */ -get_int(prompt) -reg char *prompt; { - - reg int num; - reg char *sp; - char buf[257]; - - for (;;) { -inter: - printf(prompt); - num = 0; - for (sp = buf; (*sp=getchar()) != '\n'; sp++) - if (*sp == -1) /* check for interrupted system call */ - goto inter; - if (sp == buf) - continue; - for (sp = buf; isspace(*sp); sp++) - continue; - for (; isdigit(*sp); sp++) - num = num * 10 + *sp - '0'; - if (*sp == '\n') - return num; - else - printf("I can't understand that\n"); - } -} -/* - * This routine sets the monopoly flag from the list given. - */ -set_ownlist(pl) -int pl; { - - reg int num; /* general counter */ - reg MON *orig; /* remember starting monop ptr */ - reg OWN *op; /* current owned prop */ - OWN *orig_op; /* origianl prop before loop */ - - op = play[pl].own_list; -#ifdef DEBUG - printf("op [%d] = play[pl [%d] ].own_list;\n", op, pl); -#endif - while (op) { -#ifdef DEBUG - printf("op->sqr->type = %d\n", op->sqr->type); -#endif - switch (op->sqr->type) { - case UTIL: -#ifdef DEBUG - printf(" case UTIL:\n"); -#endif - for (num = 0; op && op->sqr->type == UTIL; op = op->next) - num++; - play[pl].num_util = num; -#ifdef DEBUG - printf("play[pl].num_util = num [%d];\n", num); -#endif - break; - case RR: -#ifdef DEBUG - printf(" case RR:\n"); -#endif - for (num = 0; op && op->sqr->type == RR; op = op->next) { -#ifdef DEBUG - printf("iter: %d\n", num); - printf("op = %d, op->sqr = %d, op->sqr->type = %d\n", op, op->sqr, op->sqr->type); -#endif - num++; - } - play[pl].num_rr = num; -#ifdef DEBUG - printf("play[pl].num_rr = num [%d];\n", num); -#endif - break; - case PRPTY: -#ifdef DEBUG - printf(" case PRPTY:\n"); -#endif - orig = op->sqr->desc->mon_desc; - orig_op = op; - num = 0; - while (op && op->sqr->desc->mon_desc == orig) { -#ifdef DEBUG - printf("iter: %d\n", num); -#endif - num++; -#ifdef DEBUG - printf("op = op->next "); -#endif - op = op->next; -#ifdef DEBUG - printf("[%d];\n", op); -#endif - } -#ifdef DEBUG - printf("num = %d\n"); -#endif - if (orig == 0) { - printf("panic: bad monopoly descriptor: orig = %d\n", orig); - printf("player # %d\n", pl+1); - printhold(pl); - printf("orig_op = %d\n", orig_op); - printf("orig_op->sqr->type = %d (PRPTY)\n", op->sqr->type); - printf("orig_op->next = %d\n", op->next); - printf("orig_op->sqr->desc = %d\n", op->sqr->desc); - printf("op = %d\n", op); - printf("op->sqr->type = %d (PRPTY)\n", op->sqr->type); - printf("op->next = %d\n", op->next); - printf("op->sqr->desc = %d\n", op->sqr->desc); - printf("num = %d\n", num); - } -#ifdef DEBUG - printf("orig->num_in = %d\n", orig->num_in); -#endif - if (num == orig->num_in) - is_monop(orig, pl); - else - isnot_monop(orig); - break; - } - } -} -/* - * This routine sets things up as if it is a new monopoly - */ -is_monop(mp, pl) -reg MON *mp; -int pl; { - - reg char *sp; - reg int i; - - mp->owner = pl; - mp->num_own = mp->num_in; - for (i = 0; i < mp->num_in; i++) - mp->sq[i]->desc->monop = TRUE; - mp->name = mp->mon_n; -} -/* - * This routine sets things up as if it is no longer a monopoly - */ -isnot_monop(mp) -reg MON *mp; { - - reg char *sp; - reg int i; - - mp->owner = -1; - for (i = 0; i < mp->num_in; i++) - mp->sq[i]->desc->monop = FALSE; - mp->name = mp->not_m; -} -/* - * This routine gives a list of the current player's routine - */ -list() { - - printhold(player); -} -/* - * This routine gives a list of a given players holdings - */ -list_all() { - - reg int pl; - - while ((pl=getinp("Whose holdings do you want to see? ", name_list)) < num_play) - printhold(pl); -} -/* - * This routine gives the players a chance before it exits. - */ -void -quit() { - - putchar('\n'); - if (getyn("Do you all really want to quit? ", yn) == 0) - exit(0); - signal(SIGINT, quit); -} -/* - * This routine copies one structure to another - */ -cpy_st(s1, s2, size) -reg int *s1, *s2, size; { - - size /= 2; - while (size--) - *s1++ = *s2++; -} diff --git a/games/monop/mon.dat b/games/monop/mon.dat deleted file mode 100644 index 8d5ab4de62d2..000000000000 --- a/games/monop/mon.dat +++ /dev/null @@ -1,44 +0,0 @@ -/*- - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)mon.dat 5.4 (Berkeley) 5/31/93 - */ - -/* name owner num_in num_own h_cost not_m mon_n sq */ -{0, -1, 2, 0, 1, "Purple", "PURPLE", {1,3}}, -{0, -1, 3, 0, 1, "Lt. Blue", "LT. BLUE", {6,8,9}}, -{0, -1, 3, 0, 2, "Violet", "VIOLET", {11,13,14}}, -{0, -1, 3, 0, 2, "Orange", "ORANGE", {16,18,19}}, -{0, -1, 3, 0, 3, "Red", "RED", {21,23,24}}, -{0, -1, 3, 0, 3, "Yellow", "YELLOW", {26,27,29}}, -{0, -1, 3, 0, 4, "Green", "GREEN", {31,32,34}}, -{0, -1, 2, 0, 4, "Dk. Blue", "DK. BLUE", {37,39}} diff --git a/games/monop/monop.6 b/games/monop/monop.6 deleted file mode 100644 index 35b2e8d8d579..000000000000 --- a/games/monop/monop.6 +++ /dev/null @@ -1,188 +0,0 @@ -.\" Copyright (c) 1980 The Regents of the University of California. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)monop.6 6.5 (Berkeley) 3/25/93 -.\" -.de Sc \" start command list macro -.ie n .PD 0 -.el .PD 0.5 -.sp -.. -.de Cm \" define command macro -.TP 10 -.ie t .BR "\\$1" : -.el .IR "\\$1" : -.. -.de Ec \" end command macro -.PD 1 -.. -.TH MONOP 6 "March 25, 1993" -.UC 4 -.SH NAME -monop \- Monopoly game -.SH SYNOPSIS -.B /usr/games/monop -[ file ] -.SH DESCRIPTION -.I Monop -is reminiscent of the Parker Brother's game Monopoly, and -monitors a game between 1 to 9 users. -It is assumed that the rules of Monopoly are known. -The game follows the standard rules, with the exception that, -if a property goes up for auction and there are only two solvent players, -no auction is held and the property remains unowned. -.PP -The game, in effect, lends the player money, -so it is possible to buy something which you cannot afford. -However, as soon as a person goes into debt, -he must \*(lqfix the problem\*(rq, -.IR i.e. , -make himself solvent, before play can continue. -If this is not possible, the player's property reverts to his debtee, -either a player or the bank. -A player can resign at any time to any person or the bank, -which puts the property back on the board, unowned. -.PP -Any time that the response to a question is a -.IR string , -e.g., a name, place or person, you can type `?' to get a list of valid answers. -It is not possible to input a negative number, nor is it ever necessary. -.Sc -.IR "A Summary of Commands" : -.Cm quit -quit game: This allows you to quit the game. It asks you if you're sure. -.Cm print -print board: This prints out the current board. -The columns have the following meanings (column headings are the same for the -.BR where , -.BR "own holdings" , -and -.B holdings -commands): -.PP -.RS 10 -.TP "\w'Name\ \ 'u" -Name -The first ten characters of the name of the square -.TP -Own -The \fInumber\fR of the owner of the property. -.TP -Price -The cost of the property (if any) -.TP -Mg -This field has a `*' in it if the property is mortgaged -.TP -# -If the property is a Utility or Railroad, this is the number -of such owned by the owner. -If the property is land, this is the number of houses on it. -.TP -Rent -Current rent on the property. If it is not owned, there is no rent. -.RE -.Cm where -where players are: Tells you where all the players are. -A `*' indicates the current player. -.Cm "own\ holdings" -List your own holdings, -.IR i.e. , -money, get-out-of-jail-free cards, and property. -.Cm holdings -holdings list: Look at anyone's holdings. -It will ask you whose holdings you wish to look at. -When you are finished, type \*(lqdone\*(rq. -.Cm mortgage -mortgage property: -Sets up a list of mortgageable property, and asks which you wish to mortgage. -.Cm unmortgage -unmortgage property: -Unmortgage mortgaged property. -.Cm buy -buy houses: -Sets up a list of monopolies on which you can buy houses. -If there is more than one, it asks you which you want to buy for. -It then asks you how many for each piece of property, -giving the current amount in parentheses after the property name. -If you build in an unbalanced manner -(a disparity of more than one house within the same monopoly), -it asks you to re-input things. -.Cm sell -sell houses: -Sets up a list of monopolies from which you can sell houses. -It operates in an analogous manner to -.I buy. -.Cm card -card for jail: -Use a get-out-of-jail-free card to get out of jail. -If you're not in jail, or you don't have one, it tells you so. -.Cm pay -pay for jail: -Pay $50 to get out of jail, from whence you are put on Just Visiting. -Difficult to do if you're not there. -.Cm trade -This allows you to trade with another player. -It asks you whom you wish to trade with, -and then asks you what each wishes to give up. -You can get a summary at the end, and, in all cases, -it asks for confirmation of the trade before doing it. -.Cm resign -Resign to another player or the bank. -If you resign to the bank, all property reverts to its virgin state, -and get-out-of-jail free cards revert to the deck. -.Cm save -save game: -Save the current game in a file for later play. -You can continue play after saving, -either by adding the file in which you saved the game after the -.I monop -command, or by using the -.I restore -command (see below). -It will ask you which file you wish to save it in, -and, if the file exists, confirm that you wish to overwrite it. -.Cm restore -restore game: -Read in a previously saved game from a file. -It leaves the file intact. -.Cm roll -Roll the dice and move forward to your new location. -If you simply hit the <RETURN> key instead of a command, -it is the same as typing -.IR roll . -.Ec -.SH AUTHOR -Ken Arnold -.SH FILES -/usr/games/lib/cards.pck Chance and Community Chest cards -.SH BUGS -No command can be given an argument instead of a response to a query. diff --git a/games/monop/monop.c b/games/monop/monop.c deleted file mode 100644 index 2b39e703710e..000000000000 --- a/games/monop/monop.c +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1980, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)monop.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include "monop.def" - -/* - * This program implements a monopoly game - */ -main(ac, av) -reg int ac; -reg char *av[]; { - - - srand(getpid()); - if (ac > 1) { - if (!rest_f(av[1])) - restore(); - } - else { - getplayers(); - init_players(); - init_monops(); - } - num_luck = sizeof lucky_mes / sizeof (char *); - init_decks(); - signal(2, quit); - for (;;) { - printf("\n%s (%d) (cash $%d) on %s\n", cur_p->name, player + 1, - cur_p->money, board[cur_p->loc].name); - printturn(); - force_morg(); - execute(getinp("-- Command: ", comlist)); - } -} -/* - * This routine gets the names of the players - */ -getplayers() { - - reg char *sp; - reg int i, j; - char buf[257]; - -blew_it: - for (;;) { - if ((num_play=get_int("How many players? ")) <= 0 || - num_play > MAX_PL) - printf("Sorry. Number must range from 1 to 9\n"); - else - break; - } - cur_p = play = (PLAY *) calloc(num_play, sizeof (PLAY)); - for (i = 0; i < num_play; i++) { -over: - printf("Player %d's name: ", i + 1); - for (sp = buf; (*sp=getchar()) != '\n'; sp++) - continue; - if (sp == buf) - goto over; - *sp++ = '\0'; - strcpy(name_list[i]=play[i].name=(char *)calloc(1,sp-buf),buf); - play[i].money = 1500; - } - name_list[i++] = "done"; - name_list[i] = 0; - for (i = 0; i < num_play; i++) - for (j = i + 1; j < num_play; j++) - if (strcasecmp(name_list[i], name_list[j]) == 0) { - if (i != num_play - 1) - printf("Hey!!! Some of those are IDENTICAL!! Let's try that again....\n"); - else - printf("\"done\" is a reserved word. Please try again\n"); - for (i = 0; i < num_play; i++) - cfree(play[i].name); - cfree(play); - goto blew_it; - } -} -/* - * This routine figures out who goes first - */ -init_players() { - - reg int i, rl, cur_max; - bool over; - int max_pl; - -again: - putchar('\n'); - for (cur_max = i = 0; i < num_play; i++) { - printf("%s (%d) rolls %d\n", play[i].name, i+1, rl=roll(2, 6)); - if (rl > cur_max) { - over = FALSE; - cur_max = rl; - max_pl = i; - } - else if (rl == cur_max) - over++; - } - if (over) { - printf("%d people rolled the same thing, so we'll try again\n", - over + 1); - goto again; - } - player = max_pl; - cur_p = &play[max_pl]; - printf("%s (%d) goes first\n", cur_p->name, max_pl + 1); -} -/* - * This routine initalizes the monopoly structures. - */ -init_monops() { - - reg MON *mp; - reg int i; - - for (mp = mon; mp < &mon[N_MON]; mp++) { - mp->name = mp->not_m; - for (i = 0; i < mp->num_in; i++) - mp->sq[i] = &board[mp->sqnums[i]]; - } -} diff --git a/games/monop/monop.def b/games/monop/monop.def deleted file mode 100644 index 89e933d239ac..000000000000 --- a/games/monop/monop.def +++ /dev/null @@ -1,123 +0,0 @@ -/*- - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)monop.def 5.5 (Berkeley) 5/31/93 - */ - -# include "monop.h" -# include "deck.h" - -bool fixing, /* set if fixing up debt */ - trading, /* set if in process of trading */ - told_em, /* set if told user he's out of debt */ - spec; /* set if moving by card to RR or UTIL */ - -char *name_list[MAX_PL+2], /* list of players' names */ - *comlist[] = { /* list of normal commands */ - "quit", /* 0 */ "print", /* 1 */ - "where", /* 2 */ "own holdings", /* 3 */ - "holdings", /* 4 */ "mortgage", /* 5 */ - "unmortgage", /* 6 */ "buy houses", /* 7 */ - "sell houses", /* 8 */ "card", /* 9 */ - "pay", /* 10 */ "trade", /* 11 */ - "resign", /* 12 */ "save", /* 13 */ - "restore", /* 14 */ "roll", /* 15 */ - "", /* 16 */ - 0 - }, - *yn[] = { /* list of commands for yes/no answers */ - "yes", /* 0 */ "no", /* 1 */ - "quit", /* 2 */ "print", /* 3 */ - "where", /* 4 */ "own holdings", /* 5 */ - "holdings", /* 6 */ - 0 - }, - *lucky_mes[] = { /* "got lucky" messages */ - "You lucky stiff", "You got lucky", - "What a lucky person!", "You must have a 4-leaf clover", - "My, my! Aren't we lucky!", "Luck smiles upon you", - "You got lucky this time", "Lucky person!", - "Your karma must certainly be together", - "How beautifully Cosmic", "Wow, you must be really with it" - /* "I want your autograph", -- Save for later */ - }; - -int player, /* current player number */ - num_play, /* current number of players */ - num_doub, /* # of doubles current player rolled */ - /* # of "got lucky" messages */ - num_luck = sizeof lucky_mes / sizeof (char *), - /* list of command functions */ - buy_houses(), card(), do_move(), do_move(), list(), list_all(), - mortgage(), pay(), printboard(), quit(), resign(), restore(), - rub(), save(), sell_houses(), trade(), - unmortgage(), where(), - (*func[])() = { /* array of function calls for commands */ - quit, /* quit game |* 0 *| */ - printboard, /* print board |* 1 *| */ - where, /* where players are |* 2 *| */ - list, /* own holdings |* 3 *| */ - list_all, /* holdings list |* 4 *| */ - mortgage, /* mortgage property |* 5 *| */ - unmortgage, /* unmortgage property |* 6 *| */ - buy_houses, /* buy houses |* 7 *| */ - sell_houses, /* sell houses |* 8 *| */ - card, /* card for jail |* 9 *| */ - pay, /* pay for jail |* 10 *| */ - trade, /* trade |* 11 *| */ - resign, /* resign |* 12 *| */ - save, /* save game |* 13 *| */ - restore, /* restore game |* 14 *| */ - do_move, /* roll |* 15 *| */ - do_move /* "" |* 16 *| */ - }; - -DECK deck[2]; /* Chance and Community Chest */ - -PLAY *play, /* player structure array ("calloc"ed) */ - *cur_p; /* pointer to current player's struct */ - -RR_S rr[N_RR]; /* raildroad descriptions */ - -UTIL_S util[2]; /* utility descriptions */ - -MON mon[N_MON] = { /* monopoly descriptions */ -# include "mon.dat" -}; - -PROP prop[N_PROP] = { /* typical properties */ -# include "prop.dat" -}; - -SQUARE board[N_SQRS+1] = { /* board itself (+1 for Jail) */ -# include "brd.dat" -}; diff --git a/games/monop/monop.ext b/games/monop/monop.ext deleted file mode 100644 index a5fc616c2c89..000000000000 --- a/games/monop/monop.ext +++ /dev/null @@ -1,57 +0,0 @@ -/*- - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)monop.ext 5.4 (Berkeley) 5/31/93 - */ - -# include "monop.h" -# include "deck.h" - -extern bool trading, spec, fixing, told_em; - -extern char *yn[], *comlist[], *name_list[], *lucky_mes[]; - -extern int num_play, player, num_doub, num_luck, (*func[])(); - -extern DECK deck[2]; - -extern MON mon[]; - -extern PLAY *play, *cur_p; - -extern PROP prop[]; - -extern RR_S rr[]; - -extern SQUARE board[]; - -extern UTIL_S util[]; diff --git a/games/monop/monop.h b/games/monop/monop.h deleted file mode 100644 index 744732c33bf1..000000000000 --- a/games/monop/monop.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)monop.h 8.1 (Berkeley) 5/31/93 - */ - -# include <stdio.h> - -# define reg register -# define shrt char -# define bool char -# define unsgn unsigned - -# define TRUE (1) -# define FALSE (0) - -# define N_MON 8 /* number of monopolies */ -# define N_PROP 22 /* number of normal property squares */ -# define N_RR 4 /* number of railroads */ -# define N_UTIL 2 /* number of utilities */ -# define N_SQRS 40 /* number of squares on board */ -# define MAX_PL 9 /* maximum number of players */ -# define MAX_PRP (N_PROP+N_RR+N_UTIL) /* max # ownable property */ - - /* square type numbers */ -# define PRPTY 0 /* normal property */ -# define RR 1 /* railroad */ -# define UTIL 2 /* water works - electric co */ -# define SAFE 3 /* safe spot */ -# define CC 4 /* community chest */ -# define CHANCE 5 /* chance (surprise!!!) */ -# define INC_TAX 6 /* Income tax */ -# define GOTO_J 7 /* Go To Jail! */ -# define LUX_TAX 8 /* Luxury tax */ -# define IN_JAIL 9 /* In jail */ - -# define JAIL 40 /* JAIL square number */ - -# define lucky(str) printf("%s%s\n",str,lucky_mes[roll(1,num_luck)-1]) -# define printline() printf("------------------------------\n") -# define sqnum(sqp) (sqp - board) -# define swap(A1,A2) if ((A1) != (A2)) { \ - (A1) ^= (A2); \ - (A2) ^= (A1); \ - (A1) ^= (A2); \ - } - -struct sqr_st { /* structure for square */ - char *name; /* place name */ - shrt owner; /* owner number */ - shrt type; /* place type */ - struct prp_st *desc; /* description struct */ - int cost; /* cost */ -}; - -typedef struct sqr_st SQUARE; - -struct mon_st { /* monopoly description structure */ - char *name; /* monop. name (color) */ - shrt owner; /* owner of monopoly */ - shrt num_in; /* # in monopoly */ - shrt num_own; /* # owned (-1: not poss. monop)*/ - shrt h_cost; /* price of houses */ - char *not_m; /* name if not monopoly */ - char *mon_n; /* name if a monopoly */ - char sqnums[3]; /* Square numbers (used to init)*/ - SQUARE *sq[3]; /* list of squares in monop */ -}; - -typedef struct mon_st MON; - -/* - * This struct describes a property. For railroads and utilities, only - * the "morg" member is used. - */ -struct prp_st { /* property description structure */ - bool morg; /* set if mortgaged */ - bool monop; /* set if monopoly */ - shrt square; /* square description */ - shrt houses; /* number of houses */ - MON *mon_desc; /* name of color */ - int rent[6]; /* rents */ -}; - -struct own_st { /* element in list owned things */ - SQUARE *sqr; /* pointer to square */ - struct own_st *next; /* next in list */ -}; - -typedef struct own_st OWN; - -struct plr_st { /* player description structure */ - char *name; /* owner name */ - shrt num_gojf; /* # of get-out-of-jail-free's */ - shrt num_rr; /* # of railroads owned */ - shrt num_util; /* # of water works/elec. co. */ - shrt loc; /* location on board */ - shrt in_jail; /* count of turns in jail */ - int money; /* amount of money */ - OWN *own_list; /* start of propery list */ -}; - -typedef struct plr_st PLAY; -typedef struct prp_st PROP; -typedef struct prp_st RR_S; -typedef struct prp_st UTIL_S; - -int cc(), chance(), lux_tax(), goto_jail(), inc_tax(); diff --git a/games/monop/morg.c b/games/monop/morg.c deleted file mode 100644 index d88fa34cae83..000000000000 --- a/games/monop/morg.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)morg.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include "monop.ext" - -/* - * These routines deal with mortgaging. - */ - -static char *names[MAX_PRP+2], - *morg_coms[] = { - "quit", /* 0 */ - "print", /* 1 */ - "where", /* 2 */ - "own holdings", /* 3 */ - "holdings", /* 4 */ - "mortgage", /* 5 */ - "unmortgage", /* 6 */ - "buy", /* 7 */ - "sell", /* 8 */ - "card", /* 9 */ - "pay", /* 10 */ - "trade", /* 11 */ - "resign", /* 12 */ - "save game", /* 13 */ - "restore game", /* 14 */ - 0 - }; - -static shrt square[MAX_PRP+2]; - -static int num_good,got_houses; - -/* - * This routine is the command level response the mortgage command. - * it gets the list of mortgageable property and asks which are to - * be mortgaged. - */ -mortgage() { - - reg int prop; - - for (;;) { - if (set_mlist() == 0) { - if (got_houses) - printf("You can't mortgage property with houses on it.\n"); - else - printf("You don't have any un-mortgaged property.\n"); - return; - } - if (num_good == 1) { - printf("Your only mortageable property is %s\n",names[0]); - if (getyn("Do you want to mortgage it? ") == 0) - m(square[0]); - return; - } - prop = getinp("Which property do you want to mortgage? ",names); - if (prop == num_good) - return; - m(square[prop]); - notify(cur_p); - } -} -/* - * This routine sets up the list of mortgageable property - */ -set_mlist() { - - reg OWN *op; - - num_good = 0; - for (op = cur_p->own_list; op; op = op->next) - if (!op->sqr->desc->morg) - if (op->sqr->type == PRPTY && op->sqr->desc->houses) - got_houses++; - else { - names[num_good] = op->sqr->name; - square[num_good++] = sqnum(op->sqr); - } - names[num_good++] = "done"; - names[num_good--] = 0; - return num_good; -} -/* - * This routine actually mortgages the property. - */ -m(prop) -reg int prop; { - - reg int price; - - price = board[prop].cost/2; - board[prop].desc->morg = TRUE; - printf("That got you $%d\n",price); - cur_p->money += price; -} -/* - * This routine is the command level repsponse to the unmortgage - * command. It gets the list of mortgaged property and asks which are - * to be unmortgaged. - */ -unmortgage() { - - reg int prop; - - for (;;) { - if (set_umlist() == 0) { - printf("You don't have any mortgaged property.\n"); - return; - } - if (num_good == 1) { - printf("Your only mortaged property is %s\n",names[0]); - if (getyn("Do you want to unmortgage it? ") == 0) - unm(square[0]); - return; - } - prop = getinp("Which property do you want to unmortgage? ",names); - if (prop == num_good) - return; - unm(square[prop]); - } -} -/* - * This routine sets up the list of mortgaged property - */ -set_umlist() { - - reg OWN *op; - - num_good = 0; - for (op = cur_p->own_list; op; op = op->next) - if (op->sqr->desc->morg) { - names[num_good] = op->sqr->name; - square[num_good++] = sqnum(op->sqr); - } - names[num_good++] = "done"; - names[num_good--] = 0; - return num_good; -} -/* - * This routine actually unmortgages the property - */ -unm(prop) -reg int prop; { - - reg int price; - - price = board[prop].cost/2; - board[prop].desc->morg = FALSE; - price += price/10; - printf("That cost you $%d\n",price); - cur_p->money -= price; - set_umlist(); -} -/* - * This routine forces the indebted player to fix his - * financial woes. - */ -force_morg() { - - told_em = fixing = TRUE; - while (cur_p->money <= 0) - fix_ex(getinp("How are you going to fix it up? ",morg_coms)); - fixing = FALSE; -} -/* - * This routine is a special execute for the force_morg routine - */ -fix_ex(com_num) -reg int com_num; { - - told_em = FALSE; - (*func[com_num])(); - notify(); -} diff --git a/games/monop/pathnames.h b/games/monop/pathnames.h deleted file mode 100644 index 60c098882de8..000000000000 --- a/games/monop/pathnames.h +++ /dev/null @@ -1,36 +0,0 @@ -/*- - * Copyright (c) 1990, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)pathnames.h 8.1 (Berkeley) 5/31/93 - */ - -#define _PATH_CARDS "/usr/share/games/cards.pck" diff --git a/games/monop/print.c b/games/monop/print.c deleted file mode 100644 index 121f79eed2d8..000000000000 --- a/games/monop/print.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)print.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include "monop.ext" - -static char buf[80], /* output buffer */ - *header = "Name Own Price Mg # Rent"; - -/* - * This routine prints out the current board - */ -printboard() { - - reg int i; - - printf("%s\t%s\n", header, header); - for (i = 0; i < N_SQRS/2; i++) { - printsq(i, FALSE); - putchar('\t'); - printsq(i+N_SQRS/2, TRUE); - } -} -/* - * This routine lists where each player is. - */ -where() { - - reg int i; - char *bsp; - - printf("%s Player\n", header); - for (i = 0; i < num_play; i++) { - printsq(play[i].loc, FALSE); - printf(" %s (%d)", play[i].name, i+1); - if (cur_p == &play[i]) - printf(" *"); - putchar('\n'); - } -} -/* - * This routine prints out an individual square - */ -printsq(sqn, eoln) -int sqn; -reg bool eoln; { - - reg int rnt; - reg PROP *pp; - reg SQUARE *sqp; - int i; - - sqp = &board[sqn]; - printf("%-10.10s", sqp->name); - switch (sqp->type) { - case SAFE: - case CC: - case CHANCE: - case INC_TAX: - case GOTO_J: - case LUX_TAX: - case IN_JAIL: -spec: - if (!eoln) - printf(" "); - break; - case PRPTY: - pp = sqp->desc; - if (sqp->owner < 0) { - printf(" - %-8.8s %3d", pp->mon_desc->name, sqp->cost); - if (!eoln) - printf(" "); - break; - } - printf(" %d %-8.8s %3d", sqp->owner+1, pp->mon_desc->name, - sqp->cost); - printmorg(sqp); - if (pp->monop) { - if (pp->houses < 5) - if (pp->houses > 0) - printf("%d %4d", pp->houses, - pp->rent[pp->houses]); - else - printf("0 %4d", pp->rent[0] * 2); - else - printf("H %4d", pp->rent[5]); - } - else - printf(" %4d", pp->rent[0]); - break; - case UTIL: - if (sqp->owner < 0) { - printf(" - 150"); - if (!eoln) - printf(" "); - break; - } - printf(" %d 150", sqp->owner+1); - printmorg(sqp); - printf("%d", play[sqp->owner].num_util); - if (!eoln) - printf(" "); - break; - case RR: - if (sqp->owner < 0) { - printf(" - Railroad 200"); - if (!eoln) - printf(" "); - break; - } - printf(" %d Railroad 200", sqp->owner+1); - printmorg(sqp); - rnt = 25; - rnt <<= play[sqp->owner].num_rr - 1; - printf("%d %4d", play[sqp->owner].num_rr, 25 << (play[sqp->owner].num_rr - 1)); - break; - } - if (eoln) - putchar('\n'); -} -/* - * This routine prints out the mortgage flag. - */ -printmorg(sqp) -reg SQUARE *sqp; { - - if (sqp->desc->morg) - printf(" * "); - else - printf(" "); -} -/* - * This routine lists the holdings of the player given - */ -printhold(pl) -reg int pl; { - - reg OWN *op; - reg PLAY *pp; - char *bsp; - - pp = &play[pl]; - printf("%s's (%d) holdings (Total worth: $%d):\n", name_list[pl], pl+1, - pp->money + prop_worth(pp)); - printf("\t$%d", pp->money); - if (pp->num_gojf) { - printf(", %d get-out-of-jail-free card", pp->num_gojf); - if (pp->num_gojf > 1) - putchar('s'); - } - putchar('\n'); - if (pp->own_list) { - printf("\t%s\n", header); - for (op = pp->own_list; op; op = op->next) { - putchar('\t'); - printsq(sqnum(op->sqr), TRUE); - } - } -} diff --git a/games/monop/prop.c b/games/monop/prop.c deleted file mode 100644 index 0feb498a62d3..000000000000 --- a/games/monop/prop.c +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)prop.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include "monop.ext" - -extern char *calloc(); - -/* - * This routine deals with buying property, setting all the - * appropriate flags. - */ -buy(player, sqrp) -reg int player; -reg SQUARE *sqrp; { - - trading = FALSE; - sqrp->owner = player; - add_list(player, &(play[player].own_list), cur_p->loc); -} -/* - * This routine adds an item to the list. - */ -add_list(plr, head, op_sqr) -int plr; -OWN **head; -int op_sqr; { - - reg int val; - reg OWN *tp, *last_tp; - MON *mp; - OWN *op; - - op = (OWN *)calloc(1, sizeof (OWN)); - op->sqr = &board[op_sqr]; - val = value(op->sqr); - last_tp = NULL; - for (tp = *head; tp && value(tp->sqr) < val; tp = tp->next) - if (val == value(tp->sqr)) { - cfree(op); - return; - } - else - last_tp = tp; - op->next = tp; - if (last_tp != NULL) - last_tp->next = op; - else - *head = op; - if (!trading) - set_ownlist(plr); -} -/* - * This routine deletes property from the list. - */ -del_list(plr, head, op_sqr) -int plr; -OWN **head; -shrt op_sqr; { - - reg int i; - reg OWN *op, *last_op; - - switch (board[op_sqr].type) { - case PRPTY: - board[op_sqr].desc->mon_desc->num_own--; - break; - case RR: - play[plr].num_rr--; - break; - case UTIL: - play[plr].num_util--; - break; - } - last_op = NULL; - for (op = *head; op; op = op->next) - if (op->sqr == &board[op_sqr]) - break; - else - last_op = op; - if (last_op == NULL) - *head = op->next; - else { - last_op->next = op->next; - cfree(op); - } -} -/* - * This routine calculates the value for sorting of the - * given square. - */ -value(sqp) -reg SQUARE *sqp; { - - reg int sqr; - - sqr = sqnum(sqp); - switch (sqp->type) { - case SAFE: - return 0; - default: /* Specials, etc */ - return 1; - case UTIL: - if (sqr == 12) - return 2; - else - return 3; - case RR: - return 4 + sqr/10; - case PRPTY: - return 8 + (sqp->desc) - prop; - } -} -/* - * This routine accepts bids for the current peice - * of property. - */ -bid() { - - static bool in[MAX_PL]; - reg int i, num_in, cur_max; - char buf[80]; - int cur_bid; - - printf("\nSo it goes up for auction. Type your bid after your name\n"); - for (i = 0; i < num_play; i++) - in[i] = TRUE; - i = -1; - cur_max = 0; - num_in = num_play; - while (num_in > 1 || (cur_max == 0 && num_in > 0)) { - i = ++i % num_play; - if (in[i]) { - do { - (void)sprintf(buf, "%s: ", name_list[i]); - cur_bid = get_int(buf); - if (cur_bid == 0) { - in[i] = FALSE; - if (--num_in == 0) - break; - } - else if (cur_bid <= cur_max) { - printf("You must bid higher than %d to stay in\n", cur_max); - printf("(bid of 0 drops you out)\n"); - } - } while (cur_bid != 0 && cur_bid <= cur_max); - cur_max = (cur_bid ? cur_bid : cur_max); - } - } - if (cur_max != 0) { - while (!in[i]) - i = ++i % num_play; - printf("It goes to %s (%d) for $%d\n",play[i].name,i+1,cur_max); - buy(i, &board[cur_p->loc]); - play[i].money -= cur_max; - } - else - printf("Nobody seems to want it, so we'll leave it for later\n"); -} -/* - * This routine calculates the value of the property - * of given player. - */ -prop_worth(plp) -reg PLAY *plp; { - - reg OWN *op; - reg int worth; - - worth = 0; - for (op = plp->own_list; op; op = op->next) { - if (op->sqr->type == PRPTY && op->sqr->desc->monop) - worth += op->sqr->desc->mon_desc->h_cost * 50 * - op->sqr->desc->houses; - worth += op->sqr->cost; - } - return worth; -} diff --git a/games/monop/prop.dat b/games/monop/prop.dat deleted file mode 100644 index f9fc072d2f91..000000000000 --- a/games/monop/prop.dat +++ /dev/null @@ -1,58 +0,0 @@ -/*- - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)prop.dat 5.4 (Berkeley) 5/31/93 - */ - -/* morg monop square houses mon_desc rent */ -{0, 0, 1, 0, &mon[0], { 2, 10, 30, 90, 160, 250} }, -{0, 0, 3, 0, &mon[0], { 4, 20, 60, 180, 320, 450} }, -{0, 0, 6, 0, &mon[1], { 6, 30, 90, 270, 400, 550} }, -{0, 0, 7, 0, &mon[1], { 6, 30, 90, 270, 400, 550} }, -{0, 0, 9, 0, &mon[1], { 8, 40,100, 300, 450, 600} }, -{0, 0, 11, 0, &mon[2], {10, 50,150, 450, 625, 750} }, -{0, 0, 13, 0, &mon[2], {10, 50,150, 450, 625, 750} }, -{0, 0, 14, 0, &mon[2], {12, 60,180, 500, 700, 900} }, -{0, 0, 16, 0, &mon[3], {14, 70,200, 550, 750, 950} }, -{0, 0, 17, 0, &mon[3], {14, 70,200, 550, 750, 950} }, -{0, 0, 19, 0, &mon[3], {16, 80,220, 600, 800,1000} }, -{0, 0, 21, 0, &mon[4], {18, 90,250, 700, 875,1050} }, -{0, 0, 23, 0, &mon[4], {18, 90,250, 700, 875,1050} }, -{0, 0, 24, 0, &mon[4], {20,100,300, 750, 925,1100} }, -{0, 0, 26, 0, &mon[5], {22,110,330, 800, 975,1150} }, -{0, 0, 27, 0, &mon[5], {22,110,330, 800, 975,1150} }, -{0, 0, 29, 0, &mon[5], {24,120,360, 850,1025,1200} }, -{0, 0, 31, 0, &mon[6], {26,130,390, 900,1100,1275} }, -{0, 0, 32, 0, &mon[6], {26,130,390, 900,1100,1275} }, -{0, 0, 34, 0, &mon[6], {28,150,450,1000,1200,1400} }, -{0, 0, 37, 0, &mon[7], {35,175,500,1100,1300,1500} }, -{0, 0, 39, 0, &mon[7], {50,200,600,1400,1700,2000} } diff --git a/games/monop/rent.c b/games/monop/rent.c deleted file mode 100644 index 4954279edc39..000000000000 --- a/games/monop/rent.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)rent.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include "monop.ext" - -/* - * This routine has the player pay rent - */ -rent(sqp) -reg SQUARE *sqp; { - - reg int rnt; - reg PROP *pp; - PLAY *plp; - - plp = &play[sqp->owner]; - printf("Owned by %s\n", plp->name); - if (sqp->desc->morg) { - lucky("The thing is mortgaged. "); - return; - } - switch (sqp->type) { - case PRPTY: - pp = sqp->desc; - if (pp->monop) - if (pp->houses == 0) - printf("rent is %d\n", rnt=pp->rent[0] * 2); - else if (pp->houses < 5) - printf("with %d houses, rent is %d\n", - pp->houses, rnt=pp->rent[pp->houses]); - else - printf("with a hotel, rent is %d\n", - rnt=pp->rent[pp->houses]); - else - printf("rent is %d\n", rnt = pp->rent[0]); - break; - case RR: - rnt = 25; - rnt <<= (plp->num_rr - 1); - if (spec) - rnt <<= 1; - printf("rent is %d\n", rnt); - break; - case UTIL: - rnt = roll(2, 6); - if (plp->num_util == 2 || spec) { - printf("rent is 10 * roll (%d) = %d\n", rnt, rnt * 10); - rnt *= 10; - } - else { - printf("rent is 4 * roll (%d) = %d\n", rnt, rnt * 4); - rnt *= 4; - } - break; - } - cur_p->money -= rnt; - plp->money += rnt; -} diff --git a/games/monop/roll.c b/games/monop/roll.c deleted file mode 100644 index 633dfea54aeb..000000000000 --- a/games/monop/roll.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)roll.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -/* - * This routine rolls ndie nside-sided dice. - */ - -# define reg register - -# if defined(pdp11) -# define MAXRAND 32767L - -roll(ndie, nsides) -int ndie, nsides; { - - reg long tot; - reg unsigned n, r; - - tot = 0; - n = ndie; - while (n--) - tot += rand(); - return (int) ((tot * (long) nsides) / ((long) MAXRAND + 1)) + ndie; -} - -# else - -roll(ndie, nsides) -reg int ndie, nsides; { - - reg int tot, r; - reg double num_sides; - - num_sides = nsides; - tot = 0; - while (ndie--) - tot += (r = rand()) * (num_sides / 017777777777) + 1; - return tot; -} -# endif diff --git a/games/monop/spec.c b/games/monop/spec.c deleted file mode 100644 index 958ce613331a..000000000000 --- a/games/monop/spec.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)spec.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include "monop.ext" - -static char *perc[] = { - "10%", "ten percent", "%", "$200", "200", 0 - }; - -inc_tax() { /* collect income tax */ - - reg int worth, com_num; - - com_num = getinp("Do you wish to lose 10%% of your total worth or $200? ", perc); - worth = cur_p->money + prop_worth(cur_p); - printf("You were worth $%d", worth); - worth /= 10; - if (com_num > 2) { - if (worth < 200) - printf(". Good try, but not quite.\n"); - else if (worth > 200) - lucky(".\nGood guess. "); - cur_p->money -= 200; - } - else { - printf(", so you pay $%d", worth); - if (worth > 200) - printf(" OUCH!!!!.\n"); - else if (worth < 200) - lucky("\nGood guess. "); - cur_p->money -= worth; - } - if (worth == 200) - lucky("\nIt makes no difference! "); -} -goto_jail() { /* move player to jail */ - - cur_p->loc = JAIL; -} -lux_tax() { /* landing on luxury tax */ - - printf("You lose $75\n"); - cur_p->money -= 75; -} -cc() { /* draw community chest card */ - - get_card(&CC_D); -} -chance() { /* draw chance card */ - - get_card(&CH_D); -} diff --git a/games/monop/trade.c b/games/monop/trade.c deleted file mode 100644 index 4c356a861b71..000000000000 --- a/games/monop/trade.c +++ /dev/null @@ -1,306 +0,0 @@ -/* - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)trade.c 8.1 (Berkeley) 5/31/93"; -#endif /* not lint */ - -# include "monop.ext" - -struct trd_st { /* how much to give to other player */ - int trader; /* trader number */ - int cash; /* amount of cash */ - int gojf; /* # get-out-of-jail-free cards */ - OWN *prop_list; /* property list */ -}; - -typedef struct trd_st TRADE; - -static char *list[MAX_PRP+2]; - -static int used[MAX_PRP]; - -static TRADE trades[2]; - -trade() { - - reg int tradee, i; - - trading = TRUE; - for (i = 0; i < 2; i++) { - trades[i].cash = 0; - trades[i].gojf = FALSE; - trades[i].prop_list = NULL; - } -over: - if (num_play == 1) { - printf("There ain't no-one around to trade WITH!!\n"); - return; - } - if (num_play > 2) { - tradee = getinp("Which player do you wish to trade with? ", - name_list); - if (tradee == num_play) - return; - if (tradee == player) { - printf("You can't trade with yourself!\n"); - goto over; - } - } - else - tradee = 1 - player; - get_list(0, player); - get_list(1, tradee); - if (getyn("Do you wish a summary? ") == 0) - summate(); - if (getyn("Is the trade ok? ") == 0) - do_trade(); -} -/* - * This routine gets the list of things to be trader for the - * player, and puts in the structure given. - */ -get_list(struct_no, play_no) -int struct_no, play_no; { - - reg int sn, pn; - reg PLAY *pp; - int numin, prop, num_prp; - OWN *op; - TRADE *tp; - - for (numin = 0; numin < MAX_PRP; numin++) - used[numin] = FALSE; - sn = struct_no, pn = play_no; - pp = &play[pn]; - tp = &trades[sn]; - tp->trader = pn; - printf("player %s (%d):\n", pp->name, pn+1); - if (pp->own_list) { - numin = set_list(pp->own_list); - for (num_prp = numin; num_prp; ) { - prop = getinp("Which property do you wish to trade? ", - list); - if (prop == numin) - break; - else if (used[prop]) - printf("You've already allocated that.\n"); - else { - num_prp--; - used[prop] = TRUE; - for (op = pp->own_list; prop--; op = op->next) - continue; - add_list(pn, &(tp->prop_list), sqnum(op->sqr)); - } - } - } - if (pp->money > 0) { - printf("You have $%d. ", pp->money); - tp->cash = get_int("How much are you trading? "); - } - if (pp->num_gojf > 0) { -once_more: - printf("You have %d get-out-of-jail-free cards. ",pp->num_gojf); - tp->gojf = get_int("How many are you trading? "); - if (tp->gojf > pp->num_gojf) { - printf("You don't have that many. Try again.\n"); - goto once_more; - } - } -} -/* - * This routine sets up the list of tradable property. - */ -set_list(the_list) -reg OWN *the_list; { - - reg int i; - reg OWN *op; - - i = 0; - for (op = the_list; op; op = op->next) - if (!used[i]) - list[i++] = op->sqr->name; - list[i++] = "done"; - list[i--] = 0; - return i; -} -/* - * This routine summates the trade. - */ -summate() { - - reg bool some; - reg int i; - reg TRADE *tp; - OWN *op; - - for (i = 0; i < 2; i++) { - tp = &trades[i]; - some = FALSE; - printf("Player %s (%d) gives:\n", play[tp->trader].name, - tp->trader+1); - if (tp->cash > 0) - printf("\t$%d\n", tp->cash), some++; - if (tp->gojf > 0) - printf("\t%d get-out-of-jail-free card(s)\n", tp->gojf), - some++; - if (tp->prop_list) { - for (op = tp->prop_list; op; op = op->next) - putchar('\t'), printsq(sqnum(op->sqr), TRUE); - some++; - } - if (!some) - printf("\t-- Nothing --\n"); - } -} -/* - * This routine actually executes the trade. - */ -do_trade() { - - move_em(&trades[0], &trades[1]); - move_em(&trades[1], &trades[0]); -} -/* - * This routine does a switch from one player to another - */ -move_em(from, to) -TRADE *from, *to; { - - reg PLAY *pl_fr, *pl_to; - reg OWN *op; - - pl_fr = &play[from->trader]; - pl_to = &play[to->trader]; - - pl_fr->money -= from->cash; - pl_to->money += from->cash; - pl_fr->num_gojf -= from->gojf; - pl_to->num_gojf += from->gojf; - for (op = from->prop_list; op; op = op->next) { - add_list(to->trader, &(pl_to->own_list), sqnum(op->sqr)); - op->sqr->owner = to->trader; - del_list(from->trader, &(pl_fr->own_list), sqnum(op->sqr)); - } - set_ownlist(to->trader); -} -/* - * This routine lets a player resign - */ -resign() { - - reg int i, new_own; - reg OWN *op; - SQUARE *sqp; - - if (cur_p->money <= 0) { - switch (board[cur_p->loc].type) { - case UTIL: - case RR: - case PRPTY: - new_own = board[cur_p->loc].owner; - break; - default: /* Chance, taxes, etc */ - new_own = num_play; - break; - } - if (new_own == num_play) - printf("You would resign to the bank\n"); - else - printf("You would resign to %s\n", name_list[new_own]); - } - else if (num_play == 1) { - new_own = num_play; - printf("You would resign to the bank\n"); - } - else { - name_list[num_play] = "bank"; - do { - new_own = getinp("Who do you wish to resign to? ", - name_list); - if (new_own == player) - printf("You can't resign to yourself!!\n"); - } while (new_own == player); - name_list[num_play] = "done"; - } - if (getyn("Do you really want to resign? ", yn) != 0) - return; - if (num_play == 1) { - printf("Then NOBODY wins (not even YOU!)\n"); - exit(0); - } - if (new_own < num_play) { /* resign to player */ - printf("resigning to player\n"); - trades[0].trader = new_own; - trades[0].cash = trades[0].gojf = 0; - trades[0].prop_list = NULL; - trades[1].trader = player; - trades[1].cash = cur_p->money > 0 ? cur_p->money : 0; - trades[1].gojf = cur_p->num_gojf; - trades[1].prop_list = cur_p->own_list; - do_trade(); - } - else { /* resign to bank */ - printf("resigning to bank\n"); - for (op = cur_p->own_list; op; op = op->next) { - sqp = op->sqr; - sqp->owner = -1; - sqp->desc->morg = FALSE; - if (sqp->type == PRPTY) { - isnot_monop(sqp->desc->mon_desc); - sqp->desc->houses = 0; - } - } - if (cur_p->num_gojf) - ret_card(cur_p); - } - for (i = player; i < num_play; i++) { - name_list[i] = name_list[i+1]; - if (i + 1 < num_play) - cpy_st(&play[i], &play[i+1], sizeof (PLAY)); - } - name_list[num_play--] = 0; - for (i = 0; i < N_SQRS; i++) - if (board[i].owner > player) - --board[i].owner; - player = --player < 0 ? num_play - 1 : player; - next_play(); - if (num_play < 2) { - printf("\nThen %s WINS!!!!!\n", play[0].name); - printhold(0); - printf("That's a grand worth of $%d.\n", - play[0].money+prop_worth(&play[0])); - exit(0); - } -} |