|
|
BSD 4.3reno
/*
* Copyright (c) 1980 Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted provided
* that: (1) source distributions retain this entire copyright notice and
* comment, and (2) distributions including binaries display the following
* acknowledgement: ``This product includes software developed by the
* University of California, Berkeley and its contributors'' in the
* documentation or other materials provided with the distribution and in
* all advertising materials mentioning features or use of this software.
* 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
#ifndef lint
static char sccsid[] = "@(#)visual.c 5.4 (Berkeley) 6/1/90";
#endif /* not lint */
# include "trek.h"
/*
** VISUAL SCAN
**
** A visual scan is made in a particular direction of three sectors
** in the general direction specified. This takes time, and
** Klingons can attack you, so it should be done only when sensors
** are out.
*/
/* This struct[] has the delta x, delta y for particular directions */
struct xy Visdelta[11] =
{
-1, -1,
-1, 0,
-1, 1,
0, 1,
1, 1,
1, 0,
1, -1,
0, -1,
-1, -1,
-1, 0,
-1, 1
};
visual()
{
register int ix, iy;
int co;
register struct xy *v;
co = getintpar("direction");
if (co < 0 || co > 360)
return;
co = (co + 22) / 45;
v = &Visdelta[co];
ix = Ship.sectx + v->x;
iy = Ship.secty + v->y;
if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
co = '?';
else
co = Sect[ix][iy];
printf("%d,%d %c ", ix, iy, co);
v++;
ix = Ship.sectx + v->x;
iy = Ship.secty + v->y;
if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
co = '?';
else
co = Sect[ix][iy];
printf("%c ", co);
v++;
ix = Ship.sectx + v->x;
iy = Ship.secty + v->y;
if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
co = '?';
else
co = Sect[ix][iy];
printf("%c %d,%d\n", co, ix, iy);
Move.time = 0.05;
Move.free = 0;
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.