10 DEG:MODE 1:INK 0,0:INK 1,15:INK 2,18:INK 3,24
20 SYMBOL AFTER 232:SYMBOL 232,0,0,255,1,7,31,127,0:SYMBOL 233,127,199,146,199,127,0,0,0
30 SYMBOL 234,0,64,248,248,248,252,254,0:SYMBOL 235,254,227,73,227,254,0,0,0
40 SYMBOL 240,18,129,36,26,76,16,129,8:SYMBOL 241,128,0,69,32,2,0,68,32:SYMBOL 242,64,0,16,128,9,0,18,64
50 SYMBOL 243,0,0,64,8,2,32,4,33:SYMBOL 244,0,128,4,0,32,2,64,9:SYMBOL 245,144,2,16,0,66,0,0,17
60 SYMBOL 246,64,4,0,144,1,16,4,64:SYMBOL 247,2,33,0,18,8,128,0,16:SYMBOL 248,4,0,144,2,64,0,8,1
70 SYMBOL 249,0,0,63,63,63,63,127,0:SYMBOL 250,127,200,135,200,127,0,0,0:SYMBOL 251,1,7,156,240,192,248,254,0:SYMBOL 252,254,19,225,19,254,0,0,0
80 SYMBOL 253,0,0,24,60,60,24,0,0
90 EXPL$(1,1)= "":EXPL$(1,2)= " "+CHR$(240)+ " ":EXPL$(1,3)= ""
100 EXPL$(2,1)= " "+CHR$(241)+ " ":EXPL$(2,2)=CHR$(242)+CHR$(9)+CHR$(244):EXPL$(2,3)= " "+CHR$(243)+" "
110 EXPL$(3,1)=CHR$(245)+CHR$(9)+CHR$(247):EXPL$(3,2)= "":EXPL$(3,3)=CHR$(246)+CHR$(9)+CHR$(248)
120 EXPL$(4,1)= "":EXPL$(4,2)=CHR$(9)+ " ":EXPL$(4,3)= ""
130 EXPL$(5,1)=CHR$(9)+ " ":EXPL$(5,2)= " "+CHR$(9)+ " ":EXPL$(5,3)=CHR$(9)+ " "
140 EXPL$(6,1)= " "+CHR$(9)+ " ":EXPL$(6,2)= "":EXPL$(6,3)=EXPL$(6,1)
150 TANK$=CHR$(232)+CHR$(234)+CHR$(10)+STRING$(2,8)+CHR$(233)+CHR$(235)
170 MSG$(1)= "Ready to fire":MSG$(2)= "Press a key with a number on it"
175 MSG$(3)= "Waiting for second digit":MSG$(4)= "Name your shell (0 - 9)":MSG$(5)= "Prepare to FIRE !"
177 MSG$(6)= "PRESS THE SPACE BAR, SILLY !":MSG$(7)= "   F   I   R   E   !!!"
179 MSG$(8)= "   F   L   A   R   E":MSG$(9)= "ENEMY HAS OVERRUN YOUR POSITION !!"
180 '
190 FOR I=1 TO 4:TSPEED(I)=-INT(RND(1)*2)-1:TANKX(I)=34:EXIST(I)=1:NEXT
200 TANKY(1)=INT(RND(1)*5)+6:TANKY(2)=TANKY(1)+3
210 TANKY(3)=TANKY(2)+3:TANKY(4)=TANKY(3)+3
220 NROUNDS=NROUNDS+1
230 PAPER 0:BORDER 0:CLS
240 PEN 1:LOCATE 1,10:PRINT CHR$(249)+CHR$(251)+CHR$(10)+STRING$(2,8)+CHR$(250)+CHR$(252)
250 FOR I=1 TO 6:FOR J=12 TO 20:LOCATE I,J:PRINT CHR$(143):NEXT:NEXT
260 MOVE 0,78:DRAWR 640,0
270 MOVE 0,226:DRAWR 30,0:DRAWR 10,-3
280 PEN 2:LOCATE 3,22:PRINT "Angle: ":LOCATE 16,22:PRINT "Shell: "
290 LOCATE 29,22:PRINT "SCORE: "
300 LOCATE 35,22:PEN 2:PRINT SCORE
310 :
320 MN=1:GOSUB 5000
330 D1$=INKEY$:IF D1$= "" THEN GOSUB 3000:GOTO 330
340 IF D1$= " " THEN FIRE=0:MN=8:GOSUB 5000:GOTO 500
350 IF D1$ < "0" OR D1$ > "8" THEN MN=2:GOSUB 5000:GOTO 330
360 MN=3:GOSUB 5000
365 PEN 2:LOCATE 9,22:PRINT VAL(D1$)
370 D2$=INKEY$:IF D2$= "" THEN GOSUB 3000:GOTO 370
380 IF D2$ < "0" OR D2$ > "9" THEN MN=2:GOSUB 5000:GOTO 370
390 ANGLE=10*VAL(D1$)+VAL(D2$)
400 PEN 2:LOCATE 11,22:PRINT USING "#"; VAL(D2$)
410 MN=4:GOSUB 5000
420 D1$=INKEY$:IF D1$= "" THEN GOSUB 3000:GOTO 420
430 IF D1$ < "0" OR D1$ > "9" THEN MN=2:GOSUB 5000:GOTO 420
440 PEN 2:LOCATE 22,22:PRINT VAL(D1$);
450 SHELL=VAL(D1$):MN=5:GOSUB 5000
460 D1$=INKEY$:IF D1$= "" THEN GOSUB 3000:GOTO 460
470 IF D1$ <> " " THEN MN=6:GOSUB 5000:GOTO 460
480 MN=7:GOSUB 5000:FIRE=1
490 '
500 SOUND 1,0,10,11,1,1,15
505 GOSUB 1000
510 GOSUB 3000
520 IF BOMBX=0 THEN 320 ELSE 505
990 '
1000 IF (BOMBX <> 0) THEN 1010 ELSE BOMBX=3:BOMBY=8:T=0:LOCATE 3,8:PEN 3:PRINT CHR$(253):CU=32
1005 IF FIRE=0 THEN ANGLE=45:SHELL=4
1007 XIV=SHELL*COS(ANGLE)/3:YIV=SHELL*SIN(ANGLE)/3
1010 PEN 1:IF (BOMBX < 39) AND (BOMBY > 0 AND BOMBY < 23) THEN LOCATE BOMBX,BOMBY:PRINT CHR$(CU)
1020 T=T+2
1030 IF (T=20) AND (FIRE=0) THEN 2000
1040 BOMBX=INT(3+T*XIV)
1050 BOMBY=INT(8-T*YIV+0.049*T*T)
1060 IF BOMBY < 1 THEN RETURN
1065 IF BOMBY > 19 THEN BOMBY=19:IF BOMBX > 34 THEN BOMBX=34:GOTO 2000 ELSE GOTO 2000
1070 IF BOMBX > 34 THEN BOMBX=34:IF BOMBY < 2 OR BOMBY > 22 THEN BOMBX=0:RETURN ELSE GOSUB 2000:RETURN
1080 IF TEST(BOMBX*16-8,400-BOMBY*16)=1 THEN CU=143 ELSE CU=32
1090 HIT=0:FOR TK=1 TO 4:IF EXIST(TK)=0 THEN 1110 ELSE T1=BOMBX-TANKY(TK):T2=BOMBY-TANKY(TK)
1100 IF (T1=0 OR T1=1) AND (T2=0 OR T2=1) THEN HIT=TK
1110 NEXT
1120 IF HIT=0 THEN LOCATE BOMBX,BOMBY:PEN 3:PRINT CHR$(253):RETURN
1130 GOTO 4000
1140 '
2000 PEN 3:FOR I=1 TO 6
2010 LOCATE BOMBX-1,BOMBY-1
2020 PRINT EXPL$(I,1)
2022 LOCATE BOMBX-1,BOMBY
2024 PRINT EXPL$(I,2)
2026 LOCATE BOMBX-1,BOMBY+1
2028 PRINT EXPL$(I,3)
2030 SOUND 1,0,15,15,1,1,31
2035 IF HIT <> 0 THEN 2050
2040 IF INT(I/2) <> I/2 THEN INK 0,24:TCOL=1:GOSUB 3500 ELSE INK 0,0:TCOL=0:GOSUB 3500
2050 NEXT
2055 IF BOMBX < 8 THEN FOR I=1 TO 6:FOR J=12 TO 20:PEN 1:LOCATE I,J:PRINT CHR$(143):NEXT:NEXT
2060 BOMBX=0:LOCATE 9,22:PRINT "   ":LOCATE 22,22:PRINT "  ":RETURN
2990 '
3000 IF RND(1) > NROUNDS/100 THEN RETURN
3010 LT=LT+1:IF LT=5 THEN LT=1
3020 IF EXIST(LT)=0 THEN 3010
3030 TANKX(LT)=TANKX(LT)+TSPEED(LT)
3040 IF TANKX(LT) <=6 THEN TCOL=3:GOSUB 3500:GOTO 9000
3050 RETURN
3500 FOR TK=1 TO 4
3510 IF EXIST(TK)=0 THEN 3530 ELSE LOCATE TANKX(TK),TANKY(TK):PEN TCOL
3520 PRINT TANK$
3530 NEXT:RETURN
3990 '
4000 EXIST(HIT)=0:SCORE=SCORE+50:LOCATE 35,22:PEN 2:PRINT SCORE
4010 K=BOMBX:GOSUB 2000:BOMBX=K:GOSUB 2000:BOMBX=K:GOSUB 2000
4020 HIT=0:BOMBX=K:GOSUB 2000
4030 IF EXIST(1)=0 THEN IF EXIST(2)=0 THEN IF EXIST(3)=0 THEN IF EXIST(4)=0 THEN 190
4040 RETURN
4990 '
5000 LOCATE 4,24:PEN 3:PRINT SPACE$(34)
5010 LOCATE 4,24:PRINT MSG$(MN)
5020 RETURN
8990 '
9000 MN=9:GOSUB 5000:FOR I=1 TO 1000 STEP 10:SOUND 1,I,8,15:NEXT
9010 FOR I=1 TO 22:PRINT:NEXT
9020 PRINT "      PRESS A KEY FOR ANOTHER TRY"
9030 IF INKEY$<>"" THEN 9030
9040 IF INKEY$="" THEN 9040 ELSE RUN