0 'Club 100 Library, Modem 415-939-1246 1 'MAZE3D.BA adapted by Tim Peters from Tim Ekdom's MAZE3D.BA, in turn based on Caves of Ice by Robert Tsuk, published in COMPUTE! 10 GOTO47 11 P1=I:P2=J:P3=K 12 IFD=1THENOK=P20:P2=P2-1ELSEIFD=3THENOK=P10:P1=P1-1ELSEIFD=5THENOK=P30:P3=P3-1 13 RETURN 14 CLS:LINE(41,15)-(96,50),1,B:LINE(27,1)-(41,15):LINE(96,15)-(110,1):LINE(28,63)-(41,50):LINE(96,50)-(109,63):LINE(114,1)-(115,63),1,B:LINE(22,1)-(23,63),1,B:RETURN 15 LINE(60,50)-(76,24),1,BF:FORB=0TO5:LINE(64-B,46+B)-(72+B,46+B),2:NEXT:LINE(61,25)-(63,27),2:LINE(75,25)-(73,27),2:LINE(64,46)-(72,28),2,BF:RETURN 16 RETURN 17 LINE(109,15)-(109,63):LINE(108,16)-(104,20):LINE(104,21)-(108,58),1,BF:LINE(105,59)-(108,62),2:RETURN 18 LINE(28,15)-(28,63):LINE(29,16)-(33,20):LINE(29,21)-(33,58),1,BF:LINE(29,62)-(32,59),2:RETURN 19 FORB=0TO5:LINE(61-B,7-B)-(75+B,7-B):NEXT:LINE(62,6)-(74,3),2,BF:RETURN 20 FORB=0TO5:LINE(61-B,58+B)-(75+B,58+B):NEXT:LINE(62,59)-(74,62),2,BF:RETURN 21 A=INKEY$:IFA=""THEN21ELSEIFA<"a"ORA>"z"THENRETURNELSEA=CHR$(ASC(A)-32):RETURN 22 R=RND(1):GOSUB23:PRINT@222,A1;K$:PRINT@262,A2;K$:FORB=1TO900:NEXT:PRINT@222,K$:PRINT@262,K$:RETURN 23 IFR<.3THENA1="Sorry, you can't":A2="go that way.":RETURN 24 IFD<5THENIFR<.6THENA1="You can't walk":A2="through walls!!":RETURNELSEIFR<.9THENA1="Oops! You bumped":A2="into a wall!":RETURN 25 IFR<.9ANDD=5THENA1="There's no way":A2="to go up!!":RETURN 26 IFR<.9ANDD=6THENA1="There's no door":A2="on the floor!":RETURN 27 A1="Getting":A2="frustrated?":RETURN 28 IFF=1THEND$="North"ELSEIFF=2THEND$="South"ELSEIFF=3THEND$="East"ELSED$="West 29 PRINT@62,"Facing: "P$" "D$" "Q$:RETURN 30 PRINT@142,H$:RETURN 31 K=I+I-2:PRINT@142+K,P$MID$(H$,K+1,1)Q$:FORB=1TO40:NEXT:RETURN 32 PRINT@222,"Position: "STR$(P1+1)STR$(P2+1)STR$(P3+1):RETURN 33 PRINT@262,"Exit: "STR$(E1+1)STR$(E2+1)STR$(E3+1):RETURN 34 PRINT@62,"Face which way?":GOSUB30 35 GOSUB21:IFA=CHR$(13)THENRETURN 36 I=INSTR("NSEW",A):IFITHENF=I:GOTO31ELSEBEEP:GOTO35 37 F=1 38 GOSUB14:FORN=1TO6:IFM(P1,P2,P3)ANDP(N)THENONF(F,N)GOSUB15,16,17,18,19,20 39 NEXT:GOSUB28:GOSUB30 40 IFPTHENGOSUB32 41 IFEXTHENGOSUB33 42 GOSUB21:I=INSTR("NSEWUD?*F",A):IFITHENGOSUB31ELSEBEEP:GOTO42 43 D=I:IFD<7THENIFM(P1,P2,P3)ANDP(D)THENGOSUB12:IFOKTHEN38ELSE55ELSEBEEP:GOSUB22:GOSUB30:GOTO40 44 IFD=7THENEX=NOTEX:IFEXTHENGOSUB33ELSEPRINT@262,K$ 45 IFD=8THENP=NOTP:IFPTHENGOSUB32ELSEPRINT@222,K$ 46 IFD=9THENGOSUB34:GOTO38ELSEGOSUB30:GOTO42 47 DEFINTA-Z:DEFSNGR:DEFSTRA:CLS:DIMD,B,P1,P2,P3:Z1=5:INPUT"Maze size";Z1:Z3=Z1^3:Z=Z1-1:M=Z3/3+40:DIMM(Z,Z,Z),I(M),J(M),K(M),P(6),D(5),F(4,6):A=CHR$(27):FORI=1TO6:P(I)=2^I:NEXT 48 K$=A+"K":P$=A+"p":Q$=A+"q":GOSUB14:GOSUB15:GOSUB17:GOSUB18:GOSUB19:GOSUB20:KEY(4)ON:KEY(8)ON:ONKEYGOSUB,,,59,,,,58:PRINT@65,P$" MAZE 3D "Q$:LINE(150,7)-(203,7):LINE(152,5)-(205,5) 49 LINE(205,6)-(205,13):PRINT@143,"Initializing...":PRINT@223,"Timing starts":PRINT@263,"at the BEEP!";:FORN=1TO4:FORI=1TO6:READF(N,I):NEXT:NEXT 50 FORB=1TO(FRE(0)+VAL(RIGHT$(TIME$,2)))MOD200:R=RND(1):NEXT:B=1:FORG=1TOZ3:PRINT@182,G"of"Z3:D=RND(1)*B:B=B-1:I=I(D):I(D)=I(B):J=J(D):J(D)=J(B):K=K(D):K(D)=K(B):N=0:FORD=1TO6:GOSUB11 51 IFOKTHENM=M(P1,P2,P3):IFMAND128THEND(N)=D:N=N+1ELSEIFM=0THENM(P1,P2,P3)=1:I(B)=P1:J(B)=P2:K(B)=P3:B=B+1 52 NEXT:D=D(RND(1)*N):M(I,J,K)=P(D)OR128:IFNTHENGOSUB11:M(P1,P2,P3)=M(P1,P2,P3)ORP((D-1XOR1)+1) 53 NEXT:E1=RND(1)*Z1:E2=RND(1)*Z1:E3=RND(1)*Z1:D=RND(1)*6+1:IFD=1THENE2=ZELSEIFD=2THENE2=0ELSEIFD=3THENE1=ZELSEIFD=4THENE1=0ELSEIFD=5THENE3=ZELSEE3=0 54 M(E1,E2,E3)=M(E1,E2,E3)ORP(D):P1=RND(1)*Z1:P2=RND(1)*Z1:P3=RND(1)*Z1:BEEP:AB=TIME$:H$="N S E W U D ? * F ":GOTO37 55 CLS:A=TIME$:I=VAL(RIGHT$(A,2))-VAL(RIGHT$(AB,2)):J=VAL(MID$(A,4))-VAL(MID$(AB,4)):IFI<0THENI=I+60:J=J-1 56 K=1:PRINT@250,"Time to win ="STR$(J-60*(J<0))":"RIGHT$(STR$(100+I),2):A=" YOU WIN!! ":FORB=1TO29:SOUND(7750+K*B*250),5:IFK<0THENPRINT@174,AELSEPRINT@174,P$A;Q$ 57 K=-K:NEXT:CLS:PRINT@125,"Play again? (Y/N)";:GOSUB21:IFA="Y"THENRUN 58 MENU 59 RUN:DATA1,2,3,4,5,6,2,1,4,3,5,6,4,3,1,2,5,6,3,4,2,1,5,6