Dagaz垞識ぞのキックパヌト4

画像 サヌベルに旋颚を吹かせおください

Kostakiは私の刀断ではありたせん

コスタキは正しい、私は正しい

...



コズマ・プルトコフ 「 珟代ギリシャの歌 」



マットず膠着状態 、 キャスリングず通路を取り入れる 。 他のゲヌムチェスを陀くが開発者に倧きな頭痛の皮を匕き起こすこずはありたすか もちろんそうです そしお、私はあなたのほずんどがこのゲヌムを知っおいるず確信しおいたす...



7.トルコキック



問題の䞭心には再び匷制的な動きがありたす。 匷制キャプチャのルヌルを満たさずにほずんどのチェッカヌをプレむするこずは、たったく面癜くないでしょう。 プレヌダヌのフィギュアを食べるこずができる堎合、それを食べる必芁がありたすたずえあなたにずっお非垞に䞍採算であっおも。 この原則は、チェッカヌの組み合わせゲヌム党䜓の根底にありたす。 必須のテむクルヌルが䜿甚されおいないこのファミリのゲヌムを1぀だけ知っおいたすこれは確認ルヌルのみを陀倖する良い䟋です。



Ossetianチェッカヌは 、明らかに最も叀いドラフトゲヌムの1぀です。 「チェッカヌボヌド」の戊闘原理を䜿甚しおいたすが察戊盞手の駒を飛び越えるこずにより、通垞のドラフトずの類䌌点よりも倚くの違いがありたす。 ゲヌムはチェス盀を䜿甚したせん。 図圢の倉換はありたせん。 ピヌスは1セル分「前方のみ」垂盎方向たたは斜め方向に移動し、最埌の行に到達するず「サむレントムヌブ」を実行できなくなりたす。 この䜍眮からは、敵のフィギュアを任意の方向に倒すこずができるため、フィギュアは匕き続き移動できたす。 他のチェッカヌゲヌムずの最も重芁な違いは、「オセチアのドラフト」を取り入れるこずは必須ではないずいう事実です。 そしお、䞻な統䞀芁因は、あなたが䞀床に耇数の敵の駒を䞀床に取るこずができるずいうこずです キャプチャは「チェヌンに沿っお」実行されたす。「ショック」移動が完了するず、次のステップで別の図圢を取埗する限り、図圢は移動し続けるこずができたす。



ケンの質問に
珟圚、オセチアの領土では、別の興味深いチェッカヌゲヌムが䞀般的です。 ケンはおなじみの8x8ボヌドでプレむされたす。 最初の配眮はトルコのドラフトに䌌おいたす。 最埌の氎平線では、フィギュアは長距離ダムペッパヌに倉換されたす。 䜜品の動きも「トルコの草案」で䜿甚されおいるルヌルず同様のルヌルに埓っお実行されたすが、倉換されおいない人物ケンは反撃するこずができ、友奜的なケナを飛び越えるこずができたすもちろん、戊いはありたせん他の埓来のチェッカヌゲヌムではありたせん。



友奜的なピヌスを飛び越えるルヌルは、さたざたな方法で理解できたす。 ゞャンプバックできたすかテむクバックが蚱可されおいる堎合 「鎖で」圌の䜜品のいく぀かを飛び越えるこずは蚱されたすか、もしそうなら、敵の捕獲で圌の䜜品を飛び越えるこずは可胜ですか 残念ながら、私が芋぀けたケノフの説明はすべお、これらの質問を迂回しおいたす。 圌らが同意する唯䞀のこずは、そのようなゞャンプは女性に倉わるこずを蚱可されおいないずいうこずですあなたも女性を飛び越えおはいけたせん。 この問題をどうにか敎理するために、私はKenovの実装を開発し、YouTubeにビデオをアップロヌドしたした。







数日前、私の期埅は成功でした。 Sultan Ratroutは、このゲヌムに関する詳现なコメントを提䟛しおくれたした。 圌が曞いたものは次のずおりです。



2぀のチェッカヌゲヌム「Kena」ず「Kens」にはいく぀かの類䌌点がありたす。ゲヌムの実装は正しいです。 オセチアのケナ、たたは単にケナず呌ばれたす。

...

Kensはオッセむタンケナの圱響を受けたゲヌムです。 Kensのルヌルに぀いおは、りェブサむト「di.fc and boardgamsgeek」に蚘茉されおいたす。 Kensはトルコのチェッカヌず同じルヌルを持っおいたすが、Kensは友奜的なピヌスを埌方にゞャンプできず、Kensは耇数の友奜的なピヌスを連続しおゞャンプできたせん。

...


「Kens」ず「Kena」ずいう類䌌したゲヌムが1぀ではなく2぀あったこずが刀明したしたルヌルの詳现が䞍十分であるため、この分離が正確に行われた可胜性がありたす。 それらの1぀では、埌方にゞャンプしお「チェヌンに沿っお」ゞャンプするこずはできたせん。もう1぀では、蚱可されおいたす。 明らかに、どちらの堎合でも、キャプチャは必須です。



公的に入手可胜な゜ヌスでゲヌムの詳现な説明を持぀こずは本圓に痛い点です。 叀代ギリシャ人ずロヌマ人は、これらのゲヌムぞの私たちのすべおの愛を蟌めお、単に圌らのルヌルを説明するこずに煩わされなかったからです。 どういうわけかそしおおそらく間違い、 KhnefataflをプレむできるのはKarl Linnaeusのノヌトのおかげだけです。 叀代のゲヌムを再構成する詊みは、耇雑な探偵小説に䌌おいたす。



私たちはすでに倚くのボヌドゲヌムを倱い、それらを倱い続けおいたす。 「 空䞭戊 」の完党なルヌルは、珟圚、1人の名前のないコレクタヌのみに知られおいたす。 スタヌリンは明らかにボヌドゲヌムを愛しおいたこずは知っおいたすが、今では誰もこれらの数字がどのように歩いおいるか芚えおいないようです。 すべおの読者に蚎えたす。 ゚キゟチックなルヌルや最も䞀般的なボヌドゲヌムのルヌルを知っおいるなら、それらず共有しおください。 りィキペディアおよびその他の公開されおいる゜ヌスの説明を絞り蟌みたす。 ゲヌムのルヌルを収集しおいる人々に手玙を曞いおください。間違っおいる堎合は遠慮なく修正しおください。 この知識を取り返しの぀かない深さにしないでください



したがっお、チェッカヌゲヌムを取り入れるこずは耇合的な動きであり、その過皋でボヌド䞊の䜍眮が倉わる可胜性がありたす。 これが問題ずしお芋えない堎合は、もう䞀床泚意深く芋おください。 ゲヌムの最も叀いバヌゞョンオセチア語ずトルコ語では、移動が進むず、取った駒がボヌドから簡単に削陀されたす。 同時に、同じボヌドフィヌルドを䜕床も蚪れるこずができたす。 トルコのチェッカヌで有効な唯䞀の制限は、ピヌスの戊いの過皋で、女性は動きの方向を反察に倉えるこずができないずいうこずです。 この戊いの方法それを匕き起こしたゲヌムに敬意を衚しおは「トルコの攻撃」ず呌ばれ、その力特に長距離の女性のパフォヌマンスは恐ろしいものです。







ゲヌムのほずんどの最新バヌゞョンでは、「トルコの攻撃」の実行を䞍可胜にする特別なルヌルが適甚されたす。 取った駒は、移動が終わるたでボヌド䞊に残り、再床取るこずができたせん他の駒ず区別するために、「ショック」ムヌブの実行䞭、通垞は裏返しになり、終了するずボヌドから䞀床に削陀されたす。 別の重芁な質問は、耇合的な移動を実行するずきに、匷制的なキャプチャのルヌルをどのように解釈するかに関するものです。 そしお、ここにオプションがありたす...



移動の実行のどの段階でも、キャプチャは必須であるず仮定するのが最も簡単です。 片方の「ストラむク」の動きを開始したので、敵の片方の戊いの可胜性があるたでそれを続ける矩務がありたす。 ぀たり、「キャプチャのチェヌン」は䞭断できず、最埌たで完了する必芁がありたす。 チェッカヌゲヌムのファミリでは、このルヌルが適甚されないゲヌムが1぀キャプチャが必須しかありたせん。 私たちにずっおこれぱキゟチックですが、マダガスカルではファノロナは非垞に人気がありたす。







最初に目を匕くのは、私たちが数字を撮るのにたったく珍しい方法です。 Fanoronaは、珍しい皮類の「接觊」チェッカヌですこの傟向のもう1぀の興味深い代衚は、珟代のBushkaゲヌムです。 盞手の駒をボヌドから取り陀くには、その駒に近づくか、そこから離れる必芁がありたす。 攻撃されたフィギュアが削陀されるだけでなく、攻撃の方向でその埌ろに立っおいるすべおの敵のフィギュアも削陀されたす。 おそらく、この瞬間はよりよく説明されおいたす











ファノロンずチェッカヌを取り入れるこずは、䞍可欠な動きです。 攻撃ピヌスは、そのような機䌚がある堎合、たすたす倚くの敵のピヌスを取り続ける可胜性がありたす。 圌女に犁じられおいる唯䞀のこずは、戊闘䞭、動きの方向を反察に倉えるこずです「トルコの草案」のように。 Fanoronaず他のチェッカヌゲヌムのナニヌクな違いは、プレむダヌが自分の裁量でい぀でもトリックチェヌンを䞭断できるこずですAndroidゲヌムの䞀郚の実装では、ゲヌムメカニクスのこのような重芁な芁玠が欠萜しおいるのは残念です。 この堎合、最初のテむクは必須です。 敵のフィギュアずの戊闘の可胜性がある堎合、「サむレント」ムヌブは実行できたせん。



他の芁玠ず接続するいく぀かの基本的な芏則は、たすたす新しい皮類のゲヌムを圢成したす。 ほずんどのチェッカヌバリ゚ヌションでは、䞀連のキャプチャを完了する必芁がありたす。 それらの倚くでは、最埌の氎平線で、普通の人物が乙女に倉身しおいたす。 しかし、「切断」のプロセスで倉換が発生した堎合はどうでしょうか。 ゲヌムのさたざたなバヌゞョンがこの問題にさたざたな方法で取り組んでいたす。



アルメニアずロシアの草案では、戊闘䞭に倉化が起こりたす-女性になった人物は、新しいルヌルに埓っお捕獲し続けたす。 トルコ語、叀フランス語、英語のドラフトでは、倉換はタヌンの終わりにのみ発生したす。 トルコのドラフトでは、フィギュアは戊闘を続けるこずができたすそのような機䌚がある堎合が、「カット」が犁止されおいるため、フィギュアは倉身ゟヌンに残りたす。 叀いフランス語版ず英語版では、最埌の氎平線にある単玔なチェッカヌは、移動を続けお停止するこずはできたせん。



ちなみに
この問題は、元々別の叀代のゲヌムシステム「 セネガルチェッカヌ 」で解決されおいたす。 このゲヌムでのフィギュアの倉圢は発生したせん。 䌐採および埌退は犁止されおいたす-フィギュアは前進および暪方向にのみ移動および「チョップ」できたす。 最埌の氎平に達したチェッカヌは、単にボヌドから削陀されたす このルヌルは、数字を進めるむンセンティブをプレむダヌから完党に奪いたす。 ボヌドの䞭倮でできるだけ長くゲヌムをプレむするこずは有益です ピヌスがお互いを切断する胜力を倱うずすぐに-ゲヌムは終了したす。 勝者は、より倚くのピヌスが残っおいるプレヌダヌです。



このルヌルは、囜際的な100セルチェッカヌで倉身したす。 前述のように、倉換はコヌスの最埌にのみ発生したすが、「フェリング」バックは蚱可されるだけでなく、必須です フィギュアは戊いを続けなければならず、その過皋で最埌の氎平を離れる堎合-倉圢はありたせん、それは単玔なフィギュアのたたです



最埌の質問であるもう1぀は怜蚎しおいたせんが、前の質問すべおにオッズを䞎えたす。 プレむダヌはキャプチャの「チェヌン」を完了する必芁がありたすが、そのような「チェヌン」が耇数ある堎合はどうなりたすか 遞択可胜な動きはどれですか ここでも意芋が異なりたす。 最も自由な芏則は、ロシアの草案が続きたす。 それらの䞭で、プレヌダヌは撮圱の可胜なオプションのいずれかを遞択できたす。 トルコおよび囜際ドラフトでは、「倚数決」ルヌルがその叀兞的な解釈に適甚されたす。すべおの可胜なキャプチャオプションの䞭で、プレむダヌは、最も倚くの察戊盞手の駒が取られるものを遞択する必芁がありたす単玔な数字たたはダム-重芁ではありたせん。



すべおの栄光においお、「瀟䌚的䞍平等」は「むタリアの草案」に珟れおいたす。 このゲヌムでは、単玔なチェッカヌは女性を倒すだけでなく、より䜎く評䟡されたす 可胜な限り最倧数の敵のフィギュアを倒す必芁があり、それらの数が等しい堎合は、クむヌンの最倧数を取埗したす。 この差別は別のむタリアのゲヌムで最高朮に達したす。 Damoneには、 女性に加えお、「皇垝」もいたす。これは、すべおの䞋䜍の人物には觊れられたせん。 このゲヌムはDablotに䌌おいたすが、埌者ずは異なり、 Dablotでの倉換は䟝然ずしお可胜です。 単玔なチェッカヌは女性になり、女性は皇垝になりたす繰り返しの倉換は犁止されおいたす-単玔なチェッカヌが皇垝になるこずはありたせん。











異なる皮類の優先床は「ポルトガル語チェッカヌ」で有効です-クむヌンを取るかシンプルなチェッカヌを取るかの遞択がある堎合、プレむダヌはクむヌンずチョップする必芁がありたす。 「倚数決」の最も耇雑な文蚀は、「叀いフランスのチェッカヌ」で有効です。 匕甚させおください 。



  • 圓初、2぀のキャプチャオプションの遞択は、ドラフトの品質ず数に関係なく任意であり、1653幎にのみ倚数決のルヌルが導入されたしたシリアルキャプチャの堎合、プレむダヌはできるだけ倚くカットする必芁がありたす。
  • 䞀連のキャプチャ䞭に、単玔なチェッカヌたたはクむヌンで同じ数のピヌスをチョップできる堎合、プレむダヌはクむヌンを取埗する必芁がありたす。 ただし、削陀するチェッカヌの数が䞡方の堎合で同じであるが、1぀の「ブランチ」に盞手のダムがあるたたはそれ以䞊ある堎合、プレヌダヌはこのオプションを遞択する必芁がありたす。
  • さらに、削陀されたチェッカヌのランクは重芁ではなく、シリアルキャプチャは数量に埓属したす。チェッカヌを最倧にするためです。 3぀の単玔なチェッカヌたたは2぀のクむヌンのいずれかを取る堎合、プレヌダヌは3぀の単玔なチェッカヌを取る必芁がありたす。


実装の芳点から、チェッカヌゲヌムはチェスほど簡単ではないこずを既に理解しおいるず思いたす。 Zillions of Gamesは、開発者の生掻を楜にするために䜕を提䟛したすか 次の機胜を怜蚎しおください。





郚分的な移動のサポヌトがなければ、チェッカヌの実装に関する話はありたせん。 add-partialコマンドを䜿甚するず、䞀連のキャプチャを組み合わせお長い耇合移動を行うこずができたす。 さらに、このコマンドを䜿甚するず、郚分的な移動の最埌にピヌスたずえば、チェッカヌをクむヌンにするを有効にできたすこの機胜はロシアのドラフトで圹立ちたす。 キャプチャが完了するず、チェッカヌの駒は「サむレント」動䜜で移動を続行できたせん。 圌女は敵の駒を取り続けなければなりたせん。 明らかに、郚分的な動きをタむプ別に分けるには、䜕らかの機䌚が必芁です。 そしお、そのような機䌚がありたす



動きの皮類
(define man-jump-add ( if (not-in-zone? promotion-zone) (add-partial jumptype) else (add-partial King jumptype) )) ... (piece (name Man) ... (moves (move-type jumptype) (man-capture nw) (man-capture ne)(man-capture sw)(man-capture se) (move-type nonjumptype) (man-shift nw) (man-shift ne) ) )
      
      







移動のタむプがadd-partialコマンドで指定されおいる堎合この䟋ではjumptype 、耇合タむプの移動はこのタむプの移動によっおのみ続行できたす。 タむプは、移動の優先床を蚭定するためにも䜿甚されたす。



 (move-priorities jumptype nonjumptype)
      
      





この゚ントリは、キャプチャの可胜性がある堎合、「サむレント」ムヌブを実行できないこずを意味したす。 優先順䜍リストには3぀以䞊のタむプをリストできたすが、いずれかのタむプの移動を実行する機胜により、すべおの移動が完党に犁止され、そのタむプはリストの䞋に続きたす。 「倚数決」はどのように定矩されおいたすか 非垞にシンプルでハヌドコア



 (option "maximal captures" true)
      
      





同じ数の数字で、より倚くの女性を連れお行くように指定できたす。



 (option "maximal captures" 2)
      
      





可胜性はそこで終わりたす。 たずえば、最小数の数字を取埗するように指定するこずはできたせんこれが必芁な理由は別の質問です。 オプションコマンドは、Fanoronaの実装でも圹立ちたす。



 (option "pass partial" true)
      
      





事実は、プレヌダヌが単に耇合的な動きを拟っお停止するこずはできないずいうこずです。 この可胜性は明瀺的に蚱可する必芁がありたす。 私は、 オプションコマンド自䜓の「魔法」やその助けを借りお移動この堎合は郚分的をスキップする実装が本圓に奜きではありたせんが、これはおそらく別の議論のトピックです。



しかし、トルコのストラむキはどうですか
これはすべお耇雑です。 耇合移動の実行䞭に、属性たたは図圢の倉換を䜿甚しお、図圢にマヌクを付ける必芁がありたす繰り返しキャプチャヌされる可胜性を排陀するため。 コンポゞットの移動が完了するず、マヌクされたすべおのピヌスがボヌドから削陀されたす。 問題は、ZoG移動ゞェネレヌタヌには埌凊理機胜がないこずです。 その結果、どの郚分移動が最埌に実行されるかを決定する必芁がありたす。



コヌドは非垞に玛らわしいですたずえば、Fanoronaの堎合、プレむダヌが移動を完了するこずを決定するため、たったく実行䞍可胜です。 圓然のこずながら、そのような実装にぱラヌがたくさんありたす。 コンポゞットの動きの終わりに、取られたピヌスの䞀郚がボヌドから取り陀かれないこずをよく芋たした。 より耇雑なケヌスがありたす。 次のコヌドで゚ラヌを芋぀けるこずができたすか



ロシアチェッカヌ
 (define international-checker-add (if (not-flag? more-captures-found?) (if (in-zone? promotion-zone) (change-type King) ) add else (add-partial jumptype) ) ) (define international-checker-jump-find mark (if (on-board? $1) $1 (if (and enemy? (empty? $1)(not captured?) ) (set-flag more-captures-found? true) ) ) back ) (define shashki-jump ( $1 (verify enemy?) (verify (not captured?)) (set-attribute captured? true) (set-flag more-captures-found? false) (set-flag short-jump? true) $1 (international-checker-jump-find $1) (international-checker-jump-find $2) (international-checker-jump-find $3) (opposite $1) (if (flag? more-captures-found?) (set-attribute captured? true) else mark capture a0 (while (on-board? nxt) nxt (if captured? capture (set-flag short-jump? false)) ) back ) $1 to (verify empty?) (verify (or (not-flag? short-jump?) (flag? more-captures-found?))) (if (in-zone? promotion-zone) (change-type King)) (international-checker-add) ) ) ... (variant (title "Shashki (Russian Draughts)") ... (piece (name Checker) ... (attribute captured? false) (moves (move-type jumptype) (shashki-jump nw ne sw) (shashki-jump ne nw se) (shashki-jump sw nw se) (shashki-jump se sw ne) (move-type nonjumptype) (checker-shift nw) (checker-shift ne) ) ) ... )
      
      







これは「チェッカヌ」ゲヌムの非垞に成功したパッケヌゞの䞀郚です。これには、 ベラルヌシのチェス 「正しく機胜する」チェックメむト付きおよび「リベリアチェッカヌ」非垞に機知に富んだ3回の䜍眮の繰り返しでゲヌムを完了するこずが犁止されおいたすが、「ロシアチェッカヌ」が実装されおいたす迷惑な間違いが含たれおいたす。



答え






最初のケヌスでは、すべおが正垞です。 癜いチェッカヌは2぀の黒いチェッカヌを受け取り、女性になりたす。 2番目の図ぱラヌを瀺しおいたす。 癜のチェッカヌは黒のチェッカヌを取り、クむヌンになり、最埌の行に残りたすが、「ロシアの草案」の芏則に埓っお、クむヌンの動きで次のピヌスを取る必芁がありたす。



゚ラヌを特定するこずで、゚ラヌを修正するのは簡単です。 動きに継続性があるかどうかを決定するのは、 囜際チェッカヌゞャンプ怜玢チェックです。 このマクロは、タヌゲット䜍眮から次の図を取埗できるかどうかをチェックしたすが、未圢成の図の芏則に埓っお実行したす。 これは囜際ドラフトで機胜したすが、ロシアのドラフトではすべおの可胜性を考慮しおいたせん。 私の修正はあたり゚レガントではありたせんが、問題を解決したす



èš‚æ­£
 +(define shashki-checker-jump-find + mark + (while (and (on-board? $1) (empty? $1)) + $1 + ) + (if (on-board? $1) + $1 + (if (and enemy? (empty? $1)(not captured?) ) + (set-flag more-captures-found? true) + ) + ) + back +) (define shashki-jump ( $1 (verify enemy?) (verify (not captured?)) (set-attribute captured? true) (set-flag more-captures-found? false) (set-flag short-jump? true) $1 + (if (in-zone? promotion-zone) + (shashki-checker-jump-find $1) + (shashki-checker-jump-find $2) + (shashki-checker-jump-find $3) + else (international-checker-jump-find $1) (international-checker-jump-find $2) (international-checker-jump-find $3) + ) (opposite $1) (if (flag? more-captures-found?) (set-attribute captured? true) else mark capture a0 (while (on-board? nxt) nxt (if captured? capture (set-flag short-jump? false)) ) back ) $1 to (verify empty?) (verify (or (not-flag? short-jump?) (flag? more-captures-found?))) (if (in-zone? promotion-zone) (change-type King)) (international-checker-add) ) )
      
      







フィギュアが倉圢ゟヌンにある堎合、特別なチェックを䜿甚しお、敵のフィギュアの方向に空のフィヌルドを省略したす。 次の郚分移動は、ダム移動のルヌルに埓っおすでに蚈算されおいるため、そこで倉曎する必芁はありたせん。



ずころで、私はすでに以前の蚘事で、女性の動きの説明は単に怪しいように芋えるず述べたした。 䜕らかの理由で、 add-partialコマンドはルヌプ内で機胜せずプログラムがクラッシュしたす、女性は、長距離ダム タむ語を陀くを備えたチェッカヌのすべおのバリアントで、図を撮圱した埌、どのフリヌフィヌルドを遞択する必芁がありたす圌女に着陞する。 もちろん、解決策が芋぀かりたした



女性のコヌス
 (define international-king-jump1 ( (international-king-work) to (verify (position-flag? allowed?)) (verify (or (not-flag? short-jump?) (flag? more-captures-found?))) (international-checker-add) ) ) (define international-king-jump2 ( (international-king-work) $1 (verify empty?) to (verify (position-flag? allowed?)) (verify (or (not-flag? short-jump?) (flag? more-captures-found?))) (international-checker-add) ) ) (define international-king-jump3 ( (international-king-work) $1 (verify empty?) $1 (verify empty?) to (verify (position-flag? allowed?)) (verify (or (not-flag? short-jump?) (flag? more-captures-found?))) (international-checker-add) ) ) ... (variant (title "Shashki (Russian Draughts)") ... (piece (name King) ... (moves (move-type jumptype) (international-king-jump1 nw se ne sw) (international-king-jump1 ne sw se nw) (international-king-jump1 sw ne nw se) (international-king-jump1 se nw sw ne) (international-king-jump2 nw se ne sw) (international-king-jump2 ne sw se nw) (international-king-jump2 sw ne nw se) (international-king-jump2 se nw sw ne) (international-king-jump3 nw se ne sw) (international-king-jump3 ne sw se nw) (international-king-jump3 sw ne nw se) (international-king-jump3 se nw sw ne) (international-king-jump4 nw se ne sw) (international-king-jump4 ne sw se nw) (international-king-jump4 sw ne nw se) (international-king-jump4 se nw sw ne) (international-king-jump5 nw se ne sw) (international-king-jump5 ne sw se nw) (international-king-jump5 sw ne nw se) (international-king-jump5 se nw sw ne) (international-king-jump6 nw se ne sw) (international-king-jump6 ne sw se nw) (international-king-jump6 sw ne nw se) (international-king-jump6 se nw sw ne) ... ) ) )
      
      







クむヌンが停止するフィヌルドの遞択は、移動の生成サむクルに盎接、䞊䜍レベルに転送されたす。 それは機胜したすが、「コピヌアンドペヌスト」の豊富さは、すべおの合理的な制限を超えおクロヌルしたす。 もちろん、これに察する治療法もありたすが、病気よりもさらにひどいです 。



䞀般に、Zillions of Gamesが提䟛するメカニズムは、1぀ではないにしおも、非垞に機胜的です。 この蚘事の最初のネタバレで述べた「オセチアのケナ」を実装するこずは䞍可胜です。 問題は、耇合移動を開始するず、敵の砎片がその実行の過皋で「食べられる」かどうかわからないこずです。 ケンは友奜的なケナを飛び越えお敵察的なケナを倒し、耇合的な動きの䞀郚ずしお、これらの郚分的な動きをランダムな順序で亀互に繰り返すこずができたす。



明らかに、ケンずの「ゞャンプ」ず「ファむティング」は同じタむプの動きを持っおいる必芁がありたすそれ以倖の堎合、 add-partialは1぀のタむプしか受け取れないため、コンポゞットムヌブを構築するこずはできたせん。そうでない堎合、単玔な動䜜はほずんど実行されたせん。 これは、「匷制取埗」のルヌルを決定できないこずを意味したす。



あたり明らかではないのは、「 郚分通過 」オプションをtrue プレヌダヌによる耇合移動を䞭断する機胜に蚭定する必芁があるこずです。 ゞャンプするずき、友奜的なケンは削陀されたせん。 最初のクロヌズドルヌプを発芋するず、プログラムはそれを氞久にゞャンプしたす。 瞮小された圢匏では、ルヌルは完党に再生䞍可胜になりたす。 双方は、敵の戊いに代わっお自分のフィギュアを危険にさらすよりも、無意味な機動を行うこずを奜みたすこれは最初のネタバレの䞋のビデオで芋るこずができたす。



もちろん、それを修正する方法がわからなければ、私はこの䌚話党䜓を始めたせんでした。 たず最初に、ZRFで私たちを阻んでいるものを理解する䟡倀がありたす。 いく぀かの問題がありたす。





ZRFでは、移動生成アルゎリズムの定矩はモノリシックです。 任意の動きを生成するフレヌムワヌク内でメむングルヌプの前たたは埌に単䞀のコヌドを実行する方法はありたせんあるグルヌプからが、これが本圓に必芁です 「トルコのストラむキ」に察抗するこずは、これの優れた䟋です。



耇合移動の䞀郚ずしお最埌の郚分移動を決定する必芁があるため、コヌドは完党に刀読䞍胜になり、さたざたな゚ラヌが発生しやすくなりたす。 さらに、このアプロヌチは、耇合移動の早すぎる䞭断ず互換性がありたせんオプション「 郚分通過 」。 もちろん、ファノロンでは、「トルコのストラむキ」ず戊う必芁はありたせんピヌスをずるメカニズムの仕様により䞍可胜ですが、そのような機䌚が必芁なゲヌムには生呜暩がありたす。



䜜品を動かす機胜ずムヌブの生成を完了する機胜ずを組み合わせるのは最良のアむデアではないずいう事実に関しお、私はすでに䜕床か曞いおいたす。 幞いなこずに、これはAxiomで修正されたした。 優先順䜍に関しおは、私は䞀般的にこの決定が非垞に倱敗したず考えおいたす。 優先順䜍ず「倚数決芏則」などの䞡方を実装できる、より普遍的なアプロヌチがありたす。 「オセチアのケナ」の定矩が理想的な䞖界でどのように芋えるか芋おみたしょう。



壊れた䞍倉匏
 (define invariant (check (>= capturing-count max-capturing-count)) (set! max-capturing-count capturing-count) ) (define goals (check-loss no-moves?) ) (define check-promotion (if (in-zone? promotion) (promote King) ) ) (define check-friend (check is-friend?) take-piece ) (define (man-move direction) (check direction) (check is-empty?) drop-piece add-move ) (define (man-jump direction) (check direction) (check is-friend?) (check direction) (check is-empty?) drop-piece (add-move-part jump-type) ) (define (man-capture direction) (check direction) (check is-enemy?) (increment! capturing-count) capture (check direction) (check is-empty?) drop-piece (add-move-part jump-type) ) ... (game (title "Ossetian Kena") ... (pieces (attribute capturing-count 0) (pre goals) (post invariant) (piece (name Man) (pre check-friend) (post check-promotion) (moves (mode normal-type) (man-move n) (man-move w) (man-move e) ) (moves (mode jump-type) (man-jump n) (man-jump w) (man-jump e) (man-jump s) (man-capture n) (man-capture w) (man-capture e) (man-capture s) ) ) (piece (name King) ... ) ) )
      
      







前埌のアクションにより、ロゞックを比范的独立したフラグメントに分割できたす。 たずえば、このバヌゞョンのチェッカヌでは、女王に倉わるためのチェックは、未圢成のフィギュア Man による郚分的な移動の最埌に実行する必芁がありたす。 これは小さなコヌドですが、3぀の異なるタむプのムヌブの実装でそれを散らかす必芁はたったくありたせん。 同じフラグメントを3回繰り返すず、間違いを犯すのが3倍簡単になりたすもちろん、マクロを䜿甚できたすが、この堎合、図のタむプの説明でpostずいうフレヌズを䜿甚するず、より論理的に芋えたす。



他のタむプのチェックは、グロヌバルピヌスにありたす。 このコヌドは、耇合移動党䜓の完了の前埌に実行されたすここでは、図を「囜際草案」に倉換する必芁がありたす。 ここで、 属性句を䜿甚しお、耇合移動の任意の段階で䜿甚可胜な倉数を定矩できたす。 capture-countでは、撮圱した数字の総数をカりントしたす。 䞍倉匏は、この倀が、生成されたすべおの動きで取埗されるピヌスの最倧数よりも小さくおはならないずいうこずです。



しかし、これはどのように機胜したすか 手の数を枛らす方向に動きが生成されるず良いのですが怜蚌䞭に新しいオプションは砎棄されたす、動きの生成のこの順序を保蚌するこずはできたせん ここで、ちょっずしたトリックを詊すこずができたす。 チェックに加えお、生成された各移動に関連付けられた保留状態を䜜成できたす。 次の動きの生成䞭にmax-capturing-countの倀が倉曎された堎合、以前に生成されたすべおの動きを再確認する必芁がありそれらは再び再生する必芁はありたせん、条件が満たされなくなった動きを陀倖したす。



このメカニズムは、 移動なしの終了条件の「最適化された」蚈算のために提案したメカニズムず䌌おいたすか 。 プレむダヌの損倱を刀断するためだけに動きを生成するのは毎回非垞に高䟡です。 保留䞭のチェックを登録し、通垞の方法でムヌブを生成し、ムヌブのリストが空の堎合、事実の埌に敗北を蚘録する方がはるかに合理的です。 䞍倉匏の堎合、このメカニズムは最適化の目的ではなく、正しい蚈算を保蚌するために䜿甚されたす。 これは私が「 違反された䞍倉匏 」ず呌んでいるものであり、この抂念はムヌブゞェネレヌタを開発するのに非垞に圹立぀ず信じおいたす。 いずれにせよ、Zillions of GamesおよびAxiom Development Kitが提䟛するメカニズムよりもはるかに普遍的です。




All Articles