⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 externs.h

📁 早期freebsd实现
💻 H
字号:
/* * Copyright (c) 1983, 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. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. 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. * *	@(#)externs.h	8.1 (Berkeley) 5/31/93 */#include <stdio.h>#include <signal.h>#include <ctype.h>#include <setjmp.h>#include "machdep.h"	/* program mode */int mode;jmp_buf restart;#define MODE_PLAYER	1#define MODE_DRIVER	2#define MODE_LOGGER	3	/* command line flags */char debug;				/* -D */char randomize;				/* -x, give first available ship */char longfmt;				/* -l, print score in long format */char nobells;				/* -b, don't ring bell before Signal */	/* other initial modes */char issetuid;				/* running setuid */#define die()		((rand() >> 3) % 6 + 1)#define sqr(a)		((a) * (a))#define abs(a)		((a) > 0 ? (a) : -(a))#define min(a,b)	((a) < (b) ? (a) : (b))#define grappled(a)	((a)->file->ngrap)#define fouled(a)	((a)->file->nfoul)#define snagged(a)	(grappled(a) + fouled(a))#define grappled2(a, b)	((a)->file->grap[(b)->file->index].sn_count)#define fouled2(a, b)	((a)->file->foul[(b)->file->index].sn_count)#define snagged2(a, b)	(grappled2(a, b) + fouled2(a, b))#define Xgrappled2(a, b) ((a)->file->grap[(b)->file->index].sn_turn < turn-1 ? grappled2(a, b) : 0)#define Xfouled2(a, b)	((a)->file->foul[(b)->file->index].sn_turn < turn-1 ? fouled2(a, b) : 0)#define Xsnagged2(a, b)	(Xgrappled2(a, b) + Xfouled2(a, b))#define cleangrapple(a, b, c)	Cleansnag(a, b, c, 1)#define cleanfoul(a, b, c)	Cleansnag(a, b, c, 2)#define cleansnag(a, b, c)	Cleansnag(a, b, c, 3)#define sterncolour(sp)	((sp)->file->stern+'0'-((sp)->file->captured?10:0))#define sternrow(sp)	((sp)->file->row + dr[(sp)->file->dir])#define sterncol(sp)	((sp)->file->col + dc[(sp)->file->dir])#define capship(sp)	((sp)->file->captured?(sp)->file->captured:(sp))#define readyname(r)	((r) & R_LOADING ? '*' : ((r) & R_INITIAL ? '!' : ' '))/* loadL and loadR, should match loadname[] */#define L_EMPTY		0		/* should be 0, don't change */#define L_GRAPE		1#define L_CHAIN		2#define L_ROUND		3#define L_DOUBLE	4#define L_EXPLODE	5/* * readyL and readyR, these are bits, except R_EMPTY */#define R_EMPTY		0		/* not loaded and not loading */#define R_LOADING	1		/* loading */#define R_DOUBLE	2		/* loading double */#define R_LOADED	4		/* loaded */#define R_INITIAL	8		/* loaded initial */#define HULL		0#define RIGGING		1#define W_CAPTAIN	1#define W_CAPTURED	2#define W_CLASS		3#define W_CREW		4#define W_DBP		5#define W_DRIFT		6#define W_EXPLODE	7#define W_FILE		8#define W_FOUL		9#define W_GUNL		10#define W_GUNR		11#define W_HULL		12#define W_MOVE		13#define W_OBP		14#define W_PCREW		15#define W_UNFOUL	16#define W_POINTS	17#define W_QUAL		18#define W_UNGRAP	19#define W_RIGG		20#define W_COL		21#define W_DIR		22#define W_ROW		23#define W_SIGNAL	24#define W_SINK		25#define W_STRUCK	26#define W_TA		27#define W_ALIVE		28#define W_TURN		29#define W_WIND		30#define W_FS		31#define W_GRAP		32#define W_RIG1		33#define W_RIG2		34#define W_RIG3		35#define W_RIG4		36#define W_BEGIN		37#define W_END		38#define W_DDEAD		39#define NLOG 10struct logs {	char l_name[20];	int l_uid;	int l_shipnum;	int l_gamenum;	int l_netpoints;};struct BP {	short turnsent;	struct ship *toship;	short mensent;};struct snag {	short sn_count;	short sn_turn;};#define NSCENE	nscene#define NSHIP	10#define NBP	3#define NNATION	8#define N_A	0#define N_B	1#define N_S	2#define N_F	3#define N_J	4#define N_D	5#define N_K	6#define N_O	7struct File {	int index;	char captain[20];		/* 0 */	short points;			/* 20 */	char loadL;			/* 22 */	char loadR;			/* 24 */	char readyL;			/* 26 */	char readyR;			/* 28 */	struct BP OBP[NBP];		/* 30 */	struct BP DBP[NBP];		/* 48 */	char struck;			/* 66 */	struct ship *captured;		/* 68 */	short pcrew;			/* 70 */	char movebuf[10];		/* 72 */	char drift;			/* 82 */	short nfoul;	short ngrap;	struct snag foul[NSHIP];	/* 84 */	struct snag grap[NSHIP];	/* 124 */	char RH;			/* 224 */	char RG;			/* 226 */	char RR;			/* 228 */	char FS;			/* 230 */	char explode;			/* 232 */	char sink;			/* 234 */	char dir;	short col;	short row;	char loadwith;	char stern;};struct ship {	char *shipname;			/* 0 */	struct shipspecs *specs;	/* 2 */	char nationality;		/* 4 */	short shiprow;			/* 6 */	short shipcol;			/* 8 */	char shipdir;			/* 10 */	struct File *file;		/* 12 */};struct scenario {	char winddir;			/* 0 */	char windspeed;			/* 2 */	char windchange;		/* 4 */	char vessels;			/* 12 */	char *name;			/* 14 */	struct ship ship[NSHIP];	/* 16 */};struct scenario scene[];int nscene;struct shipspecs {	char bs;	char fs;	char ta;	short guns;	char class;	char hull;	char qual;	char crew1;	char crew2;	char crew3;	char gunL;	char gunR;	char carL;	char carR;	char rig1;	char rig2;	char rig3;	char rig4;	short pts;};struct shipspecs specs[];struct scenario *cc;		/* the current scenario */struct ship *ls;		/* &cc->ship[cc->vessels] */#define SHIP(s)		(&cc->ship[s])#define foreachship(sp)	for ((sp) = cc->ship; (sp) < ls; (sp)++)struct windeffects {	char A, B, C, D;};struct windeffects WET[7][6];struct Tables {	char H, G, C, R;};struct Tables RigTable[11][6];struct Tables HullTable[11][6];char AMMO[9][4];char HDT[9][10];char HDTrake[9][10];char QUAL[9][5];char MT[9][3];char *countryname[];char *classname[];char *directionname[];char *qualname[];char loadname[];char rangeofshot[];char dr[], dc[];int winddir;int windspeed;int turn;int game;int alive;int people;char hasdriver;char *info();char *quality();double arctan();char *saywhat();struct ship *closestenemy();char *calloc();char *rindex();char *strcpy();char *strcat();char *strncpy();char *getenv();char *gets();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -