コンピュータ将棋製作記 その3(2015年1月22日)
進捗どうですか?
昨日の課題
- TCP/IPでfloodgateにつなげるコードを書く
- 余力があればテストをもうちょっと綺麗に書く
- 後手の香車が後ろに進むバグが発覚
今日進んだ所
- バグを直し、テストを書いた
- TCP/IPでfloodgateにつなげた
余力なかったのでテストを綺麗に書くのは後回し
TCPクライアントの実装
TCPでクライアントをテスト実装した。C言語でソケット系のプログラムを書くのは久しぶりだったけど、調べながらで大変面倒だった。
もしコンピュータ将棋を開発しようと思われる方は、まず何かのスクリプト言語で軽く書いてみることをオススメする。どうせ多分書き直すことになるのに、最初からC言語で書くと面倒なだけだなぁと思う。
クライアントプログラムの作成はこちらのページを参考にした。C言語で実装する際にはある程度参考になると思う。
コンピューター:C言語講座:TCP/IPプログラム(その1:クライアント): http://www.ncad.co.jp/~komata/c-kouza9.htm
今日のところは、floodgateのサーバにログインして即座にログアウトするクライアントを書いたところで終了。
バグ修正
香車が反対方向に走るバグは、長い利きの駒(香、角、飛、馬、龍)の場合、後手番の時には走る方向にマイナスを入れなければいけないのを忘れていたせいだった。角、飛、馬、龍は先手でも後手でも利きが同じなので発覚しなかった。
バグを修正し、そのバグのテストを追加しておいた。
雑感
- テスト実装のつもりだったのに、C言語で書きはじめたのは少し失敗だったかもしれない
- 思考ルーチンのコアな実装も最初はスクリプト言語で書いて、あとでCに移植する方法もある
- まあしかし、1から書き直すほどの失策ではないかな、と思うのでこのまま進む
- floodgateさんのサーバになるべく迷惑をかけないように細心の注意を払おう
次回予定
TODO
- floodgateでランダムプログラムを走らせる
短期目標
- 金曜夜(23日夜)までに、floodgateでランダムを走らせる(明日)
floodgate: http://wdoor.c.u-tokyo.ac.jp/shogi/floodgate.html