方向性を持った位置同士のリンクです。
「moves」や「drops」における
移動ブロックで、現在位置から相対的な位置移動を行うために使用します。
絶対的な移動を行う場合は、「position」を使用します。
方向<direction>を$で設定した
移動ブロックを作成しておくことで、1つの移動を定義するだけで多方向へ移動できる駒を作成できます。
あらかじめ、「board」の「grid」内の「directions」で方向を定義しておく必要があります。
現在位置からの相対的な移動量(マス単位)で設定するため、方位(4方向~8方向)を定義するのが一般的です。
同じ方向<direction>を「links」で追加定義することにより、「grid」で定義できないような方向性を持つことができます。
例えば、右へ向かう方向「e」に、盤の右端のマス→左端のマスへ向かう方向性を追加し、
左へ向かう方向「w」に、盤の左端のマス→右端のマスへ向かう方向性を追加すれば、左右ループできる盤になります。
(define shift
($1 add)
)
※代入された方向$1へ1マス進みます。
(piece
(moves
(shift n)
(shift ne)
(shift nw)
)
)
※上、右上、左上へ1マス進む駒を設定します。
方向を反転します。
方向<direction>とは逆向きに進みます。
①
(moves
(
(opposite n)
)
)
※上(n)ではなく、下(s)に進みます。
②
(define move-2
( if (empty? $1)
$1
add
(opposite $1)
)
)
※方向$1が空であれば、方向$1に進んで「add」して、$1の逆方向に戻ります。
(moves
(
n
(move-2 w)
(move-2 e)
)
)
※上方向に進み、左が空であれば左へ進んで「add」して、右が空であれば右へ進んで「add」します。
最終更新:2020年08月27日 01:12