プログラミング講座(29) 人間対コンピューター囲碁対局

いよいよ、コンピューターvs人間の対局が打てるところまできました。プログラムIDはHHF931-3です。
例によって自動でコメントになっている行を元に戻してお使いください。自動的にコメントになっている行は”following”を検索(Ctrl+F)するとよいでしょう。
Igo07
【図24 コンピューターvs人間の対局を再生したところ】
今回の主な変更点は以下のとおりです。
・前回作った活路を数えるサブルーチンCountLiberty()を使い、地を数えるサブルーチンCountScore()を作成
・乱数によって次の手を決めるサブルーチンRandom()を作成
・CountScore()を使い、コンピューターによる囲碁の手を決めるサブルーチンTerritory()を作成
・起動時のプレイヤーを黒=CPU、白=Humanに変更
・終局時、死に石に×を付けるサブルーチンXDeadStones()を作成
・着手禁止(自殺手やコウダテが必要な交点には打てない)処理を追加
そして、制限は以下のとおりです。
・活路が1つしかない連のみ死に石としている
・地の判定が不十分
・棋譜ファイル(SGF)の日本語のコード系が違う
これでだいぶ囲碁プログラムらしくなってきました。これまでの処理は主に『コンピュータ囲碁の入門』という本を参考に作りました。今回のv0.7で、『コンピュータ囲碁の入門』に添付されているプログラム(CgfGoBan)とほぼ同じレベルに到達できたと思います。(ただしネットワーク対戦機能を除く)
今後はモンテカルロ法を実装して、どのくらい強くなるか試してみたいと考えています。
(つづく)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。