Compucolor.org – Virtual Media

Listing of file='MAZIS.BAS;01' on disk='vmedia/mazes_1-sector.ccvf'

50 REM  
60 REM   ##  A M A Z I N G  ##
70 REM  WRITTEN UP FOR THE COMPUCOLOR BY DAVID NIVEN
72 REM                                   MAY    1981
74 REM  
80 PLOT 12,27,88,14,6,8,3,40,31
85 PRINT " >> A M A Z I N G << ":PLOT 6,1,15
90 GOSUB 5000
100 GOSUB 2000:REM  DIFFICULTY SELECTION
105 PLOT 8
110 DIM W(H,V),V(H,V)
120 Q= 0:Z= 0:X= INT (H* RND (1)+ 1)
122 F= 4+ (X- 1)* 6:YE= 129- (V* 2+ 2)* 4:Y= 126
125 PRINT " "
130 FOR I= 1TO H
140 IF I= XTHEN 160
150 PRINT ":--";:GOTO 170
160 PRINT ":  ";
170 NEXT I
180 PRINT ":"
190 C= 1:W(X,1)= C:C= C+ 1
200 R= X:S= 1:GOTO 270
210 IF R< > HTHEN 250
220 IF S< > VTHEN 240
230 R= 1:S= 1:GOTO 260
240 R= 1:S= S+ 1:GOTO 260
250 R= R+ 1
260 IF W(R,S)= 0THEN 210
270 IF R- 1= 0THEN 600
280 IF W(R- 1,S)< > 0THEN 600
290 IF S- 1= 0THEN 430
300 IF W(R,S- 1)< > 0THEN 430
310 IF R= HTHEN 350
320 IF W(R+ 1,S)< > 0THEN 350
330 X= INT (3* RND (1)+ 1)
340 ON XGOTO 940,980,1020
350 IF S< > VTHEN 380
360 IF Z= 1THEN 410
370 Q= 1:GOTO 390
380 IF W(R,S+ 1)< > 0THEN 410
390 X= INT (3* RND (1)+ 1)
400 ON XGOTO 940,980,1090
410 X= INT (2* RND (1)+ 1)
420 ON XGOTO 940,980
430 IF R= HTHEN 530
440 IF W(R+ 1,S)< > 0THEN 530
450 IF S< > VTHEN 480
460 IF Z= 1THEN 510
470 Q= 1:GOTO 490
480 IF W(R,S+ 1)< > 0THEN 510
490 X= INT (3* RND (1)+ 1)
500 ON XGOTO 940,1020,1090
510 X= INT (2* RND (1))
520 ON XGOTO 940,1020
530 IF S< > VTHEN 560
540 IF Z= 1THEN 590
550 Q= 1:GOTO 570
560 IF W(R,S+ 1)< > 0THEN 590
570 X= INT (RND (1)* 2+ 1)
580 ON XGOTO 940,1090
590 GOTO 940
600 IF S- 1= 0THEN 790
610 IF W(R,S- 1)< > 0THEN 790
620 IF R= HTHEN 720
630 IF W(R+ 1,S)< > 0THEN 720
640 IF S< > VTHEN 670
650 IF Z= 1THEN 700
660 Q= 1:GOTO 680
670 IF W(R,S+ 1)< > 0THEN 700
680 X= INT (3* RND (1)+ 1)
690 ON XGOTO 980,1020,1090
700 X= INT (2* RND (1)+ 1)
710 ON XGOTO 980,1020
720 IF S< > VTHEN 750
730 IF Z= 1THEN 780
740 Q= 1:GOTO 760
750 IF W(R,S+ 1)< > 0THEN 780
760 X= INT (2* RND (1)+ 1)
770 ON XGOTO 980,1090
780 GOTO 980
790 IF R= HTHEN 880
800 IF W(R+ 1,S)< > 0THEN 880
810 IF S< > VTHEN 840
820 IF Z= 1THEN 870
830 Q= 1:GOTO 990
840 IF W(R,S+ 1)< > 0THEN 870
850 X= INT (2* RND (1)+ 1)
860 ON XGOTO 1020,1090
870 GOTO 1020
880 IF S< > VTHEN 910
890 IF Z= 1THEN 930
900 Q= 1:GOTO 920
910 IF W(R,S+ 1)< > 0THEN 930
920 GOTO 1090
930 GOTO 1190
940 W(R- 1,S)= C
950 C= C+ 1:V(R- 1,S)= 2:R= R- 1
960 IF C= H* V+ 1THEN 1200
970 Q= 0:GOTO 270
980 W(R,S- 1)= C
990 C= C+ 1
1000 V(R,S- 1)= 1:S= S- 1:IF C= H* V+ 1THEN 1200
1010 Q= 0:GOTO 270
1020 W(R+ 1,S)= C
1030 C= C+ 1:IF V(R,S)= 0THEN 1050
1040 V(R,S)= 3:GOTO 1060
1050 V(R,S)= 2
1060 R= R+ 1
1070 IF C= H* V+ 1THEN 1200
1080 GOTO 600
1090 IF Q= 1THEN 1150
1100 W(R,S+ 1)= C:C= C+ 1:IF V(R,S)= 0THEN 1120
1110 V(R,S)= 3:GOTO 1130
1120 V(R,S)= 1
1130 S= S+ 1:IF C= V* H+ 1THEN 1200
1140 GOTO 270
1150 Z= 1
1160 IF V(R,S)= 0THEN 1180
1170 V(R,S)= 3:Q= 0:GOTO 1190
1180 V(R,S)= 1:Q= 0:R= 1:S= 1:GOTO 260
1190 GOTO 210
1200 FOR J= 1TO V
1210 PRINT "I";
1220 FOR I= 1TO H
1230 IF V(I,J)< 2THEN 1260
1240 PRINT "   ";
1250 GOTO 1270
1260 PRINT "  I";
1270 NEXT I
1280 PRINT " "
1290 FOR I= 1TO H
1300 IF V(I,J)= 0THEN 1340
1310 IF V(I,J)= 2THEN 1340
1320 PRINT ":  ";
1325 FE= (I- 1)* 6+ 4
1330 GOTO 1350
1340 PRINT ":--";
1350 NEXT I
1360 PRINT ":"
1370 NEXT J
1390 POKE 33210,0:POKE 33209,0
1400 PLOT 14,6,6,3,5,31:PRINT "TIME :":PLOT 15,6,1
1420 M= 2:PLOT 2,FE,YE,255,6,7,2,F,Y,255:F1= F:Y1= Y
1440 A= CALL (0)
1460 P= PEEK (33209):PLOT 14,6,2,3,12,31:PRINT P;" "
1470 PLOT 6,M
1480 IF A= 13THEN PLOT 2,F,Y,255,6,71,2,F,Y- 1,255:Y= Y- 1
1500 IF A= 28THEN PLOT 2,F,Y,255,6,71,2,F,Y+ 1,255:Y= Y+ 1
1520 IF A= 26THEN PLOT 2,F,Y,255,6,71,2,F- 1,Y,255:F= F- 1
1540 IF A= 25THEN PLOT 2,F,Y,255,6,71,2,F+ 1,Y,255:F= F+ 1
1560 IF F= FEAND Y= YETHEN 1700
1580 IF A= 27THEN END
1590 IF A= 8THEN PLOT 2,F,Y,255,6,M+ 1,2,F1,Y1,255:F= F1:Y= Y1:M= M+ 1
1600 GOTO 1440
1620 END
1700 REM
1720 REM   ##  REPEAT GAME  ##
1730 PLOT 14,6,3,3,34,10
1740 PRINT "FINISHED IN";P+ PEEK (33210)* 60;" SECONDS"
1750 PLOT 6,1,3,35,15:INPUT "ANOTHER GAME (Y/N) :";A$
1760 IF LEFT$ (A$,1)= "N"THEN END
1770 FOR I= 0TO 1000:NEXT I
1780 RUN
2000 REM
2020 REM   ##  DIFFICULTY SELECTION  ##
2040 REM
2060 PLOT 3,10,10:INPUT "LEVEL OF DIFFICULTY (1 - 6) :";A
2080 IF A< 1OR A> 6THEN 2060
2100 ON AGOSUB 2140,2180,2220,2260,2300,2340
2110 FOR I= 0TO 16:PLOT 3,0,I,11:NEXT I
2120 RETURN
2140 H= 4:V= 4
2160 RETURN
2180 H= 6:V= 6
2200 RETURN
2220 H= 8:V= 8
2240 RETURN
2260 H= 10:V= 10
2280 RETURN
2300 H= 15:V= 14
2320 RETURN
2340 H= 20:V= 14
2360 RETURN
5000 REM
5010 REM   ##  READ FROM KEYBOARD  ##
5020 RESTORE 5080
5030 ADR= 65000:POKE 33283,232:POKE 33284,253
5040 FOR I= 0TO 18
5050 READ V:POKE (ADR+ I),V
5060 NEXT I
5070 RETURN
5080 DATA 245,229,197,205,36,0
5090 DATA 194,235,253,95,175,87
5100 DATA 50,255,129,193,225
5110 DATA 241,201