Skip to content

Commit 96106dd

Browse files
authored
Merge pull request #23 from misterunix/adding-robots
Adding robots
2 parents cc14273 + 2a644a5 commit 96106dd

File tree

4 files changed

+148
-3
lines changed

4 files changed

+148
-3
lines changed

basicbots

3.28 MB
Binary file not shown.

robots/blaster.bas

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
1 REM pick a spot, run to it, shoot while moving, lead shots
2+
2 LET DX = 0
3+
3 LET DY = 0
4+
4 LET DMG = 0
5+
5 LET ODMG = 0
6+
6 LET LX = 0
7+
7 LET LY = 0
8+
8 LET DTT = 0
9+
9 LET ATT = 0
10+
10 LET RSA = 0
11+
11 let RSW = 5
12+
13+
14+
100 REM main loop
15+
110 DMG = DAMAGE
16+
120 GOSUB 2000 : REM pick spot
17+
130 GOSUB 2600 : REM get angle
18+
140 DRIVE ATT, 100
19+
150 GOSUB 2500 : REM get distance
20+
160 IF DTT < 50 THEN GOTO 200
21+
160 IF DMG <> ODMG THEN GOTO 250
22+
170 GOSUB 2700
23+
180 GOTO 150
24+
25+
200 DRIVE ATT,0
26+
210 GOTO 120
27+
28+
249 REM damage!
29+
250 LET ODMG = DMG
30+
260 GOSUB 2000 : REM pick spot
31+
270 GOSUB 2600 : REM get angle
32+
275 DRIVE ATT, 100
33+
280 GOSUB 2500 : REM get distance
34+
290 IF DTT < 100 THEN G0T0 350
35+
300 GOSUB 2700
36+
310 RETURN
37+
350 DRIVE ATT,0
38+
360 RETURN
39+
40+
2000 REM pick random DX,DY
41+
2010 LET DX = (RND 700) + 100
42+
2020 LET DY = (RND 700) + 100
43+
2030 RETURN
44+
45+
2500 REM get distance to target
46+
2510 LET LX = LOCX
47+
2515 LET LY = LOCY
48+
2520 LET TX = DX - LOCX
49+
2521 LET TY = DY - LY
50+
2530 LET DTT = SQR (TX*TX) + (TY*TY)
51+
2540 RETURN
52+
53+
2600 REM angle to target
54+
2610 LET LX = LOCX
55+
2620 LET LY = LOCY
56+
2630 LET ATT = ATN2 DY-LY, DX - LX
57+
2640 RETURN
58+
59+
2700 REM scan and shoot
60+
2710 LET SDTT = SCAN RSA,RSW
61+
2720 IF SDTT > 0 AND SDTT < 700 THEN GOTO 2800
62+
2730 LET RSA = RSA + RSW
63+
2740 RETURN
64+
65+
2800 LET DTTN = SCAN RSA,RSW
66+
2810 LET DIF = DTTN + (DTTN - SDTT)
67+
2820 CANNON RSA, DIF
68+
2830 RETURN

robots/rook.bas

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@
66
7 LET DY = 0
77
8 LET D = 0
88
9 LET DA = 0
9+
10 LET RSA = 0 : REM Rolling scan angle
10+
11 LET RWD = 3 : REM Rolling scan width
911

1012
200 T = RND 2
1113
205 IF T = 0 THEN GOSUB 220
1214
206 IF T = 1 THEN GOSUB 320
1315
210 GOSUB 9000
1416
250 GOTO 200
1517

16-
18+
219 REM move in the X plane
1719
220 LET DX = (RND 800) + 100
1820
221 LET LX = LOCX
1921
222 LET LY = LOCY
@@ -22,10 +24,12 @@
2224
226 DRIVE DA,100
2325
230 GOSUB 8000
2426
235 IF D < 20 THEN GOTO 250
27+
237 GOSUB 7000 : REM rolling scan and shoot
2528
240 GOTO 221
2629
250 DRIVE DA, 0
2730
260 RETURN
2831

32+
319 REM move in the Y plane
2933
320 LET DY = (RND 800) + 100
3034
321 LET LX = LOCX
3135
322 LET LY = LOCY
@@ -34,22 +38,31 @@
3438
326 DRIVE DA,100
3539
330 GOSUB 8000
3640
335 IF D < 20 THEN GOTO 350
41+
337 GOSUB 7000 : REM rolling scan and shoot
3742
340 GOTO 322
3843
350 DRIVE DA, 0
3944
360 RETURN
4045

4146

47+
7000 REM scan and shoot while moving to target
48+
7010 LET RR = SCAN RSA, RWD
49+
7020 if RR > 0 AND RR < 700 THEN GOTO 7100
50+
7030 LET RSA = RSA + RWD
51+
7035 IF RSA > 360 THEN LET RSA = RDA - 360
52+
7040 RETURN
53+
7100 CANNON RSA, RR
54+
7110 RETURN
4255

4356

4457

45-
8000 REM
58+
8000 REM calculate distance to target
4659
8010 LET TX = DX - LX
4760
8015 LET TY = DY - LY
4861
8020 LET D = SQR (TX*TX)+(TY*TY)
4962
8025 RETURN
5063

5164

52-
9000 REM
65+
9000 REM scan and shoot
5366
9010 LET SD = 0
5467
9011 LET SW = 5
5568
9020 LET R = SCAN SD,SW

testbots/rook-v1.bas

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
1 REM rook.bas
2+
2 REM only move in the X or Y at a time.
3+
4+
5 LET T = 0
5+
6 LET DX = 0
6+
7 LET DY = 0
7+
8 LET D = 0
8+
9 LET DA = 0
9+
10+
200 T = RND 2
11+
205 IF T = 0 THEN GOSUB 220
12+
206 IF T = 1 THEN GOSUB 320
13+
210 GOSUB 9000
14+
250 GOTO 200
15+
16+
17+
220 LET DX = (RND 800) + 100
18+
221 LET LX = LOCX
19+
222 LET LY = LOCY
20+
223 LET DY = LY
21+
225 IF LX > DX THEN LET DA = 180 ELSE LET DA = 0
22+
226 DRIVE DA,100
23+
230 GOSUB 8000
24+
235 IF D < 20 THEN GOTO 250
25+
240 GOTO 221
26+
250 DRIVE DA, 0
27+
260 RETURN
28+
29+
320 LET DY = (RND 800) + 100
30+
321 LET LX = LOCX
31+
322 LET LY = LOCY
32+
323 LET DX = LX
33+
325 IF LY > DY THEN LET DA = 270 ELSE LET DA = 90
34+
326 DRIVE DA,100
35+
330 GOSUB 8000
36+
335 IF D < 20 THEN GOTO 350
37+
340 GOTO 322
38+
350 DRIVE DA, 0
39+
360 RETURN
40+
41+
42+
43+
44+
45+
8000 REM
46+
8010 LET TX = DX - LX
47+
8015 LET TY = DY - LY
48+
8020 LET D = SQR (TX*TX)+(TY*TY)
49+
8025 RETURN
50+
51+
52+
9000 REM
53+
9010 LET SD = 0
54+
9011 LET SW = 5
55+
9020 LET R = SCAN SD,SW
56+
9030 IF R = 0 THEN GOTO 9060
57+
9040 IF R > 700 THEN GOTO 9060
58+
9050 CANNON SD,R
59+
9051 LET SW = SW - 1
60+
9052 IF SW = 1 THEN LET SW = 5
61+
9055 GOTO 9020
62+
9060 LET SD = SD + 5
63+
9065 IF SD > 360 THEN RETURN
64+
9070 GOTO 9020

0 commit comments

Comments
 (0)