|
|
1.1 root 1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that the above copyright notice and this paragraph are
7: * duplicated in all such forms and that any documentation,
8: * advertising materials, and other materials related to such
9: * distribution and use acknowledge that the software was developed
10: * by the University of California, Berkeley. The name of the
11: * University may not be used to endorse or promote products derived
12: * from this software without specific prior written permission.
13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16: */
17:
18: #ifndef lint
19: static char sccsid[] = "@(#)visual.c 5.3 (Berkeley) 6/18/88";
20: #endif /* not lint */
21:
22: # include "trek.h"
23:
24: /*
25: ** VISUAL SCAN
26: **
27: ** A visual scan is made in a particular direction of three sectors
28: ** in the general direction specified. This takes time, and
29: ** Klingons can attack you, so it should be done only when sensors
30: ** are out.
31: */
32:
33: /* This struct[] has the delta x, delta y for particular directions */
34: struct xy Visdelta[11] =
35: {
36: -1, -1,
37: -1, 0,
38: -1, 1,
39: 0, 1,
40: 1, 1,
41: 1, 0,
42: 1, -1,
43: 0, -1,
44: -1, -1,
45: -1, 0,
46: -1, 1
47: };
48:
49: visual()
50: {
51: register int ix, iy;
52: int co;
53: register struct xy *v;
54:
55: co = getintpar("direction");
56: if (co < 0 || co > 360)
57: return;
58: co = (co + 22) / 45;
59: v = &Visdelta[co];
60: ix = Ship.sectx + v->x;
61: iy = Ship.secty + v->y;
62: if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
63: co = '?';
64: else
65: co = Sect[ix][iy];
66: printf("%d,%d %c ", ix, iy, co);
67: v++;
68: ix = Ship.sectx + v->x;
69: iy = Ship.secty + v->y;
70: if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
71: co = '?';
72: else
73: co = Sect[ix][iy];
74: printf("%c ", co);
75: v++;
76: ix = Ship.sectx + v->x;
77: iy = Ship.secty + v->y;
78: if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
79: co = '?';
80: else
81: co = Sect[ix][iy];
82: printf("%c %d,%d\n", co, ix, iy);
83: Move.time = 0.05;
84: Move.free = 0;
85: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.