Pythonプログラミングで

チェスを作る

Stage 8 ゲームを進行する

8-7 ゲームセット後を処理する

なんらかの形でゲームに決着がつき、while ループを脱したところをコーディングします。まだ playmode 関数の中なのでインデントは 1 つ下げたままです。

                        
    print('\nGAME SET')
    if winner == EMPTY:
        print('1/2 - 1/2\tDRAW')
        # for record
        main_board.s = '1/2-1/2 '
        main_board.record(MAINRECADDRESS)
    elif winner == WHITE:
        print('1 - 0\tWHITE WINS')
        # after white's move, 1-0 is written where black's move is written
        main_board.s = '1-0 '
        main_board.record(MAINRECADDRESS)
    elif winner == BLACK:
        print('0 - 1\tBLACK WINS')
        # after white's move, 1-0 is written where black's move is written
        main_board.s = '0-1 '
        main_board.record(MAINRECADDRESS)
    else:
        logger.error('UNEXPECTED VALUE of PLAYER out of the loop')
        print('SYSTEM ERROR')
        sys.exit('SYSTEM ERROR')


    # record output
    if input('\nDo you want the record (y/n)? >>> ') in ['y', 'Y', 'yes', 'YES', 'Yes']:
        record = open(MAINRECADDRESS, 'r')
        print('\n------------------------------------')
        print(record.read())
        print('------------------------------------')
        record.close()


    print('\nGAME OVER\n')
                        
                    
UNAVAILABLE

どうせ長いと思ってたよ

察しが良くて助かりますよ。

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

まずゲームが終わってすぐ「ゲームセット」くらいはプレーヤーがわかるように書いときましょうか。

                        
    print('\nGAME SET')
    if winner == EMPTY:
        ...
                        
                    

さて、このあとは winner の値、すなわち勝者によって場合わけします。while ループを抜ける時に winner に勝者を格納しておいてよかったですね。まずは引き分けの場合です。

                        
    if winner == EMPTY:
        print('1/2 - 1/2\tDRAW')
        # for record
        main_board.s = '1/2-1/2 '
        main_board.record(MAINRECADDRESS)
                        
                    

下 3 行は Stage 10 で扱いますので、とりあえず print だけをみていただければいいです。引き分けの記法は 1/2 - 1/2 ですから、この通り書いておきましょう。

また、1/2 - 1/2 が引き分けを表すことを知らない場合のために DRAW という単語も合わせて記載しておきます。

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

白勝ち、黒勝ちの場合も同様です。record の類はやっぱり Stage 10 にお預け。

                        
    elif winner == WHITE:
        print('1 - 0\tWHITE WINS')
        # after white's move, 1-0 is written where black's move is written
        main_board.s = '1-0 '
        main_board.record(MAINRECADDRESS)
    elif winner == BLACK:
        print('0 - 1\tBLACK WINS')
        # after white's move, 1-0 is written where black's move is written
        main_board.s = '0-1 '
        main_board.record(MAINRECADDRESS)
                        
                    

その下にも record とかありますが、こいつもやっぱり Stage 10 で。最後に GAME OVER と書いておしまいです。

UNAVAILABLE

ただでさえ言葉足らずなのに、全く説明しなくなっちゃったよこの人

全部 Stage 10 でお教えしますから、安心してくださいよ。

NEXT Stage 9 ゲーム進行を記録する