将棋ゲーム制作メルマガ
2007/05/10号 第 6号
Eメールアドレス : dokko9@mail.goo.ne.jp
ゲーム趣味PC : http://www.game4pc.com/
1. はじめに
2007年 5月 3日からの 3日間、第17回世界コンピュータ将棋選手権が行われました。
私の予想は、本命・激指、対抗・Bonanza。
結果は、YSSが優勝。
2位から 4位までは、上位から順に、棚瀬将棋、激指、Bonanza。
Bonanzaはシード落ちです。
決勝リーグで、YSSと棚瀬将棋は 6勝1負、激指と Bonanzaは 5勝2負。
上位の 4位までは接近した戦績で、Bonanzaのシード落ちは不運。
次回の世界コンピュータ将棋選手権の実施まで 1年近くあるわけですが、多分、私の作成するソフトは間に合わないと思います。
現時点では、第19回からの参加を目標にしています。
今回は、GUI処理の作成方針について。
2. GUI処理
十数年前に私が出来の悪い将棋盤ソフトを作成した頃は、参考になる将棋ソフトのソースを見つけることが出来ず、森田将棋の動作を参考にして画面を設計し、Windows向けに書かれたチェスのソースを解析して、コーディングしました。
現在では、「CSA将棋」というものがあり、ソースが公開されているので、非商用目的で将棋ソフトの GUI処理を自作する場合、かなり役に立ちます。
ただし、CSA将棋のソースは MFCを使用して書かれています。
私は「Microsoft Visual C++ 2005 Express Edition」を開発に使用しているのですが、これには MFCが付属していません。
「Microsoft Platform SDK for Windows Server 2003 R2」には MFCが含まれていますが、Visual C++ 6.0の時期のもののようです。
ちなみに、“_MFC_VER”を grepして確認しました。
古い版の MFCを VC++ 2005で使用することで動作上の問題が起こるか否かは分かりません。
多分、メンテナンスされているとは思いますが、根拠のない不安感があります。
安心して作業できることを優先するなら、製品版の VC++を購入することになります。
MFCを使用できるので、CSA将棋のソースの改造は最小限で済むというメリットもあります。
でも、そのうちに Vista対応の開発ツールが発売されることだろうし、現時点で製品の VC++を買うのは得策とは思えません。
そこで、無料で使える開発ツールを前提として作業を進めることにしました。
盤や駒の画像を扱う部分について独自にクラス設計することも考えましたが、今回は Windows APIを直接呼び出す形でコーディングする方針に決定。
3. 現在の作業状況
GUI処理部分の作成中です。
5月 6日に平手の初期局面表示に成功。
その後、マウスの移動や左ボタン操作に対するコードを追加し、本稿執筆時点では「人間 vs. 人間」で対局できるようになっています。
終局の判定処理は入れてないので、王が詰んだ後でも駒を動かせます。
外見は CSA将棋そっくり。
大きな違いは、RS232Cや LAN対応の機能がないことです。
思考ルーチンとのインタフェース以外は CSA将棋と同じにする必要はないのですが、作業に時間をかけたくないので、データ構造は CSA将棋と同じようにしてあります。
4. 当面の予定
将棋盤機能のコーディングと障害修正が一段落したら、まず最初に、ランダムに指し手を選択する処理をテスト用に作成します。
その後、思考ルーチンのプロトタイプ設計に取り掛かるつもりです。
5. 長期的な方針
自作の将棋ソフトをコンピュータ将棋の試合に参加させるときのことを考えると、自作の思考ルーチン向けに拡張インタフェースを設けた方が有利だと思います。
全体的な処理速度に占める GUI処理の比重は大きくないはずですが、高速化のため、GUI処理のデータ構造を思考ルーチンと共通化しておくのがよさそうです。
思考ルーチンのプロトタイプが出来上がったら、データ構造の共通化について検討するつもりです。
スポンサード リンク