133213Sbostic /* 234788Sbostic * Copyright (c) 1980 Regents of the University of California. 333213Sbostic * All rights reserved. 433213Sbostic * 5*42583Sbostic * %sccs.include.redist.c% 633213Sbostic */ 733213Sbostic 833213Sbostic #ifndef lint 9*42583Sbostic static char sccsid[] = "@(#)print.c 5.4 (Berkeley) 06/01/90"; 1033213Sbostic #endif /* not lint */ 1133213Sbostic 1233213Sbostic # include "monop.ext" 1333213Sbostic 1433213Sbostic static char buf[80], /* output buffer */ 1533213Sbostic *header = "Name Own Price Mg # Rent"; 1633213Sbostic 1733213Sbostic /* 1833213Sbostic * This routine prints out the current board 1933213Sbostic */ 2033213Sbostic printboard() { 2133213Sbostic 2233213Sbostic reg int i; 2333213Sbostic 2433213Sbostic printf("%s\t%s\n", header, header); 2533213Sbostic for (i = 0; i < N_SQRS/2; i++) { 2633213Sbostic printsq(i, FALSE); 2733213Sbostic putchar('\t'); 2833213Sbostic printsq(i+N_SQRS/2, TRUE); 2933213Sbostic } 3033213Sbostic } 3133213Sbostic /* 3233213Sbostic * This routine lists where each player is. 3333213Sbostic */ 3433213Sbostic where() { 3533213Sbostic 3633213Sbostic reg int i; 3733213Sbostic char *bsp; 3833213Sbostic 3933213Sbostic printf("%s Player\n", header); 4033213Sbostic for (i = 0; i < num_play; i++) { 4133213Sbostic printsq(play[i].loc, FALSE); 4233213Sbostic printf(" %s (%d)", play[i].name, i+1); 4333213Sbostic if (cur_p == &play[i]) 4433213Sbostic printf(" *"); 4533213Sbostic putchar('\n'); 4633213Sbostic } 4733213Sbostic } 4833213Sbostic /* 4933213Sbostic * This routine prints out an individual square 5033213Sbostic */ 5133213Sbostic printsq(sqn, eoln) 5233213Sbostic int sqn; 5333213Sbostic reg bool eoln; { 5433213Sbostic 5533213Sbostic reg int rnt; 5633213Sbostic reg PROP *pp; 5733213Sbostic reg SQUARE *sqp; 5833213Sbostic int i; 5933213Sbostic 6033213Sbostic sqp = &board[sqn]; 6133213Sbostic printf("%-10.10s", sqp->name); 6233213Sbostic switch (sqp->type) { 6333213Sbostic case SAFE: 6433213Sbostic case CC: 6533213Sbostic case CHANCE: 6633216Sbostic case INC_TAX: 6733216Sbostic case GOTO_J: 6833216Sbostic case LUX_TAX: 6933216Sbostic case IN_JAIL: 7033213Sbostic spec: 7133213Sbostic if (!eoln) 7233213Sbostic printf(" "); 7333213Sbostic break; 7433213Sbostic case PRPTY: 7533213Sbostic pp = sqp->desc; 7633213Sbostic if (sqp->owner < 0) { 7733213Sbostic printf(" - %-8.8s %3d", pp->mon_desc->name, sqp->cost); 7833213Sbostic if (!eoln) 7933213Sbostic printf(" "); 8033213Sbostic break; 8133213Sbostic } 8233213Sbostic printf(" %d %-8.8s %3d", sqp->owner+1, pp->mon_desc->name, 8333213Sbostic sqp->cost); 8433213Sbostic printmorg(sqp); 8533213Sbostic if (pp->monop) { 8633213Sbostic if (pp->houses < 5) 8733213Sbostic if (pp->houses > 0) 8833213Sbostic printf("%d %4d", pp->houses, 8933213Sbostic pp->rent[pp->houses]); 9033213Sbostic else 9133213Sbostic printf("0 %4d", pp->rent[0] * 2); 9233213Sbostic else 9333213Sbostic printf("H %4d", pp->rent[5]); 9433213Sbostic } 9533213Sbostic else 9633213Sbostic printf(" %4d", pp->rent[0]); 9733213Sbostic break; 9833213Sbostic case UTIL: 9933213Sbostic if (sqp->owner < 0) { 10033213Sbostic printf(" - 150"); 10133213Sbostic if (!eoln) 10233213Sbostic printf(" "); 10333213Sbostic break; 10433213Sbostic } 10533213Sbostic printf(" %d 150", sqp->owner+1); 10633213Sbostic printmorg(sqp); 10733213Sbostic printf("%d", play[sqp->owner].num_util); 10833213Sbostic if (!eoln) 10933213Sbostic printf(" "); 11033213Sbostic break; 11133213Sbostic case RR: 11233213Sbostic if (sqp->owner < 0) { 11333213Sbostic printf(" - Railroad 200"); 11433213Sbostic if (!eoln) 11533213Sbostic printf(" "); 11633213Sbostic break; 11733213Sbostic } 11833213Sbostic printf(" %d Railroad 200", sqp->owner+1); 11933213Sbostic printmorg(sqp); 12033213Sbostic rnt = 25; 12133213Sbostic rnt <<= play[sqp->owner].num_rr - 1; 12233213Sbostic printf("%d %4d", play[sqp->owner].num_rr, 25 << (play[sqp->owner].num_rr - 1)); 12333213Sbostic break; 12433213Sbostic } 12533213Sbostic if (eoln) 12633213Sbostic putchar('\n'); 12733213Sbostic } 12833213Sbostic /* 12933213Sbostic * This routine prints out the mortgage flag. 13033213Sbostic */ 13133213Sbostic printmorg(sqp) 13233213Sbostic reg SQUARE *sqp; { 13333213Sbostic 13433213Sbostic if (sqp->desc->morg) 13533213Sbostic printf(" * "); 13633213Sbostic else 13733213Sbostic printf(" "); 13833213Sbostic } 13933213Sbostic /* 14033213Sbostic * This routine lists the holdings of the player given 14133213Sbostic */ 14233213Sbostic printhold(pl) 14333213Sbostic reg int pl; { 14433213Sbostic 14533213Sbostic reg OWN *op; 14633213Sbostic reg PLAY *pp; 14733213Sbostic char *bsp; 14833213Sbostic 14933213Sbostic pp = &play[pl]; 15033213Sbostic printf("%s's (%d) holdings (Total worth: $%d):\n", name_list[pl], pl+1, 15133213Sbostic pp->money + prop_worth(pp)); 15233213Sbostic printf("\t$%d", pp->money); 15333213Sbostic if (pp->num_gojf) { 15433213Sbostic printf(", %d get-out-of-jail-free card", pp->num_gojf); 15533213Sbostic if (pp->num_gojf > 1) 15633213Sbostic putchar('s'); 15733213Sbostic } 15833213Sbostic putchar('\n'); 15933213Sbostic if (pp->own_list) { 16033213Sbostic printf("\t%s\n", header); 16133213Sbostic for (op = pp->own_list; op; op = op->next) { 16233213Sbostic putchar('\t'); 16333213Sbostic printsq(sqnum(op->sqr), TRUE); 16433213Sbostic } 16533213Sbostic } 16633213Sbostic } 167