Stage 5 駒を動かす
5-6 パラメーター処理をする
駒動かしたから終わりだー!!
と思ってはいけません。まだ大事な作業が残っていますよ。今までさんざんお世話になってきたパラメーターの皆さんを放置しないでください。
ほら、ep_target とか castl_k とか、駒動かしたら値変えなきゃいけませんよね。順に見ていきましょうか。
~~~~~~~~~~~~~~~
まずはアンパッサンで使う ep_target を調整していきます。
if piece == PAWN and abs(toRANK - frRANK) > 1:
self.ep_target = [toFILE, toRANK]
else:
self.ep_target = [OVERSIZE, OVERSIZE]
4-2 で確認した通り
- ポーンが 2 マス動いたら移動先の座標
- それ以外の動き(他の駒含む)は全て [OVERSIZE, OVERSIZE]
と分類します。
~~~~~~~~~~~~~~~
次はキャスリングです。キングサイドとクイーンサイドをまとめていっぺんにとはいかないので、それぞれ場合分けしてあげましょう。
# for castling q-side
if self.player in self.castl_q and (piece == KING or (piece == ROOK and frFILE == a - 1)):
self.castl_q.remove(self.player)
# for castling k-side
if self.player in self.castl_k and (piece == KING or (piece == ROOK and frFILE == h - 1)):
self.castl_k.remove(self.player)
リストからプレーヤーを抜く条件は
- キングを動かした
- or
- そのサイドのルークを動かした
となります。当然この中にはキャスリングも含まれますよ。キングの動きですから。
~~~~~~~~~~~~~~~
一応ここでしっかり機能するかテストしておくといいと思います。frFILE, frRANK, ... と一つ一つ手入力して「本当にしっかり動いているかな」と検証しておきましょう。
正しい動き方はもちろん、間違った動き方を入力した際にちゃんと「動けない」とアラートなりなんなりを出すかも確認してください。ルールをまともに覚えていない人がゲームしても問題ないようにね。