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

  1. procedure DeadEndAnalysis;
  2.  
  3. var 
  4.   len, maxlen : integer;
  5.   distrib     : array [1..8] of integer;
  6.   s           : sector;
  7.  
  8. procedure CheckBackDoor( base : sector );
  9. { verify no back doors into path }
  10. var
  11.   previous, current, NextUp : sector;
  12. begin
  13.   write('Tunnel starting at ', base, ' : ');
  14.   previous := base;
  15.   write( base );
  16.   if AppearanceCount( base ) = space.sectors[base].number then
  17.     write(' ok ')
  18.   else
  19.     write(' back door ');
  20.   current := space.sectors[base].data[1];
  21.   while (space.sectors[current].number = 2) do
  22.     begin
  23.       write( current );
  24.       if AppearanceCount( current ) = space.sectors[current].number then
  25.         write(' ok ')
  26.       else
  27.         write(' back door ');
  28.       NextUp := space.sectors[current].data[1];
  29.       if NextUp = previous then
  30.         NextUp := space.sectors[current].data[2];
  31.       previous := current;
  32.       current := nextUp;
  33.     end; {while}
  34.   writeln;
  35. end; {Check Back Door}
  36.  
  37. begin
  38.   for len := 1 to 8 do
  39.     distrib[ len ] := 0;
  40.   maxlen := 0;
  41.   for s := 1 to MaxSector do
  42.     if space.sectors[s].number = 1 then
  43.       begin
  44.         len := howfar( s );
  45.         if len > maxlen then
  46.           maxlen := len;
  47.         distrib[ len ] := distrib[ len ] + 1;
  48.       end; {for if}
  49.   writeln('Distributions of tunnel lengths:');
  50.   for len := 1 to 8 do
  51.     write( len : 2, ': ', distrib[len] : 3, '.  ');
  52.   writeln;
  53.   writeln;
  54.   writeln('Maximum length of any tunnel is ', maxlen);
  55.   writeln;
  56.   writeln;
  57.   repeat
  58.     write('Which lengths do you want to check for 1-way entrances? (0 to exit) ');
  59.     readln( len );
  60.     if len > 0 then
  61.       for s := 1 to MaxSector do
  62.         if space.sectors[s].number = 1 then
  63.           if howfar(s) = len then
  64.             checkBackDoor( s );
  65.   until len = 0;
  66. end; {dead end stuff}