(57)【要約】【課題】シューティングゲームの難易度判定に関する技術を提供する。【解決手段】自機のすべての自機行動パターンを生成する。自機の各時刻ステップｄにおける位置を求める。敵機の各時刻ステップｄにおける位置を求める。自機の時刻ステップｄにおける位置を含む所定の第一の形状と、各升目ｓｍｎとの重複部分の面積Ｓｍｎを計算する。Ｓａｌｌ＝ΣｍΣｎＳｍｎ。敵機の各時刻ステップｄにおける位置を含む所定の第二の形状と、各升目ｓｍｎとの重複部分の面積Ｓｃｍｎを計算する。衝突確率Ｐｃｍｎを求める。Ｐｓ（ｓ，ｄ）＝Σｓ’ Ｐｓ（ｓ’，ｄ−１）（１／Ｗ）Ｐｔｒ（ｗ，ｍ，ｎ）（Ｓｍｎ／Ｓａｌｌ）（１−Ｐｓｍｎ）を計算することにより、Ｐｓ（ｓ’，ｄ−１）からＰｓ（ｓ，ｄ）を求める処理を順次繰り返すことによって、Ｐｓ（ｓ，Ｄ）を求める。Ｐｓ（ｓ，Ｄ）をすべての升目ｓについて加算する。【選択図】図１
2008188268.tif 000002
【特許請求の範囲】
【請求項１】
画面上に自機と敵機を表示し、Ｗ（Ｗは任意の自然数。）種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法において、
自機行動パターン生成手段が、各時刻ステップｄ（ｄ＝１，…，Ｄ、Ｄは任意の自然数。）ごとに、各行動ｗ（ｗ＝１，…，Ｗ）に従って所定の時間Ｔだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する自機行動パターン生成ステップと、
自機位置計算手段が、上記生成された各自機行動パターンに従って移動する自機の各時刻ステップｄにおける位置を求める自機位置計算ステップと、
敵機位置計算手段が、所定の敵機行動パターンに従って移動する敵機の各時刻ステップｄにおける位置を求める敵機位置計算ステップと、
第一面積計算手段が、上記生成された各自機行動パターンに従って移動する自機の時刻ステップｄにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目ｓとの重複部分の面積を計算する第一面積計算ステップと、
第二面積計算手段が、上記求まった敵機の各時刻ステップｄにおける位置を含む所定の第二の形状と、各升目ｓとの重複部分の面積を計算する第二面積計算ステップと、
衝突確率計算手段が、上記第二面積計算ステップにおいて計算された各升目ｓとの重複部分の面積をその升目ｓの面積で割った値を計算することにより、衝突確率を求める衝突確率計算ステップと、
自機存在確率計算手段が、時刻ステップｄ−１において自機が升目ｓ’に位置する確率Ｐｓ（ｓ’，ｄ−１）と、１／Ｗと、上記第一面積計算ステップで計算された各升目ｓとの重複部分の面積を上記第一の形状の面積で割った値と、１から上記衝突確率を引いた値とを乗算した値をすべての升目ｓ’について和を取ることにより、時刻ステップｄにおいて自機が升目ｓに位置する確率Ｐｓ（ｓ，ｄ）を求める処理を順次繰り返すことによって、自機が時刻ステップＤにおいて各升目ｓに位置する確率Ｐｓ（ｓ，Ｄ）を求める自機存在確率計算ステップと、
難易度判定手段が、自機が時刻ステップＤにおいて升目ｓに存在する確率Ｐｓ（ｓ，Ｄ）をすべての又は一部の升目について加算した値を出力する難易度判定ステップと、
を有する難易度判定方法。
【請求項２】
画面上に自機と敵機を表示し、Ｗ（Ｗは任意の自然数。）種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法において、
自機行動パターン生成手段が、各時刻ステップｄ（ｄ＝１，…，Ｄ、Ｄは任意の自然数。）ごとに、各行動ｗ（ｗ＝１，…，Ｗ）に従って所定の時間Ｔだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する自機行動パターン生成ステップと、
自機位置計算手段が、上記生成された各自機行動パターンに従って移動する自機の各時刻ステップｄにおける位置を求める自機位置計算ステップと、
敵機攻撃弾位置計算手段が、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップｄにおける位置を求める敵機攻撃弾位置計算ステップと、
第一面積計算手段が、上記生成された各自機行動パターンに従って移動する自機の時刻ステップｄにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目ｓとの重複部分の面積を計算する第一面積計算ステップと、
第三面積計算手段が、上記求まった敵機攻撃弾の各時刻ステップｄにおける位置を含む所定の第三の形状と、各升目ｓとの重複部分の面積を計算する第三面積計算ステップと、
衝突確率計算手段が、上記第三面積計算ステップにおいて計算された各升目ｓとの重複部分の面積をその升目ｓの面積で割った値を計算することにより、衝突確率を求める衝突確率計算ステップと、
自機存在確率計算手段が、時刻ステップｄ−１において自機が升目ｓ’に位置する確率Ｐｓ（ｓ’，ｄ−１）と、１／Ｗと、上記第一面積計算ステップで計算された各升目ｓとの重複部分の面積を上記第一の形状の面積で割った値と、１から上記衝突確率を引いた値とを乗算した値をすべての升目ｓ’について和を取ることにより、時刻ステップｄにおいて自機が升目ｓに位置する確率Ｐｓ（ｓ，ｄ）を求める処理を順次繰り返すことによって、自機が時刻ステップＤにおいて各升目ｓに位置する確率Ｐｓ（ｓ，Ｄ）を求める自機存在確率計算ステップと、
難易度判定手段が、自機が時刻ステップＤにおいて升目ｓに存在する確率Ｐｓ（ｓ，Ｄ）をすべての又は一部の升目について加算した値を出力する難易度判定ステップと、
を有する難易度判定方法。
【請求項３】
請求項１に記載の難易度判定方法において、
さらに、
敵機攻撃弾位置計算手段が、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップｄにおける位置を求める敵機攻撃弾位置計算ステップ、
を有し、
上記第二面積計算ステップは、上記求まった敵機の時刻ステップｄにおける位置を含む所定の第二の形状と升目ｓとの重複部分と、上記求まった敵機攻撃弾の時刻ステップｄにおける位置を含む所定の第三の形状と升目ｓとの重複部分との和集合の面積を各升目ｓごとに計算するステップであり、
上記衝突確率計算ステップは、第二面積計算ステップにおいて各升目ｓごとに計算された升目ｓとの重複部分の和集合の面積を、その升目ｓの面積で割った値を計算することにより、衝突確率を求めるステップである、
ことを特徴とする難易度判定方法。
【請求項４】
請求項１に記載の難易度判定方法において
敵機は複数存在しており、
上記敵機位置計算ステップは、所定の敵機行動パターンに従って移動する敵機の各時刻ステップｄにおける位置を複数の敵機ごとに求めるステップであり、
上記第二面積計算ステップは、上記求まった敵機の時刻ステップｄにおける位置を含む所定の第二の形状と升目ｓとの重複部分を複数の敵機ごとに求め、それらの重複部分の和集合の面積を各升目ｓごとに計算するステップであり、
上記衝突確率計算ステップは、第二面積計算ステップにおいて各升目ｓごとに計算された升目ｓとの重複部分の和集合の面積を、その升目ｓの面積で割った値を計算することにより、衝突確率を求めるステップである、
ことを特徴とする難易度判定方法。
【請求項５】
請求項２に記載の難易度判定方法において
敵機攻撃弾は複数存在しており、
上記敵機攻撃弾位置計算ステップは、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップｄにおける位置を複数の敵機攻撃弾ごとに求めるステップであり、
上記第二面積計算ステップは、上記求まった敵機攻撃弾の時刻ステップｄにおける位置を含む所定の第三の形状と升目ｓとの重複部分を複数の敵機攻撃弾ごとに求め、それらの重複部分の和集合の面積を各升目ｓごとに計算するステップであり、
上記衝突確率計算ステップは、第二面積計算ステップにおいて各升目ｓごとに計算された升目ｓとの重複部分の和集合の面積を、その升目ｓの面積で割った値を計算することにより、衝突確率を求めるステップである、
ことを特徴とする難易度判定方法。
【請求項６】
請求項３に記載の難易度判定方法において
敵機と敵機攻撃弾とはそれぞれ複数存在しており、
上記敵機位置計算ステップは、所定の敵機行動パターンに従って移動する敵機の各時刻ステップｄにおける位置を複数の敵機ごとに求めるステップであり、
上記敵機攻撃弾位置計算ステップは、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップｄにおける位置を複数の敵機攻撃弾ごとに求めるステップであり、
上記第二面積計算ステップは、上記求まった敵機の時刻ステップｄにおける位置を含む所定の第二の形状と升目ｓとの重複部分を複数の敵機ごとに求め、上記求まった敵機攻撃弾の時刻ステップｄにおける位置を含む所定の第三の形状と升目ｓとの重複部分を複数の敵機攻撃弾ごとに求め、それらの重複部分の和集合の面積を各升目ｓごとに計算するステップである、
ことを特徴とする難易度判定方法。
【請求項７】
請求項１から請求項６の何れかに記載の難易度判定方法において、
上記第一の形状は、時刻ステップｄにおいて自機が位置する升目ｓの各辺を、予想されるプレイヤーの操作誤差の分だけ広げた形状である、
ことを特徴とする難易度判定方法。
【請求項８】
請求項７に記載の難易度判定方法において、
上記予想されるプレイヤーの操作誤差は、所定の時刻まで各時刻ごとに求めた、所定のアルゴリズムによって移動する目標位置と、プレイヤーがその目標位置を追従するように自機を操作した場合の自機位置との距離の絶対値のその所定の時刻までの最大値である、
ことを特徴とする難易度判定方法。
【請求項９】
画面上に自機と敵機を表示し、Ｗ（Ｗは任意の自然数。）種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定装置において、
各時刻ステップｄ（ｄ＝１，…，Ｄ、Ｄは任意の自然数。）ごとに、各行動ｗ（ｗ＝１，…，Ｗ）に従って所定の時間Ｔだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する自機行動パターン生成手段と、
上記生成された各自機行動パターンに従って移動する自機の各時刻ステップｄにおける位置を求める自機位置計算手段が、
所定の敵機行動パターンに従って移動する敵機の各時刻ステップｄにおける位置を求める敵機位置計算手段が、
上記生成された各自機行動パターンに従って移動する自機の時刻ステップｄにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目ｓとの重複部分の面積を計算する第一面積計算手段と、
上記求まった敵機の各時刻ステップｄにおける位置を含む所定の第二の形状と、各升目ｓとの重複部分の面積を計算する第二面積計算手段と、
上記第二面積計算手段において計算された各升目ｓとの重複部分の面積をその升目ｓの面積で割った値を計算することにより、衝突確率を求める衝突確率計算手段と、
時刻ステップｄ−１において自機が升目ｓ’に位置する確率Ｐｓ（ｓ’，ｄ−１）と、１／Ｗと、上記第一面積計算手段で計算された各升目ｓとの重複部分の面積を上記第一の形状の面積で割った値と、１から上記衝突確率を引いた値とを乗算した値をすべての升目ｓ’について和を取ることにより、時刻ステップｄにおいて自機が升目ｓに位置する確率Ｐｓ（ｓ，ｄ）を求める処理を順次繰り返すことによって、自機が時刻ステップＤにおいて各升目ｓに位置する確率Ｐｓ（ｓ，Ｄ）を求める自機存在確率計算手段と、
自機が時刻ステップＤにおいて升目ｓに存在する確率Ｐｓ（ｓ，Ｄ）をすべての又は一部の升目について加算した値を出力する難易度判定手段と、
を有する難易度判定装置。
【請求項１０】
請求項１〜８の何れかに記載の難易度判定方法の各ステップをコンピュータに実行させるための難易度判定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画面上に自機と敵機を表示し、自機をＷ種類の行動によって所定の時間だけ移動させる操作を行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法、装置、プログラムに関する。
【背景技術】
【０００２】
以下、非特許文献１に記載された難易度判定法を説明する。所定の時間ステップ数をＤとする。このとき、各時刻ステップｄ（ｄ＝１，…，Ｄ）ごとにＷ種類の行動で移動する自機が取り得る移動経路の総数は、ＷＤである。この自機の各移動経路に対して、敵機の移動経路もＷＤ通り存在するものとする。自機が敵機に接触した場合に、自機は敵機に破壊されるとする。自機の移動経路の中で、自機が敵機に破壊される移動経路（死亡行動パターン）の数をＮＤとする。このとき、上記所定の時間ステップＤの期間における自機撃墜確率ＰＤは、次式により与えられる。
【０００３】
ＰＤ＝ＮＤ／ＷＤ
この自機撃墜確率ＰＤを、上記所定の時間ステップの期間における難易度と定義をする。
Ｗ＝３、Ｄ＝３の場合の全行動パターンの例を図５に示す。図５においては、※１、※２、※３において衝突が起こるものとする。また、図５において、実線は、各時刻ステップｄにおいて、ｗ＝１の行動を選択した場合の自機の描く軌跡を表している。破線は、各深さｄにおいて、ｗ＝２の行動を選択した場合の自機の描く軌跡を表している。一点鎖線は、各深さｄにおいて、ｗ＝３の行動を選択した場合の自機の描く軌跡を表している。枝の末端に×が示されているものが死亡行動パターンである。自機が敵機に破壊されない移動経路を安全行動パターンとすると、枝の末端に○が示されているものが安全行動パターンである。このとき、ＮＤ＝１３であり、ＷＤ＝２７であるため、自機撃墜確率ＰＤである難易度は、
ＰＤ＝１３／２７
となる。
【非特許文献１】川野洋、「シューティングゲームの敵機攻撃弾発射アルゴリズムに関する考察」、社団法人情報処理学会研究報告［ゲーム情報学］、２００６年６月３０日、ｖｏｌ．２００６、Ｎｏ．７０，p. 61―68
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記非特許文献１には、自機が破壊される経路の総数ＮＤを求める具体的な手法は開示されていない。すなわち、難易度を計算する具体的な技術（ハードウェア構成、フローチャート等）は示されていない。
【課題を解決するための手段】
【０００５】
請求項１に係る発明によれば、画面上に自機と敵機を表示し、Ｗ（Ｗは任意の自然数。）種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法において、自機行動パターン生成手段が、各時刻ステップｄ（ｄ＝１，…，Ｄ、Ｄは任意の自然数。）ごとに、各行動ｗ（ｗ＝１，…，Ｗ）に従って所定の時間Ｔだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する。自機位置計算手段が、上記生成された各自機行動パターンに従って移動する自機の各時刻ステップｄにおける位置を求める。敵機位置計算手段が、所定の敵機行動パターンに従って移動する敵機の各時刻ステップｄにおける位置を求める。第一面積計算手段が、上記生成された各自機行動パターンに従って移動する自機の時刻ステップｄにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目ｓとの重複部分の面積を計算する。第二面積計算手段が、上記求まった敵機の各時刻ステップｄにおける位置を含む所定の第二の形状と、各升目ｓとの重複部分の面積を計算する。衝突確率計算手段が、第二の形状と各升目ｓとの重複部分の面積をその升目ｓの面積で割った値を計算することにより、衝突確率を求める。自機存在確率計算手段が、時刻ステップｄ−１において自機が升目ｓ’に位置する確率Ｐｓ（ｓ’，ｄ−１）と、１／Ｗと、第一の形状と各升目ｓとの重複部分の面積を上記第一の形状の面積で割った値と、１から上記衝突確率を引いた値とを乗算した値をすべての升目ｓ’について和を取ることにより、時刻ステップｄにおいて自機が升目ｓに位置する確率Ｐｓ（ｓ，ｄ）を求める処理を順次繰り返すことによって、自機が時刻ステップＤにおいて各升目ｓに位置する確率Ｐｓ（ｓ，Ｄ）を求める。難易度判定手段が、自機が時刻ステップＤにおいて升目ｓに存在する確率Ｐｓ（ｓ，Ｄ）をすべての又は一部の升目について加算した値を出力する。
【０００６】
請求項２に係る発明によれば、画面上に自機と敵機を表示し、Ｗ（Ｗは任意の自然数。）種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法において、自機行動パターン生成手段が、各時刻ステップｄ（ｄ＝１，…，Ｄ、Ｄは任意の自然数。）ごとに、各行動ｗ（ｗ＝１，…，Ｗ）に従って所定の時間Ｔだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する。自機位置計算手段が、上記生成された各自機行動パターンに従って移動する自機の各時刻ステップｄにおける位置を求める。敵機攻撃弾位置計算手段が、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップｄにおける位置を求める。第一面積計算手段が、上記生成された各自機行動パターンに従って移動する自機の時刻ステップｄにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目ｓとの重複部分の面積を計算する。第三面積計算手段が、上記求まった敵機攻撃弾の各時刻ステップｄにおける位置を含む所定の第三の形状と、各升目ｓとの重複部分の面積を計算する。衝突確率計算手段が、第三の形状と各升目ｓとの重複部分の面積をその升目ｓの面積で割った値を計算することにより、衝突確率を求める。自機存在確率計算手段が、時刻ステップｄ−１において自機が升目ｓ’に位置する確率Ｐｓ（ｓ’，ｄ−１）と、１／Ｗと、第一の形状と各升目ｓとの重複部分の面積を上記第一の形状の面積で割った値と、１から上記衝突確率を引いた値とを乗算した値をすべての升目ｓ’について和を取ることにより、時刻ステップｄにおいて自機が升目ｓに位置する確率Ｐｓ（ｓ，ｄ）を求める処理を順次繰り返すことによって、自機が時刻ステップＤにおいて各升目ｓに位置する確率Ｐｓ（ｓ，Ｄ）を求める。難易度判定手段が、自機が時刻ステップＤにおいて升目ｓに存在する確率Ｐｓ（ｓ，Ｄ）をすべての又は一部の升目について加算した値を出力する。
【０００７】
請求項７に係る発明によれば、上記第一の形状は、時刻ステップｄにおいて自機が位置する升目ｓの各辺を、予想されるプレイヤーの操作誤差の分だけ広げた形状である。
【発明の効果】
【０００８】
本発明により難易度を求める具体的な手法が示された。また、自機存在確率等の確率を導入し、自機が敵機に破壊される経路の数という離散値に代えて、自機存在確率という連続値の和を計算することにより、難易度を連続的に捉えることが可能となる。このため、本発明による難易度の指標はさらに信頼性が高くなる。
また、請求項７に係る発明によれば、プレイヤーの操作誤差の分だけ広げた形状を用いることにより、人間の操作精度を十分に考慮した難易度を求めることができる。
【０００９】
さらに、本発明により、シューティングゲームにおける敵機の攻撃の強さをプレイヤーの操作位置情報を考慮して定量的に判定することが可能となり、ゲームの難易度設定を正確かつ容易に行うことができる。ゲームが人間の脳に与える影響を調べる際の心理物理実験のツールとしてシューティングゲームを利用する場合に、ゲームの難易度の指標を与えることが可能となる。
【発明を実施するための最良の形態】
【００１０】
図６に、本発明の処理の対象となるシューティングゲームを例示する。画面上には、自機１’と自機１’の攻撃弾３’、敵機２’と敵機２’の攻撃弾４’が表示される。攻撃弾３’、敵機２’、攻撃弾４’は、複数存在していても良い。敵機２’が複数存在している場合には、それらの敵機にはそれぞれ異なる番号ｉ（ｉ＝１，…，Ｉ、Ｉは任意の自然数）が付けられているものとする。同様に、敵機の攻撃弾４’が複数存在している場合には、それらの敵機の攻撃弾４’にはそれぞれ異なる番号ｋ（ｋ＝１，…，Ｋ、Ｋは任意の自然数）が付けられているものとする。また、自機１’、敵機２’、攻撃弾３’、攻撃弾４’は、Ｘ軸とＹ軸で構成される２次元の平面上に位置するものとする。
【００１１】
プレイヤーは、自機１’を操作して、敵機２’と闘う。プレイヤーは、一回の操作で、Ｗ種類の移動速度（方向と速さ）で、行動単位時間τだけ自機を移動させることができる。自機１’が取り得るＷ種類の移動速度（Ｖｘｓ（ｗ），Ｖｙｓ（ｗ））は予め決められており、それぞれの移動速度（Ｖｘｓ（ｗ），Ｖｙｓ（ｗ））には、異なる移動速度番号ｗ（ｗ＝１，…，Ｗ）が付けられているものとする。以下では、移動速度番号ｗを選択する行動のことを行動ｗという。また、プレイヤーは、Ｗ種類の速度による移動と同時に、敵機２’を攻撃するための攻撃弾３’を発射する操作をすることができる。攻撃弾３’は、予め定められた軌跡に従って移動をする。この攻撃弾３’の描く軌跡を、自機の射線と呼ぶ。
【００１２】
なお、例えば、Ｗ＝９のとき、自機１’が取り得る移動速度はそれぞれ、
（Ｖｘｓ（１），Ｖｙｓ（１））＝（Ｖ，０）
（Ｖｘｓ（２），Ｖｙｓ（２））＝（Ｖ，Ｖ）
（Ｖｘｓ（３），Ｖｙｓ（３））＝（０，Ｖ）
（Ｖｘｓ（４），Ｖｙｓ（４））＝（−Ｖ，Ｖ）
（Ｖｘｓ（５），Ｖｙｓ（５））＝（−Ｖ，０）
（Ｖｘｓ（６），Ｖｙｓ（６））＝（−Ｖ，−Ｖ）
（Ｖｘｓ（７），Ｖｙｓ（７））＝（０，−Ｖ）
（Ｖｘｓ（８），Ｖｙｓ（８））＝（Ｖ，−Ｖ）
（Ｖｘｓ（９），Ｖｙｓ（９））＝（０，０）
とすることができる。
【００１３】
敵機２’は、移動速度（Ｖｘｅｉ（ａ），Ｖｙｅｉ（ａ））で移動することができる。敵機２’が取り得るＡ種類の移動速度（Ｖｘｅｉ（ａ），Ｖｙｅｉ（ａ））は予め定められており、それぞれの移動速度（Ｖｘｅｉ（ａ），Ｖｙｅｉ（ａ））には、異なる移動速度番号ａ（ａ＝１，…，Ａ）が付けられているものとする。敵機２’は、自機を攻撃するために攻撃弾４’を任意の速度（方向と速さ）で発射することができる。発射された攻撃弾４’は、例えば、所定の移動速度（Ｖｘｂｋ，Ｖｙｂｋ）で移動する。
【００１４】
自機１’が、敵機２’及び敵機２’が発射する攻撃弾４’と衝突した場合には、自機１’は破壊され、そこでゲームオーバーとなる。逆に、自機１’の攻撃弾３’が敵機２’に衝突した場合には、敵機２’は破壊される。自機１’の攻撃弾３’によりすべての敵機２’を破壊した場合には、プレイヤーは、そのゲームに勝利することになる。
【００１５】
ゲーム画面は格子に分割されており、その格子の構成単位のことを升目というものとする。例えば、画面の一番左下の升目の座標を（０，０）とし、その（０，０）の升目のＸ個だけ右に位置し、かつ、Ｙ個だけ上に位置する升目の座標を（Ｘ，Ｙ）とすることができる。ここで、ＸとＹは０以上の整数である。
【００１６】
なお、升目の一辺の長さＳが、その辺に平行な方向に進む自機の速さＶに、所定の時間Ｔをかけた値になるように、すなわち、Ｓ＝ＶＴとなるように、ゲーム画面を格子に分割するとよい。このように升目の一辺の長さを設定することにより、ある升目ｓに存在する自機が、どの移動速度（Ｖｘｓ（ｗ），Ｖｙｓ（ｗ））に従って移動しても、所定の時間Ｔ後には、必ずある升目ｓに１００％の確率で存在することになる。このため、計算負担を軽減することができる。ここで、所定の時間Ｔは、行動単位時間τを０．０３秒〜０．１秒とすると、０．３秒〜１秒の時間長である。
【００１７】
また、升目の一辺の長さが大きいと、本発明の処理が荒くなり、適切に自機を制御することができない場合がある。したがって、升目の一辺の長さＳが、自機の形状に内接する円の直径と、敵機の攻撃弾の形状に内接する円の直径の和の半分の長さの３分の１以下の値になるように、所定の時間Ｔ及び自機の速さＶを決定すると良い。
大文字で表現された座標（Ｘ，Ｙ）は、升目の座標である。一方、小文字で表現された座標（ｘ，ｙ）は、ゲーム画面上での実数表現による座標位置を表す。任意の座標（ｘ，ｙ）は、その座標（ｘ，ｙ）を含む升目の座標（Ｘ，Ｙ）に変換することができるものとする。
なお、自機、敵機、敵機攻撃弾の位置は、例えば、自機、敵機、敵機攻撃弾の形状に内接する円の中心や、形状の重心等を意味する。  
【００１８】
［第一実施形態］
＜機能構成＞
図１に、第一実施形態による難易度判定装置１０００の機能構成を例示する。難易度判定装置１０００は、例えば、自機存在確率計算部１、自機存在確率記憶部２、難易度判定部３、自機位置計算部４、敵機位置計算部５、敵機攻撃弾位置計算部６、位置記憶部７、誤差記憶部８、自機行動パターン生成部９、自機行動パターン記憶部９１、制御部１０、記憶部１０１を有する。
【００１９】
図２に、自機存在確率計算部１の機能構成を例示する。自機存在確率計算部１は、例えば、位置取得部１１、面積計算部１２、加算部１３、割算部１４、確率計算部１５、面積計算部１７、衝突確率計算部１８、減算部１９を有する。確率計算部１５は、例えば、乗算部１５１、加算部１５２を有する。
これらの難易度判定装置１０００の各部は、例えば、図３、図４で示されたフローチャートに従った処理を行うことにより実現されるものである。
【００２０】
≪自機行動パターン生成部≫
自機行動パターン生成部９（図１参照。）は、各時刻ステップｄ（ｄ＝１，…，Ｄ、Ｄは任意の自然数。）ごとに、各行動ｗ（ｗ＝１，…，Ｗ）に従って所定の時間Ｔだけ移動する動作を行う自機のすべての自機行動パターンを生成する。生成された自機行動パターンは、自機行動パターン記憶部９１に格納される。
【００２１】
自機行動パターンは、各時刻ステップｄ（ｄ＝１，…，Ｄ）ごとに生成された、移動速度番号ｗ（ｗ＝１，…，Ｗ）の順列ｗ（ｄ，ｄｅ，ｊ）である。例えば、Ｄ＝３のとき、自機行動パターン生成部９は、ｄ＝１の場合の移動速度番号ｗの順列ｗ（１，ｄｅ，ｊ）と、ｄ＝２の場合の移動速度番号ｗの順列ｗ（２，ｄｅ，ｊ）と、ｄ＝３の場合の移動速度番号ｗの順列（３，ｄｅ，ｊ）とをそれぞれ生成する。
【００２２】
例えば、ｄ＝１の場合の移動速度番号ｗの順列ｗ（１，ｄｅ，ｊ）は、以下のような９（＝９の１乗）個の順列から構成される。
【００２３】
ｊ＝１：｛ｗ（１，１，１）＝１｝
ｊ＝２：｛ｗ（１，１，２）＝２｝
…
ｊ＝８：｛ｗ（１，１，２）＝８｝
ｊ＝９：｛ｗ（１，１，９）＝９｝
また、例えば、ｄ＝２の場合の移動速度番号ｗの順列ｗ（２，ｄｅ，ｊ）は、以下のような８１（＝９の２乗）個の順列から構成される。
ｊ＝１：｛ｗ（２，１，１）＝１，ｗ（２，２，１）＝１｝
ｊ＝２：｛ｗ（２，１，２）＝１，ｗ（２，２，２）＝２｝
…
ｊ＝８０：｛ｗ（２，１，８０）＝９，ｗ（２，２，８０）＝８｝
ｊ＝８１：｛ｗ（２，１，８１）＝９，ｗ（２，２，８１）＝９｝
さらに、例えば、ｄ＝３の場合の移動速度番号ｗの順列ｗ（３，ｄｅ，ｊ）は、以下のような７２９（＝９の３乗）個の順列から構成される。
ｊ＝１：｛ｗ（３，１，１）＝１，ｗ（３，２，１）＝１，ｗ（３，３，１）＝１｝
ｊ＝２：｛ｗ（３，１，２）＝１，ｗ（３，２，２）＝１，ｗ（３，３，２）＝２｝
…
ｊ＝７２８：｛ｗ（３，１，７２８）＝９，ｗ（３，２，７２８）＝９，ｗ（３，３，７２８）＝８｝
ｊ＝７２９：｛ｗ（３，１，７２９）＝９，ｗ（３，２，７２９）＝９，ｗ（３，３，７２９）＝９｝
【００２４】
ある自機行動パターン（順列）ｗ（ｄ，ｄｅ，ｊ）＝｛ｗ（ｄ，１，ｊ）＝ｗ１，…，ｗ（ｄ，ｄｅ，ｊ）＝ｗｄｅ，…，ｗ（ｄ，ｄ，ｊ）＝ｗｄ｝が与えられたとき、その自機行動パターンに従って自機が移動するとは、時刻ステップｄ＝１において、自機が移動速度番号ｗ１に従って所定の時間Ｔだけ移動する動作をし、…、時刻ステップｄ＝ｄｅにおいて、自機が移動速度番号ｗｄｅに従って所定の時間Ｔだけ移動する動作をし、…、時刻ステップｄ＝ｄにおいて、自機が移動速度番号ｗｄに従って所定の時間Ｔだけ移動する動作をすることを意味する。
【００２５】
自機行動パターン生成部９が、すべての自機行動パターンではなく、一部の自機行動パターンを生成して、その一部の自機行動パターンに基づいて本難易度判定方法を適用してもよい。例えば、上記実施形態では、自機は９種類の移動速度番号に従って移動することができるとしたが、例えば、そのうち８種類のみの移動速度番号に従って移動する場合（例えば、自機が停止という行動をしない場合）における各自機行動パターンを生成して、これら生成された自機行動パターンに基づいて上記難易度判定方法を適用する。また、自機行動パターン生成部９は、すべての自機行動パターンを生成するが、生成された自機行動パターンの一部に基づいて上記難易度判定方法を適用してもよい。一部の自機行動パターンにすいて上記難易度判定方法を適用することにより、自機の行動が制限された場合の限定的な難易度を求めることができる。
【００２６】
≪自機位置計算部≫
自機位置計算部４（図１参照。）は、自機行動パターン生成部９が生成した各自機行動パターンに従って移動する自機の各時刻ステップｄにおける位置（ｘｓ，ｙｓ）を求める。求まった位置（ｘｓ，ｙｓ）は、位置記憶部７に格納される。上記したように、ある自機行動パターン（順列）ｗ（ｄ，ｄｅ，ｊ）＝｛ｗ（ｄ，１，ｊ）＝ｗ１，…，ｗ（ｄ，ｄｅ，ｊ）＝ｗｄｅ，…，ｗ（ｄ，ｄ，ｊ）＝ｗｄ｝が与えられたとき、その自機行動パターンに従って自機が移動するとは、時刻ステップｄ＝１において、自機が移動速度番号ｗ１に従って所定の時間Ｔだけ移動する動作をし、…、時刻ステップｄ＝ｄｅにおいて、自機が移動速度番号ｗｄｅに従って所定の時間Ｔだけ移動する動作をし、…、時刻ステップｄ＝ｄにおいて、自機が移動速度番号ｗｄに従って所定の時間Ｔだけ移動する動作をすることを意味する。このため、この自機行動パターンｗ（ｄ，ｄｅ，ｊ）に従って移動する自機の各時刻ステップｄにおける位置（ｘｓ，ｙｓ）は、例えば、次式で計算することができる。
【００２７】
（ｘｓ，ｙｓ）＝（ｘｓ０＋Σｋ＝１ｄＶｘｓ（ｗｋ）×Ｔ，ｙｓ０＋Σｋ＝１ｄＶｙｓ（ｗｋ）×Ｔ）
ここで、（Ｖｘｓ（ｗ），Ｖｙｓ（ｗ））は、移動速度番号ｗに対応して予め定められた移動速度ベクトルであり、Ｖｘｓ（ｗ）とＶｙｓ（ｗ）はそれぞれこの移動速度ベクトルのｘ成分、ｙ成分である。
【００２８】
なお、後述する敵機位置計算部５又は敵機攻撃弾位置計算部６が、自機の位置（ｘｓ，ｙｓ）に応じて敵機の位置（ｘｅｉ，ｙｅｉ）又は敵機攻撃弾の位置（ｘｂｋ，ｙｂｋ）を求める場合には、必要に応じて、自機位置計算部４は、行動単位時間τごとの自機の位置（ｘｓ，ｙｓ）を計算する。
【００２９】
≪敵機位置計算部≫
敵機位置計算部５（図１参照。）は、所定の敵機行動パターンに従って移動する敵機の各時刻ステップｄ（ｄ＝１，…，Ｄ）における位置（ｘｅｉ，ｙｅｉ）を求める。求まった敵機の位置（ｘｅｉ，ｙｅｉ）は、位置記憶部７に格納される。
【００３０】
所定の敵機の行動パターンとは、例えば、所定の移動速度（Ｖｘｅｉ＊，Ｖｙｅｉ＊）を取り続ける行動パターンや、自機の位置や時間に関係なくランダムに移動する行動パターンや、移動単位時間τごとに、敵機の位置から自機の位置に引いたベクトルとの内積を最も大きくする移動速度ベクトル（Ｖｘｅｉ（ａ），Ｖｙｅｉ（ａ））を選択し、この選択された移動速度ベクトルに従って移動する行動パターン等のことである。このように、所定の敵機行動パターンは、自機の位置や時間に関係なく移動するものや、自機の位置や時間に依存して移動するもの等の何でもよい。自機の位置に応じて敵機の位置を計算する場合には、自機位置計算部４によって計算された自機の位置（ｘｓ，ｙｓ）を用いる。
敵機が複数いる場合には、すべての敵機ｉ（ｉ＝１，…，Ｉ）の各時刻ステップｄにおける位置（ｘｅｉ，ｙｅｉ）を計算して、位置記憶部７に格納する。
【００３１】
≪敵機攻撃弾位置計算部≫
敵機攻撃弾位置計算部６（図１参照。）は、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップｄ（ｄ＝１，…，Ｄ）における位置（ｘｂｋ，ｙｂｋ）を求める。求まった敵機の位置（ｘｂｋ，ｙｂｋ）は、位置記憶部７に格納される。
【００３２】
所定の敵機攻撃弾の行動パターンとは、例えば、所定の移動速度（Ｖｘｂｋ＊，Ｖｙｂｋ＊）を取り続ける行動パターンや、自機の位置や時間に関係なくランダムに移動する行動パターンや、行動単位時間τごとに、敵機攻撃弾の位置から自機の位置に引いたベクトルとの内積を最も大きくする移動速度ベクトル（Ｖｘｂｋ（ｃ），Ｖｙｂｋ（ｃ））を選択し、この選択された移動速度ベクトルに従って移動する行動パターン等のことである。このように、所定の敵機攻撃弾行動パターンは、自機の位置や時間に関係なく移動するものや、自機の位置や時間に依存して移動するもの等の何でもよい。自機の位置に応じて敵機攻撃弾の位置を計算する場合には、自機位置計算部４によって計算された自機の位置（ｘｓ，ｙｓ）を用いる。
敵機の攻撃弾が複数ある場合には、すべての敵機の攻撃弾ｋ（ｋ＝１，…，Ｋ）の各時刻ステップｄにおける位置（ｘｂｋ，ｙｂｋ）を計算して、位置記憶部７に格納する。
【００３３】
≪自機存在確率計算部≫
自機存在確率計算部１（図１参照。）は、上記生成された各自機行動パターンに従って移動する自機が時刻ステップｄ−１において破壊されないでゲーム画面を分割した格子を構成する各升目ｓ’に位置する確率Ｐｓ（ｓ’，ｄ―１）から、各自機行動パターンに従って移動する自機が時刻ステップｄにおいて破壊されないで各升目ｓに位置する確率Ｐｓ（ｓ，ｄ）を求める処理を繰り返すことによって、自機が時刻ステップＤにおいて各升目ｓに位置する確率Ｐｓ（ｓ，Ｄ）を求める
図２と図７を参照して、各自機行動パターンに従って移動した結果時刻ステップｄ−１において升目ｓ’にＰｓ（ｓ’，ｄ−１）の確率で存在する自機が、各自機行動パターンに従った結果時刻ステップｄにおいて升目ｓに位置する確率Ｐｓ（ｓ，ｄ）の求め方を説明する。図２は、自機存在確率計算部１の機能構成を例示する図であり、図７は、確率Ｐｓ（ｓ，ｄ）の求め方の説明を補助する図である。
【００３４】
時刻ステップｄにおいて自機が位置する升目ｓの辺をｘ軸の正方向と負方向にｅｘだけ、ｙ軸の正方向と負方向にｅｙだけそれぞれ広げた升目ｓｅを考える。ｅｘとｅｙは、予想されるプレイヤーの操作誤差である。升目ｓｅは、図７において、破線で示される升目である。図７においては、升目ｓｅと升目ｓの中心が重なっているが、この限りではない。升目ｓｅとして、時刻ステップｄにおける自機の位置を含み、プレイヤーの操作誤差を考慮した任意の形状を用いてもよい。自機の位置は、自機位置計算部４（図１参照）が計算したものを用いる。位置取得部１１（図２参照）が、自機の位置を取得して面積計算部１２に出力する。なお、
また、時刻ステップｄにおける敵機の位置を中心とする升目ｓｃｅｉと、時刻ステップｄにおける敵機攻撃弾の位置を中心とする升目ｓｃｂｋを考える。升目ｓｃｅｉの一辺の長さは、例えば、敵機の形状に内接する円の直径と自機の形状に内接する円の直径との和を２で割った値であり、升目ｓｃｂｋの一辺の長さは、例えば、敵機攻撃弾の形状に内接する円の直径と自機の形状に内接する円の直径との和を２で割った値である。時刻ステップｄにおける敵機の位置と、敵機攻撃弾の位置は、敵機位置計算部５と敵機攻撃弾位置計算部６が計算したものをそれぞれ用いる。位置取得部１１が、敵機の位置と、敵機攻撃弾の位置をそれぞれ取得して、面積計算部１７に出力する。
【００３５】
敵機の位置を中心とする升目ｓｃｅｉに代えて、敵機の位置を含む、敵機の形状やあたり判定の形状を反映した任意の形状を用いることができる。また敵機攻撃弾の位置を中心とする升目ｓｃｂｋに代えて、敵機の攻撃弾の位置を含む、敵機攻撃弾の形状やあたり判定の形状を反映した任意の形状を用いることができる。
【００３６】
面積計算部１２（第一面積計算手段に相当）は、升目ｓｅと各升目ｓとの重複部分の面積を計算する。図７に示した例では、升目ｓｅは、ｓ００，ｓ０１，ｓ０２，ｓ１０，ｓ１１，ｓ１２，ｓ２０，ｓ２１，ｓ２２の部分でそれぞれの升目と重なっている。以下、重複部分ｓｍｎ（ｍ＝０，１，２，ｎ＝０，１，２）を含む升目を升目ｓｍｎと呼ぶ。そして、重複部分ｓｍｎの面積を、面積Ｓｍｎと表記する。面積計算部１２は、各面積Ｓｍｎ（ｍ＝０，１，２，ｎ＝０，１，２）を計算して、加算部１３と割算部１４にそれぞれ出力する。
【００３７】
加算部１３は、各面積Ｓｍｎの和を求める。この和をＳａｌｌと表記する。すなわち、加算部１３は、ΣｍΣｎＳｍｎで定まる値Ｓａｌｌを計算する。Ｓａｌｌは、割算部１４に出力される。
割算部１４は、各ＳｍｎをＳａｌｌで割算することにより、時刻ステップｄ−１において升目ｓ’に位置する自機が、ある自機行動パターンｗ（ｄ，ｄｅ，ｊ）に従って移動した結果、時刻ステップｄにおいて各升目ｓｍｎに移動する確率Ｐｔｒ（ｗ，ｍ，ｎ）を求める。Ｐｔｒ（ｗ，ｍ，ｎ）は、Ｓｍｎ／Ｓａｌｌによって定まる値である。計算されたＰｔｒ（ｗ，ｍ，ｎ）は、確率計算部１５に出力される。
【００３８】
面積計算部１７（第二面積計算手段、第三面積計算手段に相当）は、升目ｓｃｅｉと升目ｓｍｎとの重複部分と、升目ｓｃｂｋと升目ｓｍｎとの重複部分との和集合の面積Ｓｃｍｎを升目ｓｍｎごとに求めて、衝突確率計算部１８に出力する。例えば、図７においては、升目ｓｃｅｉは、升目ｓ１１とｓｅｉ１１の部分で、升目ｓ１２とｓｅｉ１２の部分で、升目ｓ２１とｓｅｉ２１の部分で、升目ｓ２２とｓｅｉ２２の部分でそれぞれ重なっている。また、升目ｓｃｂｋは、升目ｓ２０とｓｂｋ２０の部分で、升目ｓ２１とｓｂｋ２１の部分でそれぞれ重なっている。升目ｓ１１についてはｓｅｉ１１の部分の面積がＳｃ１２となり、升目ｓ１２についてはｓｅｉ１２の部分の面積がＳｃ１２となり、升目２０についてはｓｂｋ２０の部分の面積がＳｃ２０となり、升目２２についてはｓｅｉ２２の部分の面積がＳｃ２２となる。また、ｓｅｉ２１の部分とｓｂｋ２１の部分が重なっている升目２１については、ｓｅｉ２１の部分とｓｂｋ２１の部分の和集合の面積、すなわち、ｓｅｉ２１の面積とｓｂｋ２１の面積とを加算した値から縦縞模様で示した領域の面積（図７参照。）を引いた面積が、Ｓｃ２１となる。
【００３９】
なお、面積計算部１７は、敵機と敵機攻撃弾が複数ある場合には、升目ｓｃｅｉと升目ｓとの重複部分を複数の敵機ごとに求め、升目ｓｃｂｋと升目ｓとの重複部分を複数の敵機攻撃弾ごとに求め、それらの重複部分の和集合の面積を各升目ｓごとに計算することにより、面積Ｓｃｍｎを計算する。
【００４０】
衝突確率計算部１８は、各面積Ｓｃｍｎを、その升目ｓｍｎの面積で割ることにより、敵機及び敵機の攻撃弾が時刻ステップｄにおいて各升目ｓｍｎに存在する確率Ｐｃｍｎを求める。計算されたＰｃｍｎは、減算部１９に出力される。Ｐｃｍｎは、敵機及び敵機の攻撃弾と升目ｓｍｎに位置する自機が衝突することにより、自機を破壊する確率を表す。
【００４１】
減算部１９は、１からＰｃｍｎを引いた値を各升目ｓｍｎごとに計算して、確率計算部１５に出力する。
確率計算部１５は、時刻ステップｄ−１において時期が升目ｓ’に位置する確率Ｐｓ（ｓ’，ｄ−１）と、時刻ステップｄ―１において移動速度ｗが選択される確率（例えば、１／Ｗ）と、Ｐｔｒ（ｗ，ｍ，ｎ）と、１から上記衝突確率を引いた値とを乗算した値をすべての升目ｓ’について和を取ることにより、時刻ステップｄにおいて自機が升目ｓに位置する確率Ｐｓ（ｓ，ｄ）を求める。
【００４２】
すなわち、Ｐｓ（ｓ，ｄ）＝Σｓ’（１／Ｗ）・（１−Ｐｃｍｎ）・Ｐｓ（ｓ’，ｄ−１）・Ｐｔｒ（ｗ，ｍ，ｎ）で定まる値を計算することにより、Ｐｓ（ｓ，ｄ）を求める。計算されたＰｓ（ｓ，ｄ）は、自機存在確率記憶部２に格納される。
自機存在確率計算部１は、上記した処理を順次繰り返すことによって、最終的に、自機が時刻ステップＤにおいて各升目ｓに位置する確率Ｐｓ（ｓ，Ｄ）を求める。
【００４３】
上述した通り、これらの自機存在確率計算部１の機能は、図３及び図４に示したフローチャートに従った処理を行うことにより実現されるものである。
【００４４】
≪難易度判定部≫
難易度判定部３（図１参照。）は、自機が時刻ステップＤにおいて各升目ｓに位置する確率Ｐｓ（ｓ，Ｄ）をすべての升目ｓについて加算した値を計算して、その計算された値をそのシューティングゲームの難易度とする。すなわち、難易度判定部３は、ΣｓＰｓ（ｓ，Ｄ）で定まる値を難易度として計算する。
【００４５】
なお、自機が時刻ステップＤにおいて各升目ｓに位置する確率Ｐｓ（ｓ，Ｄ）を一部の升目ｓについて加算した値を計算して、その計算された値をそのシューティングゲームの難易度としてもよい。Ｐｓ（ｓ，Ｄ）を一部の升目ｓについて加算した値を難易度とすることにより、自機の移動範囲がそれらの一部の升目ｓに制限されている場合の限定的な難易度を求めることができる。
【００４６】
≪記憶部≫
記憶部１０１には、時刻ステップｄ、順列ｗの要素番号ｄｅ、順列ｗの番号ｊ、時刻ｐ、所定の時刻Ｔ、自機の移動速度番号の数Ｗ、探索の深さＤがそれぞれ予め格納されているものとする。Ｄは、求める難易度の精度やハードウェアの性能に応じて変更することができる値であるが、例えば、５〜１５程度に設定することができる。
【００４７】
［処理の流れ］
図３を参照して、難易度判定装置１０００の各部の処理の流れを説明する。図３は、難易度判定装置１０００の処理の流れを説明する例示する図である。図３に例示した処理の流れはいわゆる横型探索と呼ばれるものである。横型探索とは、ある節点から探索を開始して、その節点に接続している節点を全て調べた後、その調べた節点に接続している子節点を順番に調べて行く探索方法である。例えば、Ｄ＝３、Ｗ＝３の場合、図８に示すように、行動単位ごとの移動経路につけた番号の順番でそれぞれの経路を探索する手法である。
【００４８】
＜ステップＳ１＞
難易度判定装置１０００の制御部１０は、記憶部１０１から読み出したｄをｄ＝１として記憶部１０１に格納する。また、制御部１０は、現時刻を時刻０とし、時刻ｔ＝０における自機の位置（ｘｓ０，ｙｓ０）と、時刻ｔ＝０における敵機の位置（ｘｅｉ０，ｙｅｉ０）と、時刻ｔ＝０における敵機攻撃弾の位置（ｘｂｋ０，ｙｂｋ０）についての情報を取得して、位置記憶部７に格納する。さらに、制御部１０は、時刻ｔ＝０における自機の位置（ｘｓ０，ｙｓ０）を含む升目をｓ０として、Ｐｓ（ｓ０，０）＝１として、自機存在確率記憶部２に格納する。ここで、升目ｓ０は、時刻ｔ＝０における自機の位置（ｘｓ０，ｙｓ０）を含む升目である。
【００４９】
＜ステップＳ２＞
自機行動パターン生成部９は、現在のｄの値から、移動速度番号ｗの順列ｗ（ｄ，ｄｅ，ｊ）を生成する。上記≪自機行動パターン≫の欄で説明したように、例えばｄ＝１の場合には、以下のような９（＝９の１乗）個の順列を作成する。
【００５０】
ｊ＝１：｛ｗ（１，１，１）＝１｝
ｊ＝２：｛ｗ（１，１，２）＝２｝
…
ｊ＝８：｛ｗ（１，１，２）＝８｝
ｊ＝９：｛ｗ（１，１，９）＝９｝
作成された順列は、自機行動パターン記憶部９１に格納される。また、記憶部１０１から読み出したｊをｊ＝１として、再度記憶部１０１に格納する。
【００５１】
＜ステップＳ３＞
制御部１０は、記憶部１０１から読み出したｄｅをｄｅ＝ｄとして、再度記憶部１０１に格納する。
【００５２】
＜ステップＳ４＞
制御部１０は、記憶部から読み出したｄがｄ＝１であるかどうかを判定する。ｄ＝１であれば、ステップＳ５の処理を行う。そうでない場合には、ステップＳ１４の処理を行う。
【００５３】
＜ステップＳ５＞
ステップＳ４でｄ＝１と判断された場合には、自機位置計算部４は、位置記憶部７から読み出した（ｘｓ０，ｙｓ０）を用いて、自機の位置（ｘｓ，ｙｓ）＝（ｘｓ０，ｙｓ０）とする。敵機位置計算部５は、位置記憶部７から読み出した（ｘｅｉ０，ｙｅｉ０）を用いて、敵機の位置（ｘｅｉ，ｙｅｉ）＝（ｘｅｉ０，ｙｅｉ０）とする。敵機攻撃弾位置計算部６は、位置記憶部７から読み出した（ｘｂｋ０，ｙｂｋ０）を用いて、敵機攻撃弾の位置（ｘｂｋ（ｔ），ｙｂｋ（ｔ））＝（ｘｂｋ０，ｙｂｋ０）とする。
【００５４】
＜ステップＳ６＞
自機位置計算部４は、記憶部１０１から読み出したｄとｄｅとｊに対応した移動速度番号ｗ（ｄ，ｄｅ，ｊ）を、自機行動パターン記憶部９１から読み出す。また、制御部１０は、記憶部１０１から読み出したｐを、ｐ＝０として再度記憶部１０１に格納する。
【００５５】
＜ステップＳ７＞
自機位置計算部４は、自機の位置（ｘｓ，ｙｓ）を、移動速度番号ｗ（ｄ，ｄｅ，ｊ）に対応した移動速度ベクトル（Ｖｓｘ（ｗ（ｄ，ｄｅ，ｊ）），Ｖｓｙ（ｗ（ｄ，ｄｅ，ｊ）））で行動単位時間τだけ移動させて、自機の位置を更新する。すなわち、自機位置（ｘｓ，ｙｓ）＝（ｘｓ＋τ×Ｖｓｘ（ｗ（ｄ，ｄｅ，ｊ）），ｙｓ＋τ×Ｖｓｙ（ｗ（ｄ，ｄｅ，ｊ）））とする。
【００５６】
敵機位置計算部５は、敵機の位置（ｘｅｉ，ｙｅｉ）から、所定の敵機行動パターンを用いて、τ時間後の敵機の位置を求める。そして、敵機の位置（ｘｅｉ，ｙｅｉ）を、τ時間後の敵機の位置とすることにより、敵機の位置を更新する。上記所定の敵機行動パターンが、自機の位置（ｘｓ，ｙｓ）に依存するものであるときは、自機位置計算部４が計算した自機の位置（ｘｓ，ｙｓ）を用いる。敵機が複数いる場合には、すべての敵機ｉ（ｉ＝１，…，Ｉ）について、敵機の位置を更新する。
【００５７】
敵機攻撃弾位置計算部６は、敵機攻撃弾の位置（ｘｂｋ，ｙｂｋ）から、所定の敵機攻撃弾行動パターンを用いて、τ時間後の敵機攻撃弾の位置を求める。そして、敵機攻撃弾の位置（ｘｂｋ，ｙｂｋ）を、τ時間後の敵機攻撃弾の位置とすることにより、敵機攻撃弾の位置を更新する。上記所定の敵機攻撃弾行動パターンが、自機の位置（ｘｓ，ｙｓ）に依存するものであるときは、自機位置計算部４が計算した自機の位置（ｘｓ，ｙｓ）を用いる。敵機の攻撃弾が複数ある場合には、すべての敵機攻撃弾ｋ（ｋ＝１，…，Ｋ）について、敵機攻撃弾の位置を更新する。
制御部１０は、記憶部１０１から読み出したｐを１だけインクリメントして記憶部１０１に格納する。
【００５８】
＜ステップＳ８＞
制御部１０は、記憶部１０１から読み出したｐ、τ、Ｔを用いて、ｐ×τ＝Ｔであるかどうかを判定する。そうでない場合は、ステップＳ７の処理を行う。
【００５９】
＜ステップＳ８’＞
ステップＳ８において、ｐ×τ＝Ｔと判断された場合、その時点での自機の位置（ｘｓ，ｙｓ）を（ｘｓ（ｄ，ｄｅ，ｊ），ｙｓ（ｄ，ｄｅ，ｊ））として、その時点での敵機の位置（ｘｅｉ，ｙｅｉ）を（ｘｅｉ（ｄ，ｄｅ，ｊ），ｙｅｉ（ｄ，ｄｅ，ｊ））として、その時点での敵機攻撃弾の位置（ｘｂｋ，ｙｂｋ）を（ｘｂｋ（ｄ，ｄｅ，ｊ），ｙｂｋ（ｄ，ｄｅ，ｊ））として、それぞれ位置記憶部７に格納する。
【００６０】
このように、ｐ×τ＝Ｔとなるごとに、その時点での位置を位置記憶部７に格納することにより、自機位置計算部４、敵機位置計算部５、敵機攻撃弾位置計算部６は、それぞれ各（自機、敵機、敵機攻撃弾）行動パターンに従って移動する場合の、各時刻ステップｄにおける（自機、敵機、敵機攻撃弾）位置を求める。
【００６１】
＜ステップＳ９＞
自機存在確率計算部１は、現在の移動速度番号ｗ（ｄ、ｄｅ、ｊ）に従って移動する自機が、各升目ｓに敵機に破壊されないで位置する確率を計算する。以下、ステップＳ９を構成するステップＳ９１〜ステップＳ９８の処理について説明をする。ｓｅ、ｓｃｅｉ、ｓｃｂｋ、ｓｍｍ、Ｓｍｍ、Ｓａｌｌ、Ｐｔｒ（ｗ，ｍ，ｎ）、Ｐｃｍ等の詳細については、上記≪自機存在確率計算部≫の説明及び図７を参照のこと。
【００６２】
≪ステップＳ９１（図４）≫
自機存在確率計算部１の位置取得部１１（図２参照）は、自機位置計算部４が計算した、自機行動パターンの順列ｗ（ｄ，ｄｅ，ｊ）に従って移動した時刻ステップｄにおける自機の位置（ｘｓ（ｄ，ｄｅ，ｊ），ｙｓ（ｄ，ｄｅ，ｊ））を、位置記憶部７から読み出し、この位置に対応する升目ｓを求めて、面積計算部１２に出力する。
【００６３】
≪ステップＳ９２≫
面積計算部１２は、升目ｓと同じか誤差ｅｘ，ｅｙの分だけ広げた升目ｓｅと、各升目ｓｍｎとの重複部分の面積Ｓｍｎをそれぞれ計算して、加算部１３と割算部１４に出力する。誤差ｅｘ，ｅｙは、誤差記憶部８から読み出したものである。
【００６４】
≪ステップＳ９３≫
加算部１３は、ｓｍｎの面積の和Ｓａｌｌ＝ΣｍΣｎｓｍｎを計算して、割算部１４に出力する。
【００６５】
≪ステップＳ９４≫
割算部１４は、時刻ステップｄにおいて、升目ｓｍｎに移動する確率Ｐｔｒ（ｗ，ｍ，ｎ）＝ｓｍｎ／Ｓａｌｌを各升目ｓｍｎごとに求めて、確率計算部１５に出力する。
【００６６】
≪ステップＳ９５≫
面積計算部１７は、升目ｓｃｅｉと升目ｓｍｎとの重複部分と、升目ｓｃｂｋと升目ｓｍｎとの重複部分の和集合の面積Ｓｃｍｎを各升目ｓｍｎごとに求めて、衝突確率計算部１８に出力する。
【００６７】
≪ステップＳ９６≫
衝突確率計算部１８は、敵機及び敵機攻撃弾が時刻ステップｄにおいて升目ｓｍｎに位置する確率Ｐｃｍｎ＝Ｓｃｍｎ／Ｓｍｎを各升目ごとに求めて、減算部１９に出力する。
【００６８】
≪ステップＳ９７≫
減算部１９は、１からＰｃｍｎを減算して、時刻ステップｄにおいて、敵機及び敵機攻撃弾が升目ｓｍｎに位置する自機を破壊する確率１−Ｐｃｍｎを各升目ｓｍｎごとに求めて、確率計算部１５に出力する。
【００６９】
≪ステップＳ９８≫
確率計算部１５は、自機存在確率記憶部２から読み出したＰｓ（ｓｍｎ，ｄ）に、（１／Ｗ）・（１−Ｐｃｍｎ）・Ｐｔｒ（ｗ，ｍ，ｎ）・Ｐｓ（ｓ’，ｄ−１）を加算する処理を各升目ｓｍｎについて行うことにより、時刻ステップｄにおいて自機が敵機に破壊されないで升目ｓに存在する確率Ｐｓ（ｓ，ｄ）を更新して、自機存在確率記憶部２に格納する。Ｗは、記憶部１０１から読み出したものであり、Ｐｓ（ｓ’，ｄ−１）は自機存在確率記憶部２から読み出したものである。
【００７０】
＜ステップＳ１０＞
制御部１０は、記憶部１０１から読み出した順列番号ｊを１だけインクリメントして再度記憶部１０１に格納する。
【００７１】
＜ステップＳ１１＞
制御部１０は、記憶部１０１から読み出したｊ、Ｗ、ｄを用いて、ｊ−１＝Ｗのｄ乗かどうかを判定する。ｊ−１＝Ｗのｄ乗でない場合は、ステップＳ４の処理を行う。ｊ−１＝Ｗのｄ乗である場合は、ステップＳ１２の処理を行う。
【００７２】
＜ステップＳ１２＞
制御部１０は、記憶部１０１から読み出した時刻ステップｄを１だけインクリメントして再度記憶部１０１に格納する。
【００７３】
＜ステップＳ１３＞
制御部１０は、記憶部１０１から読み出したｄとＤを用いて、ｄ＝Ｄ＋１であるかどうかを判定する。ｄ＝Ｄ＋１でない場合は、ステップＳ２の処理を行う。ｄ＝Ｄ＋１である場合は、ステップＳ１５の処理を行う。
【００７４】
＜ステップＳ１４＞
ステップＳ４において、ｄ＝１でないと判断された場合には、制御部１０は、現在評価しているｄとｊの自機行動パターンの順列ｗ（ｄ，ｄｅ，ｊ）のｄ−１番目までの要素が同じである、ｄ−１とｊ’の自機行動パターンの順列ｗ（ｄ−１，ｄ−１，ｊ’）を自機行動パターン記憶部９１から探す。自機行動パターンの順列ｗ（ｄ−１，ｄ−１，ｊ’）についての情報は、自機位置計算部４、敵機位置計算部５、敵機攻撃弾位置計算部６に出力される。
【００７５】
例えば、図９のＡに示すように、ｄ＝２，ｊ＝１の自機行動パターンの順列が｛ｗ（２，１，１）＝１，ｗ（２，２，１）＝１｝であり、ｄ＝１，ｊ＝１の自機行動パターンの順列が｛ｗ（１，１，１）＝１｝である場合には、ｗ（２，１，１）＝１とｗ（１，１，１）＝１の部分で、自機行動パターンの順列の要素が一致する。したがって、ｄ＝２，ｊ＝１の自機行動パターンの順列｛ｗ（２，１，１）＝１，ｗ（２，２，１）＝１｝についての、ｄ−１番目までの要素が同じである自機行動パターンの順列は、ｄ＝１，ｊ＝１の自機行動パターンの順列｛ｗ（１，１，１）＝１｝である。
【００７６】
また、図９のＢに示すように、例えば、ｄ＝３，ｊ＝３の自機行動パターンの順列が｛ｗ（３，１，３）＝１，ｗ（３，２，３）＝１，ｗ（３，３，３）＝３｝であり、ｄ＝２，ｊ＝１の自機行動パターンの順列が｛ｗ（２，１，１）＝１，ｗ（２，２，１）＝１｝である場合には、ｄ＝３，ｊ＝３の自機行動パターンの順列とｄ＝２，ｊ＝１の自機行動パターンの順列のうち、｛ｗ（３，１，３）＝１，ｗ（３，２，３）＝１｝と｛ｗ（２，１，１）＝１，ｗ（２，２，１）＝１｝の部分で、自機行動パターンの順列の要素が一致する。したがって、ｄ＝３，ｊ＝３の自機行動パターンの順列｛ｗ（３，１，１）＝１，ｗ（３，２，１）＝１，ｗ（３，３，１）＝３｝についての、ｄ−１番目までの要素が同じである自機行動パターンの順列は、ｄ＝２，ｊ＝１の自機行動パターンの順列が｛ｗ（２，１，１）＝１，ｗ（２，２，１）＝１｝である。
自機位置計算部４は、上記自機行動パターンの順列ｗ（ｄ−１，ｄ−１，ｊ’）に対応した自機の位置（ｘｓ（ｄ−１，ｄ−１，ｊ’），ｙｓ（ｄ−１，ｄ−１，ｊ’））を位置記憶部７から読み出して、現在評価している自機の位置（ｘｓ，ｙｓ）＝（ｘｓ（ｄ−１，ｄ−１，ｊ’），ｙｓ（ｄ−１，ｄ−１，ｊ’））とする。
【００７７】
同様に、敵機位置計算部５は、上記自機行動パターンの順列ｗ（ｄ−１，ｄ−１，ｊ‘）に対応した敵機の位置（ｘｅｉ（ｄ−１，ｄ−１，ｊ’），ｙｅｉ（ｄ−１，ｄ−１，ｊ’））を位置記憶部７から読み出して、現在評価している敵機の位置（ｘｅｉ，ｙｅｉ）＝（ｘｅｉ（ｄ−１，ｄ−１，ｊ’），ｙｅｉ（ｄ−１，ｄ−１，ｊ’））とする。
【００７８】
同様に、敵機攻撃弾位置計算部６は、上記自機行動パターンの順列ｗ（ｄ−１，ｄ−１，ｊ‘）に対応した敵機攻撃弾の位置（ｘｂｋ（ｄ−１，ｄ−１，ｊ’），ｙｂｋ（ｄ−１，ｄ−１，ｊ’））を位置記憶部７から読み出して、現在評価している敵機攻撃弾の位置（ｘｂｋ，ｙｂｋ）＝（ｘｂｋ（ｄ−１，ｄ−１，ｊ’），ｙｂｋ（ｄ−１，ｄ−１，ｊ’））とする。
【００７９】
＜ステップＳ１５＞
難易度判定部３（図１参照。）は、自機が時刻ステップＤにおいて各升目ｓに位置する確率Ｐｓ（ｓ，Ｄ）をすべての升目ｓについて加算した値を計算して、その計算された値をそのシューティングゲームの難易度とする。すなわち、難易度判定部３は、ΣｓＰｓ（ｓ，Ｄ）で定まる値を難易度として計算する。
【００８０】
［誤差ｅｘ，ｅｙの求め方］
以下、誤差ｅｘ，ｅｙの求め方の例について説明をする。まず、ゲーム画面上に自機が追従すべき目標点を表示する。その目標点は、所定のアルゴリズムによって移動し、どの時刻にどの位置にあるかが決まっているものとする。プレイヤーに自機を操作させて、目標点を追従させる。そして、各時刻における、自機のｘ座標と目標点のｘ座標の差（以下、ｘ軸方向の追従誤差と呼ぶ。）を測定する。同様に、各時刻における、自機のｙ座標と目標点のｙ座標の差（ｙ軸方向の追従誤差と呼ぶ。）を測定する。その測定結果の例を、図１０に示す。図１０は、各時刻における、ｘ軸方向の追従誤差を表す図であり、縦軸はｘ軸方向の追従誤差、横軸は時刻である。
【００８１】
一般に、自機の位置は、ゲーム画面を構成するドットにより離散的に定義されるので、操作時間の長さによって追従誤差の表れ方は異なる。例えば、自機が１ドット進むのに追従誤差がどの程度出るのかを議論するのは困難である。このため、誤差はどのくらいの時間の長さでどのくらいの大きさに拡大するのか、ということを考慮することが必要である。これは、本発明の難易度判定に用いる格子の大きさ、及び、どの程度の大きさのＴを設定すればよいかを決める上でも重要である。
【００８２】
ここで、プレイヤーはフィードバック制御のように追従誤差を小さくしようとして自機の操作を行うと考えられる。このため、一定の時刻Ｔ＊が経過した後は、追従誤差の絶対値のそれまでの最大値はさほど拡大しないと考えられる。そこで、本発明では、例えば、自機と目標点の位置が同じ状態（位置誤差０の状態）にある自機を操作してから、上記一定の時刻Ｔ＊以降の時刻をＴ、上記時刻Ｔ＊以降のある時刻までの追従誤差の絶対値の最大値を誤差として用いる。これにより、追従誤差が安定する時刻Ｔと、その安定した追従誤差を用いることができ、本発明による難易度判定方法の精度が良くなる。参考のために、図１１に太線で、図１０に示したｘ軸方向の追従誤差の、その時刻までの絶対値の最大値を示す。なお、図１１の細線は、図１０に示したｘ軸方向の追従誤差であり、点線は、図１０に示したｘ軸方向の追従誤差の絶対値である。
【００８３】
このようにして、例えば、本発明では、ｘ軸方向及びｙ軸方向の追従誤差の絶対値のそれまでの時刻における最大値の増加がほぼ止まる時刻Ｔ＊以降の時刻をＴとして、ｘ軸方向の追従誤差の絶対値の時刻Ｔ＊以降のある時刻までの最大値をｅｘとして、ｙ軸方向の追従誤差の絶対値のその時刻までの最大値をｅｙとしてそれぞれ用いる。
【００８４】
なお、ｘ軸方向とｙ軸方向に分けずに、自機の位置と目標点の位置の各時刻ｔにおける距離（追従誤差）を測定し、その追従誤差の絶対値の最大値の大きく増えなくなる時刻Ｔ＊以降の時刻をＴ、上記時刻Ｔまでの追従誤差の絶対値の最大値をそれぞれｅｘ，ｅｙとしてもよい。
【００８５】
また、追従誤差の絶対値の最大値の大きく増えなくなる時刻Ｔ＊以降の時刻をＴとする代わりに、任意の時刻をＴとし、その時刻Ｔまでの追従誤差の絶対値の最大値を誤差として用いてもよい。
【００８６】
難易度の判定の前に、誤差計算部８２がこれらの誤差を計算して、誤差記憶部８に格納しておく。また、入力部８１を設けて、自由に誤差を設定することができるようにしても良い。
【００８７】
シューティングゲームのゲーム中で、誤差を推定してもよい。例えば、画面上に所定のアルゴリズムによって移動をする画像を表示して、自機がその画像を追従した場合に、その追従の精度が高いほど高い得点が与えられるようなボーナスステージ等をシューティングゲームの中に設ける。このようなボーナスステージにおいて、誤差計算部８２が、上述した方法によって誤差を推定する。
【００８８】
［変形例等］
上記実施形態では、敵機と敵機攻撃弾の両方が存在する場合を例に挙げて説明をしたが、敵機と敵機攻撃弾の何れか一方のみが存在する場合であっても、同様に本発明による難易度判定方法を実現することができる。また、敵機と敵機攻撃弾がそれぞれ１つしかなくても、複数いても同様に本発明による難易度判定方法を実現することができる。
【００８９】
上記シューティングゲームの難易度判定方法、装置をコンピュータによって実現することができる。この場合、シューティングゲームの敵機動作制御方法、装置の内容はプログラムによって記述される。そして、このプログラムを、図１２に示すようなコンピュータで実行することにより、上記シューティングゲームの難易度判定装置の各部の機能がコンピュータ上で実現される。
【００９０】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【００９１】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００９２】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、シューティングゲームの難易度判定方法、装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【００９３】
以上の各実施形態の他、本発明であるシューティングゲームの難易度判定方法、装置、プログラムは上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【００９４】
【図１】難易度判定装置１０００の機能構成を例示した図。
【図２】自機存在確率計算部１の機能構成を例示した図。
【図３】難易度判定装置１０００の処理の流れを例示した図。
【図４】ステップＳ９及び自機存在確率計算部１の処理の流れを例示した図。
【図５】背景技術による難易度判定方法についての説明を補助する図。
【図６】シューティングゲームの概念図。
【図７】確率Ｐｓ（ｓ，ｄ）の求め方の説明を補助する図。
【図８】横型探索の説明を補助する図。
【図９】ｄとｊの自機行動パターンの順列ｗ（ｄ，ｄｅ，ｊ）のｄ−１番目までの要素が同じである、ｄ−１とｊ’の自機行動パターンの順列ｗ（ｄ−１，ｄ−１，ｊ’）を例示した図。
【図１０】各時刻におけるｘ軸方向の追従誤差を例示した図。
【図１１】ｘ軸方向の追従誤差の、その時刻までの絶対値の最大値を示した図。
【図１２】難易度判定装置をコンピュータにより実行するときの機能構成を例示した図。
【図１】
2008188268.tif 000003
【図２】
2008188268.tif 000004
【図３】
2008188268.tif 000005
【図４】
2008188268.tif 000006
【図５】
2008188268.tif 000007
【図６】
2008188268.tif 000008
【図７】
2008188268.tif 000009
【図８】
2008188268.tif 000010
【図９】
2008188268.tif 000011
【図１０】
2008188268.tif 000012
【図１１】
2008188268.tif 000013
【図１２】
2008188268.tif 000014