# 2.11BSD#431 - /usr/src/games/trek/compkl.c

##### Functions

    compkldist        X
    sortkl            X

       1: /*
       2:  * Copyright (c) 1980 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  */
       6:
       7: #ifndef lint
       8: static char sccsid[] = "@(#)compkl.c	5.1 (Berkeley) 5/30/85";
       9: #endif not lint
      10:
      11: # include   "trek.h"
      12:
      13: /*
      14: **  compute klingon distances
      15: **
      16: **	The klingon list has the distances for all klingons recomputed
      17: **	and sorted.  The parameter is a Boolean flag which is set if
      18: **	we have just entered a new quadrant.
      19: **
      20: **	This routine is used every time the Enterprise or the Klingons
      21: **	move.
      22: */
      23:
      24: compkldist(f)
      25: int f;      /* set if new quadrant */
      26: {
      27:     register int        i, dx, dy;
      28:     double          d;
      29:     double          temp;
      30:
      31:     if (Etc.nkling == 0)
      32:         return;
      33:     for (i = 0; i < Etc.nkling; i++)
      34:     {
      35:         /* compute distance to the Klingon */
      36:         dx = Ship.sectx - Etc.klingon[i].x;
      37:         dy = Ship.secty - Etc.klingon[i].y;
      38:         d = dx * dx + dy * dy;
      39:         d = sqrt(d);
      40:
      41:         /* compute average of new and old distances to Klingon */
      42:         if (!f)
      43:         {
      44:             temp = Etc.klingon[i].dist;
      45:             Etc.klingon[i].avgdist = 0.5 * (temp + d);
      46:         }
      47:         else
      48:         {
      49:             /* new quadrant: average is current */
      50:             Etc.klingon[i].avgdist = d;
      51:         }
      52:         Etc.klingon[i].dist = d;
      53:     }
      54:
      55:     /* leave them sorted */
      56:     sortkl();
      57: }
      58:
      59:
      60: /*
      61: **  sort klingons
      62: **
      63: **	bubble sort on ascending distance
      64: */
      65:
      66: sortkl()
      67: {
      68:     struct kling        t;
      69:     register int        f, i, m;
      70:
      71:     m = Etc.nkling - 1;
      72:     f = 1;
      73:     while (f)
      74:     {
      75:         f = 0;
      76:         for (i = 0; i < m; i++)
      77:             if (Etc.klingon[i].dist > Etc.klingon[i+1].dist)
      78:             {
      79:                 bmove(&Etc.klingon[i], &t, sizeof t);
      80:                 bmove(&Etc.klingon[i+1], &Etc.klingon[i], sizeof t);
      81:                 bmove(&t, &Etc.klingon[i+1], sizeof t);
      82:                 f = 1;
      83:             }
      84:     }
      85: }

#### Defined functions

compkldist defined in line 24; used 7 times

- in /usr/src/games/trek/abandon.c line 125
- in /usr/src/games/trek/events.c line 350
- in /usr/src/games/trek/help.c line 120
- in /usr/src/games/trek/initquad.c line 76
- in /usr/src/games/trek/klmove.c line 154
- in /usr/src/games/trek/move.c line 145, 201

sortkl defined in line 66; used 1 times

- in line 56

#### Defined variables

sccsid defined in line 8; never used

Last modified: 1985-05-30 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 459 |