|
|
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: (1) source distributions retain this entire copyright
7: * notice and comment, and (2) distributions including binaries display
8: * the following acknowledgement: ``This product includes software
9: * developed by the University of California, Berkeley and its contributors''
10: * in the documentation or other materials provided with the distribution
11: * and in all advertising materials mentioning features or use of this
12: * software. Neither the name of the University nor the names of its
13: * contributors may be used to endorse or promote products derived
14: * from this software without specific prior written permission.
15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18: *
19: * @(#)mille.h 5.5 (Berkeley) 6/1/90
20: */
21:
22: # include <sys/types.h>
23: # include <ctype.h>
24: # include <curses.h>
25: # include <string.h>
26:
27: /*
28: * @(#)mille.h 1.1 (Berkeley) 4/1/82
29: */
30:
31: /*
32: * Miscellaneous constants
33: */
34:
35: # define unsgn unsigned
36: # define CARD short
37:
38: # define HAND_SZ 7 /* number of cards in a hand */
39: # define DECK_SZ 101 /* number of cards in decks */
40: # define NUM_SAFE 4 /* number of saftey cards */
41: # define NUM_MILES 5 /* number of milestones types */
42: # define NUM_CARDS 20 /* number of types of cards */
43: # define BOARD_Y 17 /* size of board screen */
44: # define BOARD_X 40
45: # define MILES_Y 7 /* size of mileage screen */
46: # define MILES_X 80
47: # define SCORE_Y 17 /* size of score screen */
48: # define SCORE_X 40
49: # define MOVE_Y 10 /* Where to print move prompt */
50: # define MOVE_X 20
51: # define ERR_Y 15 /* Where to print errors */
52: # define ERR_X 5
53: # define EXT_Y 4 /* Where to put Extension */
54: # define EXT_X 9
55:
56: # define PLAYER 0
57: # define COMP 1
58:
59: # define W_SMALL 0 /* Small (initial) window */
60: # define W_FULL 1 /* Full (final) window */
61:
62: /*
63: * Move types
64: */
65:
66: # define M_DISCARD 0
67: # define M_DRAW 1
68: # define M_PLAY 2
69: # define M_ORDER 3
70:
71: /*
72: * Scores
73: */
74:
75: # define SC_SAFETY 100
76: # define SC_ALL_SAFE 300
77: # define SC_COUP 300
78: # define SC_TRIP 400
79: # define SC_SAFE 300
80: # define SC_DELAY 300
81: # define SC_EXTENSION 200
82: # define SC_SHUT_OUT 500
83:
84: /*
85: * safety descriptions
86: */
87:
88: # define S_UNKNOWN 0 /* location of safety unknown */
89: # define S_IN_HAND 1 /* safety in player's hand */
90: # define S_PLAYED 2 /* safety has been played */
91: # define S_GAS_SAFE 0 /* Gas safety card index */
92: # define S_SPARE_SAFE 1 /* Tire safety card index */
93: # define S_DRIVE_SAFE 2 /* Driveing safety card index */
94: # define S_RIGHT_WAY 3 /* Right-of-Way card index */
95: # define S_CONV 15 /* conversion from C_ to S_ */
96:
97: /*
98: * card numbers
99: */
100:
101: # define C_INIT -1
102: # define C_25 0
103: # define C_50 1
104: # define C_75 2
105: # define C_100 3
106: # define C_200 4
107: # define C_EMPTY 5
108: # define C_FLAT 6
109: # define C_CRASH 7
110: # define C_STOP 8
111: # define C_LIMIT 9
112: # define C_GAS 10
113: # define C_SPARE 11
114: # define C_REPAIRS 12
115: # define C_GO 13
116: # define C_END_LIMIT 14
117: # define C_GAS_SAFE 15
118: # define C_SPARE_SAFE 16
119: # define C_DRIVE_SAFE 17
120: # define C_RIGHT_WAY 18
121:
122: /*
123: * prompt types
124: */
125:
126: # define MOVEPROMPT 0
127: # define REALLYPROMPT 1
128: # define ANOTHERHANDPROMPT 2
129: # define ANOTHERGAMEPROMPT 3
130: # define SAVEGAMEPROMPT 4
131: # define SAMEFILEPROMPT 5
132: # define FILEPROMPT 6
133: # define EXTENSIONPROMPT 7
134: # define OVERWRITEFILEPROMPT 8
135:
136: # ifdef SYSV
137: # define srandom(x) srand(x)
138: # define random() rand()
139:
140: # ifndef attron
141: # define erasechar() _tty.c_cc[VERASE]
142: # define killchar() _tty.c_cc[VKILL]
143: # endif
144: # else
145: # ifndef erasechar
146: # define erasechar() _tty.sg_erase
147: # define killchar() _tty.sg_kill
148: # endif
149: # endif SYSV
150:
151: typedef struct {
152: bool coups[NUM_SAFE];
153: bool can_go;
154: bool new_battle;
155: bool new_speed;
156: short safety[NUM_SAFE];
157: short sh_safety[NUM_SAFE];
158: short nummiles[NUM_MILES];
159: short sh_nummiles[NUM_MILES];
160: CARD hand[HAND_SZ];
161: CARD sh_hand[HAND_SZ];
162: CARD battle;
163: CARD sh_battle;
164: CARD speed;
165: CARD sh_speed;
166: int mileage;
167: int sh_mileage;
168: int hand_tot;
169: int sh_hand_tot;
170: int safescore;
171: int sh_safescore;
172: int coupscore;
173: int total;
174: int sh_total;
175: int games;
176: int sh_games;
177: int was_finished;
178: } PLAY;
179:
180: /*
181: * macros
182: */
183:
184: # define other(x) (1 - x)
185: # define nextplay() (Play = other(Play))
186: # define nextwin(x) (1 - x)
187: # define opposite(x) (Opposite[x])
188: # define issafety(x) (x >= C_GAS_SAFE)
189:
190: /*
191: * externals
192: */
193:
194: extern bool Debug, Finished, Next, On_exit, Order, Saved;
195:
196: extern char *C_fmt, **C_name, *Fromfile, Initstr[];
197:
198: extern int Card_no, End, Handstart, Movetype, Numcards[], Numgos,
199: Numneed[], Numseen[NUM_CARDS], Play, Value[], Window;
200:
201: extern CARD Deck[DECK_SZ], Discard, Opposite[NUM_CARDS], Sh_discard,
202: *Topcard;
203:
204: extern FILE *outf;
205:
206: extern PLAY Player[2];
207:
208: extern WINDOW *Board, *Miles, *Score;
209:
210: /*
211: * functions
212: */
213:
214: CARD getcard();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.