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

📄 hunt.h

📁 早期freebsd实现
💻 H
字号:
/* *  Hunt *  Copyright (c) 1985 Conrad C. Huang, Gregory S. Couch, Kenneth C.R.C. Arnold *  San Francisco, California */# include "bsd.h"# include	<stdio.h># include	<string.h># ifdef LOG# include	<syslog.h># endif# if !defined(TERMINFO) && BSD_RELEASE < 44# include	<sgtty.h># else# include	<sys/ioctl.h># endif# include	<sys/types.h># include	<sys/uio.h># include	<sys/socket.h># ifdef	INTERNET# include	<netinet/in.h># include	<netdb.h># include	<arpa/inet.h># ifdef BROADCAST# include	<net/if.h># endif# else# include	<sys/un.h># endif# ifdef	INTERNET# define	SOCK_FAMILY	AF_INET# else# define	SOCK_FAMILY	AF_UNIX# define	AF_UNIX_HACK		/* 4.2 hack; leaves files around */# endif/* * Preprocessor define dependencies */# if defined(VOLCANO) && !defined(OOZE)# define OOZE# endif# if defined(BOOTS) && !defined(FLY)# define FLY# endif# if !defined(REFLECT) && !defined(RANDOM)# define RANDOM# endif# ifdef TERMINFO/* mvcur() in terminfo needs the curses library to be initialized to not * coredump, so give up and use it. */# define USE_CURSES# endif/* decrement version number for each change in startup protocol */# define	HUNT_VERSION		-1# define	ADDCH		('a' | 0200)# define	MOVE		('m' | 0200)# define	REFRESH		('r' | 0200)# define	CLRTOEOL	('c' | 0200)# define	ENDWIN		('e' | 0200)# define	CLEAR		('C' | 0200)# define	REDRAW		('R' | 0200)# define	LAST_PLAYER	('l' | 0200)# define	BELL		('b' | 0200)# define	READY		('g' | 0200)/* * Choose MAXPL and MAXMON carefully.  The screen is assumed to be * 23 lines high and will only tolerate (MAXPL == 17 && MAXMON == 0) * or (MAXPL + MAXMON <= 16). */# ifdef MONITOR# define	MAXPL		15# define	MAXMON		1# else# define	MAXPL		17# endif# define	SHORTLEN	2		/* sizeof (network short) */# define	LONGLEN		4		/* sizeof (network long) */# define	NAMELEN		20# define	MSGLEN		SCREEN_WIDTH# define	DECAY		50.0# define	NASCII		128# define	WIDTH	51# define	WIDTH2	64	/* Next power of 2 >= WIDTH (for fast access) */# define	HEIGHT	23# define	UBOUND	1# define	DBOUND	(HEIGHT - 1)# define	LBOUND	1# define	RBOUND	(WIDTH - 1)# define	SCREEN_HEIGHT	24# define	SCREEN_WIDTH	80# define	SCREEN_WIDTH2	128	/* Next power of 2 >= SCREEN_WIDTH */# define	STAT_LABEL_COL	60# define	STAT_VALUE_COL	74# define	STAT_NAME_COL	61# define	STAT_SCAN_COL	(STAT_NAME_COL + 5)# define	STAT_AMMO_ROW	0# define	STAT_GUN_ROW	1# define	STAT_DAM_ROW	2# define	STAT_KILL_ROW	3# define	STAT_PLAY_ROW	5# ifdef MONITOR# define	STAT_MON_ROW	(STAT_PLAY_ROW + MAXPL + 1)# endif# define	STAT_NAME_LEN	18# define	DOOR	'#'# define	WALL1	'-'# define	WALL2	'|'# define	WALL3	'+'# ifdef REFLECT# define	WALL4	'/'# define	WALL5	'\\'# endif# define	KNIFE	'K'# define	SHOT	':'# define	GRENADE	'o'# define	SATCHEL	'O'# define	BOMB	'@'# define	MINE	';'# define	GMINE	'g'# ifdef	OOZE# define	SLIME	'$'# endif# ifdef	VOLCANO# define	LAVA	'~'# endif# ifdef DRONE# define	DSHOT	'?'# endif# ifdef FLY# define	FALL	'F'# endif# ifdef BOOTS# define	NBOOTS		2# define	BOOT		'b'# define	BOOT_PAIR	'B'# endif# define	SPACE	' '# define	ABOVE	'i'# define	BELOW	'!'# define	RIGHT	'}'# define	LEFTS	'{'# ifdef FLY# define	FLYER	'&'# define	isplayer(c)	(c == LEFTS || c == RIGHT ||\				c == ABOVE || c == BELOW || c == FLYER)# else# define	isplayer(c)	(c == LEFTS || c == RIGHT ||\				c == ABOVE || c == BELOW)# endif# define	NORTH	01# define	SOUTH	02# define	EAST	010# define	WEST	020# ifndef TRUE# define	TRUE	1# define	FALSE	0# endif# undef CTRL# define	CTRL(x)	((x) & 037)# define	BULSPD		5		/* bullets movement speed */# define	ISHOTS		15# define	NSHOTS		5# define	MAXNCSHOT	2# define	MAXDAM		10# define	MINDAM		5# define	STABDAM		2# define	BULREQ		1# define	GRENREQ		9# define	SATREQ		25# define	BOMB7REQ	49# define	BOMB9REQ	81# define	BOMB11REQ	121# define	BOMB13REQ	169# define	BOMB15REQ	225# define	BOMB17REQ	289# define	BOMB19REQ	361# define	BOMB21REQ	441# define	MAXBOMB		11# ifdef DRONE# define	MINDSHOT	2	/* At least a satchel bomb */# endifextern int	shot_req[];extern int	shot_type[];# ifdef	OOZE# define	SLIME_FACTOR	3# define	SLIMEREQ	5# define	SSLIMEREQ	10# define	SLIME2REQ	15# define	SLIME3REQ	20# define	MAXSLIME	4# define	SLIMESPEED	5extern int	slime_req[];# endif# ifdef	VOLCANO# define	LAVASPEED	1# endif# define	CLOAKLEN	20# define	SCANLEN		(Nplayer * 20)# define	EXPLEN		4# define	Q_QUIT		0# define	Q_CLOAK		1# define	Q_FLY		2# define	Q_SCAN		3# define	Q_MESSAGE	4# define	C_PLAYER	0# define	C_MONITOR	1# define	C_MESSAGE	2# define	C_SCORES	3# ifdef MONITOR# define	C_TESTMSG()	(Query_driver ? C_MESSAGE :\				(Show_scores ? C_SCORES :\				(Am_monitor ? C_MONITOR :\				C_PLAYER)))# else# define	C_TESTMSG()	(Show_scores ? C_SCORES :\				(Query_driver ? C_MESSAGE :\				C_PLAYER))# endif# ifdef FLY# define	_scan_char(pp)	(((pp)->p_scan < 0) ? ' ' : '*')# define	_cloak_char(pp)	(((pp)->p_cloak < 0) ? _scan_char(pp) : '+')# define	stat_char(pp)	(((pp)->p_flying < 0) ? _cloak_char(pp) : FLYER)# else# define	_scan_char(pp)	(((pp)->p_scan < 0) ? ' ' : '*')# define	stat_char(pp)	(((pp)->p_cloak < 0) ? _scan_char(pp) : '+')# endiftypedef int			FLAG;typedef struct bullet_def	BULLET;typedef struct expl_def		EXPL;typedef struct player_def	PLAYER;typedef struct ident_def	IDENT;typedef struct regen_def	REGEN;# ifdef	INTERNETtypedef struct sockaddr_in	SOCKET;# elsetypedef struct sockaddr_un	SOCKET;# endiftypedef struct sgttyb		TTYB;struct ident_def {	char	i_name[NAMELEN];	char	i_team;	long	i_machine;	long	i_uid;	float	i_kills;	int	i_entries;	float	i_score;	int	i_absorbed;	int	i_faced;	int	i_shot;	int	i_robbed;	int	i_slime;	int	i_missed;	int	i_ducked;	int	i_gkills, i_bkills, i_deaths, i_stillb, i_saved;	IDENT	*i_next;};struct player_def {	IDENT	*p_ident;	char	p_over;	int	p_face;	int	p_undershot;# ifdef	FLY	int	p_flying;	int	p_flyx, p_flyy;# endif# ifdef	BOOTS	int	p_nboots;# endif	FILE	*p_output;	int	p_fd;	int	p_mask;	int	p_damage;	int	p_damcap;	int	p_ammo;	int	p_ncshot;	int	p_scan;	int	p_cloak;	int	p_x, p_y;	int	p_ncount;	int	p_nexec;	long	p_nchar;	char	p_death[MSGLEN];	char	p_maze[HEIGHT][WIDTH2];	int	p_curx, p_cury;	int	p_lastx, p_lasty;	char	p_cbuf[BUFSIZ];};struct bullet_def {	int	b_x, b_y;	int	b_face;	int	b_charge;	char	b_type;	char	b_size;	char	b_over;	PLAYER	*b_owner;	IDENT	*b_score;	FLAG	b_expl;	BULLET	*b_next;};struct expl_def {	int	e_x, e_y;	char	e_char;	EXPL	*e_next;};struct regen_def {	int	r_x, r_y;	REGEN	*r_next;};/* * external variables */extern FLAG	Last_player;extern char	Buf[BUFSIZ], Maze[HEIGHT][WIDTH2], Orig_maze[HEIGHT][WIDTH2];extern char	*Sock_name, *Driver;extern int	errno, Have_inp, Nplayer, Num_fds, Socket, Status;extern long	Fds_mask, Sock_mask, Stat_mask;# ifdef INTERNETextern u_short	Test_port;# elseextern char	*Sock_name;# endif# ifdef VOLCANOextern int	volcano;# endifextern int	See_over[NASCII];extern BULLET	*Bullets;extern EXPL	*Expl[EXPLEN];extern EXPL	*Last_expl;extern IDENT	*Scores;extern PLAYER	Player[MAXPL], *End_player;# ifdef BOOTSextern PLAYER	Boot[NBOOTS];# endif# ifdef MONITORextern FLAG	Am_monitor;extern PLAYER	Monitor[MAXMON], *End_monitor;# endif# ifdef INTERNETextern char	*Send_message;# endifextern char	map_key[256];extern FLAG	no_beep;/* * function types */extern char	*getenv();extern void	*malloc(), *realloc();extern IDENT	*get_ident();extern int	moveshots();extern BULLET	*is_bullet(), *create_shot();extern PLAYER	*play_at();

⌨️ 快捷键说明

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