SHIROのIchigoJam日記

IchigoJamの電子工作とプログラミングをメインに

迷路(穴掘り法)

イチゴジャムレシピに迷路プログラムが掲載されていますが、私もIchigoJam用の迷路プログラムを作ってみました。
あちらは棒倒し法ですが、こちらは穴掘り法です。

  • RUNすると一面に壁を作った後、せっせと道を掘っていきます。気長に眺めてください。
  • 穴掘り法なので、迷路の正解は必ず1通りだけです。孤立した道はできません。
  • 道の堀り方によっては、まれにスタック領域が不足してエラーで止まることがあります。残念ながら仕様です。
  • 道を掘り終わると、タイムアタックのゲームになります。左上のスタート地点にいる人間キャラをカーソルキーで操作して、右下のゴール「G」を目指してください。
  • ゴールに辿りつくと、所要時間が表示されて終了します。


10 '*MAZE*
20 CLS:CLV
30 FOR Y=0 TO 22
40 LC 0,Y
50 FOR X=0 TO 30
60 ?CHR$(1);
70 NEXT:NEXT
80 X=29:Y=21:LC X,Y:?" ";
90 P=1:[P]=X*128+Y*4+2:G=2
100 '@ANA
110 D=RND(4):GOSUB 280:IF W OR SCR(U,V)<>1 GOTO 100
120 [P]=[P]-1:IF [P]&3=0 P=P-1:IF P=0 GOTO 330
130 FOR G=1 TO 2
140 GOSUB 280:LC U,V:?" ";
150 NEXT
160 X=U:Y=V:P=P+1:G=2
170 '@CL
180 IF P=0 GOTO 330
190 C=0
200 FOR D=0 TO 3
210 GOSUB 280:IF W GOTO 230
220 IF SCR(U,V)=1 C=C+1
230 '@DN
240 NEXT
250 IF C=0 P=P-1:X=[P]/128:Y=([P]-X*128)/4:GOTO 170
260 [P]=X*128+Y*4+C
270 GOTO 100
280 '@UV
290 E=(D<2)*((D*2)-1):U=X+E*G
300 F=(D>1)*((D*2)-5):V=Y+F*G
310 W=0:IF U<1 OR U>29 OR V<1 OR V>21 W=1
320 RETURN
330 '@GA
340 G=1:X=1:Y=1:LC X,Y:?CHR$(7);
350 LC 29,21:?"G";
360 BEEP:LC 9,23:?"START!";:WAIT 60
370 LC 9,23:?"TIME=";:CLT
380 '@GA1
390 LC 14,23:?TICK()/60;
400 D=INKEY()-28:IF D<0 OR D>3 GOTO 380
410 GOSUB 280:IF W OR SCR(U,V)=1 GOTO 380
420 LC X,Y:?" ";:LC U,V:?CHR$(7);:X=U:Y=V
430 IF X<>29 OR Y<>21 GOTO 380
440 BEEP:LC 9,23:?"GOAL! TIME=";TICK()/60;
450 LC 0,22:END