解説:direction

  • direction
 方向性を持った位置同士のリンクです。

 「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マス進む駒を設定します。

  • opposite<direction>
 方向を反転します。

  • (opposite <direction>)
 方向<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