home *** CD-ROM | disk | FTP | other *** search
- PROCEDURE byebye;
-
- VAR
- direction,degrees,range,speed,counter,old_damage : integer;
- center_distance,heading,corner_number,x,y,old_range : integer;
-
- PROCEDURE corner(corner_number:integer);
- begin {move robots to 1 of the 4}
- CASE corner_number OF {corners on the screen}
- 0: begin
- drive(degrees,speed);
- end;
- 1: begin
- REPEAT;
- drive(180,100);
- UNTIL loc_x<150;
- REPEAT;
- drive(90,100);
- UNTIL loc_y>850;
- drive(0,0);
- end;
- 2: begin
- REPEAT;
- drive(0,100);
- UNTIL loc_x>850;
- REPEAT;
- drive(90,100);
- UNTIL loc_y>850;
- drive(0,0);
- end;
- 3: begin
- REPEAT;
- drive(180,100);
- UNTIL loc_x<150;
- REPEAT;
- drive(270,100);
- UNTIL loc_y<150;
- drive(0,0);
- end;
- 4: begin
- REPEAT;
- drive(0,100);
- UNTIL loc_x>850;
- REPEAT;
- drive(270,100);
- UNTIL loc_y<150;
- drive(0,0);
- end;
- end;
- end;
-
-
- PROCEDURE photons(VAR direction,range,counter:integer);
- begin
- degrees:=0;
- REPEAT {until 1 complete revolution}
- range:=scan(degrees,5);
- IF (range<>0) THEN {anything there}
- begin
- REPEAT
- cannon(degrees,range);
- range:=scan(degrees,5);
- UNTIL range=0;
- degrees:=degrees-40;
- end {shoot'em till he ain't there}
- ELSE degrees:=(degrees+10) MOD 360; {increment scan direction}
- UNTIL damage>old_damage;
- end;
-
- BEGIN {Main joe}
- speed := 0;
- degrees := 0;
- direction := 0;
- corner_number:=4;
- counter:=0;
- drive(degrees,speed);
- REPEAT
- corner_number:=(corner_number+1) MOD 4;
- old_damage:=damage;
- REPEAT;
- photons(direction,range,counter);
- UNTIL damage>old_damage;
- corner(corner_number);
- UNTIL DEAD or WINNER;
- END; {Main}
-