「十六式いろは」のあれこれ

コンピュータ将棋ソフトのエンジン「十六式いろは」の開発者のブログです。

(連続企画)Pythonで将棋ソフト制作その3の補足

youtu.be

上記の動画で作成したソースコードです。

main.py

while True:
    input_cmd = input()

    # USIプロトコル対応の将棋GUI(将棋所)に
    # エンジン登録するときに通信する処理。
    #
    # 普通にprintを使うと、改行はしてくれるので
    # 将棋エンジンを作る場合、問題なし。
    # バッファリングさせない(フラッシュさせる)ために
    # printの引数に「flush=True」を使う。
    if input_cmd == "usi":
        # ソフト名
        print("id name 16-168ui", flush=True)
        # 開発者名
        print("id author R.Sueyoshi", flush=True)
        print("usiok", flush=True)

    # 対局準備
    if input_cmd == "isready":
        # 設定の読み込みが必要ならここで処理する。
        print("readyok", flush=True)

    # 対局開始の合図
    if input_cmd == "usinewgame":
        pass

    # 局面の受け取り
    # 平手はstartpos
    # 例)
    # position startpos moves 7g7f 3c3d 2g2f
    # 最初の8文字を使う。
    if input_cmd[0:8] == "position":
        position = input_cmd
        print("position: ", position, flush=True)

    # 思考開始の合図
    # 最初の3文字を使う。
    if input_cmd[0:2] == "go":
        # とりあえず先手の角道を開ける一手を指す。
        print("bestmove 7g7f", flush=True)

    # エンジン停止の合図
    if input_cmd == "quit":
        # コマンド受付を終了する。
        break

# エンジンを終了させる。
quit()