(57)【特許請求の範囲】
【請求項１】
囲碁ゲームの局面について地合判定を自動的に行なうゲーム装置において、
アタリになっている石を検出するアタリ石検出手段と、
前記アタリ石検出手段によって検出されたアタリになっている石の周囲にある当該アタリになっている石の唯一の空きダメ位置を検出する空きダメ位置検出手段と、
前記アタリ石検出手段によって検出された石が前記空きダメ位置検出手段によって検出された空きダメ位置に逃げたと仮定した時の空きダメ数を調査する調査手段と、
前記調査手段によって調査された空きダメ数が１以下であるか否かに応じて、前記アタリ石検出手段によって検出された石が死石であるか否かを判定する死石判定手段と
を具備したことを特徴とするゲーム装置。
【請求項２】
前記調査手段は、
前記空きダメ位置検出手段によって検出された空きダメ位置の周囲４方向にある空点の数を計数する計数手段と、
前記空きダメ位置検出手段によって検出された空きダメ位置の周囲４方向にある、当該アタリになっている石とはつながっていない当該アタリになっている石と同色の石を検出する集団検出手段と、
集団検出手段によって検出された同色の石、及び当該同色の石とつながっている当該アタリになっている石と同色の石に隣接する、前記空きダメ位置検出手段により検出された唯一の空きダメ位置以外の空点の数を計数する空きダメ数計数手段とを有し、
前記死石判定手段は、
前記計数手段と前記空きダメ数計数手段によって計数された空点の数の和が１以下の時に、当該アタリになっている石を死石とすることを特徴とする請求項１記載のゲーム装置。
【請求項３】
前記計数手段と前記空きダメ数計数手段によって計数された空点の数の和が２である時には、さらに当該２ヶ所の空点について、再帰的に前記計数手段及び前記空きダメ数計数手段による空点の数を数え、その２ヶ所の空点について数えた空点の数のうち小さい方が、
１以下になる点があれば当該アタリになっている石を死石とし、
３以上になる点があれば当該アタリになっている石を死石としない
とすることを特徴とする請求項２記載のゲーム装置。
【請求項４】
囲碁ゲームの局面について地合判定を自動的に行なうゲーム装置を実現するためのコンピュータを、
囲碁ゲームの局面について地合判定を自動的に行なうゲーム装置において、
アタリになっている石を検出するアタリ石検出手段と、
前記アタリ石検出手段によって検出されたアタリになっている石の周囲にある当該アタリになっている石の唯一の空きダメ位置を検出する空きダメ位置検出手段と、
前記アタリ石検出手段によって検出された石が前記空きダメ位置検出手段によって検出された空きダメ位置に逃げたと仮定した時の空きダメ数を調査する調査手段と、
前記調査手段によって調査された空きダメ数が１以下であるか否かに応じて、前記アタリ石検出手段によって検出された石が死石であるか否かを判定する死石判定手段と
に機能させるためのゲームプログラムが記憶されたコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パーソナルコンピュータやゲーム専用の端末装置により囲碁ゲームを行なうゲーム装置、ゲームプログラムが記憶された記憶媒体に関する。
【０００２】
【従来の技術】
現在、パーソナルコンピュータやゲーム専用の端末装置等を用いて囲碁ゲームを行なうゲーム装置やゲームプログラム（ソフトウェア）等がある。これらには、１人で棋譜を入力して検討するもの、装置がゲームの着手を考えて人間の相手をするもの、及び、通信によって離れた所にいる人同士で対局するものなどの種類のものがある。
【０００３】
囲碁の勝敗は、終局時に黒白双方の獲得した陣地（地）をそれぞれ数えて、地の目数（もくすう）の多いほうを勝ちとするというルールによって決められるものである。これを、地合判定（じあいはんてい）、あるいは終局判定という。
【０００４】
通常の碁盤で対局している場合には、両対局者がそれぞれ相手の地の目数を数えて勝敗を確認するが、囲碁ゲーム装置や囲碁ゲームプログラム等においては、この地合判定を、まず装置が自動的に行い、装置の判定が間違っている部分については、使用者が修正するという形で実現されているものが多い。
【０００５】
【発明が解決しようとする課題】
囲碁の地合判定は、単にどちらか一方の石と盤外（石を置けない辺の外側）とで囲まれた領域を地として数えれば良いというものではなく、それぞれの石の生き死に（死活）をも判定し、死石は相手に取られたものとして（相手の地として）数えなければならず、またセキ石については何れの地としても数えてはいけないなど、囲碁のルールに基づくさまざまな判定を行なう必要がある。
【０００６】
従って、この地合判定を、ゲーム装置やゲームプログラム等によって正確かつ自動的に行なうためには、死活判定を行なうことが必要不可欠であるが、この死活判定をゲーム装置やゲームプログラム等で行なうことは大変困難であり、従来では完全に過誤無く死活判定を行なう手法は未だ提供されていない。
【０００７】
このため、従来の囲碁ゲーム装置及び囲碁ゲームプログラム等による地合判定にて必要となる死活判定方法としては、特開平６−１２６０２０に開示されているように人間が指定するものや、特開平６−１２６０２１に開示されているように、死石の判定方法が特に示されていないものなどが出願されていた。
【０００８】
しかし、このような人間による死石等の指定や、装置による地合判定の修正は、ユーザにとって対局中とは異なる操作を必要とするなど頓雑な作業であり、この操作はなるべく少なく済ませられることが望ましい。
【０００９】
従って、装置が完全な地合判定を行なうことが極めて困難であるとしても、装置による自動判定の精度を上げ、より正確に近い地合判定を自動的に行えるようにすることは、使用者が修正しなければならない箇所を減らし、終局判定をより迅速に行えるようにするために重要な課題である。
【００１０】
本発明は、前記のような問題に鑑みなされたもので、正確な地合判定を自動的実行してユーザ（対局者）に対する作業負担を軽減させることが可能なゲーム装置、ゲームプログラムが記憶された記憶媒体を提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明は、囲碁ゲームの局面について地合判定を自動的に行なうゲーム装置において、アタリになっている石を検出するアタリ石検出手段と、前記アタリ石検出手段によって検出されたアタリになっている石の周囲にある当該アタリになっている石の唯一の空きダメ位置を検出する空きダメ位置検出手段と、前記アタリ石検出手段によって検出された石が前記空きダメ位置検出手段によって検出された空きダメ位置に逃げたと仮定した時の空きダメ数を調査する調査手段と、前記調査手段によって調査された空きダメ数が１以下であるか否かに応じて、前記アタリ石検出手段によって検出された石が死石であるか否かを判定する死石判定手段とを具備したことを特徴とする。
【００１２】
また、前記調査手段は、前記空きダメ位置検出手段によって検出された空きダメ位置の周囲４方向にある空点の数を計数する計数手段と、前記空きダメ位置検出手段によって検出された空きダメ位置の周囲４方向にある、当該アタリになっている石とはつながっていない当該アタリになっている石と同色の石を検出する集団検出手段と、集団検出手段によって検出された同色の石、及び当該同色の石とつながっている当該アタリになっている石と同色の石に隣接する、前記空きダメ位置検出手段により検出された唯一の空きダメ位置以外の空点の数を計数する空きダメ数計数手段とを有し、前記死石判定手段は、前記計数手段と前記空きダメ数計数手段によって計数された空点の数の和が１以下の時に、当該アタリになっている石を死石とすることを特徴とする。
【００１３】
また、前記計数手段と前記空きダメ数計数手段によって計数された空点の数の和が２である時には、さらに当該２ヶ所の空点について、再帰的に前記計数手段及び前記空きダメ数計数手段による空点の数を数え、その２ヶ所の空点について数えた空点の数のうち小さい方が、１以下になる点があれば当該アタリになっている石を死石とし、３以上になる点があれば当該アタリになっている石を死石としないとすることを特徴とする。
【００１４】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。
図１は本発明の実施の形態に係わるゲーム装置１０の外観構成を示す図である。本実施形態におけるゲーム装置は、囲碁ゲームのための専用端末として構成されたもので、各種の記録媒体に記録されたプログラムを読み込み、この読み込んだプログラムによって動作が制御されるコンピュータによって構成される。また、パーソナルコンピュータなどによってゲームプログラムを実行することで、ゲーム専用端末のゲーム装置１０と同様にし囲碁ゲームを実行することができる。
【００１５】
図１に示すように、ゲーム装置１０は、携帯型に構成されており、筐体上面部にＬＣＤ（大型モノクロ液晶）及びタッチパネルによって構成される表示入力部１２が設けられている。ＬＣＤの表示面とタッチパネルのデータ入力面は、積層一体型に構成されており、ＬＣＤによって表示された対象物（例えば碁石を示す表示パターン、盤面を表す表示中の交点位置、各種ボタンなど）を、ペンなどによって直接的に指示することで、該当する座標データを入力することができる。また、モジュラージャックなどの通信網と接続するためのコネクタ１６が設けられており、通信回線を介して接続された相手と対局できるようになっている。
【００１６】
図２は、本実施形態における囲碁ゲームの専用端末として用いられるゲーム装置１０の電子回路の構成を示すブロック図である。図２に示すように、本実施形態におけるゲーム装置１０は、ＣＰＵ２０、ＲＡＭ２１、ＲＯＭ２２、タッチ・パネル２４、ＬＣＤ２６、ＬＣＤコントローラ２８、及び通信コントローラ２９によって構成されている。
【００１７】
ＣＰＵ２０は、ＲＯＭ２２に格納された各種制御プログラムやデータに従って各種機能を実現するもので、囲碁ゲームを実行するための制御機能などを含んでいる。
ＲＯＭ２２は、ＣＰＵ２０によって実行される各種制御プログラムやデータ等が格納されるものであり、囲碁ゲームを実現するためのゲームプログラム２２ａなどを含んでいる。
ＲＡＭ２１は、ＣＰＵ２０によって各種機能を実行する際の作業領域として使用され、例えば進行中の囲碁ゲームの状況（各石の置かれた位置など）に関する局面データ２１ａが格納される。
タッチ・パネル２４は、装置に対する動作を規定するためのボタンや囲碁ゲーム実行中の石を置くべき位置を指定をするために使用される。
【００１８】
ＬＣＤ２６は、ＬＣＤコントローラ２８の制御のもとで囲碁ゲームを行なう上で必要な各種の情報を表示するもので、碁盤の盤面を表す盤面表示、ハマの数を黒石、白石それぞれについて表示するためのハマ表示、黒番、白番それぞれの時間を表示するための時間表示、動作を規定する指示を入力するための複数のボタンが設けられている。また、ＬＣＤ２６の盤面表示をする領域については、囲碁ゲームのゲームパターン表示に好適なセグメントパターンが設けられている。
【００１９】
タッチ・パネル２４とＬＣＤ２６とは、前述したように積層一体型に構成されて表示入力部１２を構成しており、ＬＣＤによって表示された対象物を、ペンなどによって直接的に指示することで、該当する座標データを入力することができる。
ＬＣＤコントローラ２８は、ＣＰＵ２０の制御のもとでＬＣＤ２６における表示を制御するもので、ＬＣＤ２６に設けられた例えば囲碁ゲーム用のセグメントパターンに対する制御を行なう。
通信コントローラ２９は、ＣＰＵ２０の制御のもとで、コネクタ１６により接続された通信網を介した通信を行なうための通信制御を行なう。
【００２０】
次に、第１実施形態におけるゲーム装置１０について説明する。
図３は、図２に示す電子回路の構成においてＲＯＭ２２に記憶されたゲームプログラム２２ａを実行することにより実現される囲碁ゲームの機能を示すブロック図である。図３に示すように、囲碁ゲームは、囲碁ゲーム制御部３０、局面記憶部３２、及び死石判定部３４によって実行される。
【００２１】
囲碁ゲーム制御部３０は、ＬＣＤ２６において表示される盤面や各種ボタンに対する指示の入力に応じて囲碁ゲームを進行させるもので、囲碁ゲームの進行に応じて進行中の囲碁ゲームの状況（各石の置かれた位置など）に関する局面データ２１ａを局面記憶部３２に記憶させる。
局面記憶部３２は、囲碁ゲーム制御部３０により進行される囲碁ゲームに関する局面データ２１ａを記憶するもので、死石判定部３４によるアタリ石の死活判定の際に参照される。
死石判定部３４は、局面記憶部３２に記憶された局面データ２１ａをもとにしてアタリ石の死活判定を行なうもので、アタリ石検出部３５、空きダメ位置検出部３６、空きダメ位置周囲状態調査部３７、アタリ石判定部３８の各機能により実現される。
【００２２】
アタリ石検出部３５は、局面記憶部３２に記憶された局面データ２１ａ（各石の置かれた位置）をもとに、アタリとなっている石または石の集団（以下、石の集団と総称する）を検出する。
空きダメ位置検出部３６は、アタリ石検出部３５によって検出された石の集団に対する空きダメ位置を検出する。
空きダメ位置周囲状態調査部３７は、空きダメ位置検出部３６によって検出された空きダメの周囲の状況、例えば縦または横に隣り合った点についての状況（空点、敵石、盤外、味方石など）を調査するもので、アタリ石検出部３５により検出された石の集団が、空きダメ位置検出部３６により検出された空きダメ位置に逃げたと仮定した時の空きダメ数を調査する。
【００２３】
アタリ石判定部３８は、空きダメ位置周囲状態調査部３７による調査結果に基づいて、アタリ石検出部３５によって検出されたアタリとなっている石の集団が死石であるか否か、すなわち空きダメ数が１以下であるか否かに応じて死石であるか否かを判定する。
囲碁ゲーム制御部３０は、終局時において、死石判定部３４による死石判定の結果を利用して地合判定（あるいは終局判定）を実行して囲碁ゲームの勝敗を判定する。
【００２４】
次に、第１実施形態におけるゲーム装置１０における死石判定部３４の動作について説明する。第１実施形態では、囲碁ゲームの終局での地合判定を次のような手順（１）〜（４）によって行なう。
（１）アタリとなっている石の集団Ａを見つける。
（２）その集団Ａの唯一の空きダメ位置Ｂを検出する。
（３）その空きダメ位置Ｂの縦または横に隣り合った点について、それぞれ、
（ａ）空点なら＋１
（ｂ）敵石または盤外または集団Ａの味方石なら±０
（ｃ）集団Ａ以外の味方の石の集団Ｃなら、＋（その集団Ｃの空きダメ数−１）
という値を求め、空きダメ位置Ｂの縦または横に隣り合った４点全てについての合計値Ｄを求める。
（４）上記で求めた合計値Ｄが１以下であった場合に、アタリとなっている石の集団Ａを死石と判定する。
【００２５】
以下、フローチャートを参照しながら前述した手順の詳細について説明する。
局面記憶部３２には、囲碁ゲーム制御部３０の制御によって囲碁ゲームが進行されるに従って、対局している双方の着手位置のデータが局面データ２１ａとして記憶される。死石判定部３４は、局面記憶部３２に記憶された局面データ２１ａを参照して死石の判定を行なう。本実施形態におけるゲーム装置１０は、囲碁ゲームの終局時の局面データ２１ａを対象として、死石判定部３４による機能を用いて、全てのアタリになっている石について、その石がその唯一の逃げ道の空点にもし逃げたとしたら、直ちに相手に取られてしまうのか否かを調べて、直ちに相手に取られる場合には、そのアタリとなっている石を死石と判定することで地合判定を行ない勝敗を決定するものである。
【００２６】
図４は、死石判定部３４の全体の動作を示すフローチャート、図５乃至図７は、図４中の処理の一部の詳細を説明するためのフローチャートである。
まず、アタリ石検出部３５は、局面記憶部３２に記憶されている終局時の局面データ２１ａの中からアタリになっている石を検出する。例えば、アタリになっている石（または石の集団）としては、図８（ａ）〜（ｅ）に示すようなものがある。アタリになっている石とは、縦横につながった同色の石が、敵石あるいは盤外によって囲まれていて、縦横方向に逃げられる点（空点）が１つしか残っていない状態をいう。敵石と盤外によって囲まれているとは、縦横方向の隣接点に敵石または盤外が存在している状態を言い、ナナメ方向に敵石等が存在していることを要しない。
【００２７】
アタリ石検出部３５は、このアタリの石を検出するために、局面データ２１ａが示す局面の端から順に、局面のある１点を調査基準とする点Ａとして指定しながらサーチする（ステップＡ１）。局面の現在サーチ中の点Ａの状態が黒石または白石であった場合（ステップＡ２）、アタリ石検出部３５は、図５に示すフローチャートに従って、点Ａにおける石に対する空きダメ数を数える（ステップＡ３）。そして、その数えた空きダメ数が１ならば、その黒石または白石はアタリであると判定する（ステップＡ４）。
【００２８】
図５のフローチャートに示す点Ａの石の空きダメ数を数える処理は以下のようにして実行する。
まず、調査基準の点Ａについて調査済みに設定する（ステップＢ１）。すなわち、この点に対する調査済みフラグを設定する。ここで、点Ａに対する空きダメ数を示す変数値ＤＡＭＥ＿Ａを「０」に初期化する（ステップＢ２）。
【００２９】
点Ａの縦横の隣接点に未調査の点がある場合（ステップＢ３）、点Ａの縦横の隣接点のうち未調査の点ａを１つ選択する（ステップＢ４）。
この点ａが盤外であった場合には（ステップＢ５）、空きダメではないので点ａについて調査済みと（調査済みフラグを設定）する（ステップＢ１０）。例えば、図８（ｂ）に示す例において点Ａが黒石である場合、点Ａの上の点がａであるとすると盤外と判定される。また、この点ａが盤外ではなく、かつ空点であった場合には（ステップＢ５，Ｂ６）、点ａが空きダメであるとして点Ａに対する空きダメ数ＤＡＭＥ＿Ａに対して１加算する（ステップＢ１１）。例えば、図８（ａ）に示す例において点Ａが黒石である場合、点Ａの上の点がａであるとすると空点と判定される。
【００３０】
一方、点ａが盤外ではなく、かつ空点ではない場合（ステップＢ５，Ｂ６）、すなわち黒石または白石の何れかである場合には、点ａにおける石の色と調査基準点Ａにおける石とが異なる色（敵石）であるかを確認する（ステップＢ７）。ここで点ａにおける石の色と点Ａにおける石とが異なる色だった場合、すなわち敵石である場合には（ステップＢ７）、空きダメではないので点ａについて調査済みとする（ステップＢ１０）。例えば、図８（ａ）（ｂ）に示す例において点Ａが黒石である場合、この石の周囲の白石の位置を点ａとすると、これらの白石がおかれた点は全て空きダメではないとして調査済みとされる。
【００３１】
また、点ａにおける石の色と点Ａにおける石とが同じ色だった場合、すなわち味方石である場合には、点Ａの元の石と同一の（つながっている）石の集団に含まれるものとし、この石の集団による空きダメ数を示す変数値ＤＡＭＥ＿ａに対して１加算する。さらにその新しく見つけた方の点ａにおける味方の石についての空きダメ数を再帰処理により判別して味方石がつながっていればＤＡＭＥ＿ａに加算する。すなわち、点Ａにおける石とつながっている味方石の集団を検出して、その石の数をＤＡＭＥ＿ａとして計数する（ステップＢ８）。そして、その数ＤＡＭＥ＿ａを味方石の空きダメ数として、元の石の空きダメ数ＤＡＭＥ＿Ａに加える（ステップＢ９）。例えば図８（ｃ）（ｄ）（ｅ）に示す例において黒石の何れかが点Ａである場合、この点Ａとつながっている同じ黒石の集団が味方の石の空きダメ数として、元の石の空きダメ数に加算される。
【００３２】
こうして点ａについて調査済みとして、以下、同様にして点Ａに対する未調査の点を点ａとしながら空きダメ数を計数していく。なお、前述した処理を行なうにあたって、例えば図８（ｄ）中の点Ｚのように、点Ｚの左の味方の石（黒石）と点Ｚの下の黒石からのように複数点から共通して調べられるような点については、調査済みフラグを設定しているので、空きダメ数として重複して数えてしまうような事態を避けるようにしてある。
【００３３】
以上の処理の実際の様子を図９に示している。図９（ａ）（図８（ａ））に示す例の場合、最初に着目した石（点Ａ）を黒石とすると、周囲４方向の点のうち、３ヶ所が敵石（白石）であり、４ヶ所が空点となっている。従って、この場合、点Ａの黒石に対する空きダメ数が１として求められる。また、図９（ｂ）（図８（ｄ））に示す例の場合、最初に着目した石（点Ａ）が左下の黒石とすると、周囲４方向の点のうち、２ヶ所が味方石（黒石）であり、２ヶ所が敵石（白石）となっており、２ヶ所の味方石についてそれぞれの空きダメ数が１（点Ｚ）となっている。しかし、一つの味方石について空きダメ数を数える処理をした段階で、点Ｚに対して調査済みフラグが設定されるので、一方の味方石については空きダメ数１、他方の味方石については点Ｚが対象とならないので空きダメ数０とみなされて、合計して最初に着目した点に対する空きダメ数が１として求められる。
【００３４】
こうして点Ａに対する縦横の隣接点ａのそれぞれについて調査を終了すると、点Ａに対する空きダメ数合計ＤＡＭＥ＿Ａの値をメインの処理に返す（ステップＢ１２）。
アタリ石検出部３５は、こうして求めた点Ａに対する黒石または白石の空きダメ数の合計ＤＡＭＥ＿Ａが１であれば、その石をアタリであると判定する（ステップＡ４）。
【００３５】
次に、空きダメ位置検出部３６は、アタリ石検出部３５によってアタリと判定された点Ａに対する唯一の空きダメ位置を検出するための処理（ステップＡ５）を、図６に示すフローチャートに従って実行する。なお、アタリになっている唯一の空きダメの位置とは、アタリ石に残された唯一の逃げ道のことであり、例えば、図８（ｄ）に示す点Ｚのような点（図８（ａ）〜（ｅ）に示す例ではそれぞれに１ヶ所ずつ存在している）をいう。
【００３６】
空きダメ位置検出部３６による唯一の空きダメ位置を検出する処理では、ある石の上下左右について前述したアタリ石検出部３５による処理（図５）と同様に探索し、また、味方の石に行き着く限りにおいて重複を避けつつ再帰的に探索する。そして、空点に行き着いた時点で、その空点をアタリになっている石全体の空きダメ位置とする。
【００３７】
アタリ石検出部３５における処理によって既に空きダメ数が１であることがわかっているので、空きダメ位置検出部３６においては、ある石から上下左右に探索して行き着いた空点は、必ずアタリ石の唯一の空きダメ点と判定することができる。以下に空きダメ位置検出部３６による空きダメ位置を求める処理の詳細について説明する。
【００３８】
まず、調査基準の点Ａについて調査済みに設定する（ステップＣ１）。すなわち、この点に対する調査済みフラグを設定する。点Ａの縦横の隣接点に未調査の点がある場合（ステップＣ２）、点Ａの縦横の隣接点のうち未調査の点ａを１つ選択する（ステップＣ３）。
この点ａが盤外であった場合には（ステップＢ５）、空きダメではないので点ａについて調査済みと（調査済みフラグを設定）する（ステップＣ９）。また、この点ａが盤外ではなく、かつ空点であった場合には（ステップＣ４，Ｃ５）、点ａが点Ａに対する唯一の空きダメ位置Ｂであるとして（ステップＣ１０）、求められた空きダメ位置Ｂをメインの処理に返す。
【００３９】
一方、点ａが盤外ではなく、かつ空点ではない場合（ステップＣ４，Ｃ５）、すなわち黒石または白石の何れかである場合には、点ａにおける石の色と調査基準点Ａにおける石とが異なる色（敵石）であるかを確認する（ステップＣ６）。ここで点ａにおける石の色と点Ａにおける石とが異なる色だった場合、すなわち敵石である場合には（ステップＣ６）、空きダメではないので点ａについて調査済みとする（ステップＣ９）。
【００４０】
また、点ａにおける石の色と点Ａにおける石とが同じ色だった場合、すなわち味方石である場合には、点Ａの元の石と同一の（つながっている）石の集団に含まれるものとし、この石の集団において味方石に行き着く限りにおいて重複を避けつつ再帰的に探索することで点ａに対する空きダメ位置を求める（ステップＣ７）。前述したようにアタリ石検出部３５による処理によって空きダメ数が１であることがわかっているので、ある点の石から上下左右に探索して空点に到達した場合には、その点が唯一の空きダメの点とみなすことができる。
【００４１】
ここで、点ａに対する空きダメ位置が求められなかった場合には、ステップＣ２に戻り点Ａに対する未調査の他の点ａを対象として前述した処理を実行する（ステップＣ８）。
一方、点ａに対する空きダメ位置が求まると（ステップＣ８）、求まった空きダメ位置を点Ａに対する唯一の空きダメ位置Ｂとして（ステップＢ１１）、メインの処理に返す。
【００４２】
なお、空きダメ位置検出部３６による空きダメ位置を検出する処理については、アタリ石検出部３５と同様の探索を行なうところが多いため、アタリ石検出部３５と空きダメ位置検出部３６とを一つの機能（アタリ石及びその石の空きダメ位置検出装置）として実現してもよい。
【００４３】
さて、こうしてアタリになっている石（点Ａ）、及びこの石の唯一の空きダメ位置Ｂが求められると、空きダメ位置周囲状態調査部３７は、以下の規則（ａ）〜（ｃ）をもとにして空きダメ位置Ｂの周囲の状態を調査し、状態調査結果値Ｄを求める（ステップＡ６）。そして、アタリ石判定部３８は、空きダメ位置周囲状態調査部３７によって求められた状態調査結果値Ｄをもとにして点Ａにおける石の死活を判定する（ステップＡ７）。
【００４４】
空きダメ位置周囲状態調査部３７とアタリ石判定部３８は、図７に示すフローチャートに従って、それぞれ空きダメ位置の周囲の状態調査結果値Ｄの調査、状態調査結果値Ｄをもとにした死活判定を行なう。
【００４５】
空きダメ位置周囲状態調査部３７は、次の各規則（ａ）〜（ｃ）に従って判定値を空きダメ位置Ｂの縦横４方向についてそれぞれ求め、この値の合計を状態調査結果値Ｄを求める。
規則（ａ）  空点なら＋１
規則（ｂ）  敵石または盤外または集団Ａの味方石なら±０
規則（ｃ）  集団Ａ以外の味方石の集団Ｃなら、＋（その集団Ｃの空きダメ数−１）
状態調査結果値Ｄは、「もし、アタリとなっている石Ａが唯一の逃げ道である点Ｂに逃げたと仮定した時の空きダメ数がいくつとなるか」という値を示している。
【００４６】
まず、空きダメ位置周囲状態調査部３７は、空きダメ位置Ｂについて調査済みに設定し、状態調査結果値Ｄを０とする（ステップＤ１）。
ここで空きダメ位置Ｂの縦横の隣接点に未調査の点があるかを判別する（ステップＤ２）。未調査の点があるがある場合、空きダメ位置Ｂの隣接点のうち未調査の点ｂを選択する（ステップＤ３）。
【００４７】
この点ｂが盤外であった場合には（ステップＤ４）、規則（ｂ）に該当するものとして状態調査結果値Ｄに対する加算を行わず点ｂについて調査済みとする（ステップＤ１０）。また、この点ｂが盤外ではなく、かつ空点であった場合には（ステップＤ４，Ｄ５）、規則（ａ）に該当するものとして空きダメ位置Ｂについての状態調査結果値Ｄに対して１加算する（ステップＤ１１）。
【００４８】
一方、点ｂが盤外ではなく、かつ空点ではない場合（ステップＤ４，Ｄ５）、すなわち黒石または白石の何れかである場合には、点ｂにおける石の色と点Ａにおける石とが異なる色（敵石）であるかを確認する（ステップＤ６）。ここで点ｂにおける石の色と点Ａにおける石とが異なる色だった場合、すなわち敵石である場合には（ステップＤ６）、規則（ｂ）に該当するものとして状態調査結果値Ｄに対する加算を行わず点ｂについて調査済みとする（ステップＤ１０）。
【００４９】
また、点ｂにおける石の色と点Ａにおける石とが同じ色だった場合、すなわち味方石である場合には、点ｂの石が点Ａの石と同一の（つながっている）石の集団に含まれるかを判別する（ステップＤ７）。ここで、点ｂが点Ａを含む元の集団に含まれる場合には（ステップＤ７）、規則（ｃ）に該当しないので点ｂについて調査済みとする（ステップＤ１０）。一方、点ｂが点Ａを含む元の集団に含まれない場合には（ステップＤ７）、点ｂの石は点Ａを含む石の集団とは別の集団Ｃに含まれる同色の石であるものとして規則（ｃ）に従って状態調査結果値Ｄに加算する値を求める。すなわち、点ｂを含む集団Ａとは異なる集団を集団Ｃとして、この集団Ｃの空きダメ数を示す変数値ＤＡＭＥ＿Ｃを、前述したＤＡＭＥ＿ａの場合と同様にして再帰処理により計数する。そして、規則（ｃ）に従って、ＤＡＭＥ＿Ｃから１減算した値を状態調査結果値Ｄから減算して、新たな状態調査結果値Ｄとする（ステップＤ９）。
【００５０】
こうして点ｂについて調査済みとして、以下、同様にして点Ｂに対する未調査の点を点ｂとしながら状態調査結果値Ｄを計数していく。
【００５１】
こうして空きダメ位置周囲状態調査部３７によって点Ｂに対する状態調査結果値Ｄが求められると、アタリ石判定部３８は、状態調査結果値Ｄをもとにして点Ａの死活を判定する。アタリ石判定部３８は、状態調査結果値Ｄが１以下（Ｄ≦１）であった場合（ステップＤ１２）、点Ａの石を死石と判定する（ステップＤ１４）。一方、状態調査結果値Ｄが１を超える（Ｄ＞１）場合（ステップＤ１２）、点Ａの石を死石ではないと判定する（ステップＤ１３）。
アタリ石判定部３８は、こうして点Ａに対する死石であるか、あるいは死石ではないかの判定結果をメインの処理を返す（ステップＤ１５）。
【００５２】
ここで、前述した空きダメ位置周囲状態調査部３７とアタリ石判定部３８の具体的な処理例について図１０、図１１を参照しながら説明する。
まず、規則（ａ）と規則（ｂ）は、図１０に示したように、点Ｂの周囲に集団Ａの味方石以外の味方石が存在していない場合に、黒が点Ｂに逃げたときに獲得できる空きダメ数の数を表している。
例えば、図１０（ｂ）及び（ｄ）では、それぞれ点Ｂの周囲について、規則（ａ）及び規則（ｂ）を適用すると状態調査結果値Ｄ＝１となる。これは、アタリとなっている黒石が点Ｂに逃げたとしても、点Ｂの周囲に空きダメが１つしかないため、結局白に取られてしまうということを意味している。すなわち、黒が点Ｂと逃げる手はタダ取られの手であり、今アタリとなっている元の黒石Ａは、逃げられない状態にあるということが判別できる。このような場合に、当該アタリ石Ａについて、死石と判断して地合判定を行なう。
【００５３】
一方、図１０（ａ）及び（ｃ）では、それぞれ点Ｂの周囲について、規則（ａ）及び規則（ｂ）を適用すると状態調査結果値Ｄ＝３となる。これは、アタリとなっている黒石が点Ｂに逃げたとすると、その黒石は点Ｂの周囲に３点の空きダメを獲得できるので、点Ｂと逃げることによって、直ちに白に取られないということを意味している。つまり、このような場合には、点Ａの黒石が死石とは判別することができない。例えば、両対局者とも、ここの黒石がアタリであることをうっかり忘れてしまった場合かもしれないし、あるいは、そもそも、点Ａを囲んでいる方の白石の一群が、点Ａの黒石を取ったとしても死んでいる石であるかも知れない。そこで、このような場合には、アタリとなっている点Ａの石については死活を特定しない。
また、図１０（ｅ）に示す例は特殊な場合で、黒が点Ｂに打つ手が自殺手（反則手）であり、黒石は既に逃げることが不可能な場合であるが、この場合には、規則（ｂ）によって、状態調査結果値Ｄ＝０となるから死石であると判定される。
【００５４】
一方、規則（ｃ）は、図１１に示したように、空きダメ位置Ｂの周囲に、アタリとなっている最初の石の集団Ａ以外の、点Ａの石と同色の（味方の）石がある場合に適用される規則である。
図１１（ａ）のような場合は規則（ｃ）によって、
Ｄ＝（Ｃの空きダメ数−１）＝１
となる。これは、黒がアタリから逃げようとして点Ｂにツイだ場合、点Ａの石は集団Ａ以外の味方の石の集団Ｃにつながることになるが、この時に、集団Ａは合計でいくつの空きダメを獲得できるかという値を表している。すなわち、図１１（ａ）において、黒石Ｃは、もともと、点Ｂ及び点Ｂの２つ上の点の２ヶ所に空きダメを持っているが、黒がもし点Ａのアタリ石を逃がすために、黒Ｂにツイだとすると、黒石Ｃの空きダメであった点Ｂを塞いでしまうため、結局ＣとつながったＡの黒石は、Ｃとつながったことによって、
（Ｃのもとの空きダメ数−１）＝１個
の空きダメしか獲得できないということを意味する。つまり、状態調査結果値Ｄの値が１以下であるような図１１（ａ）のような場合にも、黒Ｂとツイでも、白石に点Ｂの２つ上の位置に打たれることによって取られてしまい、結局、アタリとなっている石Ａは逃げられないということを意味している。
【００５５】
そこで、このような場合には、図１０において状態調査結果値Ｄ＝１となっていた例と同じく、逃げられない点Ａのアタリ石を死石と判定する。
【００５６】
さらに、図１１（ｂ）のような場合、点Ａの黒石は死石というわけではなく、単に半コウのツギ忘れであり、点Ｂの周囲にある集団Ａ以外の味方石による集団Ｃの空きダメ数が５であることから、
Ｄ＝（Ｃの空きダメ数−１）＝４
となり、このような場合には死活を判定しない。実際に黒石が点Ｂにツゲば集団Ａは死に石であるとは判定できず、このような場合に誤った判定を下さないようにするため状態調査結果値Ｄが２以上の時は集団Ａについて死活判定をしない。
【００５７】
このようにして、第１実施形態におけるゲーム装置１０によれば、局面記憶部３２に記憶された終局時の局面データ２１ａをもとにして終局判定を行なう死石判定部３４を設けたことによって、（１）アタリになっている状態で逃げられなくなっている石を死石と判定でき、また（２）アタリになっているが、半コウの打ち忘れ等、１手ツグことによって逃げられる石を誤って死石と判定しないので、自動地合判定の精度が向上された、ユーザの修正負担を減らすことができる使い易いゲーム装置を提供することができる。
【００５８】
次に、第２実施形態におけるゲーム装置１０について説明する。
図１２は、図２に示す電子回路の構成においてＲＯＭ２２に記憶されたゲームプログラム２２ａを実行することにより実現される囲碁ゲームの機能を示すブロック図である。図１２に示すように、囲碁ゲームは、囲碁ゲーム制御部３０、局面記憶部３２、及び再帰的死石判定部４４によって実行される。囲碁ゲーム制御部３０と局面記憶部３２は、第１実施形態と同じものとして説明を省略する。
再帰的死石判定部４４は、局面記憶部３２に記憶された局面データ２１ａをもとにしてアタリ石の死活判定を行なうもので、アタリ石検出部４５、空きダメ位置検出部４６、空きダメ位置周囲状態調査部４７、再帰的死活判定部４８の各機能により実現される。なお、アタリ石検出部４５、空きダメ位置検出部４６、空きダメ位置周囲状態調査部４７は、第１実施形態におけるアタリ石検出部３５、空きダメ位置検出部３６、空きダメ位置周囲状態調査部３７とそれぞれ対応し、同様の機能を有するものとして説明を省略する。
【００５９】
次に、第２実施形態におけるゲーム装置１０における死石判定部３４の動作について説明する。第２実施形態では、囲碁ゲームの終局での地合判定を次のような手順によって行なう。
前述した第１実施形態における手順（１）〜（４）に加えて、
（５）状態調査結果値Ｄが２である場合には、
（ａ）空きダメ位置Ｂと隣り合った空点、及び
（ｂ）集団Ａ以外の味方の石の集団Ｃの空きダメのうちＢ以外の空点
のそれぞれについて、第１実施形態で用いた規則（ａ）〜（ｃ）に従って、値ｄ１及び、ｄ２を求める。
（６）上記で求めたｄ１とｄ２のうち、小さい方の値が、
（ｃ）１以下ならば集団Ａを死石とする。
（ｄ）３以上ならば探索を打ち切る。
（ｅ）２ならば（５）に戻って、さらに再帰的に探索をして（ｃ）または（ｄ）の条件を満たすまで探索を続けて、集団Ａについて判定する。
【００６０】
以下、フローチャートを参照しながら前述した手順の詳細について説明する。図１３は、再帰的死石判定部４４の全体の動作を示すフローチャート、図１４は図１３中の処理の一部（ステップＥ７）の詳細を説明するためのフローチャートである。なお、図１３に示す第２実施形態における処理は、第１実施形態における図４に示す処理とステップＡ７のみが異なるもので、ステップＡ１〜Ａ６、ステップＡ８〜Ａ１０が、図１３のステップＥ１〜Ｅ６、ステップＥ８〜Ｅ１０とそれぞれ対応するものとして説明を省略する。第２実施形態では、ステップＥ７において再帰的死活判定部４８により、状態調査結果値Ｄに応じて点Ａの石の死活判定をする際に、特にＤ＝２であった時に再帰的に処理を行なうことを特徴としている。以下、再帰的死活判定部４８によるステップＥ７における処理について、図１４を参照しながら説明する。
【００６１】
まず、再帰的死活判定部４８は、空きダメ位置周囲状態調査部４７によって求められた状態調査結果値Ｄが１以下であるかを判別する（ステップＦ１）。ここで状態調査結果値Ｄが１以下であった場合には、点Ａの石を死石と判定する（ステップＦ２）。また、状態調査結果値Ｄが１以下でない場合、状態調査結果値Ｄが３以上であるかを判別する（ステップＦ３）。ここで状態調査結果値Ｄが３以上であった場合には、点Ａの石を死石でないものと判定する（ステップＦ４）。
【００６２】
一方、ステップＦ３において状態調査結果値Ｄが３以上でない場合、すなわち状態調査結果値Ｄが２であった場合には、前述した手順（５）を対象として判定を行なう。状態調査結果値Ｄが２ということは、アタリとなっている点Ａの石が、その逃げ道である空点に逃げた時に空きダメが２となることを示している。従って、点Ａの石が逃げた場合には直ちに取られるというわけではない。しかし、空きダメが２ということは、その２点の何れかに相手側が打てば、再びアタリにされるということになる。
【００６３】
再帰的死活判定部４８は、点Ｂまたは点Ｃの周囲の空点２ヶ所についてそれぞれ状態調査結果値Ｄの値を求める（ステップＦ５）。その結果、状態調査結果値Ｄが小さい方を状態調査結果値ｄ１、このｄ１をとる空点をｂ１とする（ステップＦ６）。
【００６４】
再帰的死活判定部４８は、状態調査結果値ｄ１により点Ａの死活を再帰的に判定する（ステップＦ７）。すなわち、ステップＦ１に戻り、前述と同様にして、点Ａに対して死石であるか死石ではないかを判定できるまで繰り返し処理を実行する。
点Ａの石に対する判定ができると（ステップＦ８）、判定結果（点Ａの石を死石と判定（ステップＦ９）、点Ａの石を死石でないものと判定（ステップＦ１０））をメインの処理に返す（ステップＦ１１）。
【００６５】
ここで、前述した空きダメ位置周囲状態調査部４７の具体的な処理例について図１５を参照しながら説明する。
状態調査結果値Ｄが２ということは、図１５（ａ）（ｂ）に示すように、アタリとなっている点Ａの白石が点Ｂに逃げた（ツイだ）場合に、空きダメが点ｂ１と点ｂ２の２つとなることを示している。例えば図１３（ａ）なら、点Ｂの白石に対して、黒石が点ｂ１と打つか、または点ｂ２と打つかすれば白石は再びアタリとなる。そこで、このような場合には、状態調査結果値Ｄ＝２の結果にあらわれた２ヶ所の空きダメについて、それぞれ再帰的に状態調査結果値Ｄを求める処理を行なうことによって、相手にアタリにされた時にさらに逃げた場合の空きダメ数を求めることができる。
【００６６】
図１３（ａ）（ｂ）に示す例では、（１）黒石が点ｂ１に打って白石をアタリにした場合には白石は点ｂ２に逃げることになり、この点ｂ２についてのｄ２を求めることで白石が点ｂ２に逃げた場合の空きダメ数がわかり、（２）黒石が点ｂ２に打って白石をアタリにした場合には白石は点ｂ１に逃げることになり、このｂ１点についてのｄ１を求めることで白石が点ｂ１に逃げた場合の空きダメ数がわかる。
ここで、黒石は点ｂ１からアタリにするか、点ｂ２からアタリにするかは、任意に選べるわけであるので、当然、黒石にとって都合の良い方が選択される。従って、白死の逃げ道を狭める方にアタリを掛ける、言い換えれば、ｄ１とｄ２の小さい方の値となるようにアタリを掛けることになる。
【００６７】
図１３（ａ）の場合は、ｄ１＝１、ｄ２＝２であるので、ｄ１の方が小さく、黒石は点ｂ２からアタリを掛けることになる。この場合、白石は点ｂ１にしか逃げられず、点ｂ１がｄ１＝１であることからも解るように白石が点ｂ１に逃げたとしても、直ちに黒石に取られてしまうことになる。
【００６８】
このように、第２実施形態では、当初の空きダメ位置点Ｂについての状態調査結果値Ｄが２であった場合には、さらに続けてアタリにしたらどうなるかを再帰的に探索し、状態調査結果値Ｄが１以下になる場合は結局最初のアタリとなっている石Ａは逃げられないアタリ石と判断して、死石と判断するようにしている。
【００６９】
また、図１３（ｂ）は、シチョウの形で取られている石であるが、この場合、点Ｂに逃げた白石に対し、点ｂ１から黒石がアタリを掛けてしまうと、点ｂ２についての状態調査結果値ｄ２＝３であるから逃げられてしまうが、点ｂ２から黒石がアタリを掛ければ、点ｂ１についての状態調査結果値ｄ１＝２であり、さらに再帰的な探索を行なうことになり、最終的には盤外に行き着きＤ値≦１となるので、逃げられない石であるということを確実に判定することができる。
【００７０】
このようにして、第２実施形態におけるゲーム装置１０によれば、局面記憶部３２に記憶された終局時の局面データ２１ａをもとにして終局判定を行なう再帰的死石判定部４４を設けたことによって、（１）アタリになっている状態で空きダメに逃げていったとしても、数手先に結局取られてしまう石を死石と判定でき、また（２）アタリになっているが、数手逃げることによってまだ逃げられる石を誤って死石と判定しないので、自動地合判定の精度が向上された、ユーザの修正負担を減らすことができる、使い易いゲーム装置を提供できる。
【００７１】
なお、前述した説明では、終局時の地合判定の際に死石判定部３４により死活判定を行なうものとして説明しているが、終局局面でなく、通常の対局局面に対しても、アタリとなっている石に対して、第１実施形態または第２実施形態における死石判定部３４，４４による処理を実行することによって、アタリとなっている石が逃げられる（生きとすることができる）か否かが判定できる。
【００７２】
これにより、（１）ユーザに「アタリでもう逃げられない」「アタリだけどまだ逃げられる」といった補助情報を提供でき、ユーザの思考の補助するといった機能を提供することができる。また、特に初心者のための学習機能として有効である。（２）コンピュータ思考型ゲーム装置における、思考アルゴリズムの一部として用いることで、既に取られてしまっている死石を逃げ出したり、既に取られている石に無駄な手を掛けて取ったりすることがなくなり、思考アルゴリズムの向上が図れる。
【００７３】
また、前述した第１実施形態と第２実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク（フロッピーディスク、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ等）、半導体メモリなどの記録媒体に書き込んで各種装置に提供することができる。また、通信媒体により伝送して各種装置に提供することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、または通信媒体を介してプログラムを受信し、このプログラムによって動作が制御されることにより、上述した処理を実行する。
【００７４】
【発明の効果】
以上のように、本発明に係わるゲーム装置によれば、アタリになっている状態で逃げられなくなっている石を死石と判定でき、またアタリになっているが逃げられる石を誤って死石と判定しないので、自動地合判定の精度が向上された、ユーザの修正負担を減らすことができる使い易いゲーム装置を提供することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係わるゲーム装置１０の外観構成を示す図。
【図２】本実施形態における囲碁ゲームの専用端末として用いられるゲーム装置１０の電子回路の構成を示すブロック図。
【図３】第１実施形態における囲碁ゲームの機能を示すブロック図。
【図４】死石判定部３４の全体の動作を示すフローチャート。
【図５】点Ａにおける石に対する空きダメ数を数える処理を示すフローチャート。
【図６】アタリ石検出部３５によってアタリと判定された点Ａに対する唯一の空きダメ位置を検出するための処理を示すフローチャート。
【図７】空きダメ位置の周囲の状態調査結果値Ｄの調査、状態調査結果値Ｄをもとにした死活判定を行なう処理を示すフローチャート。
【図８】アタリになっている石の一例を示す図。
【図９】第１実施形態における処理を説明するための図。
【図１０】前述した空きダメ位置周囲状態調査部３７とアタリ石判定部３８の具体的な処理例について示す図。
【図１１】前述した空きダメ位置周囲状態調査部３７とアタリ石判定部３８の具体的な処理例について示す図。
【図１２】第２実施形態における囲碁ゲームの機能を示すブロック図。
【図１３】再帰的死石判定部４４の全体の動作を示すフローチャート。
【図１４】図１３中の処理の一部（ステップＥ７）の詳細を説明するためのフローチャート。
【図１５】空きダメ位置周囲状態調査部４７の具体的な処理例について示す図。
【符号の説明】
１０…ゲーム装置
１２…表示入力部
１４…電源スイッチ
１６…コネクタ
２０…ＣＰＵ
２１…ＲＡＭ
２１ａ…局面データ
２２…ＲＯＭ
２２ａ…ゲームプログラム
２４…タッチ・パネル
２６…ＬＣＤ
２８…ＬＣＤコントローラ
２９…通信コントローラ
３０…囲碁ゲーム制御部
３２…局面記憶部
３４…死石判定部
３５，４５…アタリ石検出部
３６，４６…空きダメ位置検出部
３７，４７…空きダメ位置周囲状態調査部
３８…アタリ石判定部
４８…再帰的死活判定部
【図１】
0004324717.tif 000002
【図２】
0004324717.tif 000003
【図３】
0004324717.tif 000004
【図４】
0004324717.tif 000005
【図５】
0004324717.tif 000006
【図６】
0004324717.tif 000007
【図７】
0004324717.tif 000008
【図８】
0004324717.tif 000009
【図９】
0004324717.tif 000010
【図１０】
0004324717.tif 000011
【図１１】
0004324717.tif 000012
【図１２】
0004324717.tif 000013
【図１３】
0004324717.tif 000014
【図１４】
0004324717.tif 000015
【図１５】
0004324717.tif 000016