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