Annotation of 43BSDTahoe/games/monop/print.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.