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[] = "@(#)end.c 8.1 (Berkeley) 5/31/93";
36: #else
37: __RCSID("$NetBSD: end.c,v 1.7 2003/08/07 09:37:25 agc Exp $");
38: #endif
39: #endif
40:
41: # include "mille.h"
42:
43:
44:
45:
46:
47:
48:
49:
50:
51: void
52: finalscore(pp)
53: PLAY *pp;
54: {
55: int temp, tot, num;
56:
57: if (pp->was_finished == Finished)
58: return;
59:
60: pp->was_finished = Finished;
61: num = pp - Player;
62: temp = num * 6 + 21 + 1;
63: for (tot = 5; tot <= 9; tot++)
64: mvaddstr(tot, temp, " 0");
65: if (pp->mileage == End) {
66: mvaddstr(5, temp, "40");
67: tot = SC_TRIP;
68: if (pp->nummiles[C_200] == 0) {
69: mvaddstr(6, temp, "30");
70: tot = SC_TRIP + SC_SAFE;
71: }
72: if (Topcard <= Deck) {
73: mvaddstr(7, temp, "30");
74: tot += SC_DELAY;
75: }
76: if (End == 1000) {
77: mvaddstr(8, temp, "20");
78: tot += SC_EXTENSION;
79: }
80: if (Player[other(num)].mileage == 0) {
81: mvaddstr(9, temp, "50");
82: tot += SC_SHUT_OUT;
83: }
84: pp->total += tot;
85: pp->hand_tot += tot;
86: }
87: }
88:
89: # ifdef EXTRAP
90: static int Last_tot[2];
91:
92:
93:
94:
95:
96: extrapolate(pp)
97: reg PLAY *pp; {
98:
99: reg int x, num, tot, count;
100:
101: num = pp - Player;
102: tot += SC_TRIP + SC_DELAY + SC_EXT;
103: x = num * 6 + 21 + 3;
104: for (tot = 5; tot <= 9; tot++)
105: mvaddch(tot, x, '0');
106: x -= 2;
107: pp = &Player[other(num)];
108: for (count = 0, tot = 0; tot < NUM_SAFE; tot++)
109: if (pp->safety[tot] != S_PLAYED)
110: count += SC_SAFE;
111: mvprintw(3, x, "%3d", count);
112: tot += count;
113: if (count == 400) {
114: mvaddstr(4, x, "30");
115: tot += SC_ALL_SAFE;
116: }
117: pp = &Player[num];
118: for (count = 0, tot = 0; tot < NUM_SAFE; tot++)
119: if (pp->safety[tot] != S_PLAYED)
120: count += SC_COUP / 10;
121: mvprintw(4, x - 1, "%3d", count);
122: tot += count;
123: tot += 1000 - pp->mileage;
124: mvaddstr(5, x, "40");
125: mvaddstr(7, x, "30");
126: mvaddstr(8, x, "20");
127: if (pp->nummiles[C_200] == 0) {
128: mvaddstr(6, x, "30");
129: tot = SC_TRIP + SC_SAFE;
130: }
131: if (Player[other(num)].mileage == 0) {
132: mvaddstr(9, x, "50");
133: tot += SC_SHUT_OUT;
134: }
135: pp->total += tot;
136: pp->hand_tot += tot;
137: Last_tot[num] = tot;
138: }
139:
140: undoex() {
141:
142: reg PLAY *pp;
143: reg int i;
144:
145: i = 0;
146: for (pp = Player; pp < &Player[2]; pp++) {
147: pp->total -= Last_tot[i];
148: pp->hand_tot -= Last_tot[i++];
149: }
150: }
151: # endif