10 REM ZOMBIE MAZE
20 DEFINT A-Z
30 SC=0:HS=0
40 MODE 0
50 DEF FNSCR(X,Y)=TEST(32*X-20,408-16*Y)
60 ENV 1,1,120,7,24,-5,14
70 X=2:Y=2:PC=249
80 K$=""
90 MC=254
100 A(1)=19:B(1)=2:A(2)=2:B(2)=23
110 A(3)=9:B(3)=10:A(4)=19:B(4)=23
120 NUM=1
130 GOSUB 650
140 SOUND &81,0
150 SOUND &82,0
160 SQ(1) GOSUB 790
170 EVERY 10,0 GOSUB 410
180 EVERY 9,1 GOSUB 520
190 FLAG=0
200 REM MAIN LOOP
210 SC=SC+1:IF SC>HS THEN HS=SC
220 DI
230 LOCATE 1,25
240 PEN 8
250 PRINT "SCORE :";
260 PRINT USING "######";SC;
270 EI
280 IF FLAG=0 THEN GOTO 200
290 SOUND &C1,0
300 SOUND &C2,0
310 DI
320 Z=REMAIN(0):Z=REMAIN(1)
330 LOCATE 7,10:PEN 7:PRINT "GAME END"
340 FOR Z=1 TO 400:INK 7,INT(RND(1)*24):NEXT Z:INK 7,13
350 FOR Z=1 TO 300:NEXT Z
360 IF SC=HS THEN GOSUB 860
370 A$=INKEY$:IF A$=" " THEN GOTO 370
380 A$=INKEY$:IF A$<>" " THEN GOTO 380
390 EI
400 SC=0:GOTO 40
410 REM PLAYER ROUTINE
420 IF INKEY(28)=0 THEN CY=-1
430 IF INKEY(63)=0 THEN CX=1
440 IF INKEY(30)=0 THEN CY=1
450 IF INKEY(71)=0 THEN CX=-1
460 DI
470 TX=X+CX:TY=Y+CY:CX=0:CY=0
480 COL=FNSCR(TX,TY):IF COL=5 THEN LOCATE X,Y:PRINT " ";:X=TX:Y=TY:GOTO 490
490 PC=497-PC:LOCATE X,Y:PRINT CHR$(PC);
500 EI
510 RETURN
520 REM MONSTER ROUTINE
530 NUM=NUM+1:IF NUM=5 THEN NUM=1:MC=509-MC
540 TRY=0
550 CA=SGN(X-A(NUM)):CB=SGN(Y-B(NUM))
560 TA=A(NUM)+CA:TB=B(NUM)+CB
570 COL=FNSCR(TA,TB):IF COL=5 THEN LOCATE A(NUM),B(NUM):PRINT " ";:A(NUM)=TA:B(NUM)=TB:GOTO 620
580 IF COL=3 THEN FLAG=-1:RETURN
590 TRY=TRY+1:IF TRY=3 THEN GOTO 620
600 CA=SGN(INT(RND*3)-1):CB=SGN(INT(RND*3)-1)
610 GOTO 560
620 MC=509-MC:LOCATE A(NUM),B(NUM)
630 DI:PEN 11:PRINT CHR$(MC);:PEN 3
640 RETURN
650 REM DRAW THE MAZE
660 SYMBOL 240,&CC,&33,&CC,&33,&CC,&33,&CC,&33
670 MODE 0:PAPER 5:PEN 12
680 BORDER 6
690 RESTORE 980
700 FOR L=1 TO 24
710 READ L$
720 FOR M=1 TO 20
730 D=VAL(MID$(L$,M,1))
740 IF D=1 THEN PRINT CHR$(240); ELSE PRINT " ";
750 NEXT M
760 NEXT L
770 RESTORE
780 RETURN
790 REM PLAY NEXT NOTE OF TUNE
800 READ NOTE
810 IF NOTE=-1 THEN RESTORE:GOTO 800
820 SOUND &11,NOTE,50,0,1,0,0
830 SOUND &A,NOTE*0.69,50,0,1,0,0
840 SQ(1) GOSUB 790
850 RETURN
860 REM GOT HIGH SCORE
870 PEN 8
880 LOCATE 6,14:PRINT "HIGH SCORE"
890 FOR Z=1 TO 200 STEP 5:INK 8,INT(RND(1)*24)
900 SOUND &83,ABS(500-Z*5),15
910 NEXT Z
920 RETURN
930 REM TUNE DATA
940 DATA 478,379,319,379
950 DATA 358,284,239,284
960 DATA 319,379,319,358,379,426,478,239
970 DATA -1
980 DATA "11111111111111111111"
990 DATA "10000001000010000001"
1000 DATA "10111100011000111101"
1010 DATA "10100101000010100101"
1020 DATA "10110001100110001101"
1030 DATA "10100100100100100101"
1040 DATA "10101101100110110101"
1050 DATA "10000101000010100001"
1060 DATA "11010001011010001011"
1070 DATA "10011111011011111001"
1080 DATA "10000010011001000001"
1090 DATA "10111000111100011101"
1100 DATA "10000010011001000001"
1110 DATA "10000000000000000001"
1120 DATA "10111010100101011101"
1130 DATA "10000010000001000001"
1140 DATA "11001110100101110011"
1150 DATA "10001010100101010001"
1160 DATA "10111011100111011101"
1170 DATA "10010001000010001001"
1180 DATA "11010101011010101011"
1190 DATA "10010101011010101001"
1200 DATA "10000100011000100001"
1210 DATA "11111111111111111111"