|
|
1.1 root 1: /*
2: * Copyright (c) 1982 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[] = "@(#)end.c 5.3 (Berkeley) 6/18/88";
20: #endif /* not lint */
21:
22: # include "mille.h"
23:
24: /*
25: * @(#)end.c 1.1 (Berkeley) 4/1/82
26: */
27:
28: /*
29: * print out the score as if it was final, and add the totals for
30: * the end-of-games points to the user who deserves it (if any).
31: */
32: finalscore(pp)
33: reg PLAY *pp; {
34:
35: reg int temp, tot, num;
36:
37: if (pp->was_finished == Finished)
38: return;
39:
40: pp->was_finished = Finished;
41: num = pp - Player;
42: temp = num * 6 + 21 + 1;
43: for (tot = 5; tot <= 9; tot++)
44: mvaddstr(tot, temp, " 0");
45: if (pp->mileage == End) {
46: mvaddstr(5, temp, "40");
47: tot = SC_TRIP;
48: if (pp->nummiles[C_200] == 0) {
49: mvaddstr(6, temp, "30");
50: tot = SC_TRIP + SC_SAFE;
51: }
52: if (Topcard <= Deck) {
53: mvaddstr(7, temp, "30");
54: tot += SC_DELAY;
55: }
56: if (End == 1000) {
57: mvaddstr(8, temp, "20");
58: tot += SC_EXTENSION;
59: }
60: if (Player[other(num)].mileage == 0) {
61: mvaddstr(9, temp, "50");
62: tot += SC_SHUT_OUT;
63: }
64: pp->total += tot;
65: pp->hand_tot += tot;
66: }
67: }
68:
69: # ifdef EXTRAP
70: static int Last_tot[2]; /* last tot used for extrapolate */
71:
72: /*
73: * print out the score as if it was final, and add the totals for
74: * the end-of-games points to the user who deserves it (if any).
75: */
76: extrapolate(pp)
77: reg PLAY *pp; {
78:
79: reg int x, num, tot, count;
80:
81: num = pp - Player;
82: tot += SC_TRIP + SC_DELAY + SC_EXT;
83: x = num * 6 + 21 + 3;
84: for (tot = 5; tot <= 9; tot++)
85: mvaddch(tot, x, '0');
86: x -= 2;
87: pp = &Player[other(num)];
88: for (count = 0, tot = 0; tot < NUM_SAFE; tot++)
89: if (pp->safety[tot] != S_PLAYED)
90: count += SC_SAFE;
91: mvprintw(3, x, "%3d", count);
92: tot += count;
93: if (count == 400) {
94: mvaddstr(4, x, "30");
95: tot += SC_ALL_SAFE;
96: }
97: pp = &Player[num];
98: for (count = 0, tot = 0; tot < NUM_SAFE; tot++)
99: if (pp->safety[tot] != S_PLAYED)
100: count += SC_COUP / 10;
101: mvprintw(4, x - 1, "%3d", count);
102: tot += count;
103: tot += 1000 - pp->mileage;
104: mvaddstr(5, x, "40");
105: mvaddstr(7, x, "30");
106: mvaddstr(8, x, "20");
107: if (pp->nummiles[C_200] == 0) {
108: mvaddstr(6, x, "30");
109: tot = SC_TRIP + SC_SAFE;
110: }
111: if (Player[other(num)].mileage == 0) {
112: mvaddstr(9, x, "50");
113: tot += SC_SHUT_OUT;
114: }
115: pp->total += tot;
116: pp->hand_tot += tot;
117: Last_tot[num] = tot;
118: }
119:
120: undoex() {
121:
122: reg PLAY *pp;
123: reg int i;
124:
125: i = 0;
126: for (pp = Player; pp < &Player[2]; pp++) {
127: pp->total -= Last_tot[i];
128: pp->hand_tot -= Last_tot[i++];
129: }
130: }
131: # endif
132:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.