« 蚊に刺されたら… | トップページ | プログラミング講座(30) Small Basicのコード系 »

2010/08/21

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

いよいよ、コンピューターvs人間の対局が打てるところまできました。プログラムIDはHHF931-3です。
例によって自動でコメントになっている行を元に戻してお使いください。自動的にコメントになっている行は"following"を検索(Ctrl+F)するとよいでしょう。

Igo07
【図24 コンピューターvs人間の対局を再生したところ】

今回の主な変更点は以下のとおりです。
・前回作った活路を数えるサブルーチンCountLiberty()を使い、地を数えるサブルーチンCountScore()を作成
・乱数によって次の手を決めるサブルーチンRandom()を作成
・CountScore()を使い、コンピューターによる囲碁の手を決めるサブルーチンTerritory()を作成
・起動時のプレイヤーを黒=CPU、白=Humanに変更
・終局時、死に石に×を付けるサブルーチンXDeadStones()を作成
・着手禁止(自殺手やコウダテが必要な交点には打てない)処理を追加

そして、制限は以下のとおりです。
・活路が1つしかない連のみ死に石としている
・地の判定が不十分
・棋譜ファイル(SGF)の日本語のコード系が違う

これでだいぶ囲碁プログラムらしくなってきました。これまでの処理は主に『コンピュータ囲碁の入門』という本を参考に作りました。今回のv0.7で、『コンピュータ囲碁の入門』に添付されているプログラム(CgfGoBan)とほぼ同じレベルに到達できたと思います。(ただしネットワーク対戦機能を除く)

今後はモンテカルロ法を実装して、どのくらい強くなるか試してみたいと考えています。

(つづく)

|

« 蚊に刺されたら… | トップページ | プログラミング講座(30) Small Basicのコード系 »

囲碁」カテゴリの記事

Small Basic」カテゴリの記事

コメント

光次さん、sBufのブラウザ上でのエラーはv0.8(TLW572)以降で対策していますが、この版はローカルの環境にインポートしてコメントを外さないと動きません。悪しからずご了承下さい。

投稿: たかはしのんき | 2013/10/07 23:33

おい!ひどいぞ!sBufで隠すつもりか!

投稿: 光次 | 2013/10/06 20:43

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: プログラミング講座(29) 人間対コンピューター囲碁対局:

« 蚊に刺されたら… | トップページ | プログラミング講座(30) Small Basicのコード系 »