xref: /csrg-svn/games/trek/visual.c (revision 11703)
1*11703Smckusick #ifndef lint
2*11703Smckusick static char sccsid[] = "@(#)visual.c	4.1	(Berkeley)	03/23/83";
3*11703Smckusick #endif not lint
4*11703Smckusick 
5*11703Smckusick # include	"trek.h"
6*11703Smckusick 
7*11703Smckusick /*
8*11703Smckusick **  VISUAL SCAN
9*11703Smckusick **
10*11703Smckusick **	A visual scan is made in a particular direction of three sectors
11*11703Smckusick **	in the general direction specified.  This takes time, and
12*11703Smckusick **	Klingons can attack you, so it should be done only when sensors
13*11703Smckusick **	are out.
14*11703Smckusick */
15*11703Smckusick 
16*11703Smckusick /* This struct[] has the delta x, delta y for particular directions */
17*11703Smckusick struct xy	Visdelta[11]
18*11703Smckusick {
19*11703Smckusick 	-1,	-1,
20*11703Smckusick 	-1,	 0,
21*11703Smckusick 	-1,	 1,
22*11703Smckusick 	 0,	 1,
23*11703Smckusick 	 1,	 1,
24*11703Smckusick 	 1,	 0,
25*11703Smckusick 	 1,	-1,
26*11703Smckusick 	 0,	-1,
27*11703Smckusick 	-1,	-1,
28*11703Smckusick 	-1,	 0,
29*11703Smckusick 	-1,	 1
30*11703Smckusick };
31*11703Smckusick 
32*11703Smckusick visual()
33*11703Smckusick {
34*11703Smckusick 	register int		ix, iy;
35*11703Smckusick 	int			co;
36*11703Smckusick 	register struct xy	*v;
37*11703Smckusick 
38*11703Smckusick 	co = getintpar("direction");
39*11703Smckusick 	if (co < 0 || co > 360)
40*11703Smckusick 		return;
41*11703Smckusick 	co = (co + 22) / 45;
42*11703Smckusick 	v = &Visdelta[co];
43*11703Smckusick 	ix = Ship.sectx + v->x;
44*11703Smckusick 	iy = Ship.secty + v->y;
45*11703Smckusick 	if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
46*11703Smckusick 		co = '?';
47*11703Smckusick 	else
48*11703Smckusick 		co = Sect[ix][iy];
49*11703Smckusick 	printf("%d,%d %c ", ix, iy, co);
50*11703Smckusick 	v++;
51*11703Smckusick 	ix = Ship.sectx + v->x;
52*11703Smckusick 	iy = Ship.secty + v->y;
53*11703Smckusick 	if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
54*11703Smckusick 		co = '?';
55*11703Smckusick 	else
56*11703Smckusick 		co = Sect[ix][iy];
57*11703Smckusick 	printf("%c ", co);
58*11703Smckusick 	v++;
59*11703Smckusick 	ix = Ship.sectx + v->x;
60*11703Smckusick 	iy = Ship.secty + v->y;
61*11703Smckusick 	if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
62*11703Smckusick 		co = '?';
63*11703Smckusick 	else
64*11703Smckusick 		co = Sect[ix][iy];
65*11703Smckusick 	printf("%c %d,%d\n", co, ix, iy);
66*11703Smckusick 	Move.time = 0.05;
67*11703Smckusick 	Move.free = 0;
68*11703Smckusick }
69