33 lines
1.1 KiB
QBasic
33 lines
1.1 KiB
QBasic
10 PRINT CHR$(147):PRINT " ROBOT MAZE":PRINT
|
|
20 PRINT "REACH E. MOVE WITH W A S D.":PRINT "THE MAZE CHANGES EVERY GAME."
|
|
25 PRINT:PRINT "PRESS ANY KEY"
|
|
30 GET A$:IF A$="" THEN 30
|
|
35 R=RND(-TI)
|
|
40 DIM M(19,19):FOR Y=1 TO 19:FOR X=1 TO 19:M(X,Y)=1:NEXT X,Y
|
|
50 X=2:Y=2:M(X,Y)=0:FOR I=1 TO 160:D=INT(RND(1)*4):NX=X:NY=Y
|
|
60 IF D=0 THEN NX=X+1
|
|
70 IF D=1 THEN NX=X-1
|
|
80 IF D=2 THEN NY=Y+1
|
|
90 IF D=3 THEN NY=Y-1
|
|
100 IF NX<2 OR NX>18 OR NY<2 OR NY>18 THEN 50
|
|
110 X=NX:Y=NY:M(X,Y)=0:NEXT:FOR I=2 TO 18:M(I,2)=0:M(18,I)=0:NEXT:X=2:Y=2
|
|
120 PRINT CHR$(147):FOR J=1 TO 19:FOR I=1 TO 19
|
|
130 IF I=X AND J=Y THEN PRINT "R";:GOTO 160
|
|
140 IF I=18 AND J=18 THEN PRINT "E";:GOTO 160
|
|
150 IF M(I,J) THEN PRINT "#";:GOTO 160
|
|
155 PRINT " ";
|
|
160 NEXT:PRINT:NEXT:PRINT "WASD MOVE, Q QUITS"
|
|
170 GET A$:IF A$="" THEN 170
|
|
180 NX=X:NY=Y:IF A$="W" THEN NY=Y-1
|
|
190 IF A$="S" THEN NY=Y+1
|
|
200 IF A$="A" THEN NX=X-1
|
|
210 IF A$="D" THEN NX=X+1
|
|
220 IF A$="Q" THEN 280
|
|
230 IF M(NX,NY)=0 THEN X=NX:Y=NY
|
|
240 IF X<>18 OR Y<>18 THEN 120
|
|
250 PRINT CHR$(147):PRINT "THE ROBOT FOUND THE EXIT!":PRINT
|
|
260 PRINT "R=REPLAY Q=QUIT"
|
|
280 GET A$:IF A$="R" THEN RUN
|
|
290 IF A$<>"Q" THEN 280
|
|
300 PRINT CHR$(147):END
|
|
|