mirror of
https://github.com/rfivet/BCG101.git
synced 2024-12-18 08:06:27 -05:00
192 lines
3.7 KiB
QBasic
192 lines
3.7 KiB
QBasic
10 ' AMAZIN -- DRAW A MAZE
|
|
20 ' QUICK PORT TO EDUSYSTEM 50 BY RENAUD FIVET
|
|
100 RANDOMIZE
|
|
110 DIM W(12,12),V(12,12)
|
|
120 PRINT "WHAT ARE YOUR WIDTH AND LENGTH?"
|
|
121 INPUT H,V
|
|
122 PRINT
|
|
130 IF H<2 THEN 132\ IF H>12 THEN 132
|
|
131 IF V<2 THEN 132\ IF V<=12 THEN 150
|
|
132 PRINT "MEANINGLESS DIMENSIONS, TRY AGAIN"
|
|
140 PRINT
|
|
141 GO TO 120
|
|
150 PRINT
|
|
151 PRINT
|
|
160 LET Q=0
|
|
161 LET Z=0
|
|
162 LET X=INT(RND(0)*H+1)
|
|
163 FOR I=1 TO H
|
|
170 IF I=X THEN 173
|
|
171 PRINT ":--";
|
|
172 GO TO 180
|
|
173 PRINT ": ";
|
|
180 NEXT I
|
|
190 PRINT ":"
|
|
191 LET C=1
|
|
192 LET W(X,1)=C
|
|
193 LET C=C+1
|
|
200 LET R=X
|
|
201 LET S=1
|
|
202 GO TO 260
|
|
210 IF R<>H THEN 240
|
|
211 IF S<>V THEN 230
|
|
220 LET R=1
|
|
221 LET S=1
|
|
222 GO TO 250
|
|
230 LET R=1
|
|
231 LET S=S+1
|
|
232 GO TO 250
|
|
240 LET R=R+1
|
|
250 IF W(R,S)=0 THEN 210
|
|
260 IF R-1=0 THEN 530
|
|
261 IF W(R-1,S)<>0 THEN 530
|
|
270 IF S-1=0 THEN 390
|
|
280 IF W(R,S-1)<>0 THEN 390
|
|
290 IF R=H THEN 330
|
|
300 IF W(R+1,S)<>0 THEN 330
|
|
310 LET X=INT(RND(0)*3+1)
|
|
320 IF X=1 THEN 790
|
|
321 IF X=2 THEN 820
|
|
323 IF X=3 THEN 860
|
|
330 IF S<>V THEN 340
|
|
331 IF Z=1 THEN 370
|
|
332 LET Q=1
|
|
333 GO TO 350
|
|
340 IF W(R,S+1)<>0 THEN 370
|
|
350 LET X=INT(RND(0)*3+1)
|
|
360 IF X=1 THEN 790
|
|
361 IF X=2 THEN 820
|
|
362 IF X=3 THEN 910
|
|
370 LET X=INT(RND(0)*2+1)
|
|
380 IF X=1 THEN 790
|
|
381 IF X=2 THEN 820
|
|
390 IF R=H THEN 470
|
|
400 IF W(R+1,S)<>0 THEN 470
|
|
401 IF S<>V THEN 420
|
|
410 IF Z=1 THEN 450
|
|
411 LET Q=1
|
|
412 GO TO 430
|
|
420 IF W(R,S+1)<>0 THEN 450
|
|
430 LET X=INT(RND(0)*3+1)
|
|
440 IF X=1 THEN 790
|
|
441 IF X=2 THEN 860
|
|
442 IF X=3 THEN 910
|
|
450 LET X=INT(RND(0)*2+1)
|
|
460 IF X=1 THEN 790
|
|
461 IF X=2 THEN 860
|
|
470 IF S<>V THEN 490
|
|
480 IF Z=1 THEN 520
|
|
481 LET Q=1
|
|
482 GO TO 500
|
|
490 IF W(R,S+1)<>0 THEN 520
|
|
500 LET X=INT(RND(0)*2+1)
|
|
510 IF X=1 THEN 790
|
|
511 IF X=2 THEN 910
|
|
520 GO TO 790
|
|
530 IF S-1=0 THEN 670
|
|
540 IF W(R,S-1)<>0 THEN 670
|
|
541 IF R=H THEN 610
|
|
542 IF W(R+1,S)<>0 THEN 610
|
|
550 IF S<>V THEN 560
|
|
551 IF Z=1 THEN 590
|
|
552 LET Q=1
|
|
553 GO TO 570
|
|
560 IF W(R,S+1)<>0 THEN 590
|
|
570 LET X=INT(RND(0)*3+1)
|
|
580 IF X=1 THEN 820
|
|
581 IF X=2 THEN 860
|
|
582 IF X=3 THEN 910
|
|
590 LET X=INT(RND(0)*2+1)
|
|
600 IF X=1 THEN 820
|
|
601 IF X=2 THEN 860
|
|
610 IF S<>V THEN 630
|
|
620 IF Z=1 THEN 660
|
|
621 LET Q=1
|
|
622 GO TO 640
|
|
630 IF W(R,S+1)<>0 THEN 660
|
|
640 LET X=INT(RND(0)*2+1)
|
|
650 IF X=1 THEN 820
|
|
651 IF X=2 THEN 910
|
|
660 GO TO 820
|
|
670 IF R=H THEN 740
|
|
680 IF W(R+1,S)<>0 THEN 740
|
|
681 IF S<>V THEN 700
|
|
690 IF Z=1 THEN 730
|
|
691 LET Q=1
|
|
692 GO TO 710
|
|
700 IF W(R,S+1)<>0 THEN 730
|
|
710 LET X=INT(RND(0)*2+1)
|
|
720 IF X=1 THEN 860
|
|
721 IF X=2 THEN 910
|
|
730 GO TO 860
|
|
740 IF S<>V THEN 760
|
|
750 IF Z=1 THEN 780
|
|
751 LET Q=1
|
|
752 GO TO 770
|
|
760 IF W(R,S+1)<>0 THEN 780
|
|
770 GO TO 910
|
|
780 GO TO 1000
|
|
790 LET W(R-1,S)=C
|
|
800 LET C=C+1
|
|
801 LET V(R-1,S)=2
|
|
802 LET R=R-1
|
|
810 IF C=H*V+1 THEN 1010
|
|
811 LET Q=0
|
|
812 GO TO 260
|
|
820 LET W(R,S-1)=C
|
|
830 LET C=C+1
|
|
840 LET V(R,S-1)=1
|
|
841 LET S=S-1
|
|
842 IF C=H*V+1 THEN 1010
|
|
850 LET Q=0
|
|
851 GO TO 260
|
|
860 LET W(R+1,S)=C
|
|
870 LET C=C+1
|
|
871 IF V(R,S)=0 THEN 880
|
|
872 LET V(R,S)=3
|
|
873 GO TO 890
|
|
880 LET V(R,S)=2
|
|
890 LET R=R+1
|
|
900 IF C=H*V+1 THEN 1010
|
|
902 GO TO 530
|
|
910 IF Q=1 THEN 960
|
|
920 LET W(R,S+1)=C
|
|
921 LET C=C+1
|
|
922 IF V(R,S)=0 THEN 940
|
|
930 LET V(R,S)=3
|
|
931 GO TO 950
|
|
940 LET V(R,S)=1
|
|
950 LET S=S+1
|
|
951 IF C=H*V+1 THEN 1010
|
|
952 GO TO 260
|
|
960 LET Z=1
|
|
970 IF V(R,S)=0 THEN 980
|
|
971 LET V(R,S)=3
|
|
972 LET Q=0
|
|
973 GO TO 1000
|
|
980 LET V(R,S)=1
|
|
981 LET Q=0
|
|
982 LET R=1
|
|
990 LET S=1
|
|
991 GO TO 250
|
|
1000 GO TO 210
|
|
1010 FOR J=1 TO V
|
|
1011 PRINT"I";
|
|
1012 FOR I=1 TO H
|
|
1013 IF V(I,J)<2 THEN 1030
|
|
1020 PRINT" ";
|
|
1021 GO TO 1040
|
|
1030 PRINT" I";
|
|
1040 NEXT I
|
|
1041 PRINT
|
|
1043 FOR I=1 TO H
|
|
1045 IF V(I,J)=0 THEN 1060
|
|
1050 IF V(I,J)=2 THEN 1060
|
|
1051 PRINT": ";
|
|
1052 GO TO 1070
|
|
1060 PRINT ":--";
|
|
1070 NEXT I
|
|
1071 PRINT":"
|
|
1072 NEXT J
|
|
1073 END
|