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