|
|
1.1 root 1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that the above copyright notice and this paragraph are
7: * duplicated in all such forms and that any documentation,
8: * advertising materials, and other materials related to such
9: * distribution and use acknowledge that the software was developed
10: * by the University of California, Berkeley. The name of the
11: * University may not be used to endorse or promote products derived
12: * from this software without specific prior written permission.
13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16: */
17:
18: #ifndef lint
19: static char sccsid[] = "@(#)print.c 5.3 (Berkeley) 6/18/88";
20: #endif /* not lint */
21:
22: # include "monop.ext"
23:
24: static char buf[80], /* output buffer */
25: *header = "Name Own Price Mg # Rent";
26:
27: /*
28: * This routine prints out the current board
29: */
30: printboard() {
31:
32: reg int i;
33:
34: printf("%s\t%s\n", header, header);
35: for (i = 0; i < N_SQRS/2; i++) {
36: printsq(i, FALSE);
37: putchar('\t');
38: printsq(i+N_SQRS/2, TRUE);
39: }
40: }
41: /*
42: * This routine lists where each player is.
43: */
44: where() {
45:
46: reg int i;
47: char *bsp;
48:
49: printf("%s Player\n", header);
50: for (i = 0; i < num_play; i++) {
51: printsq(play[i].loc, FALSE);
52: printf(" %s (%d)", play[i].name, i+1);
53: if (cur_p == &play[i])
54: printf(" *");
55: putchar('\n');
56: }
57: }
58: /*
59: * This routine prints out an individual square
60: */
61: printsq(sqn, eoln)
62: int sqn;
63: reg bool eoln; {
64:
65: reg int rnt;
66: reg PROP *pp;
67: reg SQUARE *sqp;
68: int i;
69:
70: sqp = &board[sqn];
71: printf("%-10.10s", sqp->name);
72: switch (sqp->type) {
73: case SAFE:
74: case CC:
75: case CHANCE:
76: case INC_TAX:
77: case GOTO_J:
78: case LUX_TAX:
79: case IN_JAIL:
80: spec:
81: if (!eoln)
82: printf(" ");
83: break;
84: case PRPTY:
85: pp = sqp->desc;
86: if (sqp->owner < 0) {
87: printf(" - %-8.8s %3d", pp->mon_desc->name, sqp->cost);
88: if (!eoln)
89: printf(" ");
90: break;
91: }
92: printf(" %d %-8.8s %3d", sqp->owner+1, pp->mon_desc->name,
93: sqp->cost);
94: printmorg(sqp);
95: if (pp->monop) {
96: if (pp->houses < 5)
97: if (pp->houses > 0)
98: printf("%d %4d", pp->houses,
99: pp->rent[pp->houses]);
100: else
101: printf("0 %4d", pp->rent[0] * 2);
102: else
103: printf("H %4d", pp->rent[5]);
104: }
105: else
106: printf(" %4d", pp->rent[0]);
107: break;
108: case UTIL:
109: if (sqp->owner < 0) {
110: printf(" - 150");
111: if (!eoln)
112: printf(" ");
113: break;
114: }
115: printf(" %d 150", sqp->owner+1);
116: printmorg(sqp);
117: printf("%d", play[sqp->owner].num_util);
118: if (!eoln)
119: printf(" ");
120: break;
121: case RR:
122: if (sqp->owner < 0) {
123: printf(" - Railroad 200");
124: if (!eoln)
125: printf(" ");
126: break;
127: }
128: printf(" %d Railroad 200", sqp->owner+1);
129: printmorg(sqp);
130: rnt = 25;
131: rnt <<= play[sqp->owner].num_rr - 1;
132: printf("%d %4d", play[sqp->owner].num_rr, 25 << (play[sqp->owner].num_rr - 1));
133: break;
134: }
135: if (eoln)
136: putchar('\n');
137: }
138: /*
139: * This routine prints out the mortgage flag.
140: */
141: printmorg(sqp)
142: reg SQUARE *sqp; {
143:
144: if (sqp->desc->morg)
145: printf(" * ");
146: else
147: printf(" ");
148: }
149: /*
150: * This routine lists the holdings of the player given
151: */
152: printhold(pl)
153: reg int pl; {
154:
155: reg OWN *op;
156: reg PLAY *pp;
157: char *bsp;
158:
159: pp = &play[pl];
160: printf("%s's (%d) holdings (Total worth: $%d):\n", name_list[pl], pl+1,
161: pp->money + prop_worth(pp));
162: printf("\t$%d", pp->money);
163: if (pp->num_gojf) {
164: printf(", %d get-out-of-jail-free card", pp->num_gojf);
165: if (pp->num_gojf > 1)
166: putchar('s');
167: }
168: putchar('\n');
169: if (pp->own_list) {
170: printf("\t%s\n", header);
171: for (op = pp->own_list; op; op = op->next) {
172: putchar('\t');
173: printsq(sqnum(op->sqr), TRUE);
174: }
175: }
176: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.