10 REM HELI 1.92 BY PHIL HITE 2021 20 IF PAGE>&E00 GOTO 2180 30 MODE 2 40 VDU 23,1,0;0;0;0; 50 VDU 23,240,255,128,65,34,20,8,255,0 60 VDU 23,241,170,85,170,85,170,85,170,85 70 VDU 23,242,24,36,24,36,24,36,24,36 80 VDU 23,243,2,0,28,186,254,190,28,0 90 VDU 23,244,128,0,112,186,254,250,112,0 100 VDU 23,245,60,126,255,231,231,231,165,231 110 VDU 23,246,7,0,0,128,127,1,0,0 120 VDU 23,247,255,32,112,236,226,252,80,252 130 VDU 23,248,255,4,14,55,71,63,10,63 140 VDU 23,249,224,0,0,1,254,128,0,0 150 VDU 23,250,170,170,170,170,254,214,124,56 160 VDU 23,251,0,255,128,65,34,20,8,255 170 DIM G(19):H%=0:A%=-15:R%=A%:Q%=1:DIM H(9):DIM L(9):DIM N$(9,2):FOR Y%=0 TO 9:L(Y%)=1:FOR X%=0 TO 2:N$(Y%,X%)="A":NEXT:NEXT 180 PROCS 190 DEFPROCS 200 G%=1:T$=" TODAY'S GREATEST" 210 COLOUR 135:CLS:COLOUR 4:PRINT '" HELI 1.92" 220 PRINT " PHIL HITE 2021" 230 PRINT '"O LEFT P RIGHT" 240 PRINT '"SPACE PICK UP/DROP" 250 PRINT '"D VOL DOWN U VOL UP" 260 PRINT "M SOUND OFF H HOLD" 270 PRINT '" BUILD THE BRIDGE" 280 PRINT " STOP THE FLOOD" 290 PRINT "BEWARE OF OCTOPUSES!" 300 PRINT "S START Q QUIT" 310 PRINT '" ";T$ 320 FOR Y%=0 TO 9:PRINT TAB(3-LEN(STR$(Y%+1)),Y%+20);Y%+1;TAB(4,Y%+20)H(Y%);TAB(11,Y%+20)"L";L(Y%);TAB(15,Y%+20);:FOR X%=0 TO 2:PRINT N$(Y%,X%);:NEXT:NEXT 330 PROCK 340 ENDPROC 350 DEFPROCK 360 REPEAT 370 K$=INKEY$(0) 380 IF K$="d" OR K$="u" OR K$="m" OR K$="i" OR K$="s" OR K$="q" K$=CHR$(ASC(K$)-32) 390 IF K$="D" AND A%<0 A%=A%+1:SOUND 1,A%,101,1 400 IF K$="U" AND A%>-15 A%=A%-1:SOUND 1,A%,101,1 410 IF K$="M" AND Q%=1 Q%=0:R%=A%:A%=0:K$="" ELSE IF K$="M" Q%=1:A%=R%:K$="" 420 IF G%=1 AND Q%=1 PRINT TAB(9,11)"FF" ELSE IF G%=1 PRINT TAB(9,11)"N " 430 IF K$="I" AND G%=0 PROCS 440 IF K$="S" COLOUR 135:CLS:COLOUR 4:S%=0:L%=1:W%=0:K%=0:U%=0:E%=0:PROCG:PROCC 450 IF G%=1 T$=RIGHT$(T$,16)+LEFT$(T$,1):PROCP(16):PRINT TAB(1,19)T$ 460 UNTIL K$="Q" 470 END 480 ENDPROC 490 DEFPROCG 500 COLOUR 4:PRINT TAB(3,8)"GET READY FOR";TAB(5,9)"LEVEL ";L%;"!":PROCP(19) 510 SOUND 1,A%,101-49,12:PROCP(19):SOUND 2,A%,117-49,6:PROCP(19):SOUND 3,A%,129-49,3:PROCP(19) 520 SOUND 1,A%,109-49,12:PROCP(19):SOUND 2,A%,121-49,6:PROCP(19):SOUND 3,A%,137-49,3:PROCP(19) 530 SOUND 1,A%,129-49,12:PROCP(19):SOUND 2,A%,137-49,6:PROCP(19):SOUND 3,A%,145-49,3:PROCP(19) 540 SOUND 1,A%,149-49,12:SOUND 2,A%,165-49,12:SOUND 3,A%,177-49,12 550 CLS 560 C%=9:D%=0 570 ENDPROC 580 DEFPROCC 590 REPEAT 600 I%=RND(8)-1:P%=128+RND(8)-1 610 UNTIL I%<>7 AND P%<>128+7 620 COLOUR I%:COLOUR P% 630 FOR Y%=17 TO 31 640 FOR X%=0 TO 4 650 PRINT TAB(X%,Y%)CHR$(241);TAB(X%+15,Y%)CHR$(241); 660 NEXT 670 NEXT 680 PRINT TAB(0,0)CHR$(11); 690 COLOUR 7:COLOUR 128:PRINT " ";TAB(0,0)S%;TAB(8,0)"L"L%;TAB(12,0)"HI";H% 700 COLOUR 5:COLOUR 135 710 FOR X%=0 TO 4 720 PRINT TAB(X%,17)CHR$(240);TAB(X%+15,17)CHR$(240); 730 NEXT 740 FOR X%=0 TO 19 750 IF X%<5 OR X%>14 G(X%)=1 ELSE G(X%)=0 760 NEXT 770 V%=W% 780 REPEAT 790 REPEAT UNTIL INKEY(0)=-1 800 COLOUR 2 810 IF D%=0 PRINT TAB(C%,2)CHR$(248);CHR$(249) ELSE PRINT TAB(C%,2)CHR$(246);CHR$(247) 820 COLOUR 1:PRINT TAB(C%+D%,3)CHR$(245) 830 IF K%=1 COLOUR 5:PRINT TAB(C%+D%,4);CHR$(240) 840 PROCP(1) 850 PROCB:PROCP(10):PROCW 860 IF INKEY(-99) PROCM 870 IF INKEY(-55) AND D%=0 AND C%>0 PRINT TAB(C%+1,2)" ";TAB(C%,3)" ";TAB(C%,4)" ":C%=C%-1 ELSE IF INKEY(-55) D%=0:PRINT TAB(C%+1,3)" ";TAB(C%+1,4)" " 880 IF INKEY(-56) AND D%=1 AND C%<18 PRINT TAB(C%,2)" ";TAB(C%+1,3)" ";TAB(C%+1,4)" ":C%=C%+1 ELSE IF INKEY(-56) D%=1:PRINT TAB(C%,3)" ";TAB(C%,4)" " 890 IF INKEY(-85) COLOUR 4:PRINT TAB(6,6)"HOLD IT!":U%=GET:PRINT TAB(6,6)" " 900 IF INKEY(-51) AND A%<0 A%=A%+1:SOUND 1,A%,101,1:Q%=1 910 IF INKEY(-54) AND A%>-15 A%=A%-1:SOUND 1,A%,101,1:Q%=1 920 IF INKEY(-102) AND Q%=1 :Q%=0:R%=A%:A%=0:PROCP(45) 930 IF INKEY(-102) AND Q%=0 :Q%=1:A%=R%:PROCP(45) 940 UNTIL INKEY(-17) 950 REPEAT UNTIL INKEY(0)=-1 960 PROCS 970 ENDPROC 980 DEFPROCB 990 G%=1 1000 FOR X%=5 TO 14 1010 IF G(X%)=0 G%=0:X%=14 1020 NEXT 1030 IF G%=0 ENDPROC 1040 COLOUR 4:PRINT TAB(5,5)"WELL DONE!";TAB(1,6)"BONUS=1000 X LEVEL" 1050 Z%=1000*L% 1060 IF Z%<10000 PRINT TAB(7,7);Z% ELSE PRINT TAB(6,7);Z% 1070 S%=S%+Z% 1080 PROCH 1090 W%=W%+4:L%=L%+1 1100 PROCG:PROCC 1110 ENDPROC 1120 DEFPROCP(J%) 1130 T%=TIME+J%:REPEAT UNTIL TIME>=T% 1140 ENDPROC 1150 DEFPROCW 1160 VDU 18,0,4 1170 MOVE 320,V% 1180 DRAW 959,V% 1190 V%=V%+2 1200 IF V%<448 ENDPROC 1210 SOUND 0,A%,4,40 1220 COLOUR 132 1230 FOR Y%=31 TO 18 STEP -1 1240 PRINT TAB(5,Y%)" "; 1250 NEXT 1260 FOR Y%=17 TO 1 STEP -1 1270 PRINT TAB(0,Y%)" " 1280 NEXT 1290 FOR F%=1 TO 150 1300 X%=RND(10):Y%=RND(14):D%=RND(2) 1310 COLOUR RND(16)-1 1320 PRINT TAB(4+X%,32-Y%)CHR$(242+D%); 1330 X%=RND(20):Y%=RND(17):D%=RND(2) 1340 COLOUR RND(16)-1 1350 PRINT TAB(X%-1,Y%)CHR$(242+D%); 1360 NEXT 1370 Y%=0 1380 REPEAT 1390 IF S%>H(Y%) E%=1 1400 IF E%=1 AND Y%<9 H(Y%+1)=H(Y%):L(Y%+1)=L(Y%):FOR X%=0 TO 2:N$(Y%+1,X%)=N$(Y%,X%):NEXT 1410 IF E%=0 Y%=Y%+1 1420 UNTIL E%=1 OR Y%=10 1430 COLOUR 7:COLOUR 132:PRINT TAB(5,18)"GAME OVER!" 1440 IF E%=1 PROCI 1450 COLOUR 7:COLOUR 132:PRINT TAB(5,20)"S START";TAB(5,22)"I INSTRUCT";TAB(5,24)"Q QUIT" 1460 PROCK 1470 ENDPROC 1480 DEFPROCM 1490 N%=3:M%=C%+D% 1500 IF M%>4 AND M%<15 B%=17 ELSE B%=16 1510 IF K%=1 AND G(M%)=1 B%=B%-1 1520 REPEAT 1530 COLOUR 0:PRINT TAB(M%,N%)CHR$(242):COLOUR 1:PRINT TAB(M%,N%+1)CHR$(245) 1540 IF K%=1 COLOUR 5:PRINT TAB(M%,N%+2)CHR$(240) 1550 SOUND 1,A%,-N%+54,1 1560 PROCP(1) 1570 N%=N%+1 1580 UNTIL N%=B% 1590 IF G(M%)=1 AND K%=0 G(M%)=0:K%=1:GOTO 1640 1600 IF G(M%)=K% GOTO 1640 1610 IF G(M%)=0 AND K%=1 AND (M%<6 OR M%>13) G(M%)=1:K%=0:GOTO 1630 1620 IF (G(M%-1)=1 OR G(M%+1)=1) AND M%>5 AND M%<14 G(M%)=1:K%=0 1630 IF G(M%)=1 AND M%>4 AND M%<15 S%=S%+100:PROCH 1640 REPEAT 1650 N%=N%-1 1660 COLOUR 1:PRINT TAB(M%,N%)CHR$(245) 1670 IF K%=0 PRINT TAB(M%,N%+1)" " ELSE COLOUR 5:PRINT TAB(M%,N%+1);CHR$(240) 1680 IF K%=1 AND (G(M%)=0 OR (G(M%)=1 AND N%H% H%=S% 1760 COLOUR 7:COLOUR 128:PRINT TAB(0,0);S%;TAB(14,0);H% 1770 COLOUR 135 1780 ENDPROC 1790 DEFPROCI 1800 COLOUR 128:PRINT TAB(0,1)"HISCORE PRESS RETURN" 1810 REPEAT 1820 K$=INKEY$(0) 1830 UNTIL K$=CHR$(13) 1840 H(Y%)=S%:L(Y%)=L% 1850 PRINT TAB(8,1)"INITIALS? ";TAB(17,1); 1860 FOR X%=0 TO 2 1870 N$(Y%,X%)=" " 1880 NEXT 1890 FOR X%=0 TO 2 1900 REPEAT 1910 I$=GET$ 1920 I%=ASC(I$) 1930 IF I$>="a" AND I$<="z" I%=I%-32 1940 IF I%=13 X%=2 1950 UNTIL (I%>64 AND I%<91) OR I%=13 1960 I$=CHR$(I%) 1970 N$(Y%,X%)=I$ 1980 PRINT I$; 1990 NEXT 2000 PROCS 2010 ENDPROC 2020 DEFPROCO 2030 M%=C%+D%:O%=RND(2)-1 2040 O%=RND(4-O%) 2050 IF NOT (O%=1 AND K%=1 AND G(M%)=0 AND (M%<5 OR M%>14)) ENDPROC 2060 REPEAT 2070 I%=RND(16)-1 2080 UNTIL I%<>7 2090 FOR Y%=4 TO 16 2100 PRINT TAB(M%,Y%)" ":COLOUR 5 2110 IF Y%<16 PRINT TAB(M%,Y%+1)CHR$(251):COLOUR I%:PRINT TAB(M%,Y%+2)CHR$(250) 2120 IF Y%=16 PRINT TAB(M%,Y%+1)CHR$(240) 2130 SOUND 1,A%,-Y%+216,1 2140 PROCP(1) 2150 NEXT 2160 K%=0:G(M%)=1 2170 ENDPROC 2180 *TAPE 2190 FOR I%=0 TO TOP-PAGE STEP 4:I%!&E00=I%!PAGE:NEXT:?&13=?&13-(PAGE-&E00)DIV256:PAGE=&E00:LOMEM=TOP:RUN