Stage 9 ゲーム進行を記録する
9-4 ゲームで記録機能を運用する
さて、record を実際にゲーム上で作動させましょう。playmode.py ファイルにいって playmode 関数内の while ループで パラメーターを変える前です。
# invalid input (here, valid motion is conducted)
if motion == False or main_board.move(*motion) == False:
print('INVALID INPUT/MOTION')
continue
# recording the move
main_board.record(MAINRECADDRESS)
# turn count
if main_board.player == BLACK:
main_board.turn += 1
ここで MAINRECADDRESS に操作を記述します。やることは簡単。main_board の record メソッドを引数 MAINRECADDRESS で作動させるだけ。これで駒の動きがファイルに記入されます。
棋譜を引数に入れなくてええの?
main_board.s に棋譜がすでに入っていますよ。record は main_board.s をそのまま記録するので、引数に大したものを入れる必要はありません。
~~~~~~~~~~~~~~~
ゲームが終わったら勝敗を記入していきましょう。ループを抜けて winner で条件分岐している場所です。
まずは引き分けの場合です。
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)
record のために main_board.s を 1/2-1/2 にします。最後の空白はあった方が後々役に立つかも。
役に立たないやつじゃん
これも 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)
~~~~~~~~~~~~~~~
そして最後に棋譜を見せてあげます。
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()
いいかげん説明せぇやコラ
はいはい、わかりましたよ。まず「棋譜ほしい?」と聞きます。
# record output
if input('\nDo you want the record (y/n)? >>> ') in ['y', 'Y', 'yes', 'YES', 'Yes']:
record = open(MAINRECADDRESS, 'r')
いらねぇよ
って人に棋譜あげなくたっていいでしょ?
Yes と言われたら MAINRECADDRESS を読み取りモードで開いて中身を表示します。
record = open(MAINRECADDRESS, 'r')
print('\n------------------------------------')
print(record.read())
print('------------------------------------')
この長い横棒なんなん?
これは実際に出力を見てみましょう。
下の方にあるやつね
そうですそうです。
最後にファイルを閉じておしまいです。
record.close()