10 REM HELI 1.98 BY PHIL HITE 2021 20 FOR g=1 TO 12: READ g$: FOR y=0 TO 7: READ x: POKE USR g$+y,x: NEXT y: NEXT g 30 DATA "a",255,128,65,34,20,8,255,0 40 DATA "b",170,85,170,85,170,85,170,85 50 DATA "c",24,36,24,36,24,36,24,36 60 DATA "d",2,0,28,186,254,190,28,0 70 DATA "e",128,0,112,186,254,250,112,0 80 DATA "f",60,126,255,231,231,231,165,231 90 DATA "g",7,0,0,128,127,1,0,0 100 DATA "h",255,32,112,236,226,252,80,252 110 DATA "i",255,4,14,55,71,63,10,63 120 DATA "j",224,0,0,1,254,128,0,0 130 DATA "k",170,170,170,170,254,214,124,56 140 DATA "l",0,255,128,65,34,20,8,255 150 DIM g(32): LET h=0: LET q=1: DIM h(10): DIM l(10): DIM n(10,9): FOR y=1 TO 10: LET l(y)=1: FOR x=1 TO 3: LET n(y,x)=CODE "A": NEXT x: NEXT y 160 REM START 170 LET t$=" TODAY'S GREATEST": LET g=1 180 BORDER 0: PAPER 7: INK 1: BRIGHT 0: OVER 0: CLS 190 PRINT TAB 6;" HELI 1.98" 200 PRINT TAB 6;" PHIL HITE 2021": PRINT 210 PRINT TAB 6;"O LEFT P RIGHT" 220 PRINT TAB 6;"SPACE PICK UP/DROP" 230 PRINT TAB 6;"M SOUND O" 240 IF q=1 THEN PRINT AT 5,15;"FF"; 250 IF q=0 THEN PRINT AT 5,15;"N "; 260 PRINT " H HOLD" 270 PRINT TAB 6;" BUILD THE BRIDGE" 280 PRINT TAB 6;" STOP THE FLOOD" 290 PRINT TAB 6;"BEWARE OF OCTOPUSES!" 300 PRINT TAB 6;"S START Q QUIT": PRINT 310 PRINT TAB 6;" ";t$ 320 FOR y=1 TO 10: PRINT AT y+11,9-LEN (STR$ (y));y;AT y+11,10;h(y);AT y+11,17;"L";l(y);AT y+11,21;: FOR x=1 TO 3: LET i=n(y,x): PRINT CHR$ i;: NEXT x: NEXT y 330 REM KEYS 340 LET k$=INKEY$ 350 IF k$="m" OR k$="i" OR k$="s" OR k$="q" THEN LET k$=CHR$ (CODE k$-32) 360 IF k$="M" THEN FOR x=1 TO 1900: NEXT x: LET q=NOT q 370 IF q=0 AND g=1 THEN PRINT AT 5,15;"N " 380 IF q=1 AND g=1 THEN PRINT AT 5,15;"FF" 390 IF k$="I" AND g=0 THEN GO TO 170: REM GO TO START 400 IF k$="S" THEN CLS : RANDOMIZE : LET s=0: LET l=1: LET w=0: LET k=0: LET u=0: LET e=0: LET t=0: GO SUB 450: GO TO 550: REM GO SUB GET READY GO TO COPTER 410 IF k$="Q" THEN STOP 420 IF g=1 THEN LET t$=t$(2 TO 17)+t$(1): FOR x=1 TO 1280: NEXT x: PRINT AT 11,7;t$ 430 GO TO 340 440 REM GET READY 450 PRINT AT 8,9;"GET READY FOR";AT 9,11;"LEVEL ";l;"!" 460 IF q=0 THEN FOR x=1 TO 15000: NEXT x: GO TO 510 470 BEEP .125,0: BEEP .125,4: BEEP .125,7 480 BEEP .125,2: BEEP .125,5: BEEP .125,9 490 BEEP .125,7: BEEP .125,9: BEEP .125,11 500 BEEP .375,12 510 CLS 520 LET c=15: LET d=0 530 RETURN 540 REM COPTER 550 LET i=INT (RND*8): LET p=INT (RND*8): LET b=INT (RND*2): IF i=7 AND p=7 AND b=0 THEN GO TO 550 560 FOR y=12 TO 21: PRINT AT y,0; INK i; PAPER p; BRIGHT b;"\b\b\b\b\b\b\b\b";AT y,24;"\b\b\b\b\b\b\b\b": NEXT y 570 PRINT AT 0,0; PAPER 0;" ": PRINT AT 0,0; INK 7; PAPER 0;s;AT 0,14;"L";l;AT 0,24;"HI";h 580 PRINT AT 11,0; INK 3;"\a\a\a\a\a\a\a\a";AT 11,24;"\a\a\a\a\a\a\a\a" 590 FOR x=1 TO 32 600 LET g(x)=0: IF x<9 OR x>24 THEN LET g(x)=1 610 NEXT x 620 LET v=w 630 IF d=0 THEN PRINT AT 2,c; INK 4;"\i\j" 640 IF d=1 THEN PRINT AT 2,c; INK 4;"\g\h" 650 PRINT AT 3,c+d; INK 2;"\f" 660 IF k=1 THEN PRINT AT 4,c+d; INK 3;"\a" 670 REM DELAY FOR COMPILER 680 FOR x=1 TO 450: NEXT x 690 GO SUB 840: GO SUB 990: IF t=6 THEN GO SUB 1020: REM GO SUB BRIDGE GO SUB PAUSE GO SUB WATER 700 LET k$=INKEY$ 710 IF k$="m" OR k$="o" OR k$="p" OR k$="d" OR k$="h" OR k$="q" THEN LET k$=CHR$ (CODE k$-32) 720 IF k$=" " THEN GO SUB 1250: REM GO SUB MAGNET 730 IF k$="O" AND d=0 AND c>0 THEN PRINT AT 2,c+1;" ";AT 3,c;" ";AT 4,c;" ": LET c=c-1 740 IF k$="O" AND d=1 THEN LET d=0: PRINT AT 3,c+1;" ";AT 4,c+1;" " 750 IF k$="P" AND d=1 AND c<30 THEN PRINT AT 2,c;" ";AT 3,c+1;" ";AT 4,c+1;" ": LET c=c+1 760 IF k$="P" AND d=0 THEN LET d=1: PRINT AT 3,c;" ";AT 4,c;" " 770 IF k$="H" AND u=0 THEN PRINT AT 6,12;"HOLD IT!": PRINT AT 8,9;"ENTER CONTINUE": LET u=1 780 IF INKEY$=CHR$ 13 AND u=1 THEN PRINT AT 6,12;" ";AT 8,9;" ": LET u=0 790 IF u=1 THEN GO TO 780 800 IF k$="M" THEN LET q=NOT q: FOR x=1 TO 1900: NEXT x 810 IF k$="Q" THEN GO TO 170: REM GO TO START 820 GO TO 630 830 REM BRIDGE 840 LET g=1 850 FOR x=9 TO 24 860 IF g(x)=0 THEN LET g=0: LET x=24 870 NEXT x 880 IF g=0 THEN RETURN 890 PRINT AT 5,11;"WELL DONE!";AT 6,7;"BONUS=1000 X LEVEL" 900 LET z=1000*l 910 IF z<10000 THEN PRINT AT 7,13;z 920 IF z>9999 THEN PRINT AT 7,12;z 930 LET s=s+z 940 GO SUB 1500: REM GO SUB HISCORE 950 LET w=w+1: LET l=l+1 960 GO SUB 440: GO TO 550: REM GO SUB GET READY GO TO COPTER 970 RETURN 980 REM PAUSE 990 LET t=t+1 1000 RETURN 1010 REM WATER 1020 PLOT 64,v: DRAW 127,0 1030 LET v=v+1 1040 IF v<80 THEN LET t=0: RETURN 1050 FOR y=21 TO 12 STEP -1: PRINT AT y,8; PAPER 1;" ": NEXT y 1060 FOR y=11 TO 1 STEP -1: PRINT AT y,0; PAPER 1;" ": NEXT y: 1070 FOR f=1 TO 150 1080 IF INKEY$<>"" THEN FOR x=1 TO 1900: NEXT x: GO TO 1140 1090 LET x=INT (RND*16): LET y=INT (RND*10): LET d=INT (RND*2) 1100 PRINT AT 21-y,8+x; INK INT (RND*8); PAPER 1;CHR$ (147+d) 1110 LET x=INT (RND*32): LET y=INT (RND*11): LET d=INT (RND*2) 1120 PRINT AT 11-y,0+x; INK INT (RND*8); PAPER 1;CHR$ (147+d) 1130 NEXT f 1140 LET y=1 1150 IF s>h(y) THEN LET e=1 1160 IF e=1 AND y<10 THEN LET h(y+1)=h(y): LET l(y+1)=l(y): FOR x=1 TO 3: LET n(y,x+1)=n(y,x): NEXT x 1170 IF e=0 THEN LET y=y+1 1180 IF e=1 OR y=11 THEN GO TO 1200 1190 GO TO 1150 1200 PRINT INK 7; PAPER 1;AT 12,11;"GAME OVER!" 1210 IF e=1 THEN GO SUB 1540: REM GO SUB INITIALS 1220 PRINT INK 7; PAPER 1;AT 14,9;"S START";AT 16,9;"I INSTRUCTIONS";AT 18,9;"Q QUIT" 1230 GO TO 340: REM GO TO KEYS 1240 REM MAGNET 1250 LET n=3: LET m=c+d: LET ma=m+1 1260 LET b=9: IF m>7 AND m<24 THEN LET b=10 1270 IF k=1 AND g(ma)=1 THEN LET b=b-1 1280 FOR y=n TO b 1290 PRINT INK 0;AT y,m;"\c"; INK 2;AT y+1,m;"\f" 1300 IF k=1 THEN PRINT INK 3;AT y+2,m;"\a" 1310 IF q=0 THEN FOR x=1 TO 400: NEXT x: GO TO 1330 1320 BEEP .025,-y 1330 NEXT y 1340 IF g(ma)=1 AND k=0 THEN LET g(ma)=0: LET k=1: GO TO 1390 1350 IF g(ma)=k THEN GO TO 1390 1360 IF g(ma)=0 AND k=1 AND (m<9 OR m>22) THEN LET g(ma)=1: LET k=0: GO TO 1380 1370 IF (g(ma-1)=1 OR g(ma+1)=1) AND m>8 AND m<23 THEN LET g(ma)=1: LET k=0 1380 IF g(ma)=1 AND m>7 AND m<24 THEN LET s=s+100: GO SUB 1500: REM GO SUB HISCORE 1390 FOR y=b TO n STEP -1 1400 PRINT INK 2;AT y,m;"\f" 1410 IF k=0 THEN PRINT AT y+1,m;" " 1420 IF k=1 THEN PRINT INK 3;AT y+1,m;"\a" 1430 IF k=1 AND (g(ma)=0 OR (g(ma)=1 AND nh THEN LET h=s 1510 PRINT AT 0,0; INK 7; PAPER 0;s;AT 0,14;"L";l;AT 0,24;"HI";h 1520 RETURN 1530 REM INITIALS 1540 PRINT AT 1,0; INK 7; PAPER 0;"HISCORE PRESS ENTER " 1550 IF PEEK 23560=13 THEN PAUSE 0 1560 LET k$=INKEY$ 1570 FOR x=1 TO 1900: NEXT x 1580 IF k$=CHR$ 13 THEN GO TO 1600 1590 GO TO 1560 1600 LET h(y)=s: LET l(y)=l: PRINT AT 1,8; INK 7; PAPER 0;"INITIALS? ";AT 1,17; 1610 FOR x=1 TO 3 1620 LET n(y,x)=CODE CHR$ 32 1630 NEXT x 1640 FOR x=1 TO 3 1650 LET i$=INKEY$ 1660 LET i=CODE i$ 1670 IF i$>="a" AND i$<="z" THEN LET i=i-32 1680 IF i=13 THEN LET x=3 1690 IF (i<65 OR i>90) AND i<>13 THEN GO TO 1650 1700 LET i$=CHR$ i 1710 LET n(y,x)=CODE i$ 1720 PRINT INK 7; PAPER 0;i$; 1730 FOR u=1 TO 1900: NEXT u 1740 NEXT x 1750 GO TO 170: REM GO TO START 1760 REM OCTOPUS 1770 LET m=c+d: LET ma=m+1: LET o=INT (RND*2) 1780 LET o=1+INT (RND*4-o) 1790 IF NOT (o=1 AND k=1 AND g(ma)=0 AND (m<8 OR m>23)) THEN RETURN 1800 LET i=INT (RND*7) 1810 FOR y=4 TO 10 1820 PRINT AT y,m;" " 1830 IF y<10 THEN PRINT AT y+1,m; INK 3;"\l";AT y+2,m; INK i;"\k" 1840 IF y=10 THEN PRINT AT y+1,m; INK 3;"\a" 1850 IF q=0 THEN FOR x=1 TO 600: NEXT x: GO TO 1880 1860 BEEP .025,-y+40 1870 FOR x=1 TO 150: NEXT x 1880 NEXT y 1890 LET k=0: LET g(ma)=1 1900 RETURN