123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- /* $NetBSD: extern.c,v 1.7 2003/08/07 09:37:25 agc Exp $ */
- /*
- * Copyright (c) 1982, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
- #include <sys/cdefs.h>
- #ifndef lint
- #if 0
- static char sccsid[] = "@(#)extern.c 8.1 (Berkeley) 5/31/93";
- #else
- __RCSID("$NetBSD: extern.c,v 1.7 2003/08/07 09:37:25 agc Exp $");
- #endif
- #endif /* not lint */
- # include "mille.h"
- /*
- * @(#)extern.c 1.1 (Berkeley) 4/1/82
- */
- bool Debug, /* set if debugging code on */
- Finished, /* set if current hand is finished */
- Next, /* set if changing players */
- On_exit, /* set if game saved on exiting */
- Order, /* set if hand should be sorted */
- Saved; /* set if game just saved */
- char Initstr[100]; /* initial string for error field */
- const char *C_fmt = "%-18.18s", /* format for printing cards */
- *Fromfile = NULL, /* startup file for game */
- *const _cn[NUM_CARDS] = { /* Card name buffer */
- "",
- "25",
- "50",
- "75",
- "100",
- "200",
- "Out of Gas",
- "Flat Tire",
- "Accident",
- "Stop",
- "Speed Limit",
- "Gasoline",
- "Spare Tire",
- "Repairs",
- "Go",
- "End of Limit",
- "Extra Tank",
- "Puncture Proof",
- "Driving Ace",
- "Right of Way"
- },
- *const *C_name = &_cn[1]; /* Card names */
- int Card_no, /* Card number for current move */
- End, /* End value for current hand */
- Handstart = COMP, /* Player who starts hand */
- Movetype, /* Current move type */
- Play, /* Current player */
- Numgos, /* Number of Go cards used by computer */
- Window = W_SMALL, /* Current window wanted */
- Numseen[NUM_CARDS]; /* Number of cards seen in current hand */
- const int Value[NUM_MILES] = { /* Value of mileage cards */
- 25, 50, 75, 100, 200
- },
- Numcards[NUM_CARDS] = { /* Number of cards in deck */
- 10, /* C_25 */
- 10, /* C_50 */
- 10, /* C_75 */
- 12, /* C_100 */
- 4, /* C_200 */
- 2, /* C_EMPTY */
- 2, /* C_FLAT */
- 2, /* C_CRASH */
- 4, /* C_STOP */
- 3, /* C_LIMIT */
- 6, /* C_GAS */
- 6, /* C_SPARE */
- 6, /* C_REPAIRS */
- 14, /* C_GO */
- 6, /* C_END_LIMIT */
- 1, /* C_GAS_SAFE */
- 1, /* C_SPARE_SAFE */
- 1, /* C_DRIVE_SAFE */
- 1, /* C_RIGHT_WAY */
- 0 /* C_INIT */
- };
- int Numneed[NUM_CARDS] = { /* number of cards needed per hand */
- 0, /* C_25 */
- 0, /* C_50 */
- 0, /* C_75 */
- 0, /* C_100 */
- 0, /* C_200 */
- 2, /* C_EMPTY */
- 2, /* C_FLAT */
- 2, /* C_CRASH */
- 4, /* C_STOP */
- 3, /* C_LIMIT */
- 2, /* C_GAS */
- 2, /* C_SPARE */
- 2, /* C_REPAIRS */
- 10, /* C_GO */
- 3, /* C_END_LIMIT */
- 1, /* C_GAS_SAFE */
- 1, /* C_SPARE_SAFE */
- 1, /* C_DRIVE_SAFE */
- 1, /* C_RIGHT_WAY */
- 0 /* C_INIT */
- };
- CARD Discard, /* Top of discard pile */
- Sh_discard, /* Last discard card shown */
- *Topcard; /* Pointer to next card to be picked */
- const CARD Opposite[NUM_CARDS] = { /* Opposites of each card */
- C_25, C_50, C_75, C_100, C_200, C_GAS, C_SPARE,
- C_REPAIRS, C_GO, C_END_LIMIT, C_EMPTY, C_FLAT, C_CRASH,
- C_STOP, C_LIMIT, C_EMPTY, C_FLAT, C_CRASH, C_STOP, C_INIT
- };
- CARD Deck[DECK_SZ] = { /* Current deck */
- C_25, C_25, C_25, C_25, C_25, C_25, C_25, C_25, C_25, C_25,
- C_50, C_50, C_50, C_50, C_50, C_50, C_50, C_50, C_50, C_50,
- C_75, C_75, C_75, C_75, C_75, C_75, C_75, C_75, C_75, C_75,
- C_100, C_100, C_100, C_100, C_100, C_100, C_100, C_100, C_100,
- C_100, C_100, C_100,
- C_200, C_200, C_200, C_200,
- C_EMPTY, C_EMPTY,
- C_FLAT, C_FLAT,
- C_CRASH, C_CRASH,
- C_STOP, C_STOP, C_STOP, C_STOP,
- C_LIMIT, C_LIMIT, C_LIMIT,
- C_GAS, C_GAS, C_GAS, C_GAS, C_GAS, C_GAS,
- C_SPARE, C_SPARE, C_SPARE, C_SPARE, C_SPARE, C_SPARE,
- C_REPAIRS, C_REPAIRS, C_REPAIRS, C_REPAIRS, C_REPAIRS,
- C_REPAIRS,
- C_END_LIMIT, C_END_LIMIT, C_END_LIMIT, C_END_LIMIT, C_END_LIMIT,
- C_END_LIMIT,
- C_GO, C_GO, C_GO, C_GO, C_GO, C_GO, C_GO, C_GO, C_GO, C_GO,
- C_GO, C_GO, C_GO, C_GO,
- C_GAS_SAFE, C_SPARE_SAFE, C_DRIVE_SAFE, C_RIGHT_WAY
- };
- FILE *outf;
- PLAY Player[2]; /* Player descriptions */
- WINDOW *Board, /* Playing field screen */
- *Miles, /* Mileage screen */
- *Score; /* Score screen */
|