5 REM COPYRIGHT 1993 - COMPUTE PUBLICATIONS - ALL RIGHTS RESERVED 10 POKE 53281,0:POKE 53280,0 20 GOSUB 1330 30 PRINT"[147]";:FOR I=1 TO 10:FOR J=1 TO 10:B(I,J)=0:NEXT J,I 40 R=RND(-TI):FOR BA=1 TO 10:B=2:IF RND(1)<.5 THEN B=3 50 I=INT(RND(1)*10)+1:J=INT(RND(1)*10)+1:IF B(I,J)<>0 THEN 50 60 B(I,J)=B:NEXT BA 70 GOSUB 1110:BA=0:SC=0 80 CY=21:CX=15:GOSUB 240:PRINT "SCORE: 0" 90 CY=22:CX=0:GOSUB 240 100 PRINT ""TAB(10)"F[146] - FIRE LASER":PRINT TAB(10)"L[146] - LOOK FOR BAFFLE" 110 PRINT TAB(10)"Q[146] - QUIT GAME"; 120 POKE 198,0:WAIT 198,1:GET A$ 130 GS=-(A$="F")-2*(A$="L")-3*(A$="Q"):ON GS GOSUB 280,820,1380 140 GOSUB 1070:IF GS=3 THEN CY=23:CX=0:GOSUB 240:GOTO 170 150 IF BA<10 THEN GOTO 90 160 CY=22:CX=4:GOSUB240:PRINT "[158]YOU'VE FOUND ALL OF THE BAFFLES!" 170 PRINTTAB(12)"PLAY AGAIN? [Y/N]":POKE 198,0 180 WAIT 198,1:GET A$:IF A$="Y" THEN 30 190 IF A$<>"N" THEN 180 200 POKE SD+24,0:END 210 REM 220 REM ***** POSITION CURSOR ***** 230 REM 240 POKE 781,CY:POKE 782,CX:POKE 783,0:SYS65520:RETURN 250 REM 260 REM ***** FIRE LASER ***** 270 REM 280 GOSUB1070:CY=22:CX=12:GOSUB240:PRINT"LASER TO FIRE: "; 290 L$="":C=0 300 PRINT " [146][157]"; 310 POKE198,0:WAIT 198,1:GET A$:IF A$=CHR$(13) THEN PRINT " ":GOTO 350 320 IF A$=CHR$(20) AND C>0 THEN PRINT A$;:C=C-1:L$=LEFT$(L$,C):GOTO 310 330 IF A$<"0" OR A$>"9" OR C=2 THEN 310 340 PRINT A$;:L$=L$+A$:C=C+1:GOTO 300 350 IF L$="" THEN RETURN 360 L=VAL(L$):IF L<1 OR L>40 THEN 280 370 SC=SC+1:IF (L>10 AND L<21) OR L>30 THEN 410 380 AA=L-1:IF L>20 THEN AA=30-L 390 XL=15+AA:YL=3:IF L>20 THEN YL=16 400 P=55296+XL+40*YL:FOR I=0 TO 80 STEP40:POKE P+I,5:NEXT:GOTO 440 410 AA=L-11:IF L>20 THEN AA=40-L 420 YL=6+AA:XL=25:IF L>20 THEN XL=12 430 P=55296+XL+40*YL:FOR I=0 TO 2:POKE P+I,5:NEXT 440 DY=(L<31 AND L>20)-(L<11) 450 DX=(L<21 AND L>10)-(L>30) 460 X=1:Y=41-L:IF L<31 THEN X=31-L:Y=10 470 IF L<21 THEN X=10:Y=L-10 480 IF L<11 THEN X=L:Y=1 490 FR=2000+L*100:POKE SD+4,65 500 FQ=FR+PEEK(SD+27)/2:HF=INT(FQ/256):LF=FQAND255:POKE SD,LF:POKE SD+1,HF 510 B=ABS(B(Y,X)):IF B<2 THEN 550 520 IF DX=0 THEN 540 530 DY=1+2*((DX=1 AND B=3) OR (DX=-1 AND B=2)):DX=0:GOTO 550 540 DX=1+2*((DY=1 AND B=3) OR (DY=-1 AND B=2)):DY=0 550 X=X+DX:Y=Y+DY:IF X<11 AND X>0 AND Y<11 AND Y>0 THEN 500 560 POKE SD+4,64:IF Y=0 THEN E=X 570 IF X=11 THEN E=Y+10 580 IF Y=11 THEN E=31-X 590 IF X=0 THEN E=41-Y 600 IF (E>10 AND E<21) OR E>30 THEN 640 610 AA=E-1:IF E>20 THEN AA=30-E 620 XE=15+AA:YE=3:IF E>20 THEN YE=16 630 P=55296+XE+40*YE:FOR I=0 TO 80 STEP40:POKE P+I,2:NEXT:GOTO 670 640 AA=E-11:IF E>20 THEN AA=40-E 650 YE=6+AA:XE=25:IF E>20 THEN XE=12 660 P=55296+XE+40*YE:FOR I=0 TO 2:POKE P+I,2:NEXT 670 FR=2000+E*100:HF=INT(FR/256):LF=FRAND255:POKESD,LF:POKESD+1,HF 680 POKE SD+4,65:FOR T=1 TO 200:NEXT:POKE SD+4,64 690 PRINT TAB(11)"EXIT AT LASER #";E 700 CY=21:CX=21:GOSUB240:PRINT""SC"" 710 PRINT TAB(8)"PRESS SPACE[146] TO CONTINUE"; 720 POKE 198,0:WAIT 198,1:GET A$:IF A$<>" " THEN 720 730 C=6-8*((L/2)=INT(L/2)):P=55296+XL+40*YL:IF YL>3 AND YL<16 THEN 750 740 FOR I=0 TO 80 STEP 40:POKE P+I,C:NEXT:GOTO 760 750 FOR I=0 TO 2:POKE P+I,C:NEXT 760 C=6-8*((E/2)=INT(E/2)):P=55296+XE+40*YE:IF YE>3 AND YE<16 THEN 780 770 FOR I=0 TO 80 STEP 40:POKE P+I,C:NEXT:RETURN 780 FOR I=0 TO 2:POKE P+I,C:NEXT:RETURN 790 REM 800 REM ***** LOOK FOR A BAFFLE ***** 810 REM 820 GOSUB1070:CY=22:CX=10:GOSUB240:PRINT "BAFFLE X LOCATION: "; 830 POKE 198,0:WAIT198,1:GET A$:IF A$=CHR$(13) THEN RETURN 840 IF A$<"A" OR A$>"J" THEN 830 850 X=ASC(A$)-64:PRINT A$ 860 PRINTTAB(10)"[158]BAFFLE Y LOCATION: "; 870 POKE198,0:WAIT 198,1:GET A$:IF A$=CHR$(13) THEN RETURN 880 IF A$<"A" OR A$>"J" THEN 870 890 Y=75-ASC(A$):PRINT A$ 900 B=B(Y,X):IF B>=0 THEN 920 910 PRINT" THAT LOCATION HAS ALREADY BEEN CALLED[146]";:POKE198,0:WAIT198,1:RETURN 920 SC=SC+2:CY=21:CX=21:GOSUB240:PRINT""SC"" 930 IF B>0 THEN 990 940 PRINT TAB(10)"THAT IS NOT A BAFFLE[146]";:B(Y,X)=-1 950 CY=Y+5:CX=X+14:GOSUB240:PRINT"[146]*"; 960 FR=1000:FORBZ=0 TO 10:FR=2500-FR:HF=INT(FR/256):LF=FRAND255 970 POKE SD,LF:POKE SD+1,HF:POKESD+4,65:FOR T=1 TO 5:NEXT:POKE SD+4,64:NEXT BZ 980 POKE198,0:WAIT198,1:RETURN 990 PRINT TAB(8)"[158]YOU HAVE FOUND A BAFFLE![146]";:B(Y,X)=-B:BA=BA+1 1000 CY=Y+5:CX=X+14:GOSUB240:A$="[205]":IF B=3 THEN A$="[206]" 1010 PRINT"[158]"A$;:FR=10000:FOR BL=0 TO 10:FR=21000-FR:HF=INT(FR/256):LF=FRAND255 1020 POKESD,LF:POKESD+1,HF:POKESD+4,65:FORT=1 TO 20:NEXT:POKESD+4,64:NEXT BL 1030 POKE198,0:WAIT198,1:RETURN 1040 REM 1050 REM ***** CLEAR SCREEN BOTTOM ***** 1060 REM 1070 CX=0:FOR CY=22TO24:GOSUB240:SYS59903:NEXT CY:RETURN 1080 REM 1090 REM ***** DRAW GAME SCREEN ***** 1100 REM 1110 PRINT TAB(16)"[158]BAFFLES" 1120 PRINTTAB(15)"ABCDEFGHIJ" 1130 PRINT TAB(12)"[154][169] 0[154]00[154]00[154]00[154]00[154]1 [223]" 1140 PRINT TAB(12)"[154]  1[154]23[154]45[154]67[154]89[154]0  " 1150 PRINT TAB(12)"[154] [146][169][221][154][221][221][154][221][221][154][221][221][154][221][221][154][221][223] " 1160 PRINT TAB(11)"[158]J[154]40[146][192]++++++++++[192]11[158][146]J" 1170 PRINT TAB(11)"[158]I39[146][192][154]++++++++++[192]12[158][146]I" 1180 PRINT TAB(11)"[158]H[154]38[146][192]++++++++++[192]13[158][146]H" 1190 PRINT TAB(11)"[158]G37[146][192][154]++++++++++[192]14[158][146]G" 1200 PRINT TAB(11)"[158]F[154]36[146][192]++++++++++[192]15[158][146]F" 1210 PRINT TAB(11)"[158]E35[146][192][154]++++++++++[192]16[158][146]E" 1220 PRINT TAB(11)"[158]D[154]34[146][192]++++++++++[192]17[158][146]D" 1230 PRINT TAB(11)"[158]C33[146][192][154]++++++++++[192]18[158][146]C" 1240 PRINT TAB(11)"[158]B[154]32[146][192]++++++++++[192]19[158][146]B" 1250 PRINT TAB(11)"[158]A31[146][192][154]++++++++++[192]20[158][146]A" 1260 PRINT TAB(12)" [154][223][146][221][221][154][221][221][154][221][221][154][221][221][154][221][221][154][169] " 1270 PRINT TAB(12)" [154] 32[154]22[154]22[154]22[154]22 [154] " 1280 PRINT TAB(12)"[154][223] 09[154]87[154]65[154]43[154]21 [154][146][169]" 1290 PRINTTAB(15)"ABCDEFGHIJ":RETURN 1300 REM 1310 REM ***** SOUND SETUP ***** 1320 REM 1330 SD=54272:FOR L=0TO24:POKESD+L,0:NEXT:POKESD+3,8:POKESD+5,41:POKESD+6,89 1340 POKE SD+14,117:POKE SD+18,16:POKE SD+24,143:RETURN 1350 REM 1360 REM ***** REVEAL BAFFLES ***** 1370 REM 1380 CY=6:CX=15:GOSUB240:PRINT"[158]"; 1390 FOR I=1 TO 10:PRINT TAB(15); 1400 FOR J=1 TO 10:B=B(I,J):IF B<=0 THEN PRINT "";:GOTO 1430 1410 IF B=2 THEN PRINT "[205]";:GOTO 1430 1420 IF B=3 THEN PRINT "[206]"; 1430 NEXT J:PRINT:NEXT I:RETURN