10 REM HELI-BOMBER
20 REM @ ROBERT ERSKINE
25 REM PAN BOOKS 1984
30 MODE 1:BORDER 0:INK 0,0:INK 1,24:INK 2,20:INK 3,6:WINDOW #1,1,40,1,25:PAPER #1,0:PEN #1,1:CLS #1
40 GOSUB 880
50 SC=0:HS=0
60  LOCATE 14,1:PEN 1:PRINT CHR$(24);"HELI-BOMBER";CHR$(24);:PEN 1
70 LOCATE 1,7:PEN 2:PRINT"Your city is under attack by helicopter bombers. When a bomb has a clear path   through to the ground or when your lasertower is destroyed the game ends.":PEN 1
80 PEN 3:PRINT:PRINT"Move your laser sight whith the cursor  keys.  Use the COPY key to fire.":PEN 1
90 PRINT:PRINT CHR$(24);"You may destroy the helicopter if you   wish, but the game will end.            ";CHR$(24)
100 LOCATE 6,21:PRINT"PRESS ANY KEY TO START THE GAME"
110 IF INKEY$<>"" THEN 110
120 IF INKEY$="" THEN 120 ELSE CLS
130 WINDOW #0,5,36,1,25:PAPER #0,0:PEN #0,1:CLS #0
140 GOSUB 550
150 LIN=LIN+(2 AND INKEY(2)=0 AND LIN<13)
160 LOCATE 16, 22:CALL 360:K=PEEK(367):IF K<>233 THEN 640
170 COL=COL-(2 AND INKEY(8)=0): IF COL<0 THEN COL=31
180 LIN=LIN-(2 AND INKEY(0)=0 AND LIN>0)
190 COL=COL+(2 AND INKEY(1)=0):IF COL >31 THEN COL=0
200 LOCATE CL+1,LN+1:PRINT" ":LOCATE COL+1,LIN+1:PRINT"+";:LN=LIN:CL=COL
210 IF COL1=30 THEN COL1=0:LIN1=INT(RND*10)+1
220 LIN1=LIN1+(1 AND RND>0.7 AND LIN1<13)
230 LIN1=LIN1+(1 AND RND>0.7 AND LIN1<13)
240 LIN1=LIN1-(1 AND RND>0.7 AND LIN1>0)
250 COL1=COL1+(1 AND COL1<30)
260 LOCATE CL1+1,LN1+1:PRINT"  ";:LOCATE CL1+1,LN1+2:PRINT"  ";:LOCATE COL1+1,LIN1+1:PEN 2:PRINT"__":LOCATE COL1+1,LIN1+2:PRINT CHR$(234);CHR$(235);:PEN 1:LN1=LIN1:CL1=COL1
270 IF G=1 AND RND>0.8 THEN LIN2=LIN1+2:COL2=COL1:G=-G:LN2=LIN1+2:COL2=COL2
280 IF G=1 THEN 320
290 LIN2=LIN2+1
300 LOCATE CL2+1,LN2+1:PRINT" ";:LOCATE COL2+1,LIN2+1:PEN 1:PRINT CHR$(236);:LN2=LIN2:CL2=COL2:SOUND 1,200,4:IF LIN2=21 THEN 640
310 LOCATE COL2+1,LIN2+2:CALL 360:K=PEEK(367):IF K=231 OR K=232 OR K=233 THEN LOCATE COL2+1,LIN2+1:PRINT" ";:LOCATE COL2+1,LIN2+2:PRINT CHR$(236);:LOCATE COL2+1,LIN2+2:PRINT" ";:G=-G
320 IF INKEY(9)<>0 THEN 150
330 X=122:Y=42:PLOT X*2+64,Y*2+64,1
340 XX=COL*8:YY=LIN*8-172
350 YY=-YY
360 DRAWR (XX-X)*2+8,(YY-Y)*2-16,3
370 IF LIN=LIN1+1 AND (COL=COL1 OR COL=COL1+1) THEN H=-H
380 IF COL=COL2 AND LIN=LIN2 THEN B=-B
390 PLOT X*2+64,Y*2+64,0:DRAWR (XX-X)*2+8,(YY-Y)*2-16,0
400 IF B=-1 THEN GOSUB 430
410 IF H=-1 THEN GOSUB 450
420 GOTO 150
430 FOR X=1 TO 10:SOUND 1,200-5*X,4:LOCATE COL2+1,LIN2+1:PRINT"*";:NEXT X
440 LOCATE COL2+1,LIN2+1:PRINT" ";:SC=SC+10:G=-G:B=-B:RETURN
450 FOR X=LIN1 TO 20
460 LOCATE CL1+1,LN1+1:PRINT"  ":LOCATE CL1+1,LN1+2:PRINT"  ";
470 LOCATE COL1+1,LIN1+1:PRINT"  ";:LOCATE COL1+1,LIN1+1:PEN 2:PRINT CHR$(234);CHR$(235);:PEN 1
480 LN1=LIN1:CL1=COL1:LIN1=LIN1+1
490 SOUND 1,180-X,4
500 NEXT X
510 LOCATE COL1+1,LIN1+1:PRINT"  ";:LOCATE COL1+1,LIN+2:PRINT"  ";:LOCATE 16,22:CALL 360:K=PEEK(367):IF K=231 OR K=233 THEN 640
520 LIN1=0:COL1=INT(RND*31)
530 H=-H
540 RETURN
550 REM USER GRAPHICS
560 SYMBOL AFTER 230
570 SYMBOL 231,255,165,165,255,165,165,165,255
580 SYMBOL 232,24,126,126,126,60,24,24,255
590 SYMBOL 233,129,195,165,153,153,165,195,129
600 SYMBOL 234,0,0,195,255,15,7,0,0
610 SYMBOL 235,128,128,224,152,252,248,0,0
620 SYMBOL 236,195,195,36,24,24,36,195,195
630 GOTO 720
640 LOCATE 11,11:PEN 2:PRINT"END OF GAME":PEN 1:LOCATE 8,3:PRINT"Your score was";sc:IF sc>hs THEN HS=SC:PEN 1
650 LOCATE 10,15:PRINT"High score:";hs
660 FOR x=1 TO 600:NEXT x
670 LOCATE 3,17:PEN 3:PRINT"PRESS ANY KEY TO START AGAIN":PEN 1
680 IF INKEY$<>"" THEN 680
690 IF INKEY$="" THEN 690 ELSE CLS
700 SC=0:GOSUB 720
710 GOTO 150
720 REM
730 FOR X= 0 TO 31
740 R=INT(RND*5)+17
750 FOR Y=R TO 21
760 LOCATE X+1,Y+1:PEN 3:PRINT CHR$(231);:PEN 1
770 NEXT Y,X
780 LOCATE 16,17:PRINT CHR$(232);
790 FOR X=17 TO 21
800 LOCATE 16,X+1:PRINT CHR$(233);
810 NEXT
820 LIN=10:COL=15:LOCATE COL+1,LIN+1:PRINT"+";
830 LIN1=0:COL1=INT(RND*31):LN=LIN:CL=COL
840 LOCATE COL1+1,LIN1+1:PEN 2:PRINT"__";:LOCATE COL1+1,LIN1+1:PRINT CHR$(244);CHR$(245);:PEN 1
850 LN1=LIN1:CL1=COL1
860 G=1:H=1:B=1
870 RETURN
880 RESTORE 890:FOR X=360 TO 366:READ A:POKE X,A:NEXT: RESTORE:RETURN
890 DATA 205,96,187,50,111,1,201