5 GOTO 200 10 CLS:LINE(41,15)-(96,50),1,B 11 LINE(28,2)-(41,15):LINE(96,15)-(109,2):LINE(28,63)-(41,50):LINE(96,50)-(109,63) 12 LINE(23,2)-(23,63):LINE(114,2)-(114,63) 13 LINE(22,2)-(22,63):LINE(115,2)-(115,63):RETURN 15 X1=61:Y1=7:X2=75 16 FOR K=0 TO 5:LINE(X1,Y1-K)-(X2,Y1-K):X1=X1-1:X2=X2+1:NEXT K 17 LINE(62,6)-(74,3),2,BF:RETURN 20 X1=61:Y1=58:X2=75 21 FOR K=0 TO 5:LINE(X1,Y1+K)-(X2,Y1+K):X1=X1-1:X2=X2+1:NEXT K 22 LINE(62,59)-(74,62),2,BF:RETURN 25 LINE(109,15)-(109,63):LINE(108,16)-(104,20) 26 LINE(104,21)-(108,58),1,BF:LINE(105,59)-(108,62),2:RETURN 30 LINE(28,15)-(28,63):LINE(29,16)-(33,20) 31 LINE(29,21)-(33,58),1,BF:LINE(29,62)-(32,59),2:RETURN 35 LINE(60,50)-(76,24),1,BF 36 X1=64:X2=72:FOR Y1=46 TO 50:LINE(X1,Y1)-(X2,Y1),2:X1=X1-1:X2=X2+1:NEXT Y1 37 LINE(61,25)-(63,27),2:LINE(75,25)-(73,27),2 38 LINE(64,46)-(72,28),2,BF:RETURN 40 RETURN 45 WA=6*EW+30*NS+150*UD+I:RETURN 50 GOSUB59:RA!=RND(1) 51 IF RA!<=.3 THEN LOCATE22,5:PRINT"Sorry, you can't":LOCATE22,6:PRINT"go that way. ";:GOTO 58 52 IF RA!>.3 AND DI<=2 THEN 55 53 IF RA!>=.3 AND RA!<.6 THEN LOCATE22,5:PRINT"You can't walk ":LOCATE22,6:PRINT"through walls!! ";:GOTO 58 54 IF RA!>=.6 AND RA!<.9 THEN LOCATE22,5:PRINT"Oops! You bumped":LOCATE22,6:PRINT"into a wall! ";:GOTO 58 55 IF RA!<.9 AND DI=1 THEN LOCATE22,5:PRINT"There's no way ":LOCATE22,6:PRINT"to go up!! ":GOTO 58 56 IF RA!<.9 AND DI=2 THEN LOCATE22,5:PRINT"There's no door ":LOCATE22,6:PRINT"on the floor! ":GOTO 58 57 LOCATE22,5:PRINT"Getting ":LOCATE22,6:PRINT"frustrated? " 58 FOR N=1 TO 700:NEXT N 59 LOCATE21,5:PRINTSPACE$(19);:LOCATE21,6:PRINTSPACE$(19);:RETURN 60 ON FA GOSUB 62,63,64,65 61 LOCATE22,1:PRINT"Facing: "P$DR$Q$:RETURN 62 DR$=" North ":RETURN 63 DR$=" South ":RETURN 64 DR$=" East ":RETURN 65 DR$=" West ":RETURN 70 LOCATE22,3:PRINT"N S E W U D ? * F":RETURN 71 LOCATE30,3:PRINTP$"U"Q$:FOR K=1 TO 20:NEXT K:RETURN 72 LOCATE32,3:PRINTP$"D"Q$:FOR K=1 TO 20:NEXT K:RETURN 73 LOCATE26,3:PRINTP$"E"Q$:FOR K=1 TO 20:NEXT K:RETURN 74 LOCATE28,3:PRINTP$"W"Q$:FOR K=1 TO 20:NEXT K:RETURN 75 LOCATE22,3:PRINTP$"N"Q$:FOR K=1 TO 20:NEXT K:RETURN 76 LOCATE24,3:PRINTP$"S"Q$:FOR K=1 TO 20:NEXT K:RETURN 77 LOCATE34,3:PRINTP$"?"Q$:FOR K=1 TO 40:NEXT K:RETURN 78 LOCATE36,3:PRINTP$"*"Q$:FOR K=1 TO 40:NEXT K:RETURN 79 LOCATE38,3:PRINTP$"F"Q$:FOR K=1 TO 40:NEXT K:RETURN 80 LOCATE21,5:PRINT"You're";STR$(1+ABS(EW-EE)+ABS(NS-EN)+ABS(UD-EU));" from exit":RETURN 85 LOCATE22,6:PRINT"Exit: ";STR$(EE+1);STR$(EN+1);STR$(EU+1):RETURN 90 LOCATE22,1:PRINT"Face which way?":GOSUB 70 91 A$=INKEY$:IF A$="" THEN 91 92 IF A$="N" OR A$="n" THEN FA=1:GOSUB 75:RETURN 93 IF A$="S" OR A$="s" THEN FA=2:GOSUB 76:RETURN 94 IF A$="E" OR A$="e" THEN FA=3:GOSUB 73:RETURN 95 IF A$="W" OR A$="w" THEN FA=4:GOSUB 74:RETURN 96 IF A$=CHR$(13) THEN RETURN 97 BEEP:GOTO 91 100 FA=1 102 GOSUB 10 104 FOR N=1 TO 6:I=N 106 GOSUB 45 108 IF MZ(WA)<>1 THEN 112 110 J=FC(FA,N):ON J GOSUB 15,20,25,30,35,40 112 NEXT N 114 GOSUB 60:GOSUB 70:DI=0 115 IF PO THEN GOSUB 80 116 IF EX THEN GOSUB 85 117 A$=INKEY$:IF A$="" THEN 117 118 IF A$="U" OR A$="u" THEN DI=1:GOSUB 71:GOTO 142 120 IF A$="D" OR A$="d" THEN DI=2:GOSUB 72:GOTO 142 122 IF A$="E" OR A$="e" THEN DI=3:GOSUB 73:GOTO 142 124 IF A$="W" OR A$="w" THEN DI=4:GOSUB 74:GOTO 142 126 IF A$="N" OR A$="n" THEN DI=5:GOSUB 75:GOTO 142 128 IF A$="S" OR A$="s" THEN DI=6:GOSUB 76:GOTO 142 130 IF A$="*" AND PO=1 THEN GOSUB 78:PO=0:LOCATE21,5:PRINTSPACE$(19):GOSUB 70:GOTO 117 132 IF A$="?" AND EX=1 THEN GOSUB 77:EX=0:LOCATE22,6:PRINTSPACE$(16):GOSUB 70:GOTO 117 134 IF A$="*" THEN GOSUB 78:PO=1:GOSUB 80:DI=0:A$="":GOSUB 70:GOTO 117 136 IF A$="?" THEN GOSUB 77:EX=1:GOSUB 85:DI=0:A$="":GOSUB 70:GOTO 117 138 IF A$="F" OR A$="f" THEN GOSUB 79:GOSUB 90:GOTO 102 139 IFA$=CHR$(26)THENA1$=INKEY$:IFA1$=CHR$(28)THEN315ELSE316 140 BEEP:GOTO 117 142 I=DI:GOSUB 45 144 IF MZ(WA)=0 THEN BEEP:GOSUB 50:GOSUB 70:GOTO 115 146 ON DI GOTO 148,150,152,154,156,158 148 UD=UD+1:GOTO 160 150 UD=UD-1:GOTO 160 152 EW=EW+1:GOTO 160 154 EW=EW-1:GOTO 160 156 NS=NS+1:GOTO 160 158 NS=NS-1 160 IF UD<0 OR UD>4 OR EW<0 OR EW>4 OR NS<0 OR NS>4 THEN 300 162 GOTO 102 200 SCREEN,0:DEFINT A-Z:DIM MZ(750),FC(4,6):P$=CHR$(27)+"p":Q$=CHR$(27)+"q":PO=0:EX=0 201 FORN=1TO10:KEYN,"":NEXT 202 GOSUB10:GOSUB15:GOSUB20:GOSUB25:GOSUB30:GOSUB35 203 KEY5,CHR$(26)+CHR$(27)+"Run":KEY10,CHR$(26)+CHR$(28)+"Menu":PRINTCHR$(27)"V" 204 LOCATE25,1:PRINTP$" MAZE 3D "Q$:LINE(150,7)-(203,7):LINE(152,5)-(205,5):LINE(205,6)-(205,13) 206 LOCATE23,3:PRINT"Initializing...":LOCATE23,5:PRINT"Timing starts":LOCATE23,6:PRINT"at the BEEP!"; 208 FOR N=1 TO 4:FOR I=1 TO 6:READ FC(N,I):NEXT I:NEXT N 210 FOR N=1 TO VAL(RIGHT$(TIME$,2)) 212 RA!=RND(1) 214 NEXT N 216 EW=0 218 NS=0 220 UD=0 222 IF RND(1)<.7 AND UD<4 THEN I=1:GOSUB 45:MZ(WA)=1 224 IF RND(1)<.7 AND EW<4 THEN I=3:GOSUB 45:MZ(WA)=1 226 IF RND(1)<.7 AND NS<4 THEN I=5:GOSUB 45:MZ(WA)=1 228 IF UD>0 THEN UD=UD-1:I=1:GOSUB 45:UD=UD+1:IF MZ(WA)=1 THEN I=2:GOSUB 45:MZ(WA)=1 230 IF EW>0 THEN EW=EW-1:I=3:GOSUB 45:EW=EW+1:IF MZ(WA)=1 THEN I=4:GOSUB 45:MZ(WA)=1 232 IF NS>0 THEN NS=NS-1:I=5:GOSUB 45:NS=NS+1:IF MZ(WA)=1 THEN I=6:GOSUB 45:MZ(WA)=1 234 UD=UD+1:IF UD<5 THEN 222 236 NS=NS+1:IF NS<5 THEN 220 238 EW=EW+1:IF EW<5 THEN 218 240 EW=RND(1)*5 242 NS=RND(1)*5 244 UD=RND(1)*5 246 I=RND(1)*6+1:ON I GOTO 248,250,252,254,256,258 248 UD=4:GOTO 260 250 UD=0:GOTO 260 252 EW=4:GOTO 260 254 EW=0:GOTO 260 256 NS=4:GOTO 260 258 NS=0 260 GOSUB 45:MZ(WA)=1:EE=EW:EN=NS:EU=UD 262 EW=RND(1)*5 264 NS=RND(1)*5 266 UD=RND(1)*5 268 T1$=TIME$:BEEP:PO=1:GOTO 100 300 CLS 301 T2$=TIME$ 302 S1=VAL(RIGHT$(T1$,2)):M1=VAL(MID$(T1$,4,2)):S2=VAL(RIGHT$(T2$,2)):M2=VAL(MID$(T2$,4,2)) 303 IF S2