|
|
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.