20 RANDOMIZE(VAL(RIGHT$(TIME$,2))*100):FOR A=1 TO 4:READ Z1(A):NEXT:RANDOMIZE(RND*500):FOR C=1 TO FIX(RND*5)+1:FOR A=0 TO 7:READ B(A):NEXT:FOR A=0 TO 7:FOR B=0 TO 7:READ A(A,B):NEXT B,A:NEXT C:IF RND<.5 THEN B(0)=B(5):B(1)=B(6):B(4)=B(7)
40 LOCATE 24,30:PRINT"Use Cursor Arrows To Move";:COLOR 0,7:LOCATE 25,24,0:PRINT" Strike <F10> Key To Leave This Game ";:COLOR 3,0:L=0:LOCATE 8,38:PRINT Z1(DIR)
50 GOSUB 950:IF RP$="8" THEN M=M+1:GOTO 90 ELSE IF RP$="2" THEN DIR=DIR+2 ELSE IF RP$="4" THEN DIR=DIR-1 ELSE IF RP$="6" THEN DIR=DIR+1 ELSE 50
60 IF DIR>4 THEN DIR=DIR-4
70 IF DIR<1 THEN DIR=DIR+4
80 GOTO 150
90 IF DIR=1 THEN X=X-1 ELSE IF DIR=2 THEN Y=Y+1 ELSE IF DIR=3 THEN X=X+1 ELSE IF DIR=4 THEN Y=Y-1
100 IF X=B(2) AND Y=B(3) THEN 250
110 D=A(S,T)
120 L(1)=D AND 8:L(2)=D AND 4:L(3)=D AND 2:L(4)=D AND 1
130 IF L(DIR) THEN FOR X=1 TO 8:SOUND 300,1:SOUND 32767,1:SOUND 50,1:NEXT X:GOTO 160
140 S=X:T=Y
150 COLOR 2,0:CLS:GOSUB 170
160 X=S:Y=T:GOTO 40
170 D=A(X,Y)
180 L(1)=D AND 8:L(2)=D AND 4:L(3)=D AND 2:L(4)=D AND 1:L(5)=D AND 8:L(6)=D AND 4:L(7)=D AND 2
190 ON L+1 GOSUB 530,540,550,560,570:ON L+1 GOSUB 330,370,410,450,490
200 IF L(DIR) THEN RETURN
210 L=L+1:IF L>4 THEN RETURN
220 IF DIR=1 THEN X=X-1 ELSE IF DIR=2 THEN Y=Y+1 ELSE IF DIR=3 THEN X=X+1 ELSE IF DIR=4 THEN Y=Y-1
230 IF X>7 OR Y>7 OR X<0 OR Y<0 THEN GOSUB 940:GOTO 210
240 GOTO 170
250 CLS:LOCATE 10,25:PRINT"You Made It !!!! in"M"Moves.":COLOR 15:LOCATE 12,23:PRINT"Would You Like To Try Again? <Y/N>":COLOR 3,0
260 GOSUB 950:IF RP$="Y" THEN RUN ELSE IF RP$<>"N" THEN 260
270 ON ERROR GOTO 280:RUN"MENU1.001"
280 ON ERROR GOTO 290:RUN"MENU2.002"
290 RUN"MENU3.003"
300 KEY(10) OFF:LOCATE 25,1:PRINT SPC(79);:COLOR 15,0:LOCATE 25,24:PRINT"Do You Wish To Leave This Game? <Y/N>";:COLOR 3,0
310 GOSUB 950:IF RP$="Y" THEN 270 ELSE IF RP$<>"N" THEN 310
320 LOCATE 25,1:PRINT SPC(79);:KEY(10) ON:RETURN
330 COLOR 2:IF L(DIR) THEN GOSUB 770
340 IF L(DIR+1) THEN 350 ELSE GOSUB 590
350 IF L(DIR+3) THEN 360 ELSE GOSUB 580
360 RETURN
370 COLOR 3:IF L(DIR) THEN GOSUB 780
380 IF L(DIR+1) THEN GOSUB 680 ELSE GOSUB 730
390 IF L(DIR+3) THEN GOSUB 600 ELSE GOSUB 690
400 RETURN
410 COLOR 4:IF L(DIR) THEN GOSUB 790
420 IF L(DIR+1) THEN GOSUB 670 ELSE GOSUB 740
430 IF L(DIR+3) THEN GOSUB 610 ELSE GOSUB 700
440 RETURN
450 COLOR 5:IF L(DIR) THEN GOSUB 800
460 IF L(DIR+1) THEN GOSUB 660 ELSE GOSUB 750
470 IF L(DIR+3) THEN GOSUB 620 ELSE GOSUB 710
480 RETURN
490 COLOR 6:IF L(DIR) THEN GOSUB 640
500 IF L(DIR+1) THEN GOSUB 650 ELSE GOSUB 760
510 IF L(DIR+3) THEN GOSUB 630 ELSE GOSUB 720
520 RETURN
530 COLOR 2:FOR A=1 TO 23:LOCATE A,8:PRINT"█":LOCATE A,72:PRINT"█":NEXT:RETURN
540 COLOR 3:LOCATE 3,20:PRINT"▄":FOR A=4 TO 16:LOCATE A,20:PRINT"█":NEXT:LOCATE 17,20:PRINT"▀":LOCATE 3,60:PRINT"▄":FOR A=4 TO 16:LOCATE A,60:PRINT"█":NEXT:LOCATE 17,60:PRINT"▀":RETURN
550 COLOR 4:FOR A=5 TO 12:LOCATE A,28:PRINT"█":NEXT:LOCATE 13,28:PRINT"▀":FOR A=5 TO 12:LOCATE A,52:PRINT"█":NEXT:LOCATE 13,52:PRINT"▀":RETURN
560 COLOR 5:FOR A=6 TO 10:LOCATE A,32:PRINT"█":NEXT:LOCATE 11,32:PRINT"▀":FOR A=6 TO 10:LOCATE A,48:PRINT"█":NEXT:LOCATE 11,48:PRINT"▀":RETURN
570 COLOR 6:LOCATE 6,35:PRINT"▄":FOR A=7 TO 9:LOCATE A,35:PRINT"█":NEXT:LOCATE 6,45:PRINT"▄":FOR A=7 TO 9:LOCATE A,45:PRINT"█":NEXT:RETURN
580 COLOR 2:LOCATE 1,1:PRINT STRING$(7,219):LOCATE 23,1:PRINT STRING$(7,219);:COLOR 1:FOR A=2 TO 22:LOCATE A,1:PRINT STRING$(7,176):NEXT:COLOR 14:LOCATE 10,4:PRINT"<═":COLOR 2:RETURN
590 COLOR 2:LOCATE 1,73:PRINT STRING$(7,219):LOCATE 23,73:PRINT STRING$(7,219):COLOR 1:FOR A=2 TO 22:LOCATE A,73:PRINT STRING$(7,176):NEXT:COLOR 14:LOCATE 10,75:PRINT"═>":COLOR 2:RETURN
810 DATA NORTH," EAST",SOUTH," WEST",7,3,8,2,1,3,7,1,11,12,9,10,8,12,11,12,9,2,4,9,6,3,12,5,5,11,4,1,14,9,6,5,3,10,6,5,9,4,11,4,9,8,10,6,5,3,14,5,7,5,15,13,3,10,10,4,11,0,12,1,10,12,13,5,11,6,5,7,11,2,2,6
820 DATA 0,7,8,0,3,6,6,1,13,11,8,10,8,10,12,13,3,10,0,14,3,10,4,5,9,12,1,12,9,14,1,4,5,5,7,5,5,9,6,7,1,0,10,0,4,1,10,12,7,7,13,5,5,3,12,7,9,14,1,4,3,14,5,13,1,10,6,3,10,14,3,6
830 DATA 6,2,8,1,1,7,7,1,9,10,10,12,9,10,8,14,5,11,12,3,6,13,3,12,3,10,2,12,13,3,10,4,11,12,9,6,3,10,12,5,9,2,6,9,14,9,6,5,5,9,12,5,13,3,10,4,5,7,5,3,0,10,12,5,3,12,3,10,6,11,2,6
840 DATA 0,0,-1,1,3,7,3,1,13,3,10,10,10,8,10,14,3,8,10,12,13,3,10,12,9,6,11,6,1,10,14,5,3,10,10,8,2,10,10,6,9,10,12,5,9,8,10,12,5,9,6,5,7,5,9,6,5,1,10,0,10,2,2,12,3,2,14,7,11,10,10,6
850 DATA 0,3,0,8,3,7,3,1,9,10,10,8,10,10,12,9,1,10,12,1,12,9,6,5,5,13,7,5,7,7,11,4,5,3,10,6,9,10,10,6,1,10,10,10,6,9,10,12,5,9,12,11,12,3,8,6,5,5,3,8,2,10,2,12,3,2,14,7,11,10,10,6
860 LOCATE 1,1:PRINT STRING$(80,219):FOR A=2 TO 22:LOCATE A,1:PRINT"█":LOCATE A,80:PRINT"█":NEXT:LOCATE 23,1:PRINT STRING$(80,219);:LOCATE 3,30:COLOR 15:PRINT"K I L L E R M A Z E";:COLOR 3
870 COLOR 15:LOCATE 11,24:PRINT" Would You Like Instructions? <Y/N> ";:COLOR 3,0
880 GOSUB 950:IF RP$="N" THEN CLS:RETURN ELSE IF RP$<>"Y" THEN 880
890 LOCATE 5,14:PRINT"This is `KILLER MAZE'. Play it one time and see why!":LOCATE 6,14:PRINT"You will be placed INSIDE one of four different mazes;":LOCATE 7,14:PRINT"moreover, you will also encounter different starting
900 LOCATE 8,14:PRINT"positions within each maze. The idea is to find your":LOCATE 9,14:PRINT"way to the exit in the fewest possible moves or steps.":LOCATE 11,14:PRINT"Each maze is an 8 by 8 square. Due to poor visibilty,
910 LOCATE 12,14:PRINT"you will be able to see at most 4 steps ahead of you.":LOCATE 14,14:PRINT"The UP ARROW is the only key that will move you. It":LOCATE 15,14:PRINT"will allow you to take one step FORWARD. The LEFT AR-
920 LOCATE 16,14:PRINT"ROW and RIGHT ARROW will allow you to turn either to":LOCATE 17,14:PRINT"the left or right. The DOWN ARROW will allow you to":LOCATE 18,14:PRINT"turn completely around. The mazes come up randomly
930 LOCATE 19,14:PRINT"so you may encounter the same maze twice in a row,but":LOCATE 20,14:PRINT"don't expect that to help. GOOD LUCK. YOU'LL NEED IT!":LOCATE 25,28:COLOR 15:PRINT"Strike Any Key To Continue";:COLOR 3:GOSUB 950:CLS:RETURN
940 LOCATE 6,35:PRINT"╔"STRING$(9,205)"╗":FOR A=7 TO 9:LOCATE A,35:PRINT"║":LOCATE A,45:PRINT"║":NEXT:LOCATE 10,35:PRINT"╚"STRING$(9,205)"╝":LOCATE 7,37:COLOR 28:PRINT"E X I T":COLOR 3:RETURN
950 IF INKEY$<>"" THEN 950
960 DEF SEG=&H40:POKE &H17,(PEEK(&H17) OR 96):RP$=INKEY$:IF RP$="" THEN 960 ELSE RETURN