home *** CD-ROM | disk | FTP | other *** search
- 100 REM WRITTEN BY JACK HAUBER UPDATED 5-21-77 D. NIXON
- 110 WIDTH 80
- 120 DEFINT A-Z
- 130 PRINT "THIS PROGRAM WILL PRINT OUT A DIFFERENT MAZE EVERY TIME IT"
- 140 PRINT "IS RUN AND GUARANTEES ONLY ONE PATH THROUGH. YOU CAN CHOOSE"
- 150 PRINT "THE DIMENSIONS OF THE MAZE. I.E. THE NUMBER OF SQUARES WIDE"
- 160 PRINT "AND THE NUMBER OF SQUARES LONG."
- 170 PRINT
- 180 PRINT "WHAT ARE YOUR WIDTH AND LENGTH";
- 190 INPUT H,V
- 200 DIM W(H,V),V(H,V)
- 210 PRINT
- 220 IF H>2 AND V>2 THEN 260
- 230 PRINT "MEANINGLESS DIMENSIONS, TRY AGAIN."
- 240 PRINT
- 250 GOTO 1950
- 260 IF H< 27 GOTO 290
- 270 PRINT " THE WIDTH IS WIDER THEN 80 COLUMNS"
- 280 GOTO 1950
- 290 PRINT
- 300 PRINT
- 310 LET Q = 0
- 320 LET Z = 0
- 330 LET X = INT(RND(1)*H+1)
- 340 FOR I = 1 TO H
- 350 IF I = X THEN 380
- 360 PRINT ":--";
- 370 GOTO 390
- 380 PRINT ": ";
- 390 NEXT I
- 400 PRINT ":"
- 410 LET C = 1
- 420 LET W(X,1) = C
- 430 LET C = C+1
- 440 LET R = X
- 450 LET S = 1
- 460 GOTO 570
- 470 IF R <> H THEN 550
- 480 IF S <> V THEN 520
- 490 LET R = 1
- 500 LET S = 1
- 510 GOTO 560
- 520 LET R = 1
- 530 LET S = S+1
- 540 GOTO 560
- 550 LET R = R+1
- 560 IF W(R,S) = 0 THEN 470
- 570 IF R-1 = 0 THEN 930
- 580 IF W(R-1,S) <> 0 THEN 930
- 590 IF S-1 = 0 THEN 740
- 600 IF W(R,S-1) <> 0 THEN 740
- 610 IF R = H THEN 650
- 620 IF W(R+1,S) <> 0 THEN 650
- 630 LET X = INT(RND(1)*3+1)
- 640 ON X GOTO 1320,1390,1460
- 650 IF S <> V THEN 690
- 660 IF Z = 1 THEN 720
- 670 LET Q = 1
- 680 GOTO 700
- 690 IF W(R,S+1) <> 0 THEN 720
- 700 LET X = INT(RND(1)*3+1)
- 710 ON X GOTO 1320,1390,1560
- 720 LET X = INT(RND(1)*2+1)
- 730 ON X GOTO 1320,1390
- 740 IF R = H THEN 850
- 750 IF W(R+1,S) <> 0 THEN 850
- 760 IF S<> V THEN 800
- 770 IF Z = 1 THEN 830
- 780 LET Q = 1
- 790 GOTO 810
- 800 IF W(R,S+1) <> 0 THEN 830
- 810 LET X = INT(RND(1)*3+1)
- 820 ON X GOTO 1320,1460,1560
- 830 LET X = INT(RND(1)*2+1)
- 840 ON X GOTO 1320,1460
- 850 IF S <> V THEN 890
- 860 IF Z = 1 THEN 920
- 870 LET Q = 1
- 880 GOTO 900
- 890 IF W(R,S+1) <> 0 THEN 920
- 900 LET X = INT(RND(1)*2+1)
- 910 ON X GOTO 1320,1560
- 920 GOTO 1320
- 930 IF S-1 = 0 THEN 1140
- 940 IF W(R,S-1) <> 0 THEN 1140
- 950 IF R=H THEN 1060
- 960 IF W(R+1,S) <> 0 THEN 1060
- 970 IF S<> V THEN 1010
- 980 IF Z = 1 THEN 1040
- 990 LET Q = 1
- 1000 GOTO 1020
- 1010 IF W(R,S+1) <> 0 THEN 1040
- 1020 LET X = INT(RND(1)*3+1)
- 1030 ON X GOTO 1390,1460,1560
- 1040 LET X = INT(RND(1)*2+1)
- 1050 ON X GOTO 1390,1460
- 1060 IF S <> V THEN 1100
- 1070 IF Z = 1 THEN 1130
- 1080 LET Q = 1
- 1090 GOTO 1110
- 1100 IF W(R,S+1) <> 0 THEN 1130
- 1110 LET X = INT(RND(1)*2+1)
- 1120 ON X GOTO 1390,1560
- 1130 GOTO 1390
- 1140 IF R = H THEN 1240
- 1150 IF W(R+1,S) <> 0 THEN 1240
- 1160 IF S <> V THEN 1200
- 1170 IF Z = 1 THEN 1230
- 1180 LET Q = 1
- 1190 GOTO 1210
- 1200 IF W(R,S+1) <> 0 THEN 1230
- 1210 LET X = INT(RND(1)*2+1)
- 1220 ON X GOTO 1460,1560
- 1230 GOTO 1460
- 1240 IF S <> V THEN 1280
- 1250 IF Z = 1 THEN 1310
- 1260 LET Q = 1
- 1270 GOTO 1290
- 1280 IF W(R,S+1) <> 0 THEN 1310
- 1290 GOTO 1560
- 1300 REM BLOCKED
- 1310 GOTO 1760
- 1320 LET W(R-1,S) = C
- 1330 LET C = C+1
- 1340 LET V(R-1,S) = 2
- 1350 LET R = R-1
- 1360 IF C = H*V+1 THEN 1770
- 1370 LET Q = 0
- 1380 GOTO 570
- 1390 LET W(R,S-1) = C
- 1400 LET C = C+1
- 1410 LET V(R,S-1) = 1
- 1420 LET S = S-1
- 1430 IF C = H*V+1 THEN 1770
- 1440 LET Q = 0
- 1450 GOTO 570
- 1460 LET W(R+1,S) = C
- 1470 LET C = C+1
- 1480 IF V(R,S) = 0 THEN 1510
- 1490 LET V(R,S) = 3
- 1500 GOTO 1520
- 1510 LET V(R,S) = 2
- 1520 LET R = R+1
- 1530 IF C = H*V+1 THEN 1770
- 1540 LET Q = 0
- 1550 GOTO 930
- 1560 IF Q = 1 THEN 1660
- 1570 LET W (R,S+1) = C
- 1580 LET C = C+1
- 1590 IF V(R,S) = 0 THEN 1620
- 1600 LET V(R,S) = 3
- 1610 GOTO 1630
- 1620 LET V(R,S) = 1
- 1630 LET S = S+1
- 1640 IF C = H*V+1 THEN 1770
- 1650 GOTO 570
- 1660 LET Z = 1
- 1670 IF V(R,S) = 0 THEN 1710
- 1680 LET V(R,S) = 3
- 1690 LET Q = 0
- 1700 GOTO 1760
- 1710 LET V(R,S) = 1
- 1720 LET Q = 0
- 1730 LET R = 1
- 1740 LET S = 1
- 1750 GOTO 560
- 1760 GOTO 470
- 1770 FOR J = 1 TO V
- 1780 PRINT "I";
- 1790 FOR I = 1 TO H
- 1800 IF V(I,J) < 2 THEN 1830
- 1810 PRINT " ";
- 1820 GOTO 1840
- 1830 PRINT " I";
- 1840 NEXT I
- 1850 PRINT
- 1860 FOR I = 1 TO H
- 1870 IF V(I,J) = 0 THEN 1910
- 1880 IF V(I,J) = 2 THEN 1910
- 1890 PRINT ": ";
- 1900 GOTO 1920
- 1910 PRINT ":--";
- 1920 NEXT I
- 1930 PRINT ":"
- 1940 NEXT J
- 1950 ERASE W,V
- 1960 FOR I=1 TO 5: PRINT: NEXT I
- 1970 GOTO 180
- 1980 END
- 1920 NEXT I
- 1930 PRINT ":"
- 1940 NEXT J
- 1950 ERASE W,V
- 1960 FOR I=1 TO 5: PRINT: NEXT I
- 1970 GOTO 180
- 1980 END
-