home *** CD-ROM | disk | FTP | other *** search
/ Game Killer / Game_Killer.bin / 279.PATHSTUF.INC < prev    next >
Text File  |  1991-07-08  |  2KB  |  66 lines

  1. procedure PrintPath( var home : sector; sec : sector );
  2. var
  3.   dummy : text;
  4. begin
  5.   if home <> sec then
  6.     PrintPath( home, distances[ sec ].s );
  7.   displaySector( sec, 'Dist', error, false, dummy )
  8. end;
  9.  
  10. procedure PathLength;
  11. var
  12.   s1, s2 : sector;
  13. begin
  14.   write('Distance between which two sectors? ');
  15.   readln( s1, s2 );
  16.   if space.sectors[ s1 ].number <> Unexplored then
  17.     begin
  18.       if FixPath( s1, s2) = Error then
  19.         writeln('You don''t know how to get to ', s2, ' from ', s1, '!' )
  20.       else
  21.         begin
  22.           writeln('Known shortest path from ', s1, ' to ', s2, ' is ');
  23.           PrintPath( s1, s2 );
  24.           writeln;
  25.         end; {if finite distance}
  26.     end {visited}
  27.   else
  28.     writeln('Never visited ', s1, ' so can''t tell distances leaving it.');
  29.   if space.sectors[ s1 ].number <> UnExplored then
  30.     begin
  31.       if FixPath( s2, s1 ) = Error then
  32.         writeln('You don''t know how to get to ', s1, ' from ', s2, '!' )
  33.       else
  34.         begin
  35.           writeln('Known shortest path from ', s2, ' to ', s1, ' is ');
  36.           PrintPath( s2, s1 );
  37.           writeln;
  38.         end; {if finite distance}
  39.     end
  40.   else
  41.     writeln('Never visited ', s2, ' so can''t tell distances leaving it.');
  42. end;
  43.  
  44. procedure NearestFighters;
  45. var
  46.   s, s1, Closest : sector;
  47. begin
  48.   write('What is your current sector?  ');
  49.   readln( s );
  50.   TwoWayDistances( s, distances, false, true );
  51.   Closest := 1;
  52.   for s1 := 1 to maxSector do
  53.     if space.sectors[ s1 ].portType = Class0 then
  54.       if distances[ s1 ].d = maxint then
  55.         writeln('You don''t know how to get to ', s1 )
  56.       else
  57.         begin
  58.           writeln('Path to ', s1, ' is of length ', distances[ s1 ].d );
  59.           PrintPath( s, s1 );
  60.           writeln;
  61.           if distances[ s1 ].d < distances[ Closest ].d then
  62.             Closest := s1;
  63.         end; {for if else}
  64. end; {Nearest Fighters}
  65.  
  66.