本文へ移動

Meikyuu迷宮

シード付きの迷路と矢印パズルを作り、番号付きの問題を進め、平面や立体表面で遊べます。

「迷宮」は迷路のように入り組んだ場所を表す言葉です。 名前について(英語)

目次

やり方

標準の迷路の進捗を保存する

設定と経路・石の状態を組で保存します。

経路を往復する

import {buildMaze,newMazeGame,pressMaze,dragMaze,solutionOf,encodeRun,decodeRun,recipeCode} from "@johnmorrisdotca/meikyuu";
const recipe = {shape:"square",w:5,h:5,algorithm:"backtracker",mode:"to-goal",seed:42} as const;
const maze = buildMaze(recipe), route = solutionOf(maze);
const game = dragMaze(pressMaze(newMazeGame(maze),maze.start),route[1]);
const restored = decodeRun(maze,encodeRun(game),null);
console.log(recipeCode(recipe),restored?.path);
square:5x5:backtracker:to-goal:42 [ 6, 5 ]

全設定と標準の進捗文字列を組にします。経路は通路のマス列で、鍵と完成は規則から決まります。表示を回してもマスの同一性は変わりません。不適合な経路はnullになり、マス数が同じだけで別の迷路へ渡さないでください。

石と保存

石は任意で、通路のマスを塞ぎます。個数、距離、端点、現在の線、描画中かによって置けるかが決まり、canLayStoneとtoggleStoneが理由を返します。無制限ならstonesLeftはnullです。復元には同じ石の規則を使います。保存先はホスト側で決めます。iframeは保存せず、全体のデモは従来の任意の端末内保存を保ちます。コードと表示、埋め込み仕様を参照してください。

ソースを見るGitHub で編集@johnmorrisdotca/meikyuu 3.2.0 のソースから作成しました。

この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。