home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / program / language / grs / g / m1 < prev    next >
Encoding:
Text File  |  1991-04-07  |  3.0 KB  |  117 lines

  1. instanceof class tank;
  2.  
  3.  
  4.    let (null) expression default :=
  5.       {
  6.          assume integer x,y in
  7.          {  
  8.          x := x + rnd(3) - 2;
  9.          y := y + rnd(3) - 2;
  10.          if x<0 then x:=0; endif;
  11.          if x>25 then x:=25; endif;
  12.          if y<0 then y:=0; endif;
  13.          if y>19 then y:=19; endif;
  14.          };
  15.       };
  16.  
  17.    let (null) expression retreat :=
  18.       {
  19.          assume string side; integer x in
  20.          {
  21.          if side="German" and x>0 then
  22.             x := x-1;
  23.          else
  24.             if side="American" and x<25 then
  25.                x := x+1;
  26.             endif;
  27.          endif;
  28.          };
  29.       };
  30.  
  31.    let (null) expression advance :=
  32.       {
  33.          assume string side; integer x in
  34.          {
  35.          if side="American" and x>0 then
  36.             x := x-1;
  37.          else
  38.             if side="German" and x<25 then
  39.                x := x+1;
  40.             endif;
  41.          endif;
  42.          };
  43.       };
  44.  
  45.    let (null) expression panic :=
  46.       {
  47.          assume integer x,y in
  48.          {
  49.          };
  50.       };
  51.  
  52. assume string side; integer x,y,skill; (null) expression tactic in
  53. {
  54.    tank := class.new(
  55.               "tank",
  56.               [
  57.                  {
  58.                     null function set( string pside; integer px; integer py;
  59.                                        integer pskill )
  60.                     {
  61.                        side := pside;
  62.                        x := px;
  63.                        y := py;
  64.                        skill := pskill;
  65.                        tactic := default;
  66.                        summon(default);
  67.                        summon(advance);
  68.                        summon(retreat);
  69.                        summon(panic);
  70.                     };
  71.                  },
  72.                  {
  73.                     null function set_tactic( (null) expression ptactic )
  74.                     {
  75.                        tactic := ptactic;
  76.                     };
  77.                  },
  78.                  {
  79.                     integer function get_pos( string myside )
  80.                     {
  81.                        if myside = side then
  82.                           return(-1);
  83.                        else
  84.                           return(x+y*256);
  85.                        endif;
  86.                     };
  87.                  },
  88.                  {
  89.                     null function blowup()
  90.                        {
  91.                           beep();
  92.                           foreach s in ["X","x","X","x","X","x"] do
  93.                           {
  94.                              tab(x,y);
  95.                              write(s);
  96.                           };
  97.                        };
  98.                  },
  99.                  {
  100.                     null function display()
  101.                     {
  102.                        tab(x,y);
  103.                        write(mid(side,1,1));
  104.                        (*write("\nX : ",x," Y : ",y,"\n");*)
  105.                     };
  106.                  }
  107.               ],
  108.               [
  109.                  {
  110.                     string side;
  111.                     integer x,y,skill;
  112.                     (null) expression tactic;
  113.                  }
  114.               ]
  115.               );
  116. };
  117.