home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / games / trek / visual.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-04-08  |  3.0 KB  |  102 lines

  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, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  */
  33.  
  34. #ifndef lint
  35. static char sccsid[] = "@(#)visual.c    5.4 (Berkeley) 6/1/90";
  36. #endif /* not lint */
  37.  
  38. # include    "trek.h"
  39.  
  40. /*
  41. **  VISUAL SCAN
  42. **
  43. **    A visual scan is made in a particular direction of three sectors
  44. **    in the general direction specified.  This takes time, and
  45. **    Klingons can attack you, so it should be done only when sensors
  46. **    are out.
  47. */
  48.  
  49. /* This struct[] has the delta x, delta y for particular directions */
  50. struct xy    Visdelta[11] =
  51. {
  52.     -1,    -1,
  53.     -1,     0,
  54.     -1,     1,
  55.      0,     1,
  56.      1,     1,
  57.      1,     0,
  58.      1,    -1,
  59.      0,    -1,
  60.     -1,    -1,
  61.     -1,     0,
  62.     -1,     1
  63. };
  64.  
  65. visual()
  66. {
  67.     register int        ix, iy;
  68.     int            co;
  69.     register struct xy    *v;
  70.  
  71.     co = getintpar("direction");
  72.     if (co < 0 || co > 360)
  73.         return;
  74.     co = (co + 22) / 45;
  75.     v = &Visdelta[co];
  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("%d,%d %c ", ix, iy, co);
  83.     v++;
  84.     ix = Ship.sectx + v->x;
  85.     iy = Ship.secty + v->y;
  86.     if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
  87.         co = '?';
  88.     else
  89.         co = Sect[ix][iy];
  90.     printf("%c ", co);
  91.     v++;
  92.     ix = Ship.sectx + v->x;
  93.     iy = Ship.secty + v->y;
  94.     if (ix < 0 || ix >= NSECTS || iy < 0 || iy >= NSECTS)
  95.         co = '?';
  96.     else
  97.         co = Sect[ix][iy];
  98.     printf("%c %d,%d\n", co, ix, iy);
  99.     Move.time = 0.05;
  100.     Move.free = 0;
  101. }
  102.