home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / PASCAL / P_ROBO31.ZIP / CHASER.PR < prev    next >
Text File  |  1993-02-15  |  2KB  |  81 lines

  1. (**************************************************************************)
  2. (*                             W A R N I N G                              *)
  3. (*                                                                        *)
  4. (*  This Robot has NOT been designed to take advantage of the advanced    *)
  5. (*  features of P-ROBOTS, such as, Shields, Fuel, Teams or Obstructions.  *)
  6. (**************************************************************************)
  7.  
  8.   PROCEDURE CHASER;
  9.  
  10. {
  11.  
  12. Based on a C-Robot by Kazuhiro Yabe
  13.  
  14. }
  15.  
  16.   VAR
  17.     save_dmg       : Integer;
  18.     cur_dmg        : Integer;
  19.     speed          : Integer;
  20.     dir            : Integer;
  21.     Range          : Integer;
  22.     degree         : Integer;
  23.  
  24.     PROCEDURE chkdmg;
  25.     BEGIN
  26.       cur_dmg := damage;
  27.       IF (cur_dmg <> save_dmg) THEN
  28.         BEGIN
  29.           save_dmg := cur_dmg;
  30.           speed := 50; {maximum speed that robot can still turn}
  31.           dir := Random(359);
  32.         END;
  33.     END; {chkdmg}
  34.  
  35.     PROCEDURE walking;
  36.     BEGIN 
  37.       speed := 50; {maximum speed that robot can still turn}
  38.       IF (loc_x < 200) THEN dir := 0
  39.       ELSE IF (loc_x > 800) THEN dir := 180
  40.       ELSE IF (loc_y < 200) THEN dir := 90
  41.       ELSE IF (loc_y > 800) THEN dir := 270;
  42.       drive(dir, speed);
  43.     END; {walking}
  44.  
  45.     PROCEDURE shoot;
  46.     VAR return     : Boolean;
  47.     BEGIN 
  48.       return := False;
  49.       REPEAT
  50.         REPEAT
  51.           Range := scan(degree, 10);
  52.           IF (Range > 0) THEN
  53.             IF ObjectScanned = Enemy
  54.               THEN BEGIN
  55.                 cannon(degree, Range); {while he's there, shoot at him. }
  56.                 drive(degree, 100); {charge foe at top speed!}
  57.                 return := True;
  58.               END;
  59.         UNTIL Range = 0;
  60.         IF (degree >= 360)
  61.         THEN degree := 0
  62.         ELSE degree := degree+20;
  63.         walking;
  64.       UNTIL return;
  65.     END; {shoot}
  66.  
  67.   BEGIN {Chaser Main}
  68.     speed := 50; {maximum speed that robot can still turn}
  69.     dir := 0;
  70.     degree := 0;
  71.     save_dmg := damage;
  72.  
  73.     REPEAT { Until Dead or Winner }
  74.       shoot;
  75.       chkdmg;
  76.       walking; { move at max speed that can still turn }
  77.     UNTIL Dead OR Winner;
  78.  
  79.   END; { end of Chaser main }
  80.  
  81.