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, ... と一つ一つ手入力して「本当にしっかり動いているかな」と検証しておきましょう。
正しい動き方はもちろん、間違った動き方を入力した際にちゃんと「動けない」とアラートなりなんなりを出すかも確認してください。ルールをまともに覚えていない人がゲームしても問題ないようにね。