(57)【要約】   【課題】リバーシゲームプログラムにおいて、ユーザーとコンピュータの対局でユーザーがより満足できる強さのコンピュータプレイヤーを作る。また、ユーザー同士の対局を時間に縛られないようにする。   【解決手段】リバーシの現在の局面と石を置く場所の重み付けにより石を置く場所を決定する学習型プログラムで、   ユーザーが、その重み付けを変更できるようにする。また変更の際に、対局終了後に１手１手の局面を再現し、   その時々の局面の石を置ける場所を指定して、重み付けを変更できるようにすることにより、学習の効率を高める。   また、石を挟むことが可能な線上の升目と石を置く場所の重み付けの変化量を設定できるようにすることにより学習の効率を高める。   さらに、学習させたデータ同士の対局機能をつけることにより、間接的なユーザー間の対局が可能となり、   間接的なユーザー同士の対局が時間に縛られずに行うことができる。   【選択図】図１
2006197985.tif 000002
【特許請求の範囲】
【請求項１】
2人の対局者が、升目に区切られた盤に交互にそれぞれの色の石を置いていき、
自分の石で相手の石を挟み、挟んだ相手の石を自分の色の石に変え、お互いの色の石の数を競うゲーム(以後リバーシゲームといいます)
において、それぞれの局面における個々の升目の状況と石を置く場所の重み付けデータを持ったコンピュータプログラムが、その重み付け情報をもとに石を置くコンピュ 
ータプログラムにおいて、その重み付けをユーザーが変更できる学習型コンピュータプログラム。
【請求項２】
請求項１において、リバーシゲームの対局終了後、対局の各局面を1手1手確認し、学習させることのできるコンピュータプログラム。
【請求項３】
請求項１において、リバーシゲームで石を挟むことが可能な線上の升目と石を置く場所の重み付けをする際に、その重み付けの重みの変化量を変更できるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リバーシゲームのコンピュータプログラムに関するものである。本発明で言う、リバーシゲームとは、2人で遊ぶゲームで、升目に区切られた盤に交互にそれぞれの色の石を置いていき、自分の石で相手の石を挟み、挟んだ相手の石を自分の色の石に変え、お互いの色の石の数を競うゲームである。
基本的にはオセロ（登録商標）を思い浮かべていただいてかまわないが、本発明では、リバーシゲームを石の色や形、盤の形や、升目の並び方などは限定せず、お互いの石を挟みあって、自分の色の石し、その石の数を競うゲームとする。
【０００２】
本発明は、リバーシゲームにおいてユーザーがコンピュータの石の置き場所を教示し学習させるコンピュータプログラムである。
【背景技術】
【０００３】
これまでの多くの将棋、囲碁、チェス、オセロなどのテーブルゲームプログラムでは、ユーザーはメーカーから与えられた思考ルーチンと対局する形をとってきた。しかし、ユーザーの強さは様々であり、コンピュータの強さがあるユーザには強すぎ、あるユーザーには弱すぎるといった事があり、すべてのユーザーを満足させることができていなかった。 
この改善策として、コンピュータの思考ルーチンの強さをレベル分けして、ユーザーが自分にあったレベルを選択することができるプログラムもある。
【０００４】
また、ユーザー同士が対局するとき、リバーシの対戦プログラムの入ったひとつのコンピューターで交互に打ったり、インターネットなどの、ネットワークにつないで、ネットワークを通して対局するなどの方法がとられてきた。 
この場合、特定の人同士が対局したい場合、当然対局者同士は同時刻にお互いが対局できる環境にいる必要がある。この改善策として、1手、1手をe-mailなどでお互いの都合のいい時間にやり取りし対局する方法もある。
【０００５】
本発明において、コンピュータの学習に関する技術が必要となる。本発明で参考となった技術は、ある状況においてとる行動ををニューラルネットなどを利用して学習させる技術である。
【非特許文献１】著者：知能システム研究会 編集者：中野馨「Cで作る脳の情報システム」発行所：（株）近代科学者 １９９５年初版
【非特許文献２】著者：戸内順一「人工知能入門」発行所：日本理工出版会 １９９５年初版
【非特許文献３】著者：松原仁「将棋とコンピュータ」pp.59-60 発行所：共立出版（株） １９９４年初版
【発明の開示】
【発明が解決しようとする課題】
【０００６】
コンピュータの思考ルーチンの強さをレベル分けした場合、そのレベル分けされた、レベルとレベルの間にユーザーの最も満足する思考ルーチンの強さがある場合、コンピュータプレイヤーが強すぎたり、または逆に弱すぎたりするなど十分な満足を与えることができなくなる。
したがって。解決しようとする問題点は、リバーシゲームプログラムにおいて、ユーザーがより満足できるコンピュータの思考ルーチンの強さの作成である。
【０００７】
また、ユーザー同士が対局するときに、1手、1手をe-mailなどでお互いの都合のいい時間にやり取りし対局する方法では、対局者の時間を拘束することは無いが、対局に大変な時間がかかってしまう。
したがって、もうひとつの解決しようとする問題点は、ユーザー同士の対局の際ユーザーが時間を拘束されること無く、かつ、e-mailなどで1手、1手やり取りするよりも、一回の対局時間を短くすることである。
【課題を解決するための手段】
【０００８】
本発明は、個々の升目の状況と石を置く場所の重み付けをユーザー教示によって変更することにより、コンピュータを学習させる特徴を持つ。
【０００９】
また、学習させたデータ同士を対局させることができる特徴を持つ。
【発明の効果】
【００１０】
本発明は、個々の升目と石を置く場所の重み付けをユーザー教示によって変更するため、対局の際のユーザーのよ 
い癖も、悪い癖も同時に学んでいくため、教示したユーザーと似た手を打つことになり、ユーザーのよい対戦相手となる事が期待される。
【００１１】
また、学習させたデータは、ユーザーが教示したデータであるため、教示者の対局の際の癖を反映したうち方をする。 
このため教示データ同士が対局を行うということは、間接的にではあるが、教示させたユーザー同士が対局することと 
なる。お互いがそれぞれの都合のいい時間に学習させたデータをやり取りし、データ同士を対局させ間接的な対局を実現する。これにより、対局時間をコンピュータ同士を対局させるときにかかる時間にすることができる。本手法のコンピュータの思考時間は長くないため、ユーザーが
同時刻に対局できる環境に無いときに、e-mailなどで1手、1手やり取りするよりも、一回の対局時間を短くすることができる特徴を持つ。
【００１２】
本発明は、リバーシゲームに関するものであるから、実際に存在する局面と石を置く場所を学習させれば、各升目の各状況と石を置く場所の重み付けを１つずつ行ったり、架空の局面で学習させるより効率的に学習させることができる。
架空の局面を用いる場合は、局面を作成する必要があるが、実際に対局した後に1手1手確認しながら学習させる場合、通常通り対局すれば必然的に学習させる局面が出来上がるので、局面作成の手間を省くことができる。
【００１３】
本発明は、リバーシゲームに関するものであるから教示の際に、石を挟むことが可能な線上の升目と石を置く場所の重み付けの変化量を指定可能にすることにより、学習の効率の向上が期待できる。
【発明を実施するための最良の形態】
【００１４】
本発明のプログラムを実行するコンピュータの基本的な環境には、マウスのようなポインティングデバイスを使えるグラフィカルユーザーインターフェイスを備えた環境であることが望ましい。
【００１５】
また、本発明はリバーシゲームのルールとして一般的なオセロ（登録商標）のルールを採用したプログラムに組み込む場合に最も産業的に効果を発揮できると考えられる。
【実施例１】
【００１６】
説明のためにリバーシゲームの環境を次のように限定する。ただし、発明の効果範囲を限定するものではない。
そこで実施例の説明用の環境として、盤を、４×４の碁盤の目とし、そのほかのゲームの進行方法は、一般的なオセロ（登録商標）のルールに順ずるものとする。以後このゲーム環境のことを説明用ゲーム環境という。
ここで盤について碁盤の目と明記したのは図２のような枡目の並びにも本発明は適用可能だからである。
【００１７】
この盤面に説明のために各升目に番号をつけた図が図３である。
【００１８】
説明用ゲーム環境においてゲームの局面を作る要素は大雑把に書くと、各升目が、石の置いていない状態、黒の石がある状態、白の石がある状態、の三通りがある。 
つまり、要素数は「４×４×３＝４８」と考えることができる。この要素を状況要素とする。
この各要素の様子を示したのが、図４の左側の縦に3つ並んだ図である。
これに対して、石を置く場所は、仮に盤に石が置かれてないとすれば、どこにでも置けることから、要素は升目の数「４×４＝１６」だけある。この要素を行動要素とする。
【００１９】
状況要素と行動要素を重み付けにより繋げた様子が図４である。
図４では、重み付けの様子を線で表している。ただし、すべての重み付けを図に描くと何が描かれているのか分からなくなるので、行動要素の升目の（１,１）、（１,４）と状況要素の一部を繋ぐ線を少し描いただけとした。
【００２０】
続いて、コンピュータプログラムで、この重み付け方法を用いて図１の状況でどのように打つ手を決めるかを説明する。
まず、現在の局面と石を置く場所の重み付けを知る必要があるので、状況要素を図５のように抜き出す。次に、ゲームのルールから、石の置ける場所を図６のように抜き出す。
これら抜き出された要素の重み付けの繋がりを示したのが図７である。ただし重み付けの線は図４のときと同じ理由で一部しか描かれていない。
【００２１】
そして、各升目の状況の要素と実際に石を置ける場所の重みを合計を出し、 その合計値を利用し石を置く場所を選択する。
選択の方法は、その大小を比べ、値の一番大きい場所または小さい場所を選ぶ方法が考えられる。
【００２２】
次に重みをプログラム言語の配列風に
W[xp][yp][s][xs][ys]
と表す。
【００２３】
ここでxpは石を置く場所の横の位置、ypは石を置く場所の縦の位置 xsは状況を表す盤の横の位置ysは状況を表す盤の縦の位置であるが、 
データの大きさは盤の大きさであるから、本実施例ではすべて４となる。
sは各升目が取りうる状態を表し、石が置かれていない状態、黒石が置かれている状態、白石が置かれている状態である。したがって、データの大きさは３である。
さらに１:石が置かれていない状態、２:黒石が置かれている状態、３:白石が置かれている状態、と数値を与えることとする。
ただし、配列のインデックス（データの位置を示す数値）は、本実施例では1からとする。 
これは、図３に示した数値と関連性を持たせるためである。
【００２４】
この配列が、これまで説明してきた、図７の状況における重み付けの繋がりを表す線（図７に描かれている線とは別描いた）と配列要素の一部である 
,W[1][2][1][4][4],W[4][3][1][4][4],W[1][2][2][3][2],W[1][2][2][2][3],W[4][3][3][2][2],W[3][4][3][3][3] 
の関係について示した図が図８である。なおこれらが要素のすべてではないが、表記の関係上省略した。
プログラムとして、ユーザーが配列の各要素の値を変更可能にしておく。
これにより、個々の升目と石を置く場所の重み付けをユーザー教示によって変更可能になる。
【００２５】
石を置く場所を決定する際には、プログラムでは配列要素W[xp][yp][s][xs][ys]の石を置ける場所のxp,ypごとに 
,s,xs,ysをsのときの局面にあわせて設定し、値を合計する。そして、その値をもちいて選択すればよい。
選択の方法は、その大小を比べ、値の一番大きい場所または小さい場所を選ぶ方法が考えられる。
【００２６】
続いて、１手１手確認しながら学習させるプログラムについて述べる。
まず対局の際に、各局面と、石を置いた場所を保存しておく。
そして、対局が終了したら、保存データを用いて各局面を再現する。
【００２７】
次に、再現された各局面で、石を置ける場所と対局の際に石を置いた場所を表示しておき、そこをマウスのクリックなどで指定することにより、
現在の状況と指定された場所を繋ぐ重み付けを変化するようプログラムをする。
この際の画面構成の例を図９に示す。
【００２８】
続いて、石を挟むことが可能な線上の升目と、石を置く場所の重み付けをする際に、その重み付けの重みの変化量の変更方法について述べる。
本実施例では、石を挟むことが可能な線上の升目は石を置く場所の縦横斜めの線上である。
【００２９】
縦横斜めの線上の重みの変化量の変更の仕方は、図１０のようなウィンドウを用いることが考えられる。
【図面の簡単な説明】
【００３０】
【図１】ゲームの局面のひとつ。（実施例１）
【図２】ゲームの盤の升目の並びからの例。（実施例１）
【図３】ゲームの盤の升目の番号付け。（実施例１）
【図４】状況の要素と石を置く場所の要素の重み付けの繋がり。（実施例１）
【図５】図３の状況の要素を図1の状況に基づき抜き出し。（実施例１）
【図６】図３の石を置く場所の要素を図1の状況に基づき抜き出し。（実施例１）
【図７】図１の状況の要素と石を置く場所の要素の重み付けの繋がり。（実施例１）
【図８】配列要素と重み付けの繋がり。（実施例１）
【図９】対局画面を再現しながら学習するときの画面構成（実施例１）
【図１０】縦横斜めの線上の重みの変化量を変更するウィンドウ。（実施例１）
【符号の説明】
【００３１】
１ 升目に石が無い状態
２ 升目に黒石がある状態
３ 升目に白石がある状態
４ 石を置く場所
５ 石を置く場所と盤の各升目の状況における各升目の重み付けの繋がりを表す線。すべて描き表せないので一部を描画。
６ 図１の状況にあわせて抜き出された升目に石が無い状態
７ 図１の状況にあわせて抜き出された升目に黒石がある状態
８ 図１の状況にあわせて抜き出された升目に白石がある状態
９ 図１の状況にあわせて抜き出された石を置く場所
１０ 配列要素 W[4][3][1][4][4]
１１ 配列要素 W[1][2][1][4][4]
１２ 配列要素 W[1][2][2][3][2]
１３ 配列要素 W[1][2][2][2][3]
１４ 配列要素 W[4][3][3][2][2]
１５ 配列要素 W[3][4][3][3][3]
１６ 局面をはじめの状態に戻すボタン
１７ 局面をひとつ前の状態に戻すボタン
１８ 局面をひとつ先に進めるボタン
１９ 局面を最後の状態に進めるボタン
２０ 石を置ける場所
２１ 対極の際に石を置いた場所
２２ 横の線上の重み付けの値であることを表すアイコン
２３ 縦の線上の重み付けの値であることを表すアイコン
２４ 右上がりの斜めの線上の重み付けの値であることを表すアイコン
２５ 右下がりの斜めの線上の重み付けの値であることを表すアイコン
２６ 数値を上げるボタン
２７ 数値を下げるボタン
２８ 重み付けの変化量
【図１】
2006197985.tif 000003
【図２】
2006197985.tif 000004
【図３】
2006197985.tif 000005
【図４】
2006197985.tif 000006
【図５】
2006197985.tif 000007
【図６】
2006197985.tif 000008
【図７】
2006197985.tif 000009
【図８】
2006197985.tif 000010
【図９】
2006197985.tif 000011
【図１０】
2006197985.tif 000012