迷路脱出ゲーム

矢印キー・WASD・画面のボタンでキャラクターを動かし、毎回新しく作られる迷路の出口を探しましょう。脱出すると、最短ルートと自分の手数を比べて表示します。

移動回数: 0時間: 0秒

矢印キー・WASD、または上のボタンで移動します。時間は最初の一歩から計測し、通ったマスは薄く色が付きます。

遊び方

左上の緑のマスがスタート、右下の赤いマスが出口です。青い丸があなたのキャラクターで、矢印キー、W・A・S・Dキー、または画面の4つのボタンで1マスずつ動かします。壁のある方向に進もうとすると低い音が鳴るだけで動かず、移動回数も増えません。移動回数は実際にマスを移動した回数なので、行き止まりに入って戻る分もすべて数えられます。 時間は迷路が表示された時点ではなく最初の一歩から計測するため、全体を眺める時間は記録に入りません。出口に着くと止まり、通ったマスは薄い青で残るので、どの枝をもう調べたかが一目でわかります。 難易度を変えるか「新しい迷路」を押すと、その場で新しい迷路が作られて記録は最初に戻ります。スコアは保存せず、サーバーへ送る情報もありません。

難易度ごとの迷路の規格

3つの難易度の違いは、正方形の格子の一辺のマス数だけです。下の表はゲームのコードが使うマス数とマスの大きさから計算した値です。通路の数は、迷路が「すべてのマスがつながり、輪がない」構造であることから決まり、マスがN個で輪のない連結構造ならつなぎ目はちょうどN−1本になります。残る内部の壁は、マス同士の境界の総数2n(n−1)から開いた通路を引いた(n−1)²です。

難易度格子マス数開通した通路残る内部の壁キャンバス(px)
かんたん11×11121120100352×352
ふつう17×17289288256408×408
むずかしい23×23529528484460×460

最短手数の目安表

スタートと出口は常に対角線の両端なので、壁がまったくなくても最低2(n−1)回は動く必要があります。実際の迷路はくねくねしているため、最短ルートはそれよりずっと長くなります。表の「シミュレーション」の列は乱数に依存する値で、このページの生成方法をサイズごとに3,000回動かし、そのたびの最短手数を測った結果を丸めたものです。遊ぶ迷路は毎回違い、もう一度測れば数値は少し変わります。下位10%・中央値・上位10%は、3,000件を小さい順に並べたときのその位置の値です。

難易度理論上の下限シミュレーション最小下位10%中央値上位10%壁伝いの最大
かんたん2020325278240
ふつう324068112164576
むずかしい44601121902741056

「壁伝いの最大」は実測ではなく上限です。輪のない迷路では、片手を壁につけて進む方法でも各通路を往復で最大2回しか通らないため、2×(マス数−1)回を超えません。ゲームが終わると、その迷路の実際の最短手数があなたの手数と並んで表示されます。

移動効率の計算と検算例

移動効率は最短手数 ÷ 自分の手数 × 100(%)です。100%なら一度も迷わず最短ルートで進んだことになります。迷路ごとの最短手数で割るので、手数そのものを比べるより公平で、運よく短い迷路が出ただけなのに実力と勘違いすることを防げます。

迷路の作り方と最短手数の求め方

生成には、よく知られた深さ優先探索のバックトラック法を、再帰ではなくループとスタックで実装しています。最初はすべてのマスの四方が壁です。スタート地点を訪問済みにし、まだ行っていない隣のマスをランダムに選んで間の壁を壊しながら進みます。行き先がなければスタックをさかのぼって別の方向を試し、スタックが空になればすべてのマスを訪れたことになります。乱数にはブラウザのMath.randomを使っており、暗号用の乱数ではないので、安全性が必要な用途には使えません。

結果は、すべてのマスがつながり輪のない「完全迷路」です。どの2マスの間にも道はちょうど1本なので、出口にたどり着けない迷路は生まれません。この方法は長くてくねった通路と少なめの分かれ道ができるとされ、ふつうの最短手数の中央値が理論上の下限の3倍以上になる上の表の結果とも合っています。

脱出後に表示される最短手数は、迷路ができた時点で幅優先探索により求めています。スタートから距離の近い順にマスを訪れ、壁は越えずに各マスまでの距離を記録し、出口に記録された距離が最短手数です。計算量はマス数に比例するので、529マスのむずかしいでも一瞬で終わります。

脱出のコツ

操作と表示のメモ

矢印キーとWASDはゲームが受け取るため、プレイ中にページがスクロールせず、難易度の選択値も変わりません。難易度を選んだ直後はメニューからフォーカスを外し、そのままキーボードで動けるようにしています。Ctrl・Alt・Commandキーを併用するショートカットには干渉しません。スマートフォンでは盤面の下の4つのボタンを使ってください。キャンバスは画面幅に合わせて縮みますが内部の解像度は保たれます。ただし、むずかしいは460pxの正方形なので、小さな画面では線が細く見えます。

上達のためのヒント

同じ難易度を繰り返し、手数そのものより効率(%)の変化を見てください。100%は全体のルートを見切ってから動いた場合にしか出ないため、最初は50〜70%程度を目標にすれば十分です。時間は入力の速さや端末にも左右されるので、補助的な指標として扱いましょう。むずかしいは盤面が大きく一目では読み切れないので、分岐を通るたびに薄い青の跡で確認しながら進むのが安定します。

よくある質問

迷路に複数の道はありますか?

ありません。この方法で作った迷路は、どの2地点の間にも道がちょうど1本の「完全迷路」です。分かれ道は多くても輪がないため、障害物を迂回する別の道はなく、行き止まりでは必ず引き返すことになります。

壁にぶつかると移動回数は増えますか?

増えません。壁に向かって押しても音が鳴るだけで、キャラクターが実際にマスを移動したときだけ数えます。

時間はいつから計りますか?

迷路が表示された時点ではなく、最初の一歩を踏み出した瞬間からです。盤面を眺める時間は記録に入りません。出口に着くと止まり、小数点以下1桁まで表示します。

スマートフォンでも遊べますか?

はい。盤面の下のボタンをタップするたびに1マス進めるので、キーボードがなくても遊べます。

同じ迷路をもう一度解けますか?

できません。迷路は毎回乱数で作られて保存されないため、同じ形は二度と出ません。ページを再読み込みするか難易度を変えると、現在の迷路は消えます。

あわせて遊びたいゲーム