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.11 2003/08/07 09:37:26 agc Exp $");
38: #endif
39: #endif
40:
41: # include "mille.h"
42:
43:
44:
45:
46:
47: # define COMP_STRT 20
48: # define CARD_STRT 2
49:
50: void
51: prboard()
52: {
53: PLAY *pp;
54: int i, j, k, temp;
55:
56: for (k = 0; k < 2; k++) {
57: pp = &Player[k];
58: temp = k * COMP_STRT + CARD_STRT;
59: for (i = 0; i < NUM_SAFE; i++)
60: if (pp->safety[i] == S_PLAYED && !pp->sh_safety[i]) {
61: mvaddstr(i, temp, C_name[i + S_CONV]);
62: if (pp->coups[i])
63: mvaddch(i, temp - CARD_STRT, '*');
64: pp->sh_safety[i] = TRUE;
65: }
66: show_card(14, temp, pp->battle, &pp->sh_battle);
67: show_card(16, temp, pp->speed, &pp->sh_speed);
68: for (i = C_25; i <= C_200; i++) {
69: const char *name;
70: int end;
71:
72: if (pp->nummiles[i] == pp->sh_nummiles[i])
73: continue;
74:
75: name = C_name[i];
76: temp = k * 40;
77: end = pp->nummiles[i];
78: for (j = pp->sh_nummiles[i]; j < end; j++)
79: mvwaddstr(Miles, i + 1, (j << 2) + temp, name);
80: pp->sh_nummiles[i] = end;
81: }
82: }
83: prscore(TRUE);
84: temp = CARD_STRT;
85: pp = &Player[PLAYER];
86: for (i = 0; i < HAND_SZ; i++)
87: show_card(i + 6, temp, pp->hand[i], &pp->sh_hand[i]);
88: mvprintw(6, COMP_STRT + CARD_STRT, "%2ld", (long)(Topcard - Deck));
89: show_card(8, COMP_STRT + CARD_STRT, Discard, &Sh_discard);
90: if (End == 1000) {
91: move(EXT_Y, EXT_X);
92: standout();
93: addstr("Extension");
94: standend();
95: }
96: wrefresh(Board);
97: wrefresh(Miles);
98: wrefresh(Score);
99: }
100:
101:
102:
103:
104:
105: void
106: show_card(y, x, c, lc)
107: int y, x;
108: CARD c, *lc;
109: {
110: if (c == *lc)
111: return;
112:
113: mvprintw(y, x, C_fmt, C_name[c]);
114: *lc = c;
115: }
116:
117: static char Score_fmt[] = "%4d";
118:
119: void
120: prscore(for_real)
121: #ifdef EXTRAP
122: bool for_real;
123: #else
124: bool for_real __attribute__((__unused__));
125: #endif
126: {
127: PLAY *pp;
128: int x;
129:
130: stdscr = Score;
131: for (pp = Player; pp < &Player[2]; pp++) {
132: x = (pp - Player) * 6 + 21;
133: show_score(1, x, pp->mileage, &pp->sh_mileage);
134: if (pp->safescore != pp->sh_safescore) {
135: mvprintw(2, x, Score_fmt, pp->safescore);
136: if (pp->safescore == 400)
137: mvaddstr(3, x + 1, "300");
138: else
139: mvaddstr(3, x + 1, " 0");
140: mvprintw(4, x, Score_fmt, pp->coupscore);
141: pp->sh_safescore = pp->safescore;
142: }
143: if (Window == W_FULL || Finished) {
144: #ifdef EXTRAP
145: if (for_real)
146: finalscore(pp);
147: else
148: extrapolate(pp);
149: #else
150: finalscore(pp);
151: #endif
152: show_score(11, x, pp->hand_tot, &pp->sh_hand_tot);
153: show_score(13, x, pp->total, &pp->sh_total);
154: show_score(14, x, pp->games, &pp->sh_games);
155: }
156: else {
157: show_score(6, x, pp->hand_tot, &pp->sh_hand_tot);
158: show_score(8, x, pp->total, &pp->sh_total);
159: show_score(9, x, pp->games, &pp->sh_games);
160: }
161: }
162: stdscr = Board;
163: }
164:
165:
166:
167:
168:
169:
170: void
171: show_score(y, x, s, ls)
172: int y, x;
173: int s, *ls;
174: {
175: if (s == *ls)
176: return;
177:
178: mvprintw(y, x, Score_fmt, s);
179: *ls = s;
180: }