date and time created 88/01/02 20:53:30 by bostic
authorKeith Bostic <bostic@ucbvax.Berkeley.EDU>
Sun, 3 Jan 1988 12:53:30 +0000 (04:53 -0800)
committerKeith Bostic <bostic@ucbvax.Berkeley.EDU>
Sun, 3 Jan 1988 12:53:30 +0000 (04:53 -0800)
SCCS-vsn: games/monop/print.c 5.1

usr/src/games/monop/print.c [new file with mode: 0644]

diff --git a/usr/src/games/monop/print.c b/usr/src/games/monop/print.c
new file mode 100644 (file)
index 0000000..eaea436
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * Copyright (c) 1987 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that this notice is preserved and that due credit is given
+ * to the University of California at Berkeley. The name of the University
+ * may not be used to endorse or promote products derived from this
+ * software without specific prior written permission. This software
+ * is provided ``as is'' without express or implied warranty.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)print.c    5.1 (Berkeley) %G%";
+#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);
+       if (sqn == JAIL)
+               goto spec;
+       switch (sqp->type) {
+         case SAFE:
+         case CC:
+         case CHANCE:
+         case SPEC:
+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);
+               }
+       }
+}