home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / games / mille / mille.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-04-08  |  5.6 KB  |  229 lines

  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.  
  165. typedef 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.  
  208. extern bool    Debug, Finished, Next, On_exit, Order, Saved;
  209.  
  210. extern char    *C_fmt, **C_name, *Fromfile, Initstr[];
  211.  
  212. extern int    Card_no, End, Handstart, Movetype, Numcards[], Numgos,
  213.         Numneed[], Numseen[NUM_CARDS], Play, Value[], Window;
  214.  
  215. extern CARD    Deck[DECK_SZ], Discard, Opposite[NUM_CARDS], Sh_discard,
  216.         *Topcard;
  217.  
  218. extern FILE    *outf;
  219.  
  220. extern PLAY    Player[2];
  221.  
  222. extern WINDOW    *Board, *Miles, *Score;
  223.  
  224. /*
  225.  * functions
  226.  */
  227.  
  228. CARD    getcard();
  229.