10BP=0:FI$="E:DOTACTTR.SAV":WT=2 20LV=1:LD=0 30CLS :RANDOMIZE 40PRINT "--DOT ACTION TREASURES--" 50PRINT " 46 :MOVE 789:JUMP" 60PRINT " 5>1-9:DOTSEL 5>S:SAVE" 70PRINT "":PRINT "ENTER:START L:LOAD 80LOCATE 0,5:PRINT "0:BEEP["; STR$ BP;"] 1-9:LEVEL["; STR$ LV;"]"; 90IF INKEY$ <>"" THEN 90 100Z= ASC ( INKEY$ ):IF Z=0 THEN 100 110IF Z>48 AND Z<58 THEN LV=Z-48 120IF Z=13 THEN 160 130IF Z=76 THEN 980 140IF Z=48 THEN BP=BP+1:IF BP>1 THEN BP=0 ELSE BEEP BP,20,200 150GOTO 80 160BEEP BP,20,200 170IF LV=1 THEN TM=5:XM=24:DM=3:SC=5 180IF LV=2 THEN TM=10:XM=31:DM=3:SC=4 190IF LV=3 THEN TM=3:XM=31:DM=1:SC=4 200IF LV=4 THEN TM=20:XM=41:DM=4:SC=3 210IF LV=5 THEN TM=5:XM=41:DM=1:SC=3 220IF LV=6 THEN TM=30:XM=41:DM=7:SC=3 230IF LV=7 THEN TM=20:XM=62:DM=7:SC=2 240IF LV=8 THEN TM=10:XM=62:DM=1:SC=2 250IF LV=9 THEN TM=40:XM=62:DM=17:SC=2 260YM= INT (48/SC):JM=SC*2+3 270LOCATE 0,4:PRINT "LEVEL:"; STR$ LV;", "; STR$ TM;" TREASURES." 280PRINT "START YOUR ADVENTURE..." 290DIM TR(TM):TR(TM)=-1 300DIM MV(9):MV(1)=-1:MV(2)=0:MV(3)=1:MV(4)=-1:MV(5)=0:MV(6)=1:MV(7)=-1:MV(8)=0:MV(9)=1 310DIM MY(9):MY(1)=1:MY(2)=1:MY(3)=1:MY(4)=0:MY(5)=0:MY(6)=0:MY(7)=-1:MY(8)=-1:MY(9)=-1 320IF LD=1 THEN 1010 330FOR A=0 TO TM-1:TR(A)= RND XM-1 340IF A>0 THEN FOR B=0 TO A-1:IF TR(A)=TR(B) THEN A=A-1:B=999:NEXT ELSE NEXT 350NEXT 360IF TM=1 THEN 400 370FOR A=0 TO TM-2:FOR B=A+1 TO TM-1 380IF TR(A)>TR(B) THEN C=TR(A):TR(A)=TR(B):TR(B)=C 390NEXT :NEXT 400IF A>=999 THEN 370 410CLS 420B=0:FOR X=0 TO XM-1:FOR A=0 TO DM-1 430Y= RND (YM-1):IF POINT (X*SC,Y*SC)=1 THEN 430 440GOSUB *PS 450NEXT :IF TR(B)=X THEN TR(B)=TR(B)+Y*256:B=B+1 460NEXT 470X= INT (XM*SC*0.5):Y=0:DP=0 480XB=XM*SC:LINE (XB,0)-(XB,47):XB=-1 490LOCATE 21,0:PRINT CHR$ (129+6*DP) 500GOSUB *TRP:JF=99 510BEEP BP,17,700 520Z= ASC ( INKEY$ ) 530IF Z=0 AND JF=0 THEN 520 540IF Z<48 OR Z>57 THEN 570 ELSE IF Z=53 AND JF=0 THEN 620 550IF Z>54 THEN IF JF=0 THEN JF=1 560X=X+MV(Z-48):IF POINT (X,Y)<>0 OR POINT (X,Y-1)<>0 THEN X=XB 570IF JF>0 THEN JF=JF+1 ELSE IF POINT (X,Y+1)<>1 THEN JF=100 ELSE 600 580IF JF0 THEN Y=Y+1:JF=100 590IF JF>JM+2 THEN Y=Y+1:IF POINT (X,Y)=1 THEN JF=0:Y=Y-1 ELSE IF Y>50 THEN 920 600PSET (XB,YB),X:PSET (XB,YB-1),X:PSET (X,Y),X:WAIT WT:PSET (X,Y-1),X:WAIT 0:XB=X:YB=Y 610GOTO 520 620XC=X:YC=Y:X= INT (X/SC):Y= INT (Y/SC) 630GOSUB *PX 640BEEP BP,20,100 650IF INKEY$ <>"" THEN 650 660LINE (X*SC-1-SC,Y*SC-1-SC)-((X+2)*SC,(Y+2)*SC),X,B 670LINE (X*SC-1-SC,Y*SC-1-SC)-((X+2)*SC,(Y+2)*SC),X,B 680Z= ASC INKEY$ 690IF Z=83 AND JF=0 THEN 1090 700IF Z<48 OR Z>57 THEN 660 710IF Z=53 THEN 800 720Z=Z-48:XN=(X+MV(Z))*SC:YN=(Y+MY(Z))*SC:IF X+MV(Z)>=XM THEN 660 730IF DP=1 THEN 750 740IF POINT (XN,YN)=1 THEN GOSUB *PXX:DP=1:JF=99:BEEP BP,15,100:BEEP BP,13,120:GOTO 760 ELSE 660 750IF POINT (XN,YN)=0 THEN GOSUB *PXX:DP=0:BEEP BP,13,110:BEEP BP,15,110:GOTO 800 ELSE 660 760ZM=X+MV(Z)+(Y+MY(Z))*256:FOR A=0 TO TM-1:IF TR(A)=ZM THEN TR(A)=-1:A=999:NEXT ELSE NEXT 770IF A<999 THEN 800 780FOR B=0 TO 5:FOR A=0 TO 10:BEEP BP,20-A,50:NEXT :LINE (XC-6,YC-6)-(XC+6,YC+6),X,BF:NEXT 790DP=0:TG=TG+1:GOSUB *TRP:IF TG=TM THEN 840 800LOCATE 21,0:PRINT CHR$ (129+6*DP) 810IF INKEY$ <>"" THEN 810 820GOSUB *PX:X=XC:Y=YC 830GOTO 600 840LOCATE 0,0 850PRINT "CONGRATULATIONS!! 860PRINT "LEVEL:"; STR$ LV;" CLEAR!!":PRINT "" 870PRINT "YOU GOT ALL TREASURES!! 880PRINT "THE GAME IS OVER." 890FOR B=0 TO 5:FOR A=0 TO 10 STEP 2:BEEP BP,20-A,200:NEXT :NEXT 900IF LV<9 THEN END 910X= RND 142:Y= RND 46:FOR C=0 TO 1:FOR B=2 TO 7:BEEP BP,10+(7-B)*2,20:FOR A=1 TO 9:PSET (X+MV(A)*B,Y+MY(A)*B),X:NEXT :NEXT :NEXT :IF INKEY$ ="" THEN 910 ELSE END 920LOCATE 0,0 930PRINT "OH NO! YOU DIED!" 940PRINT "" 950PRINT "THE GAME IS OVER." 960FOR A=0 TO 90:BEEP BP,A,20:NEXT 970END 980CLS :LD=1:OPEN FI$ FOR INPUT AS #2 990INPUT #2,LV,TG,XB,YB,DP 1000GOTO 160 1010FOR A=0 TO TM-1:INPUT #2,TR(A):NEXT 1020X=0:Y=0:ZZ$="":CLS :LOCATE 21,0:PRINT "LV"; STR$ LV 1030IF ZZ$="" THEN INPUT #2,ZZ$ 1040Z= ASC ( LEFT$ (ZZ$,1))-58:ZZ$= RIGHT$ (ZZ$, LEN ZZ$-1):FOR A=0 TO 6 1050IF (Z AND 1)=1 THEN GOSUB *PS 1060Z=Z/2:Y=Y+1:IF Y=YM THEN Y=0:X=X+1 1070NEXT :IF X15 THEN PRINT #2,ZZ$:ZZ$="" 1170LOCATE 21,1:PRINT RIGHT$ (" "+ STR$ (XM-X),3):IF A<9 THEN 1140 1180IF LEN ZZ$>0 THEN PRINT #2,ZZ$ 1190CLOSE #2:LOCATE 0,0:PRINT "SAVE COMPLETE." 1200BEEP BP,20,500:END 1210*PS:LINE (X*SC,Y*SC)-(X*SC+SC-1,Y*SC+SC-1),BF:RETURN 1220*PX:LINE (X*SC,Y*SC)-(X*SC+SC-1,Y*SC+SC-1),X,BF:RETURN 1230*PXX:LINE ((X+MV(Z))*SC,(Y+MY(Z))*SC)-((X+MV(Z))*SC+SC-1,(Y+MY(Z))*SC+SC-1),X,BF:RETURN 1240*TRP:FOR AA=0 TO TM-1:AX=125+AA*2-( INT (AA/10)*20):AY= INT (AA/10)*9+10 1250PSET (AX,AY+6):IF TR(AA)=-1 THEN LINE (AX,AY)-(AX,AY+4) 1260NEXT :LOCATE 22,0:PRINT RIGHT$ (" "+ STR$ (TM-TG),2):RETURN