私たちのフラットビーイングの両側に
無限に深く遠く
人生そのものが伸びます。
チャールズ・ハワード・ヒントン「フラットランドの生涯からのエピソード」-私たちはe-one-delta-ashにポーンしなければなりませんでした...
-その後、4頭目の馬が飛ぶ。
-聞かせて ポーンは象の空間に入り......
-象のスペースは? 象のスペースはどこで入手しましたか?! あなたは9番目の動きを間違って書きました!
おそらく
、アルカディとボリス・ストルガツキー
による忘れられない
半日からのこの一節を覚えているでしょう。 半日の人々は私たちとほとんど同じですが、私たちよりも賢くて優れています。 彼らは空間を征服し、四次元のチェスをします。
スタートレックの作者もボードゲームの話題を迂回しませんでしたが、彼らの場合、スポックは3次元でチェスをします:
2次元のチェス盤の通常の限界を超えることは、未来の人々の知的力を象徴し、著者によると、ゲームをより面白くします。 そうですか? 実際、3番目以降の次元はボードゲームに何を与えることができますか?
6.三次元
3次元、
4次元、
5次元、さらには
6次元のボードは、
Zillions of Gamesでは
珍しくありません。
六角形のボードにはオプションがあります。 StarTrekファンも
無視されていません(私は特に立体的な
Klin Zhaが好きです)。 問題はチェスだけに限定されません。
4次元の三目 並べ、リバーシ、そして
漠然とGoを連想させるものもあります。
ZoGは最大5次元のボードをサポートします(
Axiomは2次元
グリッドのみをサポートし
ます )が、任意のトポロジでボードを定義し、そのすべての位置とそれらの間の関係を手動で定義することに煩わされる人はいません。 問題はそのようなゲームの実装ではなく、ボード上で何が起こっているかを理解することです。
このビデオを見ると、未来の人々がうらやましい。 2x2x2x2x2x2のサイズの「顕微鏡」ボードでも、私の知性は明らかに十分ではありません。 もう一方の
極端はより理解しやすいです。 古典的なチェスに基づいた
ゲームとは異なり、限られた
サイズ (および
寸法 )のボードでの将boardsのオプションは予想外に興味深いものです。 ボードについてではありません。 ほとんどすべての
Shogiオプションは、リセットルールのおかげで興味深いものです。
寸法が2以外のボードのみである場合、この記事は終了している可能性がありますが、3次元のゲームを使用する別の方法があります。 よく知られている「
三目並べ」はあまり知的なゲームではありませんが、ボードを垂直に置くとどう変わるでしょうか? 2人のプレイヤーに加えて、「第三の力」-重力の力-がゲームに介入します。 チップはまだ「1行」(4行)に配置する必要がありますが、これを実現するのははるかに困難です。
ゲームは新しい次元を取ります。 チップはボード上のどこにも配置できなくなり、以前に追加された他のチップに基づいている必要があります。 「
Captain's Wife 」-まだ2次元のボードでプレイされていますが、チェッカーやチェスなどの他のゲームに同じ原則を適用することを誰も気にしません。 92のそのような「タワー」ゲームの素晴らしい選択があります。
Abstract Chessでは、すべてのピースは同じピースで構成されるスタックです(特別なピースであるロイヤルピースを除く)。 駒は駒のように動き、駒はチェスの馬のように2枚、象のように3枚などのように重なります。 通常のチェスの動きに加えて、プレイヤーは自分のスタックからトップチップを取り、それを(キングの動きとともに)他のスタック(隣にある)に移すことができます。 形状のプロパティは、スタック内の現在のチップ数に応じて変化します。
この原理は、最近発明された合成ゲームでのみ使用されると考えるべきではありません。
前の記事で私が言及した「
ノーザンチェッカー 」は、1961年に説明された「
マルチストーリーチェッカー 」の変形と考えることができます。 さらに由緒ある物語は
柱です。
このゲームでは、「
ロシアの草案 」のルールに従って、「タワー」は敵のチップを「ジャンプ」することで捕獲できます。 ジャンプを実行すると、攻撃されたタワーの一番上のチップがスタックの一番下に置かれます。 したがって、取ることで、敵の「タワー」によって以前にキャプチャされたチップを解放できます。 ロシアの草案のように、最後の水平線を通過すると、山の一番上の図が長距離の女性に変わります。 女性は、その質を失うことなく、普通の人物と同等に捕らえられ、解放されます。
「柱」チェスのバリアントもあります。 「柱チェッカー」のように、「
タウレル 」の数字は
互いに重ねることができます(王に他の数字を取り付けることは禁じられています)。 このような「タワー」の所属と許容される動きは、上部にある数字によって決まります。 「塔」に捕らえられた変換されたポーンは、そのステータスを失い、再び通常のものに変わります。 色の数字の上に「塔」を建てることができます。 「柱チェッカー」とは異なり、「塔」の分離はプレイヤーの要求で発生します。 プレーヤーは、以前にキャプチャした対戦相手のピースを解放することもできます(このような動きは、
膠着状態の脅威が発生した場合に役立つことがあります)。
Rhythmachiaでは、 「タワー」の構成によって利用可能な移動のリストが決まります。これは、「ピースを1つずつキル」できる唯一のゲームです。 この点でさらに複雑なゲームを
ここで説明し
ます 。 「互いの上に」チップを構築することは、チェッカーとチェスの特権ではありません。 この機能は、他のゲーム、たとえばさまざまな種類の「
戦闘レース 」でも需要があります。 「
Urゲーム 」(その
バージョンでは
Dmitry Skiryuk )では、上部に置かれたチップは、その下にあるすべてのチップの動きをブロックします。 対戦相手のチップに「乗って」、他の人の費用で「乗って」できるゲームがあります。
ZoGでタワーゲームを実装することは、これまでになく簡単になります。 主な問題は、この「ゲームデザイナー」のボードの各セルに複数のピースを含めることができないことです。 このアプローチは「チェス」ゲームでは便利です。別の駒で占められているフィールドに切り替えると、最後の駒を自動的に取得することになるため(移動の説明に1つのチームが保存されます)、ゲームに「塔」が表示されるとすぐにその説明は悪夢に変わります。 しかし、時にはあなたが出ることができます。
Rhythm Machiaでは、各プレイヤーには1つの合成図しかありません。 これにより、ピラミッドを描いた特定の「架空の」図をフィールドに保持し、ボードから離れた場所に「デコード」を表示できます。 もちろん、このアプローチは頭痛を完全に軽減するわけではありません。 多くの「興味深い」瞬間があります。 たとえば、ピラミッドの最後のピースが「食べられる」場合、ボードから「マーカー」を削除することが非常に重要です。 そうしないと、「空の」ピースがボードに残り、「歩き」、「取られる」ことはできませんが、他のピースの動きを妨げます。 Rhythmachia自体のルールの複雑さを考えると、そのようなゲームの実装は単純とは言えません。
「
Ur 」で同様のトリックが適用されました。 このゲームでは、「山で」チップを構築するために、特定のフィールドでのみでき、「スタック」の高さは4チップを超えることはできません。 これらの特別な分野では、ロックされたチップが捕獲されたときに折り畳まれた一種の「ポケット」が作成されました。 一番上のチップが「スタック」を離れると、キャプチャされた最後のチップが「ポケット」からボードに転送されます。 競技場の説明は本当の迷路に変わりました。
フィールド '' Urゲーム ''(define board-defs (image "images/Ur/ur.bmp") (grid (start-rectangle -483 27 -422 99) (dimensions ("i/j/k/l/m/n/o/z/a/b/c/d/e/f/g/h/y/x" (67 0))
このソリューションは理想的とは言えません。 プレーヤーはフィールドにまったく表示されないため、「ポケット」にロックされているすべてのチップを覚えておく必要があります。 さらに、ゲームに不慣れな人がボード上で何が起こっているかを把握するのが難しい場合があります。チップは、明らかなシステムなしで消えて表示されます。 場合によっては、別のアプローチを使用する方が便利です。 ボードフィールドに含めることができるピースが1つだけの場合-ピースを構成するピースではなく、スタック自体にしてください! このアプローチは
Mankalaファミリーのゲームに
最適ですが、チップセットの順序が重要であり、スタックにさまざまな形状を
含めることができる場合、組み合わせが始まります。
言われたように、組み合わせ論 (define merge-w (if (piece? w) (add $1w) else (if (piece? b) (add $1b) else (if (piece? ww) (add $1ww) else (if (piece? wb) (add $1wb) else (if (piece? bw) (add $1bw) else (if (piece? bb) (add $1bb) else (if (piece? www) (add $1www) else (if (piece? wwb) (add $1wwb) else (if (piece? wbw) (add $1wbw) else (if (piece? wbb) (add $1wbb) else (if (piece? bww) (add $1bww) else (if (piece? bwb) (add $1bwb) else (if (piece? bbw) (add $1bbw) else (if (piece? bbb) (add $1bbb) else (if (piece? wwww) (add $1wwww) else (if (piece? wwwb) (add $1wwwb) else (if (piece? wwbw) (add $1wwbw) else (if (piece? wwbb) (add $1wwbb) else (if (piece? wbww) (add $1wbww) else (if (piece? wbwb) (add $1wbwb) else (if (piece? wbbw) (add $1wbbw) else (if (piece? wbbb) (add $1wbbb) else (if (piece? bwww) (add $1bwww) else (if (piece? bwwb) (add $1bwwb) else (if (piece? bwbw) (add $1bwbw) else (if (piece? bwbb) (add $1bwbb) else (if (piece? bbww) (add $1bbww) else (if (piece? bbwb) (add $1bbwb) else (if (piece? bbbw) (add $1bbbw) else (if (piece? bbbb) (add $1bbbb) else (if (piece? wwwww) (rw) (add $1wwww) else (if (piece? wwwwb) (add $1wwww) else (if (piece? wwwbw) (rw) (add $1wwwb) else (if (piece? wwwbb) (add $1wwwb) else (if (piece? wwbww) (rw) (add $1wwbw) else (if (piece? wwbwb) (add $1wwbw) else (if (piece? wwbbw) (rw) (add $1wwbb) else (if (piece? wwbbb) (add $1wwbb) else (if (piece? wbwww) (rw) (add $1wbww) else (if (piece? wbwwb) (add $1wbww) else (if (piece? wbwbw) (rw) (add $1wbwb) else (if (piece? wbwbb) (add $1wbwb) else (if (piece? wbbww) (rw) (add $1wbbw) else (if (piece? wbbwb) (add $1wbbw) else (if (piece? wbbbw) (rw) (add $1wbbb) else (if (piece? wbbbb) (add $1wbbb) else (if (piece? bwwww) (rw) (add $1bwww) else (if (piece? bwwwb) (add $1bwww) else (if (piece? bwwbw) (rw) (add $1bwwb) else (if (piece? bwwbb) (add $1bwwb) else (if (piece? bwbww) (rw) (add $1bwbw) else (if (piece? bwbwb) (add $1bwbw) else (if (piece? bwbbw) (rw) (add $1bwbb) else (if (piece? bwbbb) (add $1bwbb) else (if (piece? bbwww) (rw) (add $1bbww) else (if (piece? bbwwb) (add $1bbww) else (if (piece? bbwbw) (rw) (add $1bbwb) else (if (piece? bbwbb) (add $1bbwb) else (if (piece? bbbww) (rw) (add $1bbbw) else (if (piece? bbbwb) (add $1bbbw) else (if (piece? bbbbw) (rw) (add $1bbbb) else (if (piece? bbbbb) (add $1bbbb) )))))))))))))))) )))))))))))))))) )))))))))))))))) )))))))) )))) )) )
この悪夢のようなマクロは、ゲームフォーカスの実装のほんの一部です。これは、Martin Gardnerの
Mathematical Leisureで説明されています(悪夢の完全版は
こちらでご覧
いただけます )。 最も難しいのは、すべてのエラーを見つけて修正することでした。 もちろん、
prezrfを使用してコード生成を自動化することは可能ですが、実際には、これらの「2つの悪」のうちどちらが意地悪なのかはまだわかっていません。 ただし、プログラムはうまく機能します。
ちなみにこの「コーディングの休日」の過程で、ZoGマクロは
高階関数とはかけ離れていることがわかりました。 このマクロの実装により、
最初のバージョンは機能しませんでした。
(define add-piece (if empty? add else (merge-$1 $2) ) )
$ 1パラメーターの置換は見事に機能しましたが、ZoGは受け取った名前(たとえば
merge-w )でマクロを見つけることを断固として拒否しましたが、それは確かにソースコードにありました! 手でもう少し働かなければなりませんでした。
もちろん、このアプローチはより複雑なケースでは機能しません。 Focusでは、スタックのサイズは5チップに制限されています。 この「プロクラステンベッド」に入らないものはすべて、プレーヤーのリザーブに移されるか、ボードから完全に取り除かれます(移動を行うプレーヤーに属するチップによって異なります)。 Pillarsでは、ピースがボードから離れることはありません! ゲーム中、24個のチップすべてを1つの「タワー」に組み込む
ことが
できます。 同時に、フィギュアの一部は女性かもしれません! 希望する人は、可能なオプションの数を自分で計算し、この数を「フォーカス」の実装に使用される62個の数字と比較できます。 「柱」では、実際の3次元ボードを作成する必要があります。
Pillarsでのボードの説明 (define Bdef (image "images\Bashne\bd8x8x2.bmp") (grid (start-rectangle 5 45 53 93) (dimensions ("a/b/c/d/e/f/g/h" (49 0))
Karl Schererは、「塔」の最大可能高さについて楽観的すぎたことがわかります。 実装では、ボードは2つの
グリッドで構成されてい
ます 。 左側は、プレイヤーが駒を動かす通常の2次元ボードですが、このボードで行われたすべての動きは、駒の詳細な説明を含む右側の
グリッドに複製されます。
これは、そのようなゲームの実装に対する最も正しいアプローチですが、その助けを借りても、
おうし座を実装することは困難です。 他のフィギュアの設置が禁止されているという事実を考えると、このゲームの最大高さの「タワー」は31桁で構成できます(タワーを構築するための可能なオプションの数をカウントすることは興味深い組み合わせ作業です)。
上記のすべてから、「タワー」ゲームを効果的かつ簡潔に説明する方法の開発は、ユニバーサルゲーム「エンジン」の開発者にとって重大な課題であることは明らかです。 残念ながら、この問題を解決したとは言えません。 ボードに複数のピースを配置できるようにしたいと思うかもしれませんが、この決定はすぐに多くの難問を提起します。 フィールド上に配置された一連の形状は合理化されていますか? キットの所有者を確認する方法は? セットのどの部分が「全体」としてどのようなルールで移動を実行できますか? 私はこの道に沿った合理的な解決策を見ていません。
より有望なのは、動きを生成するプロセスでピースをセットに結合する可能性です。 上下に配置された数字を組み合わせて(移動生成のメインフェーズの前でも)、このセット全体を移動できます。 「スタック内」にあるピースは独立しており、個々のピースの所有権とそれへの移動の可能性をいつでも判断できます。 最も重要なことは、このアプローチは普遍的なことです。 「タワー」ゲームに加えて、フィギュアのグループを1回の動きで動かすことができるすべてのゲームを記述することができます(
Ordoや、同じ「数学の余暇」でM.ガードナーが説明した「
レッドドンキー 」パズルなど)。
残念ながら、疑問はまだ残っています。 セットに組み合わされた数字は、一方向に「平行」に移動する必要がありますが、選択された方向は、セットの初期位置のいずれに対しても決定されない場合があります! また、(
Ordoゲームのように)セット内のすべてのピースで中間フィールドを渡すときに、移動にチェックを含めることができます。 人にとって簡潔で理解可能な方法でそのようなチェックをどのように定式化するかは完全に理解できません。
Turn the Tables Checkersでボードの一部を回転させるなど、「パラレル転送」以外のグループ移動を実装する方法は不明です。 一般的に、十分な質問があります。 私はそれらを解決できると思います。
記事を締めくくるために、別の多次元
ゲームに特化したGregory(gest)の素晴らしい
ブログから引用します。
...各プレイヤーには4つのピースがあります。 各図には、その動きを示すトレースがあります。 彼の一時的な線を切ることで、過去に敵を殺すことができます。 過去に敵のフィギュアを殺すことができます。それにより、敵が以前に殺されていなかった場合に敵が彼女を殺したポイントで、自分のフィギュアを復活させることができます。 敵があなたのフィギュアの一時的なラインを切断し、それによって以前に殺したフィギュアを復活させることができる状況では、他のフィギュアを使用してすでに殺された敵のフィギュアをさらに早く殺すことができます。
人々はあなたがパズルを解くことができる多くのゲームを考え出しています...