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 を使ってあげることで「あんたパスだよ」と一度確認をとってあげてから相手の番に移るようにしてあげましょう。