10 REM Secret Maze 20 REM (C) 1995 Jon Ripley 30 REM Mini-Adventure Player 40 REM (C) 1995 Jon Ripley 50 REM DO NOT ALTER this program or use any part of it within your own programs 60 REM Created using the Mini-Adventure creator (C) 1995 Jon Ripley 70 IF PAGE<>&1D00 :PAGE=&1D00:CHAIN"SctMaze" 80 MODE7 90 *FX200,3 100 LOMEM=TOP+&80:FORZ%=0TO&7D:Z%?&482=Z%?TOP:NEXT:?2=?(TOP+&7E):?3=?(TOP+&7F) 110 PROCinit 120 REPEAT 130 IF oldroom=-2 PROCwrap(advname$):PRINT:PROCwrap(welcome$):PRINT'"Press any key to begin the adventure...";:IFGET 140 IF room<>oldroom PROCdescribe 150 strength=strength-1 160 IF (endroom=0 AND score>=winscore) OR (endroom=room AND winscore=0) OR (endroom=room AND score>=winscore) PRINT"Congratulations!"':PROCwrap(win$):REPEATUNTILGET:CALL!-4 170 IFstrength<1 PROCend 180 REPEAT 190 INPUTLINE"?"b$ 200 IFb$="" PRINT"Eh?" 210 UNTILb$<>"" 220 IF INSTR(b$," ")=0 b$=b$+" " 230 a$=LEFT$(b$,INSTR(b$," ")-1) 240 b$=MID$(b$,INSTR(b$," ")+1) 250 ct=0 260 FORt=1TO13 270 IFINSTR(m$(t),a$)=1 ct=t:t=14 280 NEXT 290 IFct=0PRINT"Not possible.":UNTILFALSE 300 IFct<7 IF exit(room,ct)>0 room=exit(room,ct):oldroom=-1:UNTILFALSE 310 IFct<7 PRINT"Can't move that way" 320 IFct=7 PROCtake 330 IFct=8 PROCdrop 340 IFct=9 PROCunlock 350 IFct=11 PROCinv 360 IFct=12 oldroom=-1 370 IFct=13 PRINT"Score...";score'"Strength...";strength 380 UNTIL ct=10 390 PROCend 400 DEFPROCdescribe 410 oldroom=room 420 CLS 430 PROCwrap("You are "+room$(room)) 440 PRINT'"There are exit(s):" 450 x$="" 460 FORt=1TO6 470 IFexit(room,t)>0 x$=x$+m$(t)+"..." 480 IFexit(room,t)<0 x$=x$+m$(t)+" through a door..." 490 NEXT 500 PROCwrap(x$) 510 PRINT'"You can see:" 520 x$="" 530 FORt=1TOobjects 540 IFobject(t,1)=room x$=x$+object$(t)+", " 550 NEXT 560 IF x$="" PRINT"Nothing." ELSE PROCwrap(LEFT$(x$,LENx$-2)+".") 570 PRINT 580 ENDPROC 590 DEFPROCtake 600 inv=0 610 FORt=1TOobjects 620 IF b$=object$(t) AND object(t,1)=room AND object(t,2)=1 takable=TRUE ELSE takable=FALSE 630 IF takable=TRUE AND object(t,4)>=0 object(t,1)=0:inv=1:score=score+object(t,4) 640 IF takable=TRUE AND object(t,4)<0 strength=strength-ABSobject(t,4):PRINT"Ouch!":inv=2 650 NEXT 660 IF inv=1 oldroom=-1:ENDPROC 670 IF inv=0 PRINT"Not possible." 680 ENDPROC 690 DEFPROCdrop 700 inv=0 710 FORt=1TOobjects 720 IF b$=object$(t) AND object(t,1)=0 object(t,1)=room:inv=1:score=score-object(t,4) 730 NEXT 740 IFinv=1 oldroom=-1:ENDPROC 750 PRINT"Not possible." 760 ENDPROC 770 DEFPROCinv 780 PRINT"You have the following..." 790 obs=FALSE 800 FORt=1TOobjects 810 IFobject(t,1)=0 PRINTobject$(t)":";:obs=TRUE 820 NEXT 830 IF obs PRINT ELSE PRINT"Nothing." 840 ENDPROC 850 DEFPROCunlock 860 IF b$<>"DOOR" PRINT"Unlock what?":ENDPROC 870 doors=0 880 FOR x=1 TO 6 890 IF exit(room,x)<0 doors=doors+1:IF object(-exit(room,x),1)=0 exit(room,x)=object(-exit(room,x),3):PROCwrap("Opened the "+m$(x)+" door."):oldroom=-1 900 IF exit(room,x)<0 IF object(-exit(room,x),1)<>0 PROCwrap("You don't have the key for the "+m$(x)+" door.") 910 NEXT 920 IF doors=0 PRINT"There are no doors here to open." 930 ENDPROC 940 DEFPROCend 950 PROCwrap(lose$) 960 PRINT"Goodbye..." 970 REPEATUNTILGET 980 CALL!-4 990 DEFPROCinit 1000 FORt=1TO13:READm$(t):NEXT 1010 ENDPROC 1020 DATA NORTH,SOUTH,EAST,WEST,UP,DOWN,TAKE,DROP,UNLOCK,QUIT,INVENTORY,LOOK,SCORE 1030 DEFPROCwrap(a$):LOCAL p,a:IF a$<>"" a=39 ELSE ENDPROC 1040 a$=a$+" " 1050 REPEAT 1060 p=a+1 1070 REPEATp=p-1:UNTILMID$(a$,p,1)=" "ORp=1 1080 IFp=1 p=LENa$ 1090 PRINTLEFT$(a$,p):a$=MID$(a$,p+1) 1100 UNTILa$="" 1110 ENDPROC