コンピュータ将棋製作記 その4(2015年1月23日)
進捗どうですか?
昨日の課題
- floodgateでランダムプログラムを走らせる
今日進んだ所
- floodgateでランダムプログラムを走らせた
TCPクライアントとランダムプログラムの連結
TCPクライアントで、サーバから送られてくる文字列をパースして、それをランダムプログラムとつなげてやればいい。
サーバから送られてくるデータのプロトコルは次のページに定義されている。
CSAサーバ プロトコル ver.1.1.2: http://www.computer-shogi.org/protocol/tcp_ip_server_112.html
色々と詳細に送られてくるが、今回は馬鹿正直にそれらに対応する必要はない。今回対応したのは次の2つのコマンドのみ
- Your_Turn:+
- END Game_Summary
自分のターンが先手か後手かを判断するのと、サーバがデータを送り終わったことを判定するのが必要だったのでそれだけを実装した。
END Game_Summaryを受信したら、とにかくAGREEを返して試合開始待ちにし、STARTを受信したら先手だったらとにかく指す。相手の手を見て指す。それだけ
とにかく動作チェックが30分に1回しか出来ないので、バグを出して動かないと30分待ちというつらい状況だった。4回失敗したので2時間無為に過ごした。自分で簡易サーバを作って、そこでテストすればよかったかもしれない。
C言語の開発効率の悪さ
昨日も書いたけれど、C言語で書くのが間違いという思いをさらに強くしている。恐らく何らかのスクリプト言語で1から書き直すつもりでいる。
雑感
-
CSAに対応させる必要はあまりなかった
- USI等に対応させて、何らかのソフトでCSAに変換してもらえばよかったと考えている
-
ランダムで動かす最弱ソフトをfloodgateに入れていいのだろうか
-
全くのランダムにせよ、自分の書いた将棋プログラムが動いているのは嬉しいものだ
次回予定
TODO
- CSA、USIの状況について調べてみる。Windowsでの開発が必須か?
- (気合が乗れば)Pythonもしくはnode.jsを使って書き直しはじめる
- どのような設計で作るかについても考えておきたい
短期目標
- 金曜夜(30日夜)までに、minimaxなりα-βなりで何らかの思考ルーチンを組む