10 ' STARF 20 ' STARFIGHTER FOR MODEL 100 30 ' BY MIKE BERRO 40 ' 26 OCT 83 50 CALL 16959 60 DEFINT A-Z 70 DIM E(7,1),E$(7),HS(2),HS$(2) 80 F=1:ONERROR GOTO 100 90 OPEN "STARHS.DO" FOR INPUT AS 1: FOR I=0 TO 2:INPUT #1,HS$(I),HS(I):NEXT I:CLOSE 100 CLS:PRINT @135,"Sound(Y/N)?";:A$=INKEY$:D=RND(1):IFA$=""THEN100 ELSEIFA$="N" THENSN=0:GOTO130 ELSEIF A$="Y" THENSN=1:GOTO130 110 IF ASC(A$)>96 THEN PRINT@135,"";:FORJ=1 TO 2000:NEXTJ 120 GOTO 100 130 CLS:PRINT @43,"M i c r o - S t a r f i g h t e r":LINE (15,6)-(218,16),1,B:PRINT @240,"Version 1.0":PRINT "October 1983"; 140 PRINT @200,"Prev Score = ";:PRINT USING "#####,";SC:LINE (74,38)-(116,48),1,B 150 PRINT @187,"High Scores";:FOR I=0 TO 2:PRINT @227+I*40,HS$(I);:PRINT @231+I*40,"= ";:PRINT USING "#####,";HS(I);:NEXT I 160 IF F<>1 THEN 260 170 F=0:Q=RND(1):A$="Do you want instructions(Y/N)?":GOSUB1090 180 A$=INKEY$:IFA$="N" THEN 260 ELSE IF A$="M" THENMENU ELSEIFA$<>"Y" THEN 180 190 ON ERROR GOTO 250 200 OPEN "STARFI.DO" FOR INPUT AS 1:F=0 210 CLS:FOR I=1 TO 8:LINEINPUT#1,A$ 220 IF EOF(1) THEN 240 230 PRINTA$:NEXTI:PRINT @319,"";:CALL4811:GOTO210 240 CLOSE:GOTO130 250 CLOSE:PRINT @120,"Can't find STARFI.DO file!":FORJ=1 TO2000:NEXT J:GOTO130 260 IFQ=0 THEN 270 ELSE A$="Enter three initials...":GOSUB1090:PRINT@225+D*40,"";:INPUT HS$(D):Q=0:PRINT@225+D*40," "; 270 A$="Are you ready to play(Y/N)? ":GOSUB1090 280 A$=INKEY$:IF A$="" THEN 280 ELSE IF A$="N" THEN 1120 ELSE IF A$<>"Y" THEN280 290 X=0:Y=3:P=0:D=0:SC=0:HS=HS(0):P$=CHR$(139):SP$=" " 300 FOR I=0 TO 7:E$(I)=CHR$(169):E(I,0)=39:E(I,1)=INT(RND(3)*7):NEXT I:FORI=5TO7:E$(I)=CHR$(128):NEXT I 310 LD=2:DY=70:T=201 320 CLS:CALL17001:PRINT@280,SPACE$(40);:PRINT@294,"Hi =";HS;:GOSUB330:GOTO430 330 IF LD=INT(SC/100)+2 THEN 420 340 IF LD=6 AND SC<1000 AND SC>400 THEN 420 350 IF LD=7 AND SC<1000 THEN 410 360 IF LD>INT(SC/100)+2 THEN 410 370 IFLD=7 THEN420 380 LD=LD+1:E(LD,0)=39:E(LD,1)=INT(RND(1)*7):IFSN THENSOUND1000,1 390 GOTO 420 400 IFLD<=INT(SC/100)+2 THEN420 410 PRINT@E(LD,1)*40+E(LD,0),SP$;:LD=LD-1:IFSN THENSOUND16300,1 420 CALL17001:PRINT@281,"Sc =";SC;:PRINT@306,"Lvl =";LD-2;:CALL17006:RETURN 430 T=T-1:CALL17001:PRINT@315,T;:CALL 17006:IFT=0 THEN 990 440 PRINT @P,SP$;:P=Y*40+X:IFD>0THEN D=D-1:IF D>0 THEN460 450 PRINT @P,P$; 460 ' MOVE OBJECTS 470 I=0 480 Q=1:IF I>4 THEN Q=2 490 IF I>5 THEN Q=3 500 IFE(I,0)>-1 THENPRINT@E(I,1)*40+E(I,0),SP$; 510 IF E(I,0)=0 THEN SC=SC-20:GOSUB330:IFI>LD THEN 650 520 E(I,0)=E(I,0)-1 530 IF E(I,0)<0 THEN E(I,0)=39:E(I,1)=INT(RND(1)*7) 540 PRINT@E(I,1)*40+E(I,0),E$(I);:IFSN THENSOUND1,1 550 IF E(I,1)<>Y OR D>0 THEN 650 560 IF E(I,0)=X THEN630 570 IF I<5 OR E(I,0)=>X THEN 650 580 IF RND(1)<.75 THEN 650 590 LINE(X*6+3,Y*8+3)-(E(I,0)*6+2,E(I,1)*8+3),1 600 FORJ=0 TO14:PRINT@P,CHR$(255);:IFSN THENSOUND1,1 610 PRINT@P,SP$;:NEXT J:SC=SC-20:D=10:GOSUB330 620 LINE(X*6+3,Y*8+3)-(E(I,0)*6+2,E(I,1)*8+3),0:PRINT@E(I,1)*40+E(I,0),SP$;:GOTO650 630 FORJ=0 TO 14:PRINT@Y*40+X,CHR$(255):IFSN THEN SOUND 1,1 640 PRINT@Y*40+X," ";:NEXTJ:GOSUB330:D=10:E(I,0)=0:GOTO660 650 Q=Q-1:IF Q<>0 THEN500 660 I=I+1:IFI<=LD THEN 480 ELSEIFI<7 THEN FOR J=1TODY:NEXTJ:GOTO660 670 A$=INKEY$:IFA$<>" "ORD>0 THEN 820 680 J=0:E=50:FORI=0 TO LD 690 IFE(I,1)<>Y THEN 720 700 IFE(I,0)5 THENQ=Q*3:IFSC<2000 THENT=T+4 780 SC=SC+Q+1:GOSUB330:IFSN THENSOUND1,1 790 LINE(X*6+3,Y*8+3)-(E(J,0)*6+2,E(J,1)*8+3),0:IFSNTHENSOUND1,1 800 PRINT@E(J,1)*40+E(J,0),SP$;:IFSN THEN SOUND1,1 810 E(J,0)=-1 820 IF A$<>"P" THEN 840 830 A$=INKEY$:IF A$="" THEN830 ELSE 430 840 IF A$<>"T" THEN 860 850 SC=SC+50:GOSUB330 860 IF D>0 THEN 430 870 IF A$="A"THEN Y=Y-1 880 IF A$="Z"THEN Y=Y+1 890 IF A$=","THEN X=X-1 900 IF A$="<"THEN X=X-5 910 IF A$="."THEN X=X+1 920 IF A$=">"THEN X=X+5 930 IF A$=CHR$(27) THEN X=0 940 IF Y<0 THEN Y=0 950 IF Y>6 THEN Y=6 960 IF X<0 THEN X=0 970 IF X>39THEN X=39 980 GOTO430 990 ' TIME T=0 1000 PRINT @131,">>> Game Over <<<" 1010 FOR X=0 TO119:LINE(X,0)-(X,55),1:LINE(239-X,0)-(239-X,55),1:IFSN THENSOUND (X+20)*110,1 1020 NEXTX 1030 Q=0:IF SC<=HS(2) THEN GOTO130 ELSEQ=1:IF SC<=HS(1) THEN I=2:GOTO 1050 1040 IF SC<=HS(0) THEN I=1 ELSE I=0 1050 IF I=2 THEN 1070 1060 FOR J=2 TO I+1 STEP -1:HS(J)=HS(J-1):HS$(J)=HS$(J-1):NEXT J 1070 D=I:HS(D)=SC:HS$(D)=" " 1080 GOTO130 1090 L=LEN(A$):FORI=0 TOL-1:PRINT@120+I,CHR$(169);:IFSN THEN SOUND1,1 1100 FORJ=1 TO 60:NEXTJ:PRINT@120,LEFT$(A$,I+1);:NEXT I 1110 RETURN 1120 CLS:PRINT@171,"Returning to Menu":LINE(60,30)-(170,40),1,B 1130 OPEN "STARHS.DO" FOR OUTPUT AS 1 1140 FOR I=0 TO 2:PRINT #1,HS$(I):PRINT #1,HS(I):NEXT I:CLOSE:MENU