Pythonプログラミングで

チェスを作る

Stage 8 ゲームを進行する

8-3 駒の動きを入力させる

ついにプレーヤーサイドの一番の醍醐味、動作の入力へと移ります。まずは「今どちら側の手番なのか」を表示します。

                        
        ### PLAYER INTRODUCTION
        if main_board.player == WHITE:
            print('WHITE (X to resign / H to help / Z to back) >>> ', end='')
        elif main_board.player == BLACK:
            print('BLACK (X to resign / H to help / Z to back) >>> ', end='')
        else:
            logger.error('UNEXPECTED VALUE of PLAYER in while loop')
            print('SYSTEM ERROR')
            sys.exit('SYSTEM ERROR')
                        
                    

盤面を表示する print メソッドが出力した分も合わせると、画面はこんな感じになります。

UNAVAILABLE

皆さんだってチェスとか二人でやるゲームプレーしている間に

UNAVAILABLE

あれ、今どっちの番だっけ

ってなるでしょ。

UNAVAILABLE

プレーヤーと一緒に書かれてる X とか H ってなんなん?

次回から扱うイベントコードです。X を入力すればリザイン、H を入力すればヘルプの閲覧ができます。また Z は Stage 10 で扱いますが、1手もどる機能です。

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

そしたらプレーヤーに入力をお願いしましょう。

                        
            ### INPUT ANALYSIS
            # inputting and deleting all spaces, replacing 'o' into 'O'
            main_board.s = input().replace(' ', '').replace('o', 'O')
                        
                    

7-1 で空白を消していたり、7-9 でキャスリングに使う小文字の o を大文字に置き換えていたりするので不要と思うかもしれませんが、ここでも不要な文字を削除したりしています。

UNAVAILABLE

キャスリングのときは数字の 0 をアルファベットの O にしていたけど、なんでここはないん?

リザインが入力された時に対応するためです。例えば「1-0」って入力されるとします。もし見境なく数字の 0 をアルファベットの O に変換していたらどうなりますか?

UNAVAILABLE

s_analyze でちゃんと認識してくれないな

そういうことです。

NEXT 8-4 ヘルプを処理する