add-partialとadd-copy-partial

 「add-partial」と「add-copy-partial」では、移動が完了せず、引き続いて同じ駒の移動を繰り返します。
 移動タイプ<move-type>を指定することで、特定の「move」のみを呼び出せます。
 「add」または「add-copy」が出た時点で、連続移動が完了します。

(piece
 (name Piece-1)
 (attribute never? true)
 (moves
  (move-type move-type-1)
  (move-1)
  (move-type move-type-2)
  (move-2)
 )
)

(piece
 (name Piece-2)
 (attribute never? true)
 (moves
  (move-type move-type-1)
  (move-3)
  (move-type move-type-2)
  (move-4)
 )
)

(define move-1
 (
  (verify never?)
  n
  (set-attribute never? false)
  (add-partial move-type-2)
 )
)

(define move-2
 (
  (verify (not never?) )
  w
  (set-attribute never? true)
  add
 )
)

※「Piece-1」で「move-1」を行い、上へ進んだ後、連続で「move-2」を呼び出して、さらに左へ進んで止まります。

(define move-1
 (
  (verify never?)
  n
  (set-attribute never? false)
  (add-partial Piece-2 move-type-2)
 )
)

(define move-4
 (
  (verify (not never?) )
  e
  (set-attribute never? true)
  add
 )
)

※「Piece-1」で「move-1」を行い、上へ進んで「Piece-2」になった後、連続で「move-2」を呼び出して、さらに右へ進んで止まります。

(define move-1
 (
  (verify never?)
  n
  (set-attribute never? false)
  (add-partial Piece-1 Piece-2 move-type-2)
 )
)

※「Piece-1」で「move-1」を行い、上へ進んだ後、「Piece-1」のままか「Piece-2」に変更するかを選択後、連続で「move-2」を呼び出して、さらに進んで止まります。

※駒を指定(複数の駒から選択)して連続移動することもできますが、指定された駒がその移動タイプ<move-type-2>を有している必要があります。

(piece
 (name Piece-1)
 (attribute never? true)
 (moves
  (move-type move-type-1)
  (move-1)
  (move-type move-type-2)
  (move-2)
 )
 (drops
  (move-type drop-type-1)
  (drop-1)
 )
)

(define drop-1
 (
  (verify empty?)
  (set-attribute never? false)
  (add-partial move-type-2)
 )
)

※「drop」で「add-partial」や「add-copy-partial」を使用した場合、「moves」内の移動タイプを指定して呼び出すこともできます。
→ドロップ後に連続して、ドロップした駒を移動することができます。
 (別の駒をドロップする場合は、その駒が指定された移動タイプを有している必要があります)

※逆に、「move」から「drop」を呼び出したり、「drop」から「drop」を呼び出すことはできないようです。 ??


最終更新:2020年09月15日 11:21