The MAZE
壁延ばし法で自動生成された迷路から3Dビューで脱出します。
Pokecom GO(fast モード)、PB-SIM(高速モード)、PB-100+拡張メモリ(遅い) に対応しています。
遊び方
[P0]を実行してください。
迷路は外周に囲まれた正方形で、最小 5×5 から最大 15×15 マスで、奇数のみです(通路、壁は各一マス)
迷路の一辺のサイズを訊いてきますので、5~15 の間で入力してください。 “WAIT”と表示され、ランダムに迷路を生成します。(PB-100 実機だと 15×15 で 4 分以上)
迷路生成が終わると、ランダムな位置から開始となり、3D ビューが表示されます 。
表示例
操作方法
“5”で前へ進み、”1”←→”3”で左右を向きます。
”2”で後ろに振り向きます(回れ右)。
右側に、向いている方向と、座標(→X 軸、↓Y 軸)を表示します。
ゴール(出口)は外周のどこかにあります。その前に立ち、外周の壁の方を向くと「Ω」が表示されクリアとなります。
クリア後も迷路探索を続行できます。終了するときは STOP を押して下さい。
注意
[P6]はゲーム上は入力不要ですが、迷路作成後に STOP し、実行すれば迷路メモリの内容を表示します。
その後、[P1]を実行することにより、ゲームを再開できます
プログラムの解説
![](https://www.google.com/images/icons/product/drive-32.png)
[P0]
30 VAC
40 $="^\LA\DA\RA"
50 INPUT "\SQ5,7..15",L:IF L>4;IF L<16 THEN 70
60 GOTO 50
70 L=1+2*INT(L/2:PRINT "WAIT";
80 GOSUB #3
90 GOSUB 140:GOSUB #4:IF Z=0 THEN 90
100 E=X:F=Y:G=0:H=1
110 GOSUB 140:IF X>2;IF X<L-1;IF Y>2;IF Y<L-1 THEN 110
120 GOSUB #4:IF Z=0 THEN 110
130 C=X:D=Y:GOTO #1
140 X=2+INT(RAN#*(L-2):Y=2+INT(RAN#*(L-2):RETURN
[P1]
10 X=E+H:Y=F-G:GOSUB #4:IF Z=0;PRINT CSR 0;")";:GOTO 30
20 PRINT CSR 0;"]";
30 X=E+G:Y=F+H:GOSUB #4:IF Z=0;PRINT "OOO";:GOTO 100
40 X=E+G+H:Y=F-G+H:GOSUB #4:IF Z=0;PRINT ">";:GOTO 60
50 PRINT "\SQ";
60 X=E+2*G:Y=F+2*H:GOSUB #4:IF Z=0;PRINT "\SQ";:GOTO 80
70 PRINT "\CR";
80 X=E+G-H:Y=F+G+H:GOSUB #4:IF Z=0;PRINT "<";:GOTO 100
90 PRINT "\SQ";
100 X=E-H:Y=F+G:GOSUB #4:IF Z=0;PRINT "(";:GOTO 120
110 PRINT "[";
120 PRINT MID(1+2*G^2+H^2+G+H,1);" ";CSR 6;E;F;
130 IF E=C;IF F=D THEN 150
140 GOTO 170
150 A=E+G-1:A=A*(E+G-L):A=A*(F+H-1):A=A*(F+H-L)
160 IF A=0;PRINT CSR 2;"\OM";CSR 6;"CLEAR!";
170 B$=KEY:IF B$="" THEN 170
180 IF B$="5";X=E+G:Y=F+H:GOSUB #4:IF Z=1;E=X:F=Y
190 IF B$="1";K=G:G=H:H=-K
200 IF B$="3";K=G:G=-H:H=K
210 IF B$="2";G=-G:H=-H
220 GOTO 10
[P3]
10 Z=1:FOR Y=2 TO L-1:FOR X=2 TO L-1:GOSUB #5:NEXT X:NEXT Y
40 J=3:FOR I=1 TO L*2
50 E=1+(L-1)*INT(RAN#*2:F=1+2*INT(RAN#*L/2
60 IF RAN#>.5;A=E:E=F:F=A
70 GOSUB 130:NEXT I
80 J=5:FOR I=0 TO INT(L/4:FOR C=I*2 TO L-I*2-3 STEP 2
85 E=I*2+1:F=C+1:GOSUB 120:E=C+1:F=L-I*2:GOSUB 120
90 E=L-I*2:F=L-C:GOSUB 120:E=L-C:F=I*2+1:GOSUB 120
95 NEXT C:NEXT I
110 RETURN
120 X=E:Y=F:GOSUB #4:IF Z=1;RETURN
130 K=0
140 H=0:G=INT(RAN#*3)-1:IF G=0;H=INT(RAN#*2)*2-1
150 A=G:G=H:H=-A:K=K+1:IF K=J;RETURN
160 X=E+G:Y=F+H
180 GOSUB #4:IF Z=0 THEN 150
190 X=E+G*2:Y=F+H*2:GOSUB #4:IF Z=0 THEN 150
200 Z=0:GOSUB #5:X=E+G:Y=F+H:GOSUB #5
210 E=X+G:F=Y+H:GOTO 130
[P4]
2 N=2^(FRAC(Y/2)*34+X:M=O(Y/2)
4 Z=INT(M/N)-2*INT(M/2/N:RETURN
[P5]
2 N=2^(FRAC(Y/2)*34+X:M=O(Y/2)
4 M=N*(Z+INT(M/N/2)*2+M/N-INT(M/N))
6 A=-1:O(Y/2)=RND(M,A):RETURN
迷路ダンププログラム(任意)
[P6]
5 PRINT
10 FOR I=1 TO L
15 FOR J=1 TO L
20 X=J:Y=I: GOSUB #4
30 IF Z=0;PRINT "#";:GOTO 70
40 PRINT ".";
70 NEXT J
80 PRINT "": PRINT
90 NEXT I
100 END
実機形式