-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
115 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
10 ' AMAZIN -- DRAW A MAZE UP TO 14 BY 21 | ||
20 ' EDUSYSTEM 50 REFACTORING BY RENAUD FIVET | ||
90 DEF FNR(R)=INT(RND(1)*R+1) | ||
100 RANDOMIZE | ||
110 DIM V(13,20) | ||
120 PRINT "WHAT ARE YOUR WIDTH AND LENGTH";\ INPUT H,V | ||
122 PRINT | ||
130 IF H<2 THEN 132\ IF H>14 THEN 132 | ||
131 IF V<2 THEN 132\ IF V<=21 THEN 150 | ||
132 PRINT "MEANINGLESS DIMENSIONS, TRY AGAIN" | ||
140 PRINT | ||
141 GOTO 120 | ||
150 PRINT | ||
151 PRINT | ||
160 ' PICK ENTRY CELL ON TOP ROW AND DRAW UPPER WALL | ||
161 C=H*V ' COUNT OF CELLS LEFT TO FILL | ||
162 R=FNR(H)-1 ' R,0 TOP ENTRY CELL COORD | ||
163 H=H-1\ V=V-1 ' COORD IN 0..H,0..V | ||
170 FOR I=0 TO H | ||
171 IF I=R THEN 174 | ||
172 PRINT ":--"; | ||
173 GOTO 175 | ||
174 PRINT ": "; | ||
175 NEXT I | ||
185 PRINT ":" | ||
187 ' PICK EXIT CELL ON BOTTOM ROW AS CURRENT | ||
190 R=FNR(H+1)-1\ S=V ' R,S CURRENT CELL COORD | ||
192 V(R,S)=2 | ||
193 C=C-1 | ||
202 GOTO 260 | ||
209 ' SCAN FOR NEXT POSITION TO CHECK | ||
210 R=R+1 | ||
215 IF R<=H THEN 250 | ||
220 R=0\ S=S+1 | ||
225 IF S<=V THEN 250 | ||
230 S=0 | ||
250 IF V(R,S)=0 THEN 210 | ||
255 ' CHECK FOR ADJACENT UNMARKED CELLS AND PICK ONE AT RANDOM | ||
260 IF R=0 THEN 530\ IF V(R-1,S)<>0 THEN 530 ' L? | ||
270 IF S=0 THEN 390\ IF V(R,S-1)<>0 THEN 390 ' LU? | ||
290 IF R=H THEN 330\ IF V(R+1,S)<>0 THEN 330 ' LUR? | ||
310 ON FNR(3) GOTO 790,820,860 ' LUR | ||
320 ' LU | ||
330 IF S=V THEN 370\ IF V(R,S+1)<>0 THEN 370 ' LUD? | ||
350 ON FNR(3) GOTO 790,820,910 ' LUD | ||
370 ON FNR(2) GOTO 790,820 ' LU | ||
380 ' L | ||
390 IF R=H THEN 470\ IF V(R+1,S)<>0 THEN 470 ' LR? | ||
401 IF S=V THEN 450\ IF V(R,S+1)<>0 THEN 450 ' LRD? | ||
430 ON FNR(3) GOTO 790,860,910 ' LRD | ||
450 ON FNR(2) GOTO 790,860 ' LR | ||
460 ' L | ||
470 IF S=V THEN 790\ IF V(R,S+1)<>0 THEN 790 ' LD? OR L | ||
500 ON FNR(2) GOTO 790,910 ' LD | ||
520 ' | ||
530 IF S=0 THEN 670\ IF V(R,S-1)<>0 THEN 670 ' U? | ||
541 IF R=H THEN 610\ IF V(R+1,S)<>0 THEN 610 ' UR? | ||
550 IF S=V THEN 590\ IF V(R,S+1)<>0 THEN 590 ' URD? | ||
570 ON FNR(3) GOTO 820,860,910 ' URD | ||
590 ON FNR(2) GOTO 820,860 ' UR | ||
600 ' | ||
610 IF S=V THEN 820\ IF V(R,S+1)<>0 THEN 820 ' UD? OR U | ||
640 ON FNR(2) GOTO 820,910 ' UD | ||
660 ' | ||
670 IF R=H THEN 740\ IF V(R+1,S)<>0 THEN 740 ' R? | ||
681 IF S=V THEN 860\ IF V(R,S+1)<>0 THEN 860 ' RD? OR R | ||
710 ON FNR(2) GOTO 860,910 ' RD | ||
730 ' | ||
740 IF S=V THEN 210\ IF V(R,S+1)<>0 THEN 210 ' D? OR SCAN | ||
770 GOTO 910 ' D | ||
780 ' | ||
790 ' REMOVE LEFT WALL | ||
800 R=R-1 | ||
801 V(R,S)=3 | ||
812 GOTO 999 | ||
820 ' REMOVE UP WALL | ||
830 S=S-1 | ||
840 V(R,S)=2 | ||
850 GOTO 999 | ||
860 ' REMOVE RIGHT WALL | ||
870 IF V(R,S)<2 THEN 880 | ||
872 V(R,S)=4 | ||
873 GOTO 890 | ||
880 V(R,S)=3 | ||
890 R=R+1 | ||
900 IF V(R,S)<>0 THEN 902\ V(R,S)=1 | ||
902 GOTO 999 | ||
910 ' REMOVE DOWN WALL | ||
922 IF V(R,S)<2 THEN 940 | ||
930 V(R,S)=4 | ||
931 GOTO 950 | ||
940 V(R,S)=2 | ||
950 S=S+1 | ||
960 IF V(R,S)<>0 THEN 999\ V(R,S)=1 | ||
999 C=C-1\ IF C>0 THEN 260 ' LOOP WHILE C | ||
1000 ' DRAW MAZE | ||
1010 FOR J=0 TO V | ||
1011 PRINT "I"; | ||
1012 FOR I=0 TO H | ||
1013 IF V(I,J)<3 THEN 1030 | ||
1020 PRINT " "; | ||
1021 GOTO 1040 | ||
1030 PRINT " I"; | ||
1040 NEXT I | ||
1041 PRINT | ||
1043 FOR I=0 TO H | ||
1045 IF V(I,J)<=1 THEN 1060 | ||
1050 IF V(I,J)=3 THEN 1060 | ||
1051 PRINT ": "; | ||
1052 GOTO 1070 | ||
1060 PRINT ":--"; | ||
1070 NEXT I | ||
1071 PRINT ":" | ||
1072 NEXT J | ||
1073 END |