Pythonプログラミングで

リバーシを作る

Stage 7 ゲーム進行をデザインする

7-2 各種判定機能を運用する

今回は main.py の while ループ内部に突入します。

                        
while True:
    ### GAMESET JUDGE
    # NOTE: you must not control game_status here because out of the loop it must be GAME_PRC
    if main_board.gamesetjudge():
        break

    ### PLAYER OUTPUT
    if player == BLACK:
        print('○ TURN', end=' ')
    elif player == WHITE:
        print('● TURN', end=' ')
    else:
        logger.error('UNEXPECTED VALUE of PLAYER in the while loop')
        break

    ### PASS JUDGE
    if main_board.passjudge(player):
        print('BUT YOU CANNOT PUT ANYWHERE (PRESS ENTER TO PASS)')
        input()
        # player change
        player *= -1
        continue
                        
                    

基本ずっとループを続けて、特定の場面で break を使って離脱するという手法を取ります。では早速みていきましょう。

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

まずはゲームセットになっていないか確認します。

もう置くとこがないみたいな奴やろ

よく覚えておいでで。この場合はループを離脱するので break してください。

                        
    ### GAMESET JUDGE
    # NOTE: you must not control game_status here because out of the loop it must be GAME_PRC
    if main_board.gamesetjudge():
        break
                        
                    

その次に来てるのが「今白黒どっちの番か」を示すものですね。この手のゲームだとたまにあることですが、「あれ、今どっちの番だっけ?」ってなりますから、そのためにユーザーに手番を見せてあげましょう。

                        
    ### PLAYER OUTPUT
    if player == BLACK:
        print('○ TURN', end=' ')
    elif player == WHITE:
        print('● TURN', end=' ')
    else:
        logger.error('UNEXPECTED VALUE of PLAYER in the while loop')
        break
                        
                    

print の引数 end=' ' は、その後ろにまだ文を続けることを念頭に置いて書いています。

その次がパスするかどうかを判定している部分。

                        
    ### PASS JUDGE
    if main_board.passjudge(player):
        print('BUT YOU CANNOT PUT ANYWHERE (PRESS ENTER TO PASS)')
        input()
        # player change
        player *= -1
        continue
                        
                    

パスの場合はプレーヤーを入れ替えて continue 文でループの先頭からやり直しましょう。

真ん中らへんの input() って何やってんだ??

例えば input がないとしたら、こんな具合に急に相手の番に変わってしまいます。

ということで、input を使ってあげることで「あんたパスだよ」と一度確認をとってあげてから相手の番に移るようにしてあげましょう。

NEXT 7-3 入力文字列をマス目の情報に変換する