|
|
1.1 root 1: # include "mille.h"
2:
3: /*
4: * @(#)init.c 1.1 (Berkeley) 4/1/82
5: */
6:
7: init() {
8:
9: reg PLAY *pp;
10: reg int i, j;
11: reg CARD card;
12:
13: bzero(Numseen, sizeof Numseen);
14: Numgos = 0;
15:
16: for (i = 0; i < 2; i++) {
17: pp = &Player[i];
18: pp->hand[0] = C_INIT;
19: for (j = 0; j < NUM_SAFE; j++) {
20: pp->safety[j] = S_UNKNOWN;
21: pp->coups[j] = FALSE;
22: }
23: for (j = 1; j < HAND_SZ; j++) {
24: pp->hand[j] = *--Topcard;
25: if (i == COMP) {
26: account(card = *Topcard);
27: if (issafety(card))
28: pp->safety[card - S_CONV] = S_IN_HAND;
29: }
30: }
31: pp->mileage = 0;
32: pp->hand_tot = 0;
33: pp->safescore = 0;
34: pp->coupscore = 0;
35: pp->can_go = FALSE;
36: pp->speed = C_INIT;
37: pp->battle = C_INIT;
38: pp->new_speed = FALSE;
39: pp->new_battle = FALSE;
40: for (j = 0; j < NUM_MILES; j++)
41: pp->nummiles[j] = 0;
42: }
43: if (Order)
44: sort(Player[PLAYER].hand);
45: Discard = C_INIT;
46: Finished = FALSE;
47: End = 700;
48: }
49:
50: shuffle() {
51:
52: reg int i, r;
53: reg CARD temp;
54:
55: for (i = 0; i < DECK_SZ; i++) {
56: r = roll(1, DECK_SZ) - 1;
57: if (r < 0 || r > DECK_SZ - 1) {
58: fprintf(stderr, "shuffle: card no. error: %d\n", r);
59: die();
60: }
61: temp = Deck[r];
62: Deck[r] = Deck[i];
63: Deck[i] = temp;
64: }
65: Topcard = &Deck[DECK_SZ];
66: }
67:
68: newboard() {
69:
70: register int i;
71: register PLAY *pp;
72: static int first = TRUE;
73:
74: if (first) {
75: werase(Board);
76: werase(Score);
77: mvaddstr(5, 0, "--HAND--");
78: mvaddch(6, 0, 'P');
79: mvaddch(7, 0, '1');
80: mvaddch(8, 0, '2');
81: mvaddch(9, 0, '3');
82: mvaddch(10, 0, '4');
83: mvaddch(11, 0, '5');
84: mvaddch(12, 0, '6');
85: mvaddstr(13, 0, "--BATTLE--");
86: mvaddstr(15, 0, "--SPEED--");
87: mvaddstr(5, 20, "--DECK--");
88: mvaddstr(7, 20, "--DISCARD--");
89: mvaddstr(13, 20, "--BATTLE--");
90: mvaddstr(15, 20, "--SPEED--");
91: mvwaddstr(Miles, 0, 0, "--MILEAGE--");
92: mvwaddstr(Miles, 0, 41, "--MILEAGE--");
93: Sh_discard = -1;
94: for (pp = Player; pp <= &Player[COMP]; pp++) {
95: for (i = 0; i < HAND_SZ; i++)
96: pp->sh_hand[i] = -1;
97: pp->sh_battle = -1;
98: pp->sh_speed = -1;
99: pp->sh_mileage = -1;
100: }
101: first = FALSE;
102: }
103: else {
104: for (i = 0; i < 5; i++) {
105: move(i, 0);
106: clrtoeol();
107: }
108: wmove(Miles, 1, 0);
109: wclrtobot(Miles);
110: wmove(Board, MOVE_Y + 1, MOVE_X);
111: wclrtoeol(Board);
112: wmove(Board, MOVE_Y + 2, MOVE_X);
113: wclrtoeol(Board);
114: }
115: Sh_discard = -1;
116: for (pp = Player; pp <= &Player[COMP]; pp++) {
117: for (i = 0; i < NUM_SAFE; i++)
118: pp->sh_safety[i] = FALSE;
119: for (i = 0; i < NUM_MILES; i++)
120: pp->sh_nummiles[i] = 0;
121: pp->sh_safescore = -1;
122: }
123: newscore();
124: }
125:
126: newscore() {
127:
128: reg int i, new;
129: register PLAY *pp;
130: static int was_full = -1;
131: static int last_win = -1;
132:
133: if (was_full < 0)
134: was_full = (Window != W_FULL);
135: stdscr = Score;
136: move(0, 22);
137: new = FALSE;
138: if (inch() != 'Y') {
139: erase();
140: mvaddstr(0, 22, "You Comp Value");
141: mvaddstr(1, 2, "Milestones Played");
142: mvaddstr(2, 8, "Each Safety");
143: mvaddstr(3, 5, "All 4 Safeties");
144: mvaddstr(4, 3, "Each Coup Fourre");
145: mvaddstr(2, 37, "100");
146: mvaddstr(3, 37, "300");
147: mvaddstr(4, 37, "300");
148: new = TRUE;
149: }
150: else if (((Window == W_FULL || Finished) ^ was_full) ||
151: pp->was_finished != Finished) {
152: move(5, 1);
153: clrtobot();
154: new = TRUE;
155: }
156: else if (Window != last_win)
157: new = TRUE;
158: if (new) {
159: for (i = 0; i < SCORE_Y; i++)
160: mvaddch(i, 0, '|');
161: move(SCORE_Y - 1, 1);
162: while (addch('_') != ERR)
163: continue;
164: for (pp = Player; pp <= &Player[COMP]; pp++) {
165: pp->sh_hand_tot = -1;
166: pp->sh_total = -1;
167: pp->sh_games = -1;
168: pp->sh_safescore = -1;
169: }
170: }
171: Player[PLAYER].was_finished = !Finished;
172: Player[COMP].was_finished = !Finished;
173: if (Window == W_FULL || Finished) {
174: if (!was_full || new) {
175: mvaddstr(5, 5, "Trip Completed");
176: mvaddstr(6, 10, "Safe Trip");
177: mvaddstr(7, 5, "Delayed Action");
178: mvaddstr(8, 10, "Extension");
179: mvaddstr(9, 11, "Shut-Out");
180: mvaddstr(10, 21, "---- ---- -----");
181: mvaddstr(11, 9, "Hand Total");
182: mvaddstr(12, 20, "----- -----");
183: mvaddstr(13, 6, "Overall Total");
184: mvaddstr(14, 15, "Games");
185: mvaddstr(5, 37, "400");
186: mvaddstr(6, 37, "300");
187: mvaddstr(7, 37, "300");
188: mvaddstr(8, 37, "200");
189: mvaddstr(9, 37, "500");
190: }
191: }
192: else
193: if (was_full || new) {
194: mvaddstr(5, 21, "---- ---- -----");
195: mvaddstr(6, 9, "Hand Total");
196: mvaddstr(7, 20, "----- -----");
197: mvaddstr(8, 6, "Overall Total");
198: mvaddstr(9, 15, "Games");
199: mvaddstr(11, 2, "p: pick");
200: mvaddstr(12, 2, "u: use #");
201: mvaddstr(13, 2, "d: discard #");
202: mvaddstr(14, 2, "w: toggle window");
203: mvaddstr(11, 21, "q: quit");
204: if (!Order)
205: mvaddstr(12, 21, "o: order hand");
206: else
207: mvaddstr(12, 21, "o: stop ordering");
208: mvaddstr(13, 21, "s: save");
209: mvaddstr(14, 21, "r: reprint");
210: }
211: stdscr = Board;
212: was_full = (Window == W_FULL || Finished);
213: last_win = Window;
214: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.