home *** CD-ROM | disk | FTP | other *** search
- instanceof class tank;
-
-
- let (null) expression default :=
- {
- assume integer x,y in
- {
- x := x + rnd(3) - 2;
- y := y + rnd(3) - 2;
- if x<0 then x:=0; endif;
- if x>25 then x:=25; endif;
- if y<0 then y:=0; endif;
- if y>19 then y:=19; endif;
- };
- };
-
- let (null) expression retreat :=
- {
- assume string side; integer x in
- {
- if side="German" and x>0 then
- x := x-1;
- else
- if side="American" and x<25 then
- x := x+1;
- endif;
- endif;
- };
- };
-
- let (null) expression advance :=
- {
- assume string side; integer x in
- {
- if side="American" and x>0 then
- x := x-1;
- else
- if side="German" and x<25 then
- x := x+1;
- endif;
- endif;
- };
- };
-
- let (null) expression panic :=
- {
- assume integer x,y in
- {
- };
- };
-
- assume string side; integer x,y,skill; (null) expression tactic in
- {
- tank := class.new(
- "tank",
- [
- {
- null function set( string pside; integer px; integer py;
- integer pskill )
- {
- side := pside;
- x := px;
- y := py;
- skill := pskill;
- tactic := default;
- summon(default);
- summon(advance);
- summon(retreat);
- summon(panic);
- };
- },
- {
- null function set_tactic( (null) expression ptactic )
- {
- tactic := ptactic;
- };
- },
- {
- integer function get_pos( string myside )
- {
- if myside = side then
- return(-1);
- else
- return(x+y*256);
- endif;
- };
- },
- {
- null function blowup()
- {
- beep();
- foreach s in ["X","x","X","x","X","x"] do
- {
- tab(x,y);
- write(s);
- };
- };
- },
- {
- null function display()
- {
- tab(x,y);
- write(mid(side,1,1));
- (*write("\nX : ",x," Y : ",y,"\n");*)
- };
- }
- ],
- [
- {
- string side;
- integer x,y,skill;
- (null) expression tactic;
- }
- ]
- );
- };
-