]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - games/mille/mille.h
Add Id.
[FreeBSD/FreeBSD.git] / games / mille / mille.h
1 /*
2  * Copyright (c) 1982, 1993
3  *      The Regents of the University of California.  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     8.1 (Berkeley) 5/31/93
34  */
35
36 # include       <sys/types.h>
37 # include       <ctype.h>
38 # include       <curses.h>
39 # include       <string.h>
40 # include       <stdlib.h>
41
42 /*
43  * @(#)mille.h  1.1 (Berkeley) 4/1/82
44  */
45
46 /*
47  * Miscellaneous constants
48  */
49
50 # define        unsgn           unsigned
51 # define        CARD            short
52
53 # define        HAND_SZ         7       /* number of cards in a hand    */
54 # define        DECK_SZ         101     /* number of cards in decks     */
55 # define        NUM_SAFE        4       /* number of saftey cards       */
56 # define        NUM_MILES       5       /* number of milestones types   */
57 # define        NUM_CARDS       20      /* number of types of cards     */
58 # define        BOARD_Y         17      /* size of board screen         */
59 # define        BOARD_X         40
60 # define        MILES_Y         7       /* size of mileage screen       */
61 # define        MILES_X         80
62 # define        SCORE_Y         17      /* size of score screen         */
63 # define        SCORE_X         40
64 # define        MOVE_Y          10      /* Where to print move prompt   */
65 # define        MOVE_X          20
66 # define        ERR_Y           15      /* Where to print errors        */
67 # define        ERR_X           5
68 # define        EXT_Y           4       /* Where to put Extension       */
69 # define        EXT_X           9
70
71 # define        PLAYER          0
72 # define        COMP            1
73
74 # define        W_SMALL         0       /* Small (initial) window       */
75 # define        W_FULL          1       /* Full (final) window          */
76
77 /*
78  * Move types
79  */
80
81 # define        M_DISCARD       0
82 # define        M_DRAW          1
83 # define        M_PLAY          2
84 # define        M_ORDER         3
85
86 /*
87  * Scores
88  */
89
90 # define        SC_SAFETY       100
91 # define        SC_ALL_SAFE     300
92 # define        SC_COUP         300
93 # define        SC_TRIP         400
94 # define        SC_SAFE         300
95 # define        SC_DELAY        300
96 # define        SC_EXTENSION    200
97 # define        SC_SHUT_OUT     500
98
99 /*
100  * safety descriptions
101  */
102
103 # define        S_UNKNOWN       0       /* location of safety unknown   */
104 # define        S_IN_HAND       1       /* safety in player's hand      */
105 # define        S_PLAYED        2       /* safety has been played       */
106 # define        S_GAS_SAFE      0       /* Gas safety card index        */
107 # define        S_SPARE_SAFE    1       /* Tire safety card index       */
108 # define        S_DRIVE_SAFE    2       /* Driveing safety card index   */
109 # define        S_RIGHT_WAY     3       /* Right-of-Way card index      */
110 # define        S_CONV          15      /* conversion from C_ to S_     */
111
112 /*
113  * card numbers
114  */
115
116 # define        C_INIT          -1
117 # define        C_25            0
118 # define        C_50            1
119 # define        C_75            2
120 # define        C_100           3
121 # define        C_200           4
122 # define        C_EMPTY         5
123 # define        C_FLAT          6
124 # define        C_CRASH         7
125 # define        C_STOP          8
126 # define        C_LIMIT         9
127 # define        C_GAS           10
128 # define        C_SPARE         11
129 # define        C_REPAIRS       12
130 # define        C_GO            13
131 # define        C_END_LIMIT     14
132 # define        C_GAS_SAFE      15
133 # define        C_SPARE_SAFE    16
134 # define        C_DRIVE_SAFE    17
135 # define        C_RIGHT_WAY     18
136
137 /*
138  * prompt types
139  */
140
141 # define        MOVEPROMPT              0
142 # define        REALLYPROMPT            1
143 # define        ANOTHERHANDPROMPT       2
144 # define        ANOTHERGAMEPROMPT       3
145 # define        SAVEGAMEPROMPT          4
146 # define        SAMEFILEPROMPT          5
147 # define        FILEPROMPT              6
148 # define        EXTENSIONPROMPT         7
149 # define        OVERWRITEFILEPROMPT     8
150
151 # ifdef SYSV
152 # define        srandom(x)      srand(x)
153 # define        random()        rand()
154
155 # ifndef        attron
156 #       define  erasechar()     _tty.c_cc[VERASE]
157 #       define  killchar()      _tty.c_cc[VKILL]
158 # endif
159 # else
160 # ifndef        erasechar
161 #       define  erasechar()     _tty.sg_erase
162 #       define  killchar()      _tty.sg_kill
163 # endif
164 # endif SYSV
165
166 typedef struct {
167         bool    coups[NUM_SAFE];
168         bool    can_go;
169         bool    new_battle;
170         bool    new_speed;
171         short   safety[NUM_SAFE];
172         short   sh_safety[NUM_SAFE];
173         short   nummiles[NUM_MILES];
174         short   sh_nummiles[NUM_MILES];
175         CARD    hand[HAND_SZ];
176         CARD    sh_hand[HAND_SZ];
177         CARD    battle;
178         CARD    sh_battle;
179         CARD    speed;
180         CARD    sh_speed;
181         int     mileage;
182         int     sh_mileage;
183         int     hand_tot;
184         int     sh_hand_tot;
185         int     safescore;
186         int     sh_safescore;
187         int     coupscore;
188         int     total;
189         int     sh_total;
190         int     games;
191         int     sh_games;
192         int     was_finished;
193 } PLAY;
194
195 /*
196  * macros
197  */
198
199 # define        other(x)        (1 - x)
200 # define        nextplay()      (Play = other(Play))
201 # define        nextwin(x)      (1 - x)
202 # define        opposite(x)     (Opposite[x])
203 # define        issafety(x)     (x >= C_GAS_SAFE)
204
205 /*
206  * externals
207  */
208
209 extern bool     Debug, Finished, Next, On_exit, Order, Saved;
210
211 extern char     *C_fmt, **C_name, *Fromfile, Initstr[];
212
213 extern int      Card_no, End, Handstart, Movetype, Numcards[], Numgos,
214                 Numneed[], Numseen[NUM_CARDS], Play, Value[], Window;
215
216 extern CARD     Deck[DECK_SZ], Discard, Opposite[NUM_CARDS], Sh_discard,
217                 *Topcard;
218
219 extern FILE     *outf;
220
221 extern PLAY     Player[2];
222
223 extern WINDOW   *Board, *Miles, *Score;
224
225 /*
226  * functions
227  */
228
229 CARD    getcard();