1: # include "mille.h" 2: 3: /* 4: * @(#)extern.c 1.1 (Berkeley) 4/1/82 5: */ 6: 7: bool Debug, /* set if debugging code on */ 8: Finished, /* set if current hand is finished */ 9: Next, /* set if changing players */ 10: On_exit, /* set if game saved on exiting */ 11: Order, /* set if hand should be sorted */ 12: Saved; /* set if game just saved */ 13: 14: char *C_fmt = "%-18.18s", /* format for printing cards */ 15: *Fromfile = NULL, /* startup file for game */ 16: Initstr[100], /* initial string for error field */ 17: *_cn[NUM_CARDS] = { /* Card name buffer */ 18: "", 19: "25", 20: "50", 21: "75", 22: "100", 23: "200", 24: "Out of Gas", 25: "Flat Tire", 26: "Accident", 27: "Stop", 28: "Speed Limit", 29: "Gasoline", 30: "Spare Tire", 31: "Repairs", 32: "Go", 33: "End of Limit", 34: "Extra Tank", 35: "Puncture Proof", 36: "Driving Ace", 37: "Right of Way" 38: }, 39: **C_name = &_cn[1]; /* Card names */ 40: 41: int Card_no, /* Card number for current move */ 42: End, /* End value for current hand */ 43: Handstart = COMP, /* Player who starts hand */ 44: Movetype, /* Current move type */ 45: Play, /* Current player */ 46: Numgos, /* Number of Go cards used by computer */ 47: Window = W_SMALL, /* Current window wanted */ 48: Numseen[NUM_CARDS], /* Number of cards seen in current hand */ 49: Value[NUM_MILES] = { /* Value of mileage cards */ 50: 25, 50, 75, 100, 200 51: }, 52: Numcards[NUM_CARDS] = { /* Number of cards in deck */ 53: 10, /* C_25 */ 54: 10, /* C_50 */ 55: 10, /* C_75 */ 56: 12, /* C_100 */ 57: 4, /* C_200 */ 58: 2, /* C_EMPTY */ 59: 2, /* C_FLAT */ 60: 2, /* C_CRASH */ 61: 4, /* C_STOP */ 62: 3, /* C_LIMIT */ 63: 6, /* C_GAS */ 64: 6, /* C_SPARE */ 65: 6, /* C_REPAIRS */ 66: 14, /* C_GO */ 67: 6, /* C_END_LIMIT */ 68: 1, /* C_GAS_SAFE */ 69: 1, /* C_SPARE_SAFE */ 70: 1, /* C_DRIVE_SAFE */ 71: 1, /* C_RIGHT_WAY */ 72: 0 /* C_INIT */ 73: }; 74: Numneed[NUM_CARDS] = { /* number of cards needed per hand */ 75: 0, /* C_25 */ 76: 0, /* C_50 */ 77: 0, /* C_75 */ 78: 0, /* C_100 */ 79: 0, /* C_200 */ 80: 2, /* C_EMPTY */ 81: 2, /* C_FLAT */ 82: 2, /* C_CRASH */ 83: 4, /* C_STOP */ 84: 3, /* C_LIMIT */ 85: 2, /* C_GAS */ 86: 2, /* C_SPARE */ 87: 2, /* C_REPAIRS */ 88: 10, /* C_GO */ 89: 3, /* C_END_LIMIT */ 90: 1, /* C_GAS_SAFE */ 91: 1, /* C_SPARE_SAFE */ 92: 1, /* C_DRIVE_SAFE */ 93: 1, /* C_RIGHT_WAY */ 94: 0 /* C_INIT */ 95: }; 96: 97: CARD Discard, /* Top of discard pile */ 98: Sh_discard, /* Last discard card shown */ 99: *Topcard, /* Pointer to next card to be picked */ 100: Opposite[NUM_CARDS] = { /* Opposites of each card */ 101: C_25, C_50, C_75, C_100, C_200, C_GAS, C_SPARE, 102: C_REPAIRS, C_GO, C_END_LIMIT, C_EMPTY, C_FLAT, C_CRASH, 103: C_STOP, C_LIMIT, C_EMPTY, C_FLAT, C_CRASH, C_STOP, C_INIT 104: }, 105: Deck[DECK_SZ] = { /* Current deck */ 106: C_25, C_25, C_25, C_25, C_25, C_25, C_25, C_25, C_25, C_25, 107: C_50, C_50, C_50, C_50, C_50, C_50, C_50, C_50, C_50, C_50, 108: C_75, C_75, C_75, C_75, C_75, C_75, C_75, C_75, C_75, C_75, 109: C_100, C_100, C_100, C_100, C_100, C_100, C_100, C_100, C_100, 110: C_100, C_100, C_100, 111: C_200, C_200, C_200, C_200, 112: C_EMPTY, C_EMPTY, 113: C_FLAT, C_FLAT, 114: C_CRASH, C_CRASH, 115: C_STOP, C_STOP, C_STOP, C_STOP, 116: C_LIMIT, C_LIMIT, C_LIMIT, 117: C_GAS, C_GAS, C_GAS, C_GAS, C_GAS, C_GAS, 118: C_SPARE, C_SPARE, C_SPARE, C_SPARE, C_SPARE, C_SPARE, 119: C_REPAIRS, C_REPAIRS, C_REPAIRS, C_REPAIRS, C_REPAIRS, 120: C_REPAIRS, 121: C_END_LIMIT, C_END_LIMIT, C_END_LIMIT, C_END_LIMIT, C_END_LIMIT, 122: C_END_LIMIT, 123: C_GO, C_GO, C_GO, C_GO, C_GO, C_GO, C_GO, C_GO, C_GO, C_GO, 124: C_GO, C_GO, C_GO, C_GO, 125: C_GAS_SAFE, C_SPARE_SAFE, C_DRIVE_SAFE, C_RIGHT_WAY 126: }; 127: 128: FILE *outf; 129: 130: PLAY Player[2]; /* Player descriptions */ 131: 132: WINDOW *Board, /* Playing field screen */ 133: *Miles, /* Mileage screen */ 134: *Score; /* Score screen */