Pythonプログラミングで

チェスを作る

Stage 7 入力の棋譜を駒の動きに変換する

7-5 移動先とプロモーションを特定する

さあ、駒の移動先を解読しましょう。7-4 までの作業によって、最初の line の形によらず、現時点で先頭 2 文字は移動先の filerank を表します。ですから toFILE と toRANK に 7-4 と同じ要領で解読した番号を格納します。

                        
            # where the piece goes to (certainly written); toFILE and toRANK starts from 0
            toFILE = IO.ToggleType(line[0]) - 1
            toRANK = IO.ToggleType(line[1]) - 1
            logger.info('TO = {}, {}'.format(toFILE, toRANK))
                        
                    
UNAVAILABLE

ToggleType - 1 にしてインデックスになるようにせえってことやろ

その通りでございます。

~~~~~~~~~~~~~~~

お次にプロモーションです。何よりの証拠が "=" ですから、この文字の存在だけでプロモーションの有無を判別して構いません。"=" があれば次の文字が成り上がる駒の種類を表しますので、ToggleType を使って新しい変数 promote に格納してください。

                        
            # promotion
            if '=' in line:
                promote = IO.ToggleType(line[line.index('=') + 1])
            else:
                promote = EMPTY
            logger.info('promote = {}'.format(promote))
                        
                    

プロモーションしなければ promote の規定値は EMPTY とします。まあ P ~ K 以外の値であればなんでもいいんですが、使い慣れてる値がいいでしょ?

~~~~~~~~~~~~~~~

ここまでで大方必要な解読は終了しました。残っているチェックやアンパッサンなどの情報は追々「指定文字が line に含まれているか」によって確認しますので、もう line から文字を削ることはしなくて結構です。

NEXT 7-6 移動元の候補を列挙する