10 REM RMAZE.ECB 20 REM ...MAZE...from MERITSS : GAME 12-21-77 30 PRINT "&K" 40 PRINT ,"<#> R A T ' S M A Z E <#>" 50 LET Z=5 100 REM ...RAT'S MAZE PROGRAM 110 DIM M(20,20,4) 120 DEF FNA(X)=X-INT(X/4)*4 130 DEF FNB(X)=X-INT(X/2)*2 140 PRINT "YOU ARE ABOUT TO BE PLACED IN THE CENTER OF A SQUARE" 150 PRINT "MAZE OF YOUR SELECTION. THE SIZE MAY BE FROM 5 BY 5" 160 PRINT "TO 19 BY 19. THE PROBABILITY OF WALLS CAN BE SET ON" 170 PRINT "A SCALE OF 1 (LOW, EASY) TO 5 (HIGH, HARD). YOU WILL" 180 PRINT "BE SHOWN THE WALLS AND DOORS IMMEDIATELY AROUND YOU." 190 PRINT "NO OTHER PORTION OF THE MAZE WILL BE VISIBLE. AS YOU" 200 PRINT "TURN, THE ORIENTATION OF THE MAZE CHANGES SUCH THAT" 210 PRINT "YOU ALWAYS ENTER THE SQUARE PRINTED FROM THE BOTTOM." 220 PRINT "WALLS ARE X'S AND DOORS ARE .'S. YOU CAN SELECT A" 230 PRINT "DIRECTION TO MOVE BY TYPING 1 FOR FORWARD, 2 FOR RIGHT," 240 PRINT "3 FOR BACKWARD, AND 4 FOR LEFT. IF YOU GET TRAPPED OR" 250 PRINT "LOST, A DIRECTION OF 0 ALLOWS YOU TO RESIGN, AND A" 260 PRINT "DIRECTION OF 5 ALLOWS YOU TO SEE THE FULL MAZE." 270 LET N=RND(0): REM ...was: N=10*CLK(0) 280 LET N=INT(100*N) 290 FOR I=1 TO N 300 LET J=RND(0) 310 NEXT I 320 PRINT 330 PRINT "SIZE AND DIFFICULTY (FOR EXAMPLE: 7,3) ---=>"; 340 INPUT S,D 350 LET S=INT(S) 360 LET D=INT(D) 370 IF S<5 THEN 330 380 IF S>19 THEN 330 390 LET S=S+1 400 IF D<1 THEN 330 410 IF D>5 THEN 330 420 LET D=.35+.05*D 430 FOR I=1 TO S 440 FOR J=1 TO S 450 LET M(I,J,3)=FNB(INT(D+RND(0))) 460 LET M(I,J,2)=FNB(INT(D+RND(0))) 470 IF I=1 THEN 510 480 IF J=1 THEN 510 490 LET M(I,J,1)=M(I,J-1,3) 500 LET M(I,J,4)=M(I-1,J,2) 510 NEXT J 520 NEXT I 530 LET D=0 540 LET I=INT(S/2+1) 550 LET J=I 560 PRINT 570 IF M(I,J,1+D)=1 THEN 600 580 PRINT "X...X" 590 GOTO 610 600 PRINT "XXXXX" 610 FOR N=1 TO 2 620 IF M(I,J,1+FNA(D+3))=1 THEN 650 630 PRINT ". "; 640 GOTO 660 650 PRINT "X "; 660 IF M(I,J,1+FNA(D+1))=1 THEN 690 670 PRINT "." 680 GOTO 700 690 PRINT "X" 700 NEXT N 710 IF M(I,J,1+FNA(D+2))=1 THEN 740 720 PRINT "X...X" 730 GOTO 750 740 PRINT "XXXXX" 750 PRINT 760 PRINT "1=Forward 2=Right 3=Backward 4=Left 5=See MAZE." 765 PRINT "Enter: direction ---=>"; 770 INPUT N 780 LET N=INT(N) 790 IF N<0 THEN 760 800 IF N>5 THEN 760 810 IF N=0 THEN 1020 820 IF N=5 THEN 1070 830 LET N=FNA(N+D-1) 840 IF M(I,J,1+N)=0 THEN 870 850 PRINT "YOU JUST BUMPED INTO A WALL. NO TURN WAS MADE." 860 GOTO 560 870 LET D=N 880 ON D+1 GOTO 890,910,930,950 890 LET J=J-1 900 GOTO 960 910 LET I=I+1 920 GOTO 960 930 LET J=J+1 940 GOTO 960 950 LET I=I-1 960 IF I<2 THEN 1010 970 IF I>S THEN 1010 980 IF J<2 THEN 1010 990 IF J>S THEN 1010 1000 GOTO 560 1010 PRINT "CHEESE GALORE!&J, YOU HAVE ESCAPED.": LET Z=9 1020 PRINT 1030 PRINT "TRY AGAIN? ( Y=yes ) ---=>"; 1040 INPUT (1,0)I$ 1045 IF LEN(I$)=0 THEN LET I$="N" 1050 IF I$="Y" THEN 320 1060 IF Z=9 THEN 1430 ELSE ,1440 1070 PRINT 1080 FOR J1=1 TO S 1090 IF J1=1 THEN 1230 1100 FOR I1=1 TO S 1110 IF M(I1,J1,2)=1 THEN 1140 1120 PRINT "."; 1130 GOTO 1150 1140 PRINT "X"; 1150 IF I1=S THEN 1210 1160 IF I<>I1+1 THEN 1200 1170 IF J<>J1 THEN 1200 1180 PRINT "*"; 1190 GOTO 1210 1200 PRINT " "; 1210 NEXT I1 1220 PRINT 1230 PRINT "X"; 1240 FOR I1=2 TO S 1250 IF M(I1,J1,3)=1 THEN 1280 1260 PRINT ".X"; 1270 GOTO 1290 1280 PRINT "XX"; 1290 NEXT I1 1300 PRINT 1310 NEXT J1 1315 INPUT (1,0)"<#> Enter any letter to see more ---=>",I$ 1320 PRINT 1330 PRINT "FORWARD IS "; 1340 ON D+1 GOTO 1350,1370,1390,1410 1350 PRINT "NORTH." 1360 GOTO 560 1370 PRINT "EAST." 1380 GOTO 560 1390 PRINT "SOUTH." 1400 GOTO 560 1410 PRINT "WEST." 1420 GOTO 560 1430 PRINT ,"<#> O.K., Eat your cheese now. <#>" 1440 PRINT "Type 'RUN' to play again." 1450 END