1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32: #include <sys/cdefs.h>
33: #ifndef lint
34: #if 0
35: static char sccsid[] = "@(#)print.c 8.1 (Berkeley) 5/31/93";
36: #else
37: __RCSID("$NetBSD: print.c,v 1.8 2004/01/27 20:30:30 jsm Exp $");
38: #endif
39: #endif
40:
41: #include "monop.ext"
42:
43: static const char *header = "Name Own Price Mg # Rent";
44:
45: static void printmorg(const SQUARE *);
46:
47:
48:
49:
50: void
51: printboard()
52: {
53: int i;
54:
55: printf("%s\t%s\n", header, header);
56: for (i = 0; i < N_SQRS/2; i++) {
57: printsq(i, FALSE);
58: putchar('\t');
59: printsq(i+N_SQRS/2, TRUE);
60: }
61: }
62:
63:
64:
65:
66: void
67: where()
68: {
69: int i;
70:
71: printf("%s Player\n", header);
72: for (i = 0; i < num_play; i++) {
73: printsq(play[i].loc, FALSE);
74: printf(" %s (%d)", play[i].name, i+1);
75: if (cur_p == &play[i])
76: printf(" *");
77: putchar('\n');
78: }
79: }
80:
81:
82:
83:
84: void
85: printsq(sqn, eoln)
86: int sqn;
87: bool eoln;
88: {
89: int rnt;
90: PROP *pp;
91: SQUARE *sqp;
92:
93: sqp = &board[sqn];
94: printf("%-10.10s", sqp->name);
95: switch (sqp->type) {
96: case SAFE:
97: case CC:
98: case CHANCE:
99: case INC_TAX:
100: case GOTO_J:
101: case LUX_TAX:
102: case IN_JAIL:
103: if (!eoln)
104: printf(" ");
105: break;
106: case PRPTY:
107: pp = sqp->desc;
108: if (sqp->owner < 0) {
109: printf(" - %-8.8s %3d", pp->mon_desc->name, sqp->cost);
110: if (!eoln)
111: printf(" ");
112: break;
113: }
114: printf(" %d %-8.8s %3d", sqp->owner+1, pp->mon_desc->name,
115: sqp->cost);
116: printmorg(sqp);
117: if (pp->monop) {
118: if (pp->houses < 5)
119: if (pp->houses > 0)
120: printf("%d %4d", pp->houses,
121: pp->rent[pp->houses]);
122: else
123: printf("0 %4d", pp->rent[0] * 2);
124: else
125: printf("H %4d", pp->rent[5]);
126: }
127: else
128: printf(" %4d", pp->rent[0]);
129: break;
130: case UTIL:
131: if (sqp->owner < 0) {
132: printf(" - 150");
133: if (!eoln)
134: printf(" ");
135: break;
136: }
137: printf(" %d 150", sqp->owner+1);
138: printmorg(sqp);
139: printf("%d", play[sqp->owner].num_util);
140: if (!eoln)
141: printf(" ");
142: break;
143: case RR:
144: if (sqp->owner < 0) {
145: printf(" - Railroad 200");
146: if (!eoln)
147: printf(" ");
148: break;
149: }
150: printf(" %d Railroad 200", sqp->owner+1);
151: printmorg(sqp);
152: rnt = 25;
153: rnt <<= play[sqp->owner].num_rr - 1;
154: printf("%d %4d", play[sqp->owner].num_rr,
155: 25 << (play[sqp->owner].num_rr - 1));
156: break;
157: }
158: if (eoln)
159: putchar('\n');
160: }
161:
162:
163:
164:
165: static void
166: printmorg(sqp)
167: const SQUARE *sqp;
168: {
169: if (sqp->desc->morg)
170: printf(" * ");
171: else
172: printf(" ");
173: }
174:
175:
176:
177:
178: void
179: printhold(pl)
180: int pl;
181: {
182: OWN *op;
183: PLAY *pp;
184:
185: pp = &play[pl];
186: printf("%s's (%d) holdings (Total worth: $%d):\n", name_list[pl],
187: pl + 1, pp->money + prop_worth(pp));
188: printf("\t$%d", pp->money);
189: if (pp->num_gojf) {
190: printf(", %d get-out-of-jail-free card", pp->num_gojf);
191: if (pp->num_gojf > 1)
192: putchar('s');
193: }
194: putchar('\n');
195: if (pp->own_list) {
196: printf("\t%s\n", header);
197: for (op = pp->own_list; op; op = op->next) {
198: putchar('\t');
199: printsq(sqnum(op->sqr), TRUE);
200: }
201: }
202: }