0 ' MAZE3D.BA written for the Model 100 by Tim Ekdom 72575,1473 1 ' Based on Caves of Ice by Robert Tsuk published in COMPUTE! 2 GOTO80 3 CLS:LINE(41,15)-(96,50),1,B:LINE(28,2)-(41,15):LINE(96,15)-(109,2):LINE(28,63)-(41,50):LINE(96,50)-(109,63) 4 LINE(23,2)-(23,63):LINE(114,2)-(114,63):LINE(22,2)-(22,63):LINE(115,2)-(115,63):RETURN 5 X1=61:Y=7:X2=75:FORK=0TO5:LINE(X1,Y-K)-(X2,Y-K):X1=X1-1:X2=X2+1:NEXT:LINE(62,6)-(74,3),2,BF:RETURN 6 X1=61:Y=58:X2=75:FORK=0TO5:LINE(X1,Y+K)-(X2,Y+K):X1=X1-1:X2=X2+1:NEXT:LINE(62,59)-(74,62),2,BF:RETURN 7 LINE(109,15)-(109,63):LINE(108,16)-(104,20):LINE(104,21)-(108,58),1,BF:LINE(105,59)-(108,62),2:RETURN 8 LINE(28,15)-(28,63):LINE(29,16)-(33,20):LINE(29,21)-(33,58),1,BF:LINE(29,62)-(32,59),2:RETURN 9 LINE(60,50)-(76,24),1,BF:X1=64:X2=72:FORY=46TO50:LINE(X1,Y)-(X2,Y),2:X1=X1-1:X2=X2+1:NEXT 10 LINE(61,25)-(63,27),2:LINE(75,25)-(73,27),2:LINE(64,46)-(72,28),2,BF:RETURN 11 RETURN 12 W=6*EW+30*NS+150*U+I:RETURN 13 R=RND(1) 14 IFR<=.3THENPRINT@222,"Sorry, you can't":PRINT@262,"go that way. ";:GOTO21 15 IFR>.3ANDD<=2THEN18 16 IFR>=.3ANDR<.6THENPRINT@222,"You can't walk ":PRINT@262,"through walls!! ";:GOTO21 17 IFR>=.6ANDR<.9THENPRINT@222,"Oops! You bumped":PRINT@262,"into a wall! ";:GOTO21 18 IFR<.9ANDD=1THENPRINT@222,"There's no way ":PRINT@262,"to go up!! ":GOTO21 19 IFR<.9ANDD=2THENPRINT@222,"There's no door ":PRINT@262,"on the floor! ":GOTO21 20 PRINT@222,"Getting ":PRINT@262,"frustrated? " 21 FORN=1TO700:NEXTN 22 PRINT@222,K$;:PRINT@262,K$;:RETURN 23 ONFGOSUB25,26,27,28 24 PRINT@62,"Facing: "P$D$Q$:RETURN 25 D$=" North ":RETURN 26 D$=" South ":RETURN 27 D$=" East ":RETURN 28 D$=" West ":RETURN 29 PRINT@142,"N S E W U D ? * F":RETURN 30 PRINT@150,P$"U"Q$:FORK=1TO20:NEXTK:RETURN 31 PRINT@152,P$"D"Q$:FORK=1TO20:NEXTK:RETURN 32 PRINT@146,P$"E"Q$:FORK=1TO20:NEXTK:RETURN 33 PRINT@148,P$"W"Q$:FORK=1TO20:NEXTK:RETURN 34 PRINT@142,P$"N"Q$:FORK=1TO20:NEXTK:RETURN 35 PRINT@144,P$"S"Q$:FORK=1TO20:NEXTK:RETURN 36 PRINT@154,P$"?"Q$:FORK=1TO40:NEXTK:RETURN 37 PRINT@156,P$"*"Q$:FORK=1TO40:NEXTK:RETURN 38 PRINT@158,P$"F"Q$:FORK=1TO40:NEXTK:RETURN 39 PRINT@222,"Position: ";STR$(EW+1);STR$(NS+1);STR$(U+1):RETURN 40 PRINT@262,"Exit: ";STR$(EE+1);STR$(EN+1);STR$(EU+1):RETURN 41 PRINT@62,"Face which way?":GOSUB29 42 A=INKEY$:IFA=""THEN42 43 IFA="N"ORA="n"THENF=1:GOSUB34:RETURN 44 IFA="S"ORA="s"THENF=2:GOSUB35:RETURN 45 IFA="E"ORA="e"THENF=3:GOSUB32:RETURN 46 IFA="W"ORA="w"THENF=4:GOSUB33:RETURN 47 IFA=CHR$(13)THENRETURN 48 BEEP:GOTO42 49 F=1 50 GOSUB3:FORN=1TO6:I=N:GOSUB12:IFM(W)<>1THEN52 51 J=F(F,N):ONJGOSUB5,6,7,8,9,11 52 NEXT 53 GOSUB23:GOSUB29:D=0 54 IFPTHENGOSUB39 55 IFEXTHENGOSUB40 56 A=INKEY$:IFA=""THEN56 57 IFA="U"ORA="u"THEND=1:GOSUB30:GOTO69 58 IFA="D"ORA="d"THEND=2:GOSUB31:GOTO69 59 IFA="E"ORA="e"THEND=3:GOSUB32:GOTO69 60 IFA="W"ORA="w"THEND=4:GOSUB33:GOTO69 61 IFA="N"ORA="n"THEND=5:GOSUB34:GOTO69 62 IFA="S"ORA="s"THEND=6:GOSUB35:GOTO69 63 IFA="*"ANDP=1THENGOSUB37:P=0:PRINT@222,K$:GOSUB29:GOTO56 64 IFA="?"ANDEX=1THENGOSUB36:EX=0:PRINT@262,K$:GOSUB29:GOTO56 65 IFA="*"THENGOSUB37:P=1:GOSUB39:D=0:A="":GOSUB29:GOTO56 66 IFA="?"THENGOSUB36:EX=1:GOSUB40:D=0:A="":GOSUB29:GOTO56 67 IFA="F"ORA="f"THENGOSUB38:GOSUB41:GOTO50 68 BEEP:GOTO56 69 I=D:GOSUB12 70 IFM(W)=0THENBEEP:GOSUB13:GOSUB29:GOTO54 71 ONDGOTO72,73,74,75,76,77 72 U=U+1:GOTO78 73 U=U-1:GOTO78 74 EW=EW+1:GOTO78 75 EW=EW-1:GOTO78 76 NS=NS+1:GOTO78 77 NS=NS-1 78 IFU<0ORU>4OREW<0OREW>4ORNS<0ORNS>4THEN112 79 GOTO50 80 DEFINTA-Z:DEFSNGR:DEFSTRA,C,T:DIMM(750),F(4,6):C=CHR$(27):K$=C+"K":P$=C+"p":Q$=C+"q":P=0:EX=0 81 KEYOFF:KEY1,"":KEY2,"":KEY3,"":KEY4,"":KEY5,"":KEY8,"" 82 GOSUB3:GOSUB5:GOSUB6:GOSUB7:GOSUB8:GOSUB9 83 KEY(4)ON:KEY(8)ON:ONKEYGOSUB,,,125,,,,124 84 PRINT@65,P$" MAZE 3D "Q$:LINE(150,7)-(203,7):LINE(152,5)-(205,5):LINE(205,6)-(205,13) 85 PRINT@143,"Initializing...":PRINT@223,"Timing starts":PRINT@263,"at the BEEP!"; 86 FORN=1TO4:FORI=1TO6:READF(N,I):NEXT:NEXT 87 FORN=1TOVAL(RIGHT$(TIME$,2)):R=RND(1):NEXT 88 EW=0 89 NS=0 90 U=0 91 IFRND(1)<0.7ANDU<4THENI=1:GOSUB12:M(W)=1 92 IFRND(1)<0.7ANDEW<4THENI=3:GOSUB12:M(W)=1 93 IFRND(1)<0.7ANDNS<4THENI=5:GOSUB12:M(W)=1 94 IFU>0THENU=U-1:I=1:GOSUB12:U=U+1:IFM(W)=1THENI=2:GOSUB12:M(W)=1 95 IFEW>0THENEW=EW-1:I=3:GOSUB12:EW=EW+1:IFM(W)=1THENI=4:GOSUB12:M(W)=1 96 IFNS>0THENNS=NS-1:I=5:GOSUB12:NS=NS+1:IFM(W)=1THENI=6:GOSUB12:M(W)=1 97 U=U+1:IFU<5THEN91 98 NS=NS+1:IFNS<5THEN90 99 EW=EW+1:IFEW<5THEN89 100 EW=RND(1)*5 101 NS=RND(1)*5 102 U=RND(1)*5 103 I=RND(1)*6+1:ONIGOTO104,105,106,107,108,109 104 U=4:GOTO110 105 U=0:GOTO110 106 EW=4:GOTO110 107 EW=0:GOTO110 108 NS=4:GOTO110 109 NS=0 110 GOSUB12:M(W)=1:EE=EW:EN=NS:EU=U 111 EW=RND(1)*5:NS=RND(1)*5:U=RND(1)*5:T1=TIME$:BEEP:GOTO49 112 CLS:T2=TIME$:S1=VAL(RIGHT$(T1,2)):M1=VAL(MID$(T1,4,2)):S2=VAL(RIGHT$(T2,2)):M2=VAL(MID$(T2,4,2)) 113 IFS2