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