<マクロの定義1>
- 駒台の空き位置を検索するブロック:(first-empty)
(define first-empty
to-prison
(while not-empty? next-prison)
)
※「to-prison」で盤上の駒を、駒台へ送ります。
※「next-prison」で駒台の次のマスへ進みます。
※(prisoner-check)から呼び出されます。
- 持駒を生駒へ戻して所有者を変更するブロック: (convert-prisoner)
(define convert-prisoner
change-owner
(if (flag? bSilver) (change-type Silver))
(if (flag? bPawn) (change-type Pawn))
(if (flag? bBishop) (change-type Bishop))
(if (flag? bRook) (change-type Rook))
(if (flag? bLance) (change-type Lance))
(if (flag? bKnight) (change-type Knight))
)
※「change-owner」で駒の所有者が交代します。
※「change-type」で成駒を生駒へ変更します。
※(prisoner-check)から呼び出されます。
- 取った駒の種類を判別して持駒として駒台へ送るブロック:(prisoner-check)
(define prisoner-check
(if enemy?
(set-flag bSilver (piece? Promoted-Silver))
(set-flag bPawn (piece? Tokin))
(set-flag bBishop (piece? Promoted-Bishop))
(set-flag bRook (piece? Promoted-Rook))
(set-flag bKnight (piece? Promoted-Knight))
(set-flag bLance (piece? Promoted-Lance))
cascade
mark
(first-empty)
to
(convert-prisoner)
back
)
)
※駒の種類に応じて、フラグを立ておきます。
※(first-empty)と(convert-prisoner)を呼び出します。
※「cascade」によって、取られた駒を操作します。
※取られた駒を「to」の位置へ移動させます。
※「back」により「mark」した位置(敵駒の位置)へ戻ります。
※取った駒が「add」される位置は、「back」により敵駒の位置が最終位置となっています。
最終更新:2020年08月18日 17:27