1 /* 2 * Copyright (c) 1980, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 */ 7 8 #ifndef lint 9 static char sccsid[] = "@(#)print.c 8.1 (Berkeley) 05/31/93"; 10 #endif /* not lint */ 11 12 # include "monop.ext" 13 14 static char buf[80], /* output buffer */ 15 *header = "Name Own Price Mg # Rent"; 16 17 /* 18 * This routine prints out the current board 19 */ 20 printboard() { 21 22 reg int i; 23 24 printf("%s\t%s\n", header, header); 25 for (i = 0; i < N_SQRS/2; i++) { 26 printsq(i, FALSE); 27 putchar('\t'); 28 printsq(i+N_SQRS/2, TRUE); 29 } 30 } 31 /* 32 * This routine lists where each player is. 33 */ 34 where() { 35 36 reg int i; 37 char *bsp; 38 39 printf("%s Player\n", header); 40 for (i = 0; i < num_play; i++) { 41 printsq(play[i].loc, FALSE); 42 printf(" %s (%d)", play[i].name, i+1); 43 if (cur_p == &play[i]) 44 printf(" *"); 45 putchar('\n'); 46 } 47 } 48 /* 49 * This routine prints out an individual square 50 */ 51 printsq(sqn, eoln) 52 int sqn; 53 reg bool eoln; { 54 55 reg int rnt; 56 reg PROP *pp; 57 reg SQUARE *sqp; 58 int i; 59 60 sqp = &board[sqn]; 61 printf("%-10.10s", sqp->name); 62 switch (sqp->type) { 63 case SAFE: 64 case CC: 65 case CHANCE: 66 case INC_TAX: 67 case GOTO_J: 68 case LUX_TAX: 69 case IN_JAIL: 70 spec: 71 if (!eoln) 72 printf(" "); 73 break; 74 case PRPTY: 75 pp = sqp->desc; 76 if (sqp->owner < 0) { 77 printf(" - %-8.8s %3d", pp->mon_desc->name, sqp->cost); 78 if (!eoln) 79 printf(" "); 80 break; 81 } 82 printf(" %d %-8.8s %3d", sqp->owner+1, pp->mon_desc->name, 83 sqp->cost); 84 printmorg(sqp); 85 if (pp->monop) { 86 if (pp->houses < 5) 87 if (pp->houses > 0) 88 printf("%d %4d", pp->houses, 89 pp->rent[pp->houses]); 90 else 91 printf("0 %4d", pp->rent[0] * 2); 92 else 93 printf("H %4d", pp->rent[5]); 94 } 95 else 96 printf(" %4d", pp->rent[0]); 97 break; 98 case UTIL: 99 if (sqp->owner < 0) { 100 printf(" - 150"); 101 if (!eoln) 102 printf(" "); 103 break; 104 } 105 printf(" %d 150", sqp->owner+1); 106 printmorg(sqp); 107 printf("%d", play[sqp->owner].num_util); 108 if (!eoln) 109 printf(" "); 110 break; 111 case RR: 112 if (sqp->owner < 0) { 113 printf(" - Railroad 200"); 114 if (!eoln) 115 printf(" "); 116 break; 117 } 118 printf(" %d Railroad 200", sqp->owner+1); 119 printmorg(sqp); 120 rnt = 25; 121 rnt <<= play[sqp->owner].num_rr - 1; 122 printf("%d %4d", play[sqp->owner].num_rr, 25 << (play[sqp->owner].num_rr - 1)); 123 break; 124 } 125 if (eoln) 126 putchar('\n'); 127 } 128 /* 129 * This routine prints out the mortgage flag. 130 */ 131 printmorg(sqp) 132 reg SQUARE *sqp; { 133 134 if (sqp->desc->morg) 135 printf(" * "); 136 else 137 printf(" "); 138 } 139 /* 140 * This routine lists the holdings of the player given 141 */ 142 printhold(pl) 143 reg int pl; { 144 145 reg OWN *op; 146 reg PLAY *pp; 147 char *bsp; 148 149 pp = &play[pl]; 150 printf("%s's (%d) holdings (Total worth: $%d):\n", name_list[pl], pl+1, 151 pp->money + prop_worth(pp)); 152 printf("\t$%d", pp->money); 153 if (pp->num_gojf) { 154 printf(", %d get-out-of-jail-free card", pp->num_gojf); 155 if (pp->num_gojf > 1) 156 putchar('s'); 157 } 158 putchar('\n'); 159 if (pp->own_list) { 160 printf("\t%s\n", header); 161 for (op = pp->own_list; op; op = op->next) { 162 putchar('\t'); 163 printsq(sqnum(op->sqr), TRUE); 164 } 165 } 166 } 167