解説:zone

 ゾーンは、単一のユニットとして扱うことができる任意の位置<position>のセットです。
 ゾーンは、駒の昇格などの特別なアクションを実行する必要があるポジションの位置<position>を定義する簡単な方法です。

  • zone
 複数のpositionをグループ化したものです。
 最大で32個までのゾーンを定義できます。

  • (zone <zone-arg1> <zone-arg2> <zone-arg3>)


<zone-arg>の内容

  • (name <zone-name>)
 ゾーンの名前<zone-name>を設定します。

  • (players <player1>...<playerN>)
 ゾーンが適用されるプレイヤー(<player1>または・・・または<playerN>)を設定します。

  • (positions <position1>...<positionN>)
 ゾーンに含まれるポジション(<position1>または・・・または<positionN>)を設定します。

※有用なゾーンを設定するには、これら3つ全てを定義する必要があります。


(board
 (zone
  (name Center-zone)
  (players White Black)
  (positions e4 e5 d4 d5)
 )
)
※白と黒は位置(e4,e5,d4,d5)を中央ゾーン<Center-zone>とします。

 ゾーンには、異なるプレイヤーに対して異なる位置を指定することができます。


(board
 (zone
  (name Promotion-zone)
  (players White)
  (positions a8 b8 c8 d8 e8 f8 g8 h8)
 )
)
※白は、8段目を昇格ゾーン<Promotion-zone>とします。


(board
 (zone
  (name Promotion-zone)
  (players Black)
  (positions a1 b1 c1 d1 e1 f1 g1 h1)
 )
)
※黒は、1段目を昇格ゾーン<Promotion-zone>とします。

 ゾーンは、「verify」「if」「while」などで、「in-zone?」によってフラグとして参照できます。

<ポーンの移動ブロック
 (if (in-zone? promotion-zone)
   (add Knight Bishop Rook Queen)
 )
※現在の位置が、ゾーン<Promotion-zone>であれば、ナイトかビショップかルークかクイーンのどれかを追加します。

→つまり、ポーンが昇格ゾーンに移動した場合、ナイトかビショップかルークかクイーンのどれかに変化します。

※ゾーンが白と黒で別々に設定されているため、現在のポーンが白なのか黒なのかを判断しなくても、現在のプレイヤーに応じたゾーンで識別されます。


最終更新:2020年08月21日 18:05