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