-
Notifications
You must be signed in to change notification settings - Fork 0
/
quinti-maze.bas
111 lines (111 loc) · 6.92 KB
/
quinti-maze.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
1 DATA 201,84,208,15,32,177,0,32,248, 230,138,72,32,183,0,201,44,240,3,76,201,222,32,177,0,32,248,230
2 FOR I = 768 TO 833: READ P: POKE I,P: NEXT I
3 DATA 104,134,3,134,1,133,0,170,160,1,132,2,173,48,192,136,208,4,198
4 DATA 1,240,7,202,208,246,166,0,208,239,165,3,133,1,198,2,208,241,96
5 POKE 1013,76: POKE 1014,0: POKE 1015,3
10 TEXT : HOME
90 GOSUB 2000
100 DIM FC(5,7): DIM FC$(5)
105 FC$(1) = "NORTH": FC$ (2) = "SOUTH":FC$(3) = "EAST":FC$(4) = "WEST"
110 FOR B = 1 TO 4: FOR I = 1 TO 6: READ FC(B,I): NEXT : NEXT
115 GOTO 155
120 HPLOT 0,0 TO 279,0 TO 279,159 TO 0,159 TO 0,0 TO 69,29 TO 209,29 TO 209,129 TO 69,129 TO 69,29: HPLOT 209,29 TO 279,0: HPLOT 209,129 TO 279,159: HPLOT 69,129 TO 0,159: RETURN
125 RETURN
130 HPLOT 109,9 TO 169,9 TO 159,19 TO 119,19 TO 109,9: HPLOT 119,19 TO 119,9: HPLOT 159,19 TO 159,9: RETURN
135 HPLOT 119,139 TO 159,139 TO 169,149 TO 109,149 TO 119,139: HPLOT 119,139 TO 119,149: HPLOT 159,139 TO 159,149: RETURN
140 HPLOT 19,39 TO 49,49 TO 49,139: HPLOT 19,149 TO 19,39: HPLOT 19,139 TO 49,139: HPLOT 19,49 TO 49,49: RETURN
145 HPLOT 119,59 TO 159,59 TO 159,129 TO 119,129 TO 119,59 TO 129,69 TO 149,69 TO 149,119 TO 129,119 TO 129,69: HPLOT 149,69 TO 159,59: HPLOT 149,119 TO 159,129: HPLOT 129,119 TO 119,129: RETURN
150 HPLOT 229,49 TO 259,39 TO 259,149:HPLOT 229,139 TO 229,49: HPLOT 229,49 TO 259,49: HPLOT 229,139 TO 259,139: RETURN
155 DIM S$(6,6)
160 INPUT "RESTART OLD MAZE ";Y$: IF LEFT$(Y$,1) = "Y" THEN 1360
165 FOR A = 1 TO 5: FOR X = 1 TO 5: FOR Y = 1 TO 5
167 & T10 * A + 10 * X + 10 * Y,10
170 IF A < > 5 AND RND (1) < .80 THEN S$(X,A) = S$(X,A) + "0": GOTO 180
175 S$(X,A) = S$(X,A) + "X"
180 IF MID$ (S$(X,A - 1),(Y - 1) * 6 + 1,1) = "0" THEN S$(X,A) = S$(X,A) + "0": GOTO 190
185 S$(X,A) = S$(X,A) + "X"
190 IF Y - 2 < 0 THEN 200
195 IF MID$ (S$(X,A),(Y - 2) * 6 + 4,1) = "0" THEN S$(X,A) = S$(X,A) + "0": GOTO 205
200 S$(X,A) = S$(X,A) + "X"
205 IF Y < > 5 AND RND (1) < .8 THEN S$(X,A) = S$(X,A) + "0": GOTO 215
210 S$(X,A) = S$(X,A) + "X"
215 IF X < > 5 AND RND (1) < .8 THEN S$(X,A) = S$(X,A) + "0": GOTO 225
220 S$(X,A) = S$(X,A) + "X"
225 IF MID$ (S$(X - 1,A),(Y - 1) * 6 + 5,1) = "0" THEN S$(X,A) = S$(X,A) + "0": GOTO 235
230 S$(X,A) = S$(X,A) + "X"
235 NEXT : NEXT : NEXT
240 X = INT ( RND (1) * 3) + 2:Y = INT( RND (1) * 3) + 2:A = INT ( RND(1) * 3) + 2
245 RD = INT ( RND (1) * 6) + 1: ON RD GOTO 250,255,260,265,270,275
250 A = 5:P1$ = LEFT$ (S$(X,A),(Y - 1) * 6):L = 29 - LEN (P1$):P2$ = RIGHT$(S$(X,A),L):S$(X,A) = P1$ + "0" + P2$: GOTO 280
255 A = 1:P1$ = LEFT$ (S$(X,A),(Y - 1) * 6 + 1):L = 29 - LEN (P1$):P2$ = RIGHT$ (S$(X,A),L):S$(X,A) = P1$ + "0" + P2$: GOTO 280
260 Y = 5:P1$ = LEFT$ (S$(X,A),(Y - 1) * 6 + 3):L = 29 - LEN (P1$):P2$ = RIGHT$ (S$(X,A),L):S$(X,A) = P1$ + "0" + P2$: GOTO 280
265 Y = 1:P1$ = LEFT$ (S$(X,A),(Y - 1) * 6 + 2):L = 29 - LEN (P1$):P2$ = RIGHT$ (S$(X,A),L):S$(X,A) = P1$ + "0" + P2$: GOTO 280
270 X = 5:P1$ = LEFT$ (S$(X,A),(Y - 1) * 6 + 4):L = 29 - LEN (P1$):P2$ = RIGHT$ (S$(X,A),L):S$(X,A) = P1$ + "0" + P2$: GOTO 280
275 X = i:Pl$ = LEFT$ (S$(X,A),(Y - 1) * 6 + 5):L = 29 - LEN (P1$):P2$ = RIGHT$ (S$(X,A),L)tS$(X,A) - P1$ + "0" + P2$: GOTO 280
280 SX = X: SY = Y: SA = A
290 VTAB 23: PRINT "HIT ANY KEY TO START"
300 IF PEEK ( - 16384) < 127 THEN 300
310 POKE - 16368,00
1000 X = INT ( RND (1) * 5) + 1:Y = INT( RND (1) # 5) + 1:A = INT ( RND(1) * 5) + 1:FC = 1: GOTO 1220
1010 HOME : VTAB 22: HTAB 18: PRINT FC,$(FC):A$ = "":D = 0: IF LS = 1 THEN PRINT X,Y,A
1020 VTAB 22: PRINT "TIME :";T: FOR TIME = 1 TO 80
1025 IF PEEK ( - 16384) > 127 THEN 1030
1027 NEXT :T = T + 1: VTAB 22: PRINT "TIME :";T: GOTO 1020
1030 GET A$
1035 IF A$ = "*" THEN LS = 1
1040 IF A$ = "Q" THEN 1300
1050 IF A$ = "U" THEN D = 1
1060 IF A$ = "D" THEN D = 2
1070 IF A$ = "N" THEN D = 3
1080 IF A$ = "S" THEN D = 4
1090 IF A$ = "E" THEN D = 5
1100 IF A$ = "?" THEN 1290
1110 IF A$ = "W" THEN D = 6
1120 IF A$ = "F" THEN GOTO 1280
1130 IF D = 0 THEN 1010
1135 T = T + 1
1140 IF MID$ (S$(X,A),(Y - 1) * 6 + D,1) < > "0" THEN PRINT CHR$ (7): GOTO 1010
1150 ON D GOTO 1160,1170,1180,1190,1200,1210
1160 A = A + 1: GOTO 1220
1170 A = A - 1: GOTO 1220
1180 Y = Y - 1: GOTO 1220
1190 Y = Y + 1: GOTO 1220
1200 X = X + 1: GOTO 1220
1210 X = X - 1: GOTO 1220
1220 IF X > 5 OR X < 1 OR Y > 5 OR Y < 1 OR A > 5 OR A < 1 THEN PRINT "YOU WIN": & T100,100: & T100,50: &T100,50: &T75,66: & T100,66: &T75,66: &T60,255: GOTO 3000
1230 HGR : HCOLOR= 3: HPLOT 0,0: CALL 62454: HCOLOR= 0: GOSUB 120
1240 FOR I = 1 TO 6: IF MID$ (S$(X,A),(Y - 1) *6+ I,1) = "X" THEN NEXT: GOTO 1010
1250 R = FC(FC,I) + 1
1260 HCOLOR= 0: ON R GOSUB 125,130,135,140,145,150
1270 NEXT : GOTO 1010
1280 INPUT "WHAT FACING 1-N 2-S 3-E 4-W";FC: IF FC < 1 OR FC > 4 THEN 1280
1285 GOTO 1220
1290 INVERSE : HTAB 18: PRINT SX;" ";SY;" ";SA: NORMAL : GOTO 1220
1300 PRINT "DO YOU WANT TO SAVE THIS MAZE": INPUT Y$: IF LEFT$ (Y$,1) <> "Y" THEN GOTO 3000
1310 INPUT "WHAT DO YOU WANT TO CALL IT ";N$
1320 D$ = CHR$ (4)
1330 PRINT D$;"OPEN OLD MAZE/";N$: PRINT D$;"WRITE OLD MAZE?";N$
1340 FOR A1 = 1 TO 5: FOR X1 = 1 TO 5:PRINT S$(X1,A1): NEXT : NEXT : PRINT X: PRINT Y: PRINT A: PRINT T: PRINT FC
1350 PRINT D$;"CLOSE OLD MAZE/";N$: GOTO 3000
1360 INPUT "WHAT IS ITS NAME ";N$
1370 D$ = CHR$ (4)
1380 PRINT D$;"OPEN OLD MAZE/";N$: PRINT D$;"READ OLD MAZE/";N$
1390 FOR A1 = 1 TO 5: FOR X1 = 1 TO 5:INPUT S$(XI,Al): NEXT : NEXT : INPUT X: INPUT Y: INPUT A: INPUT T: INPUT FC
1400 PRINT D$;"CLOSE OLD MAZE/";N$: GOTO 1220
2000 VTAB 12: HTAB 18: INVERSE : PRINT "MAZE": NORMAL : VTAB 22: INPUT "DO YOU WANT INSTRUCTIONS ";Y$: IF LEFT$(Y$,1) < > "Y" THEN RETURN
2010 HOME : PRINT "THE OBJECT OF MAZE IS TO FIND YOUR WAY": PRINT : PRINT "OUT OF A 5X5X5 CUBIC MAZE. IN ONE OF THE": PRINT "ROOMS THERE IS AN EXIT OUT OF THE MAZE."
2020 PRINT : PRINT "YOU MUST TRY TO FIND IT IN AS FEW TURNS ": PRINT "AS POSSIBLE. THE COMMANDS ARE ."
2030 PRINT : HTAB 6: INVERSE : PRINT "U";: NORMAL : PRINT "-UP";: HTAB 17: INVERSE : PRINT "S";: NORMAL : PRINT "-SOUTH"
2040 PRINT : HTAB 6: INVERSE : PRINT "D";: NORMAL : PRINT "-DOWN";: HTAB 17: INVERSE : PRINT "E";: NORMAL PRINT "-EAST"
2050 PRINT : HTAB 6: INVERSE : PRINT "N";: NORMAL : PRINT "-NORTH";: HTAB 17: INVERSE : PRINT "W";: NORMAL PRINT "-WEST"
2060 PRINT : HTAB 6: INVERSE : PRINT "Q";: NORMAL : PRINT "-QUIT";: HTAB 17: INVERSE : PRINT "F";: NORMAL PRINT "-CHANGE FACING"
2070 VTAB 23: PRINT "HIT ";: INVERSE : PRINT "SPACE";: NORMAL : PRINT "FOR MORE"
2080 IF PEEK ( - 16384) < 127 THEN 2080
2090 POKE - 16368,0: HOME : INVERSE : PRINT "F";: NORMAL : PRINT " WILL COME BACK WITH A QUESTION AS TO": PRINT : PRINT "WHICH FACING YOU WISH. HIT ONLY ONE KEY": PRINT : PRINT "AND ";: INVERSE : PRINT "RETURN": NORMAL
2100 PRINT : PRINT "PLEASE WAIT WHILE IT SETS UP THE MAZE": PRINT : PRINT : RETURN
3000 TEXT : HOME : VTAB 5: HTAB 12: PRINT "CONGRATULATIONS !"
3010 PRINT : PRINT TAB( 7)"YOU HAVE FINISHED THE MAZE IN ": PRINT TAB(7) T;" SECONDS"
3030 INPUT "DO YOU WANT TO PLAY AGAIN? ";Y$
3040 IF LEFT$ (Y$,1) = "Y" THEN RUN
9999 NORMAL
10000 DATA 1,2,4,0,5,3,1,2,0,4,3,5,1,2,3,5,4,0,1,2,5,3,0,4