入力データ処理プログラムおよび情報処理装置
【課題】 簡易な構成で、ポインティングデバイスの操作性を向上することができる入力データ処理プログラムおよび情報処理装置を提供する。
【解決手段】 ゲーム装置は、記憶ステップにおいて、入力装置の検出結果に基づいて入力領域41を示す入力領域データを繰り返し取得してメモリに記憶する。次に、仮想領域決定ステップにおいては、メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域41の変化に追従して変化するように仮想領域42を決定する。第1処理実行ステップにおいては、仮想領域決定ステップにおいて決定された仮想領域42に応じた内容で所定の第1処理(カーソルを移動させる処理等)を実行する。
【解決手段】 ゲーム装置は、記憶ステップにおいて、入力装置の検出結果に基づいて入力領域41を示す入力領域データを繰り返し取得してメモリに記憶する。次に、仮想領域決定ステップにおいては、メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域41の変化に追従して変化するように仮想領域42を決定する。第1処理実行ステップにおいては、仮想領域決定ステップにおいて決定された仮想領域42に応じた内容で所定の第1処理(カーソルを移動させる処理等)を実行する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、タッチパッド等の入力装置から入力されるデータを処理するための入力データ処理プログラムおよび情報処理装置に関する。
【背景技術】
【0002】
従来、タッチパネル等のポインティングデバイスを操作者が指等でタッチ操作することによって、画面に表示されているオブジェクト(例えばカーソル)等を操作する技術がある。ここで、入力面上における入力位置は、入力面上において指が接触している領域に基づいて決定されることがある。例えば図18に示す例では、操作者の指は円形領域92において入力面91と接触している。このとき、入力位置は、円形領域92の中心の位置93に決定される。つまり、円形領域92の中心の位置93を操作者が指し示していると判断される。なお、接触領域から入力位置を決定する方法としては、接触領域の重心の位置を入力位置として決定する方法もある。
【0003】
しかし、操作者の指と入力面との接触面積が変化しやすいことから、接触領域から入力位置を決定する上記方法では、操作者が意図しないにもかかわらず入力位置が変化してしまい、結果として操作者が意図しない操作が行われてしまうことがあった。特に、入力面に対して指の接触が開始された時点や、接触が終了する時点(入力面から指を離す時点)には、指の接触領域の位置や大きさが大きく変わりやすい。そのため、接触開始時点や接触終了時点では特に、操作者が意図しない操作が行われてしまう可能性が高い。
【0004】
図19は、図18に示す状態から操作者が入力面から指を離そうとした場合の入力面の様子を示す図である。すなわち、図19に示す時点では、操作者の指は円形領域94において入力面91と接触している。この時点における入力位置は円形領域94の中心の位置95に決定される。したがって、図18に示す状態から図19に示す状態に移行した場合、入力位置は、位置93から位置95へ移動したと判断されてしまう。しかし、この場合、操作者は入力面から指を単に離そうとしただけであり、入力位置を移動させる意図があったわけではない。つまり、この場合、入力位置が移動したことによって例えば画面上のカーソルが移動する等、操作者が意図しない(あるいは望まない)操作が行われてしまう。これによって、操作者は、ポインティングデバイスの操作性が悪いと感じる。なお、接触面積が変化することによって操作者の意図しない操作が行われてしまう現象は、操作者が入力面から指を離そうとした場合に限らず、操作者が入力面に指を接触させようとした場合や、入力面上で指を移動させようとした場合にも起こりうる。
【0005】
なお、特許文献1に記載のタッチ操作位置検出装置は、タッチパネルの周囲に配置された発光素子および受光素子と、受講素子の側方に配置されたカメラとを備えている。この装置は、受光素子からの情報に基づいて、操作指の接触範囲の中心位置を求めるとともに、さらにカメラからの撮影情報に基づいて中心位置を補正する。これによって上記装置は、操作者の意図に沿った入力位置を正確に求めることを目的としている。
【特許文献1】特開2003−5913号公報(要約書等)
【発明の開示】
【発明が解決しようとする課題】
【0006】
上記特許文献1に記載のタッチ操作位置検出装置は、発光素子および受光素子をタッチパネルの周囲に取り付けなければならず、さらに、カメラを用意しなければならない。そのため、この特許文献1に記載の技術では、装置の高コスト化、装置の肥大化および装置の複雑化を招く。また、発光素子および受光素子の数を少なくすれば、検出精度が低くなり、中心位置を適切に補正することができない場合も少なくないと考えられる。中心位置を適切に補正することができなければ、上述したような操作者が意図しない操作が行われてしまい、ポインティングデバイスの操作性が悪くなる。
【0007】
それ故に、本発明の主たる目的は、簡易な構成で、ポインティングデバイスの操作性を向上することができる入力データ処理プログラムおよび情報処理装置を提供することである。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0009】
第1の発明は、入力面上において入力が行われている入力領域を検出する入力装置(タッチパッド7)を備える情報処理装置(ゲーム装置2)のコンピュータ(CPU11等)に以下の処理を実行させる入力データ処理プログラム(ゲームプログラム)である。入力データ処理プログラムは、記憶ステップ(S13)と、仮想領域決定ステップ(S14およびS28)と、第1処理実行ステップ(S3)とを上記コンピュータに実行させる。記憶ステップにおいて、コンピュータは、入力装置の検出結果に基づいて入力領域(41)を示す入力領域データ(51,52)を繰り返し取得して情報処理装置のメモリ(メインメモリ17)に記憶する。仮想領域決定ステップにおいて、メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域(42)を決定する。第1処理実行ステップにおいて、仮想領域決定ステップにおいて決定された仮想領域に応じた内容で所定の第1処理(カーソルを移動させる処理)を実行する。
【0010】
第2の発明においては、仮想領域の中心または重心の位置が当該仮想領域の位置として算出され、当該仮想領域の位置に応じた内容で第1処理が実行されてもよい。
【0011】
第3の発明においては、仮想領域決定ステップにおいて、入力領域および仮想領域のうちの小さい方の一方が他方の内側に位置するように、当該仮想領域の位置が決定されてもよい。
【0012】
第4の発明においては、仮想領域決定ステップは、大きさ決定ステップ(14)と、移動ステップ(S28)とを含んでいてもよい。大きさ決定ステップにおいては、コンピュータは、メモリに入力領域データが記憶される度に、入力領域の大きさに追従するように仮想領域の大きさを決定する。移動ステップにおいては、大きさ決定ステップで決定された大きさの仮想領域および入力領域のうちの小さい方の領域の少なくとも一部が他方の領域の外部に位置するとき、当該小さい方の領域の全部が当該他方の領域の内部に位置するように当該仮想領域の位置を移動する。
【0013】
第5の発明においては、仮想領域は円形の領域であってもよい。すなわち、仮想領域決定ステップにおいては、仮想領域の位置を示す仮想位置データ、および当該仮想領域の半径を示す仮想半径データがメモリに記憶される。第1処理実行ステップにおいては、メモリに記憶された仮想位置データおよび仮想半径データのうち少なくとも1つに基づいて第1処理の内容が決定される。
【0014】
第6の発明においては、入力装置は、入力領域の面積と入力領域の位置とを示すデータを出力してもよい。このとき、記憶ステップは、取得ステップと、領域算出ステップとを含んでいる。取得ステップにおいては、コンピュータは、入力装置から出力されるデータを取得する。領域算出ステップにおいては、取得されたデータにより示される位置を中心とし、当該データにより示される面積を有する円形領域を算出し、当該算出された円形領域を示すデータを入力領域データとして記憶する。
【0015】
第7の発明においては、記憶ステップにおいては、入力装置の検出結果が入力面に対する入力がないことを示すとき、メモリへ入力領域データを記憶する処理が停止されてもよい。
【0016】
第8の発明においては、情報処理装置は表示装置(テレビ6)を備えている。さらに、第1処理実行ステップにおいては、表示装置の画面に表示されているオブジェクト(カーソル33)の位置を仮想領域の位置に基づいて移動させる処理が第1処理として実行されてもよい。
【0017】
第9の発明においては、入力装置は、入力面を押下可能な状態で支持するとともに、入力面が押下されたことを検出する押下検出装置(スイッチ)を備えていてもよい。このとき、入力データ処理プログラムは、入力面が押下されたことが検出されたとき、所定の第2処理(文字入力処理)を実行する第2処理実行ステップをコンピュータにさらに実行させてもよい。
【0018】
第10の発明においては、情報処理装置は、表示装置を備えている。さらに、第1処理実行ステップにおいては、表示装置の画面に表示されているカーソルの位置を仮想領域の位置に基づいて移動させる処理が第1処理として実行されてもよい。このとき、第2処理実行ステップにおいては、画面に表示されているオブジェクト(キーボード32の各キー)のうちでカーソルによって指定されるオブジェクトを処理対象として第2処理が実行される。
【0019】
第11の発明は、操作部(タッチパッド7の入力面、または、スティックキーのスティック等)に対するプレイヤの操作状態を検出して2次元値として出力する第1入力装置(タッチパッド7またはスティックキー等)と、操作部が押下されたことを検出する第2入力装置(スイッチ)と、表示装置(テレビ6)とを備える情報処理装置(ゲーム装置2)のコンピュータに、以下の処理を実行させる入力データ処理プログラム(ゲームプログラム)である。入力データ処理プログラムは、表示制御ステップ(S6)と、記憶ステップ(S51)と、取得ステップ(S4)と、位置制御ステップ(S52およびS3)と、前位置特定ステップ(S53)と、処理実行ステップ(S54)とをコンピュータに実行させる。表示制御ステップにおいては、コンピュータは、複数のオブジェクト(図3に示すキー)と、当該複数のオブジェクトを指定するためのカーソル(33)とを表示装置の画面に表示させる。記憶ステップにおいては、2次元値を示す第1データ(入力座標データ51)を第1入力装置から繰り返し取得して情報処理装置のメモリ(メインメモリ17)に記憶する。取得ステップにおいては、操作部が押下されたことを示す第2データを第2入力装置から取得する。位置制御ステップにおいては、メモリに第1データが記憶される度に、当該第1データにより示される2次元値に基づいてカーソルの位置を決定する。前位置特定ステップにおいては、第2データが取得されたとき、取得された時点でメモリに記憶されている最新の第1データから所定個数前に記憶された第1データに基づいて決定されたカーソルの位置を特定する。処理実行ステップにおいては、第2データが取得されたとき、前位置特定ステップにおいて特定された位置にカーソルがあるとした場合に当該カーソルによって指定されるオブジェクトを処理対象として、操作部を押下する操作に対応する処理を実行する。
【0020】
第12の発明においては、前位置特定ステップにおいて、所定個数は予め定められた数であってもよい。
【0021】
第13の発明においては、第1入力装置は、入力面上において入力が行われている入力領域の面積を検出することが可能であってもよい。このとき、第1データは、2次元値とともに入力面積を示す。前位置特定ステップにおいては、ある時点で記憶された第1データにより示される入力面積と、次に記憶された第1データにより示される入力面積との差が所定値以上である場合、当該ある時点で記憶された第1データまたは当該次に記憶された第1データにより示される2次元値に基づいてカーソルの位置が特定される。
【0022】
第14の発明は、入力面上において入力が行われている入力領域を検出する入力装置(タッチパッド7)を備える情報処理装置(ゲーム装置2)である。情報処理装置は、記憶制御手段(S13を実行するCPU11等。以下、単にステップ番号のみを示す。)と、仮想領域決定手段(S14およびS28)と、第1処理実行手段(S3)とを備えている。記憶制御手段は、入力装置の検出結果に基づいて入力領域を示す入力領域データを繰り返し取得して情報処理装置のメモリに記憶する。仮想領域決定手段は、メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する。第1処理実行手段は、仮想領域決定手段によって決定された仮想領域に応じた内容で所定の第1処理を実行する。
【0023】
第15の発明は、操作部(タッチパッド7の入力面、または、スティックキーのスティック等)に対するプレイヤの操作状態を検出して2次元値として出力する第1入力装置(タッチパッド7またはスティックキー等)と、操作部が押下されたことを検出する第2入力装置(スイッチ)、表示装置(テレビ6)とを備える情報処理装置(ゲーム装置2)である。情報処理装置は、表示制御手段(S6)と、記憶制御手段(S51)と、取得手段(S4)と、位置制御手段(S52およびS3)と、前位置特定手段(S53)と、処理実行手段(S54)とを備えている。表示制御手段は、複数のオブジェクトと、当該複数のオブジェクトを指定するためのカーソルとを表示装置の画面に表示させる。記憶制御手段は、2次元値を示す第1データを第1入力装置から繰り返し取得して情報処理装置のメモリに記憶する。取得手段は、操作部が押下されたことを示す第2データを第2入力装置から取得する。位置制御手段は、メモリに第1データが記憶される度に、当該第1データにより示される2次元値に基づいてカーソルの位置を決定する。前位置特定手段は、第2データが取得されたとき、取得された時点でメモリに記憶されている最新の第1データから所定個数前に記憶された第1データに基づいて決定されたカーソルの位置を特定する。処理実行手段は、第2データが取得されたとき、前位置特定手段によって特定された位置にカーソルがあるとした場合に当該カーソルによって指定されるオブジェクトを処理対象として、操作部を押下する操作に対応する処理を実行する。
【0024】
第16の発明は、操作データに応じて所定のデータ処理を実行する情報処理装置に接続可能な入力装置(コントローラ5)である。入力装置は、記憶制御手段と、仮想領域決定手段と、送信手段とを備えている。記憶制御手段は、入力面上において入力が行われている入力領域を繰り返し検出して当該入力領域を示す入力領域データをメモリに記憶する。仮想領域決定手段は、メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する。送信手段は、仮想領域決定手段によって決定された仮想領域を示すデータを操作データとして情報処理装置に送信する。
【発明の効果】
【0025】
第1の発明によれば、操作者による操作に応じて実行される第1処理の処理内容は、入力領域の変化に追従して変化する仮想領域に応じて決定される。すなわち、実際の接触領域である入力領域の変化よりも緩やかに変化する仮想領域に基づいて第1処理が実行される。したがって、操作者の指と入力面との接触面積が変化する場合であっても、仮想領域を用いることによってその変化を緩和または抑止し、その変化が第1処理の内容に反映しないようにすることができる。そのため、操作者の指と入力面との接触面積が変化することによって操作者の意図しない操作が行われることを防止することができる。また、本発明においてはカメラ等の構成要素が不要であるので、簡易な構成によってポインティングデバイスの操作性を向上することができる。
【0026】
第2の発明によれば、仮想領域の中心位置または重心位置を仮想領域の位置とすることによって、仮想領域の位置を容易に算出することができる。
【0027】
第3の発明によれば、仮想領域の位置は、入力領域と仮想領域とのうちで小さい方の領域が他方の領域に常に重なった状態となるように設定される。したがって、位置に関して仮想領域を入力領域に正確に追従させることができる。
【0028】
第4の発明によれば、仮想領域および入力領域のうちの小さい方の領域の少なくとも一部が他方の領域の外部に位置するときのみ、仮想領域が移動される。つまり、小さい方の一方が他方の内部に位置している間は仮想領域が移動されないので、入力領域の位置および大きさが多少変化しても仮想領域が常に移動するわけではない。これによって、入力領域の移動が仮想領域では緩和されることになるので、操作者の意図しない操作が行われることを確実に防止することができる。
【0029】
第5の発明によれば、仮想領域を円形領域として取り扱うので、仮想領域の位置および形状(大きさ)を、中心位置の座標および半径の長さによって仮想領域を表すことができる。したがって、仮想領域を少ないデータ量で表すことができる。
【0030】
第6の発明によれば、入力領域を円形領域として取り扱うので、仮想領域を円形領域として取り扱う場合と同様、入力領域を少ないデータ量で表すことができる。
【0031】
第7の発明によれば、入力面に対する入力が行われないとき、入力領域データを記憶する処理が行われないので、仮想領域を決定する処理も行われないこととなる。入力面に対する入力がないときには、仮想領域を決定する必要はないので、第7の発明によれば、入力面に対する入力が行われない場合には不要となる仮想領域決定処理を省略することができる。
【0032】
第8の発明によれば、表示装置の画面に表示されるオブジェクト(例えばカーソル等)が、仮想領域の位置、すなわち、入力装置に対する操作者の操作によって移動される。したがって、当該オブジェクトを移動する操作において、操作者の意図しないオブジェクトの移動が行われることを防止することができる。
【0033】
第9の発明によれば、操作者は、入力面上の任意の位置を指定する操作に加えて、入力面を押下する操作を行うことができる。このとき、入力面を押下する操作を行う際に入力面積が大きく変化しやすいので、仮に入力領域に基づいて第1処理を行うとすれば、この操作を行う際に操作者の意図しない操作が行われてしまう。これに対して、第9の発明によれば、入力面を押下する操作を行う際であっても、操作者の意図しない操作が行われることを防止することができる。
【0034】
第10の発明によれば、表示装置の画面に表示されるカーソルが、仮想領域の位置、すなわち、入力装置に対する操作者の操作によって移動される。また、カーソルによって指定されるオブジェクトを処理対象として第2処理が実行される。したがって、カーソルによってオブジェクトを指定して第2処理を行う操作において、操作者の意図しないオブジェクトの移動が行われることによって、操作者の意図しないオブジェクトに対して第2処理が実行されることを防止することができる。
【0035】
第11の発明によれば、操作者は、操作部を操作する(タッチパッドの入力面にタッチする、または、スティックキーを傾倒する等)ことによって、カーソルを移動させる操作を行うことができるとともに、操作部を押下する(タッチパッドの入力面を押下する、または、スティックキーを押下する等)ことによって、カーソルによって指定されるオブジェクトに対して所定の処理を実行する操作を行うことができる。ここで、所定の処理を実行するために操作部を押下した場合、操作部に対する操作状態が操作者の意図に反して変化してしまうことがある。すなわち、タッチパッドに対する入力面積が大きくなってしまったり、スティックキーが傾倒してしまったりすることがある。
【0036】
第11の発明においては、操作部の押下が検知された場合、押下が検知された時点で所定個数前に記憶されている第1データに基づいてカーソルの位置が特定される。つまり、押下が検知された時点よりも少し前、すなわち、操作部に対する操作状態が変化する前のカーソルの位置が特定される。そして、特定されたカーソルの位置が、押下時におけるカーソルの位置として扱われて所定の処理が実行される。これによって、操作部に対する操作状態が変化する前のカーソルの位置、すなわち、操作者が意図するカーソルの位置に従って所定の処理が実行されることとなる。したがって、第11の発明によれば、操作部が押下される際に操作者の意図しない操作が行われることを防止することができる。
【0037】
第12の発明によれば、所定個数の数が予め定められているので、ゲーム装置は、操作部の押下が検知されたとき、どの時点で記憶された第1データを参照するかを容易に決定することができる。
【0038】
第13の発明によれば、入力面積の変化が大きい時点における第1データが参照されてカーソルの位置が決定される。つまり、操作部に対する操作状態が変化した時点が検知され、その時点における第1データに基づいてカーソルの位置が決定される。このように、入力面積の変化によって、操作部に対する操作状態が変化した時点を正確に検出することができる。したがって、操作部が押下される際に操作者の意図しない操作が行われることを確実に防止することができる。
【0039】
なお、第14および第16の発明によれば、第1の発明と同様の効果を得ることができる。また、第15の発明によれば、第11の発明と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0040】
(第1の実施形態)
図1は、本発明の第1の実施形態に係る情報処理装置の一例であるゲームシステムの構成を示す外観図であり、図2はそのブロック図である。図1および図2に示すように、ゲームシステム1は、ゲーム装置2、光ディスク3、メモリカード4、コントローラ5、テレビ6(図2に示すスピーカ25を含む)を備える。光ディスク3およびメモリカード4は、ゲーム装置2に着脱自在に装着される。コントローラ5は、ゲーム装置2に設けられる複数(図1では、4つ)のコントローラポート用コネクタのいずれかに接続される。コントローラ5は複数の操作部を有し、具体的には、第1のタッチパッド7a、第2のタッチパッド7b、スタートボタン8a、セレクトボタン8b、Lボタン8c、およびRボタン8dを含む。また、他の実施形態においては、ゲーム装置2とコントローラ5との通信は、通信ケーブルを用いずに無線通信によって行われてもよい。また、テレビ6およびスピーカ25は、AVケーブル等によってゲーム装置2に接続される。なお、本発明は図1に示すような据え置き型のゲーム装置に限らず、携帯型のゲーム装置であってもよいし、業務用のゲーム装置であってもよいし、携帯電話やパソコン等、プログラムを実行することができる装置であってもよいことはもちろんである。以下、図2を参照しながら、本発明に係るゲームシステムにおける各部を詳細に説明するとともに、ゲームシステムにおける一般的な動作を説明する。
【0041】
外部記憶媒体の一例である光ディスク3は、例えばDVD−ROMであり、本発明に係るプログラムの一例であるゲームプログラムやキャラクタデータ等のゲームに関するデータを固定的に記憶している。プレイヤがゲームを行う場合、光ディスク3はゲーム装置2に装着される。なお、ゲームプログラム等を記憶する手段は、DVD−ROMに限らず、例えばCD−ROM、MO、メモリカード、ROMカートリッジ等の記憶媒体であってもよい。ゲームプログラム等は、ゲーム装置本体内のメモリやハードディスク等の記憶手段に記憶されるようにしてもよく、この場合、通信によりゲームプログラムをダウンロードするようにしてもよい。メモリカード4は、例えばフラッシュメモリ等の書き換え可能な記憶媒体によって構成され、例えばゲームにおけるセーブデータ等のデータを記憶する。
【0042】
ゲーム装置2は、光ディスク3に記録されているゲームプログラムを読み出し、ゲーム処理を行う。コントローラ5は、プレイヤがゲーム操作に関する入力を行うための入力装置である。コントローラ5は、プレイヤによるタッチパッド7aおよび7bの操作や各操作ボタン8a〜8dの押圧操作や後述するスイッチ(図示しない)の押圧操作に応じて操作データをゲーム装置2に出力する。複数のプレイヤによってゲームを行う場合、コントローラ5はプレイヤの数だけ設けられる。テレビ6は、ゲーム装置2から出力された画像データを画面に表示する。また、スピーカ25は、典型的にはテレビ6に内蔵されており、ゲーム装置2から出力されたゲームの音声を出力する。
【0043】
前述のように、コントローラ5は、その主面の左右両側に1つずつ、計2つのタッチパッド7aおよび7bを有する。なお、2つのタッチパッド7aおよび7bは同じ構成であり、以下では、2つのタッチパッド7aおよび7bを特に区別しない場合、単に「タッチパッド7」と記載する。タッチパッド7としては、例えば抵抗膜方式や光学式(赤外線方式)や静電容量結合式など、任意の方式のものを利用することができる。
【0044】
第1の実施形態においては、タッチパッド7は、入力面にプレイヤの指等が触れた領域(入力領域)の面積と、入力領域の位置とを出力する。タッチパッド7は、入力領域の重心位置(中心位置でもよい)を入力領域の位置として出力する。タッチパッド7は、入力領域の位置および形状(大きさ)を検出することが可能のものであればよく、例えば、入力面とプレイヤの指等が接触しているすべての位置を出力するものであってもよい。この場合、出力された位置の集合が入力領域となる。
【0045】
タッチパッド7は、入力領域の面積(入力面積)および入力領域の位置(入力位置)を所定のサンプリング時間毎に検出する。そして、検出した入力面積および入力位置を示す入力データを出力する。この入力データは、操作データとしてコントローラ5からゲーム装置2に出力される。ここでは、所定のサンプリング時間を画面表示のフレーム時間と同じであるとするが、サンプリング時間とフレーム時間は異なる長さであってもよい。
【0046】
また、第1の実施形態においては、コントローラ5の筐体は、タッチパッド7の入力面を押下可能なようにバネ等で支持しており、タッチパッド7の裏面にはそれぞれスイッチ(図示せず)が設けられる。プレイヤは、タッチパッド7の入力面を押下することによってスイッチを押下することができる。つまり、スイッチは、タッチパッド7の入力面が押下されたことを検出するためのものである。スイッチが押下されたか否かを示すデータは、タッチパッド7からの上記入力データと同様、操作データとしてコントローラ5からゲーム装置2に出力される。
【0047】
なお、以上に説明したコントローラ5は、第1の実施形態において用いられる入力装置の一例であり、入力装置は、入力面上における入力領域を検出することが可能なポインティングデバイスであればどのようなものであってもよい。例えば、入力装置は、タッチパッドを1つのみ備える構成であってもよいし、タッチパッドに代えてタッチパネルを備える構成であってもよい。
【0048】
次に、ゲーム装置2の構成について説明する。図2において、ゲーム装置2内には、CPU11およびそれに接続されるメモリコントローラ20が設けられる。さらに、ゲーム装置2内において、メモリコントローラ20は、グラフィックスプロセッシングユニット(GPU)24と、メインメモリ17と、デジタル信号処理回路(DSP)36と、各種インターフェース(I/F)21〜26とに接続される。また、DSP18を介してサブメモリ19と接続される。メモリコントローラ20は、これら各構成要素間のデータ転送を制御する。
【0049】
ゲーム開始の際、まず、ディスクドライブ27は、ゲーム装置2に装着された光ディスク3を駆動する。光ディスク3に記憶されているゲームプログラムは、ディスクI/F26およびメモリコントローラ20を介して、メインメモリ17に読み込まれる。メインメモリ17上のプログラムをCPU11が実行することによって、ゲームが開始される。ゲーム開始後、プレイヤは、各タッチパッド7aおよび7bや各操作ボタン8a〜8dや上記スイッチを用いてコントローラ5に対してゲーム操作等の入力を行う。プレイヤによる入力に従い、コントローラ5は、操作データをゲーム装置2に出力する。コントローラ5から出力される操作データは、コントローラI/F21およびメモリコントローラ20を介してCPU11に入力される。CPU11は、入力された操作データに応じてゲーム処理を行う。ゲーム処理における画像データ生成等に際して、GPU12やDSP18が用いられる。また、サブメモリ19は、DSP18が所定の処理を行う際に用いられる。
【0050】
GPU12は、ジオメトリユニット13およびレンダリングユニット14を含み、画像処理専用のメモリに接続されている。この画像処理専用メモリは、例えばカラーバッファ15およびZバッファ16として利用される。ジオメトリユニット13は、仮想3次元空間であるゲーム空間に置かれた物体や図形に関する立体モデル(例えばポリゴンで構成されるオブジェクト)の座標についての演算処理を行うものであり、例えば立体モデルの回転・拡大縮小・変形や、ワールド座標系の座標から視点座標系やスクリーン座標系の座標への変換を行うものである。レンダリングユニット14は、所定のテクスチャに基づいて、スクリーン座標に投影された立体モデルについてピクセル毎のカラーデータ(RGBデータ)をカラーバッファ15に書き込むことによって、ゲーム画像を生成する。また、カラーバッファ15は、レンダリングユニット14によって生成されたゲーム画像データ(RGBデータ)を保持するために確保されたメモリ領域である。Zバッファ16は、3次元の視点座標から2次元のスクリーン座標に変換する際に視点からの奥行情報を保持するために確保されたメモリ領域である。GPU12は、これらを用いてテレビ6に表示すべき画像データを生成し、適宜メモリコントローラ20およびビデオI/F22を介してテレビ6に出力する。なお、ゲームプログラム実行時にCPU11において生成される音声データは、メモリコントローラ20からオーディオI/F24を介して、スピーカ25に出力される。なお、第1の実施形態では、画像処理専用のメモリを別途設けたハードウェア構成としたが、これに限らず例えばメインメモリ17の一部を画像処理用のメモリとして利用する方式(UMA:Unified Memory Architecture)を使うようにしてもよい。ゲーム装置2は、ゲームプログラムを実行することにより生成したゲームデータをメモリコントローラ20およびメモリI/F23を介してメモリカード4に転送する。また、ゲーム装置2は、ゲーム開始に先立って、メモリカード4に記憶されたゲームデータを、メモリコントローラ20およびメモリI/F23を介してメインメモリ17に読み込む。
【0051】
次に、第1の実施形態に係るゲームプログラムによってゲーム装置2において実行される処理の概要を説明する。図3は、第1の実施形態における表示画面の一例を示す図である。図3に示すように、テレビ6の表示画面31には、キーボード32およびカーソル33が表示されている。プレイヤは、カーソル33が所望のキーを指定するようにタッチパッド7を用いてカーソル33を移動させる。そして、所望のキーがカーソル33によって指定された状態で当該キーを選択する操作(例えば上記スイッチを押下する操作)を行うことで、当該キーに対応する文字の入力を行うことができる。入力された文字は、表示画面31の下部の文字表示領域34に表示される。以下、図3に示すような表示画面が表示されている場合において、タッチパッド7およびスイッチを用いて文字を入力する操作がプレイヤによって行われる場合を例にとってゲーム装置2の処理を説明する。
【0052】
ゲーム装置2は、タッチパッド7による検出結果を1フレーム毎に取得する。次に、取得した検出結果に含まれる入力位置および入力面積から、入力領域の位置および大きさ(半径)を算出する。本実施形態においては、ゲーム装置2は入力領域を円形領域として取り扱う。つまり、ゲーム装置2は、タッチパッド7から取得される入力位置を中心とし、入力面積に応じた半径を有する円形の領域を入力領域とする。ゲーム装置2は、タッチパッド7に対する入力(タッチ入力)が検出されている間は、入力領域の位置および半径を1フレーム毎に算出する。
【0053】
また、ゲーム装置2は、タッチパッド7の入力面上に仮想領域を設定する。そして、入力領域の位置および半径に応じて仮想領域の位置および半径を決定する。仮想領域とは、タッチパッド7の入力面上に仮想的に設定される領域である。本実施形態では、仮想領域を円形の領域とする。仮想領域の位置とは、円形の仮想領域の中心位置である。仮想領域の位置および半径を決定する処理が毎フレーム実行されることによって、仮想領域は、1フレーム毎に変形および/または移動を行う。また、上記カーソル33の位置は、仮想領域の位置に基づいて決定される。具体的には、ゲーム装置2は、仮想領域の移動前の位置から移動後の位置までのベクトルを算出し、当該ベクトルの大きさに応じた(画面上の)距離だけ、当該ベクトルの向きに応じた(画面上の)方向にカーソルを移動する。以上によって、ゲーム装置2は、タッチ入力に基づいてカーソルの移動を制御することができる。
【0054】
次に、仮想領域の移動および変形を行う処理の詳細について説明する。まず、プレイヤがタッチ入力を開始する際において仮想領域が移動および変形を行う様子を、図4〜図7を用いて説明する。なお、図4〜図11において、一点鎖線で囲まれる領域41は入力領域を示し、実線で囲まれる領域(但し図4では点)42は仮想領域を示す。また、点43は仮想領域42の中心、すなわち、仮想領域42の位置を示す。
【0055】
図4は、タッチ入力が開始された時刻t0における入力の様子を示す図である。ここでは、時刻t0におけるフレームで入力が初めて検出され、当該フレームの前のフレームでは入力が検出されなかったものとする。図4に示すように、入力が初めて検出されたフレームでは、仮想領域42は点として表される。すなわち、タッチパッド7によって検出された入力面積および入力位置に基づいて入力領域41の位置および半径が決定されるので、ゲーム装置2は、仮想領域42の位置を入力領域41の位置に決定し、仮想領域42の半径を“0”に決定する。
【0056】
図5は、上記時刻t0からフレーム時間tが経過した時点(時刻:t0+t)における入力の様子を示す図である。つまり、図5は、図4に示すフレームの次のフレームにおける入力の様子を示す図である。図5において、点線で囲まれる領域41’は、前回のフレームにおける入力領域を示している。タッチパッド7に対する入力が開始された直後では、タッチパッド7に対するプレイヤの指の接触面積が次第に大きくなるので、入力領域の半径は次第に大きくなるように変化する。図5においても、前回のフレーム(図4)の時点から入力領域41が大きくなっている。
【0057】
一方、仮想領域42は、入力領域41の変化に追従して変化するように、その位置および半径が決定される。具体的には、仮想領域42の半径は、入力領域41の半径に近づくように決定される。したがって、図5に示すように、時刻(t0+t)の時点における仮想領域42の半径は、前回のフレームの時点よりも大きくなっている。なお、詳細は後述するが、仮想領域42が入力領域41の内側に位置しているので、時刻(t0+t)の時点では仮想領域42の位置は前回のフレームから移動しない。つまり、仮想領域42の位置は、前回のフレームにおける位置と同じ位置に決定される。
【0058】
図6は、図5における時刻(t0+t)からフレーム時間tが経過した時点(時刻:t0+2t)における入力の様子を示す図である。図6において、点線で囲まれる領域41’は、前回のフレームにおける入力領域を示しており、領域42’は、前回のフレームにおける入力領域を示している。時刻(t0+2t)においても時刻(t0+t)の場合と同様、入力領域41は、前回のフレームの時点における入力領域41’よりも大きくなっている。入力領域41は入力領域41’の位置からやや左方向に移動している。時刻(t0+2t)においても時刻(t0+t)と同様、仮想領域42の半径は入力領域41の半径に近づくように決定される。したがって、仮想領域42の半径は変化前の仮想領域42’の半径に比べて大きくなる。
【0059】
図6においては、入力領域41の内側から仮想領域42の一部がはみ出している。なお、図6では、仮想領域42の位置は仮想領域42’の位置と同じ位置であるとする。入力領域41が仮想領域42よりも大きい場合において、仮想領域42の半径を決定した結果、仮想領域42の少なくとも一部が入力領域41の外側にはみ出した場合には、仮想領域42の位置が補正される。
【0060】
図7は、図6に示す状態から仮想領域42の位置を補正した後の入力の様子を示す図である。図6に示すように、仮想領域42の少なくとも一部が入力領域41の外側にはみ出した場合、仮想領域42が入力領域41の内側に含まれるように仮想領域42は移動される。したがって、時刻(t0+t2)の時点においては、仮想領域42の位置は図7に示す点43の位置となる。なお、点43’は、移動前の仮想領域42’の位置を示している。
【0061】
時刻(t0+2t)以降のフレームにおいても、仮想領域42は、入力領域41に追従するようにその位置および半径が決定される。したがって、入力領域41が移動すれば入力領域41の移動に応じて仮想領域42は移動する。また、入力領域41が変化しない場合、仮想領域42は、最終的には入力領域41と同じ位置および半径となる。
【0062】
次に、入力領域41が前回のフレームよりも小さくなる場合について、図8〜図11を用いて説明する。入力領域41が前回のフレームよりも小さくなる場合とは、典型的には、タッチ入力が終了する場合(プレイヤの指がタッチパッド7から離れる場合)である。また、入力面上で指を移動させる場合にも、入力領域41が前回のフレームよりも小さくなることがあると考えられる。
【0063】
図8は、タッチ入力が行われている途中のある時刻(t1)における入力の様子を示す図である。図8においては、入力領域41と仮想領域42との位置および半径は同じであるとする(図8においては図面を見やすくする目的で、実線と一点鎖線の位置をずらして記載している)。
【0064】
図9は、時刻t1からフレーム時間tが経過した時点(時刻:t1+t)における入力の様子を示す図である。時刻(t1+t)においては、入力領域41は、前回のフレームにおける入力領域41’よりも小さくなっている。一方、仮想領域42は、入力領域41に追従して変化するように決定される。入力領域41が小さくなっているので、仮想領域42については、前回のフレームにおける仮想領域42’よりも小さくなるように半径が決定される。なお、図9に示すように入力領域41が小さくなっている場合には、仮想領域42が入力領域41の内側からはみ出していても仮想領域42は移動されない。図9においては、仮想領域42の位置は、前回のフレームにおける位置と同じ位置に決定される。
【0065】
図10は、図9における時刻(t1+t)からフレーム時間tが経過した時点(時刻:t1+2t)における入力の様子を示す図である。時刻(t1+2t)においても時刻(t1+t)の場合と同様、入力領域41は、前回のフレームの時点における入力領域41’よりも小さくなっている。入力領域41の位置は入力領域41’の位置からやや上方向に移動している。一方、仮想領域42の半径は、入力領域41の半径が小さくなっているので、これに応じて小さくなるように決定される。すなわち、仮想領域42の半径は変化前の仮想領域42’の半径に比べて小さくなる。
【0066】
ここで、図10においては、仮想領域42の内側から入力領域41の一部がはみ出している。なお、図10では、仮想領域42の位置は仮想領域42’の位置と同じ位置であるとする。仮想領域42が入力領域41よりも大きい場合において、仮想領域42の半径を決定した結果、入力領域41の少なくとも一部が仮想領域42の外側にはみ出した場合には、仮想領域42の位置が補正される。
【0067】
図11は、図10に示す状態から仮想領域42の位置を補正した後の入力の様子を示す図である。図10に示すように、入力領域41の少なくとも一部が仮想領域42の外側にはみ出した場合、入力領域41が仮想領域42の内側に含まれるように仮想領域42は移動される。したがって、時刻(t1+t2)の時点においては、仮想領域42の位置は図11に示す点43の位置となる。なお、点43’は、移動前の仮想領域41’の位置を示している。
【0068】
図6、図7、図10、および図11に示したように、仮想領域42の位置は、入力領域41との位置関係に基づいて決定される。具体的には、仮想領域42の位置は、入力領域41および仮想領域42のうちの小さい方の一方が他方の内側に位置するように決定される。より具体的には、入力領域41が仮想領域42よりも大きい場合(図6)、仮想領域42の位置は、仮想領域42が入力領域41の内側に位置するように決定される(図7)。一方、仮想領域42が入力領域41よりも大きい場合(図10)、仮想領域42の位置は、入力領域41が仮想領域42の内側に位置するように決定される(図11)。したがって、入力領域41の位置が変化したとしても、入力領域41と仮想領域42との位置関係が上記の条件を満たさない場合には仮想領域42の移動は行われない。つまり、カーソルの移動は行われない。
【0069】
時刻(t0+2t)以降のフレームにおいても、仮想領域42は、入力領域41に追従するようにその位置および半径が決定される。なお、タッチ入力が検出されなくなると、仮想領域42は設定されない。つまり、タッチ入力が検出されないフレームにおいては、仮想領域42の位置および半径を決定する処理は実行されない。
【0070】
タッチ入力が行われている間は、入力領域が大きくなった場合の処理(図4〜図7に示した処理)、または、入力領域が小さくなった場合の処理(図8〜図11に示した処理)が毎フレーム実行される。したがって、仮想領域は、タッチ入力が行われている間、入力領域に追従するように変化している。具体的には、仮想領域42の半径は、入力領域41の半径に追従するように決定される。
【0071】
ここで、タッチ入力が開始された直後、および、タッチ入力が終了する直前においては、入力領域の半径が大きく変化する。したがって、半径の変化に応じて入力領域の位置も変化してしまう。そのため、仮に入力領域の位置を用いてカーソルの移動操作を行うとすると、プレイヤが意図しないカーソル操作が行われてしまうという問題が生じる。入力開始直後や入力終了直前においては、プレイヤが意図しないにもかかわらず入力位置が変化するので、入力位置の変化に応じて(プレイヤが意図しなくとも)カーソルが移動してしまうからである。なお、この問題は、入力開始直後や入力終了直前において特に問題となるが、タッチ入力中であれば常に生じる可能性のある問題である。
【0072】
図3を例にとって具体的に説明すると、プレイヤが“A”を入力しようとして、“A”のキーを指し示す位置にカーソル33を移動させたとする。プレイヤはさらに、当該“A”のキーを選択するためにタッチパッド7を押下する。このとき、タッチパッド7を押下したためにプレイヤの指とタッチパッド7との接触面積(入力領域の半径)が大きくなる。これによって、入力領域の中心位置、すなわち、入力領域の位置が変化してしまうので、カーソル33が移動してしまうことがある。例えば、カーソル33が下方向に移動してしまい、“Z”のキーを指し示すような場合がある。この場合、タッチパッド7が押下されたことをスイッチが検出した時点ではカーソル33が“Z”のキーを指し示している結果、“Z”の文字が入力されてしまう。つまり、プレイヤの意図しない操作が行われてしまうことになる。
【0073】
そこで、本実施形態では、入力領域に追従して変化する仮想領域を設定し、仮想領域の位置を用いてカーソルの移動操作を行っている。図4〜図11に示したように、入力領域の半径の変化が大きい場合であっても仮想領域の半径の変化は緩和される。また、仮想領域の位置は入力領域との位置関係に基づいて決定され、入力領域の位置が変化したことに応じて仮想領域が移動するわけではない。したがって、入力領域の半径が大きく変化する場合であっても、仮想領域は移動しないか、移動するとしても入力領域の位置の移動に比べて移動量を緩和することができる。これによって、タッチパッド7を指で操作する場合において特に入力開始直後や入力終了直前に生じる、プレイヤが意図しない操作が行われるという問題を防止することができる。
【0074】
なお、入力面積が変化することは、操作者が入力面から指を離そうとした場合や操作者が入力面に指を接触させようとした場合に限らず、入力面と指とを接触させたまま入力面上で指を移動させようとした場合にも起こりうる。例えば、入力面上で指を左から右に移動させる場合、プレイヤは左からまっすぐ右に指を移動させているつもりでも、移動中に入力面積が変化する結果、入力領域の中心位置は上下方向に振れていることがある。このような場合、もし入力領域の位置に基づいてカーソルを移動させるとすると、カーソルは、左から右に移動するだけでなく、上下方向に振れて移動することになり、プレイヤの意図しない操作が行われてしまう。このような場合にも、本実施形態のように仮想領域に基づいてカーソルを移動させることによって、プレイヤの意図しない操作が行われることを防止することができる。
【0075】
次に、ゲームプログラムを実行することによってゲーム装置2において行われるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる主なデータについて図12を用いて説明する。図12は、ゲーム装置2のメインメモリ17に記憶される主なデータを示す図である。図12に示すように、メインメモリ17には、入力座標データ51、入力面積データ52、入力領域半径データ53、仮想領域座標データ54、仮想領域半径データ55、領域間ベクトルデータ56、移動量データ57、現在タッチ座標データ58、前タッチ座標データ59、追従度データ60、およびタッチフラグデータ61等が記憶される。なお、メインメモリ17には、図12に示すデータの他、画面に表示されるオブジェクト(図3に示したキーボード32)に関するデータ(オブジェクトの画像データ等)等、ゲーム処理に必要なデータが記憶される。
【0076】
入力座標データ51は、タッチパッド7によって検出される上記入力位置の座標を示すデータである。入力面積データ52は、タッチパッド7によって検出される上記入力面積を示すデータである。CPU11は、タッチパッド7によって検出される入力位置および入力面積を示すデータをコントローラ5を介して毎フレーム取得し、取得したデータを入力座標データ51および入力面積データ52としてメインメモリ17に記憶させる。以下では、入力面上における入力位置の座標を(Ipx,Ipy)と表し、入力面積をIsと表す。
【0077】
入力領域半径データ53は、円形領域として取り扱われる入力領域の半径を示すデータである。入力領域の半径は上記入力面積から算出される。以下では、入力領域の半径をIrと表す。
【0078】
仮想領域座標データ54は、仮想領域の位置を表す座標を示すデータである。また、仮想領域半径データ55は、仮想領域の半径を示すデータである。これらのデータは、タッチ入力が検出されている間は毎フレーム更新される。また、タッチ入力が検出されないフレームでは、これらのデータはメインメモリ17に記憶されない。以下では、仮想領域の位置の座標を(Vpx,Vpy)と表し、仮想領域の半径をVrと表す。
【0079】
領域間ベクトルデータ56は、入力領域の位置を始点とし仮想領域の位置を終点とする2次元のベクトル(領域間ベクトル)を示すデータである。以下では、領域間ベクトルを(Lx,Ly)と表す。移動量データ57は、仮想領域を1フレーム当たりに移動させる移動量を示すデータである。以下では、移動量をAと表す。
【0080】
現在タッチ座標データ58は、プレイヤがタッチ入力を行った位置としてゲーム装置2において取り扱われる位置の座標を示すデータである。以下では、この座標を「タッチ座標」と呼ぶ。具体的には、タッチ座標は、現在の仮想領域の座標である。ゲーム装置2は、タッチ座標に基づいてゲーム処理(本実施形態では、カーソルを移動させる処理)を実行する。現在タッチ座標データ58は、現在のタッチ座標を示すデータであり、仮想領域座標データ54と同様、タッチ入力が検出されている間は毎フレーム更新される。前タッチ座標データ59は、前回のタッチ座標を示すデータである。すなわち、ゲーム装置2において新たなタッチ座標が算出されると、算出されたタッチ座標を示すデータが現在タッチ座標データ58としてメインメモリ17に更新して記憶され、更新前の現在タッチ座標データ58は前タッチ座標データ59としてメインメモリ17に記憶される。
【0081】
追従度データ60は、追従度を示すデータである。追従度とは、仮想領域が入力領域に追従する度合いを示す指標である。ここでは、追従度Sは、0<S<1の範囲で設定される。追従度Sの値を大きくすると、入力領域に対する仮想領域の追従性を高くすることができ、追従度Sの値を小さくすると、入力領域に対する仮想領域の追従性を低くすることができる。なお、追従度Sの値は、ゲームプログラムにおいて予め設定されている値をゲーム装置2が読み込んでメインメモリ17に記憶させるようにしてもよいし、ゲーム状況やプレイヤによる指示に応じて値が適宜設定されるようにしてもよい。
【0082】
タッチフラグデータ61は、タッチ入力が現在行われているか否かを表すフラグを示すデータである。具体的には、タッチパッド7に対する入力がある場合、フラグの値は“1”に設定され、タッチパッド7に対する入力がない場合、フラグの値は“0”に設定される。
【0083】
次に、ゲームプログラムを実行することによってゲーム装置2において行われるゲーム処理の詳細を、図13〜図15を用いて説明する。図13は、ゲーム装置2において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置2の電源が投入されると、ゲーム装置2のCPU11は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ17等の各ユニットが初期化される。そして、光ディスク3に記憶されたゲームプログラムがメインメモリ17に読み込まれ、CPU11によって当該ゲームプログラムの実行が開始される。図13に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図13〜図15に示すフローチャートにおいては、ゲーム処理のうち、タッチパッド7への入力に基づいて上記カーソルを移動する処理について詳細に示し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。
【0084】
図13のステップS1において、まず、初期処理が実行される。具体的には、上記追従度Sの値を示す追従度データ60がメインメモリ17に記憶される。さらにステップS1においては、キーボード32、カーソル33および文字表示領域34がテレビ6の画面に表示される(図3参照)。ステップS1の初期処理の後にゲームが開始され、以降のステップS2〜S12の処理ループが1フレーム毎に繰り返されることによってゲームが進行していく。
【0085】
ステップS2において、タッチ座標算出処理が実行される。タッチ座標算出処理においては、プレイヤによるタッチ入力に基づいてタッチ座標が算出される。以下、図14および図15を用いてタッチ座標算出処理の詳細を説明する。
【0086】
図14および図15は、図13に示すタッチ座標算出処理(S2)の詳細な処理の流れを示すフローチャートである。出力ベクトル算出処理においては、まずステップS11において、タッチパッド7に対する入力があったか否かが判定される。具体的には、CPU11は、コントローラ5から出力される操作データを読み込み、上記入力位置および入力面積を示すデータが操作データに含まれているか否かを判定する。操作データにこれらのデータが含まれている場合、タッチパッド7に対する入力があると判定されてステップS13の処理が行われる。一方、操作データにこれらのデータが含まれておらず、タッチパッド7に対する入力がないことを示すデータが操作データに含まれている場合、タッチパッド7に対する入力がないと判定されてステップS12の処理が行われる。
【0087】
ステップS12においてはタッチフラグがオフに設定される。すなわち、CPU11は、メインメモリ17に記憶されているタッチフラグデータ61の値を“0”に設定する。ステップS12の後、CPU11はタッチ座標算出処理を終了する。すなわち、タッチ入力がない場合にはタッチ座標は算出されない。
【0088】
一方、ステップS13においては、タッチパッド7の入力位置および入力面積が取得される。具体的には、CPU22は、ステップS11で読み込んだ操作データに含まれている入力位置の座標および入力面積を示すデータを、入力座標データ51および入力面積データ52としてメインメモリ17に記憶する。続くステップS14において、ステップS13で取得された入力面積に基づいて入力領域の半径を算出する。入力領域の半径は、入力領域の形状を円形とし、当該入力面積を有する円形領域の半径を算出することによって得られる。算出された半径を示すデータは、入力領域半径データ53としてメインメモリ17に記憶される。
【0089】
ステップS15においては、ステップS11で検出されたタッチ入力が最初のタッチ入力であるか否かが判定される。ここで、最初のタッチ入力とは、前回のフレームでタッチ入力が検出されなかった場合に今回のフレームで検出されたタッチ入力である。ステップS15の判定は、具体的には、メインメモリ17に記憶されているタッチフラグデータ61を参照することによって行われる。すなわち、タッチフラグデータ61により示される値が“0”である場合、ステップS11で検出されたタッチ入力が最初のタッチ入力であると判定され、タッチフラグデータ61により示される値が“1”である場合、ステップS11で検出されたタッチ入力が最初のタッチ入力でないと判定される。ステップS11で検出されたタッチ入力が最初のタッチ入力であると判定される場合、ステップS16およびS17の処理が実行される。一方、ステップS11で検出されたタッチ入力が最初のタッチ入力でないと判定される場合、ステップS16およびS17の処理がスキップされてステップS21の処理が実行される。
【0090】
ステップS16においては、タッチフラグがオンに設定される。すなわち、CPU11は、メインメモリ17に記憶されているタッチフラグデータ61の値を“1”に設定する。続くステップS17において、仮想領域の座標および半径の値が初期化される。具体的には、仮想領域の座標(Vpx,Vpy)は、入力座標(Ipx,Ipy)に基づいて決定される。すなわち、CPU11は、メインメモリ17に記憶されている入力座標データ51を参照して、Vpx=Ipx、かつ、Vpy=Ipyとなるように仮想領域の座標を決定する。また、仮想領域の半径Vrは、Vr=0と決定される。以上のように決定された仮想領域の座標および半径を示すデータは、仮想領域座標データ54および仮想領域半径データ55としてメインメモリ17に記憶される。ステップS17の次にステップS21の処理が実行される。
【0091】
ステップS21においては、仮想領域の半径が、入力領域の半径に近づくように変更される。仮想領域の半径Vrは、変更前の仮想領域の半径(Vr’とする)と、入力領域の半径Irと、追従度Sとに基づいて算出される。CPU11は、メインメモリ17に記憶されている入力領域半径データ53、仮想領域半径データ55および追従度データ60を参照して、次の式(1)に従って仮想領域の半径Vrを算出する。
Vr=Vr’+(Ir−Vr’)×S …(1)
上式(1)によって得られた変更後の仮想領域の半径Vrを示すデータは、仮想領域半径データ55としてメインメモリ17に更新して記憶される。
【0092】
続くステップS22において、領域間ベクトルが算出される。上述したように、領域間ベクトルは、入力領域の位置を始点とし仮想領域の位置を終点とするベクトルである。領域間ベクトル(Lx,Ly)は、入力領域の位置座標(すなわち、入力座標)(Ipx,Ipy)と、仮想領域の位置座標(Vpx,Vpy)とに基づいて算出される。CPU11は、メインメモリ17に記憶されている入力座標データ51および仮想領域座標データ54を参照して、次の式(2)に従って領域間ベクトル(Lx,Ly)を算出する。
Lx=Ipx−Vpx
Ly=Ipy−Vpy …(2)
上式(2)によって得られた領域間ベクトル(Lx,Ly)を示すデータは、領域間ベクトルデータ56としてメインメモリ17に更新して記憶される。なお、ステップS22において、CPU11は、上式(2)によって得られた領域間ベクトル(Lx,Ly)の大きさをさらに算出する。
【0093】
ステップS23においては、ステップS22で算出された領域間ベクトル(Lx,Ly)の大きさが0であるか否かが判定される。ステップS23の判定において、領域間ベクトルの大きさが0である場合、後述するステップS24〜S28の処理がスキップされて、ステップS29の処理が実行される。領域間ベクトルの大きさが0である場合とは、入力領域の位置と仮想領域の位置とが同じ位置である場合である。この場合、仮想領域を移動させる必要はないので、仮想領域を移動させるための処理であるステップS24〜S28の処理がスキップされるのである。一方、ステップS23の判定において、領域間ベクトルの大きさが0である場合、ステップS24の処理が実行される。
【0094】
ステップS24においては、仮想領域の半径Vrと入力領域の半径Irとが比較され、仮想領域の半径Vrが入力領域の半径Irよりも大きいか否かが判定される。CPU11は、メインメモリ17に記憶されている入力領域半径データ53および仮想領域半径データ55を参照して、Vr>Irであるか否かを判定する。上述したように、仮想領域を移動させるべき移動量の算出方法は、仮想領域の半径が入力領域よりも大きい場合と小さい場合とで異なっている。ステップS24は、上記移動量の算出方法を決定するための処理である。ステップS24の判定の結果、仮想領域の半径Vrが入力領域の半径Irよりも大きい場合、ステップS25の処理が実行される。一方、仮想領域の半径Vrが入力領域の半径Ir以下である場合、ステップS26の処理が実行される。
【0095】
ステップS25においては、仮想領域の移動量Aが算出される。ステップS25では、移動量Aは、入力領域が仮想領域からはみ出した部分の距離として算出される。つまり、入力領域が仮想領域からはみ出した分だけ仮想領域が移動される。換言すれば、仮想領域は、入力領域の全体が仮想領域の内側に含まれるように移動される。具体的には、CPU11は、入力領域が仮想領域からはみ出した部分の距離(移動量A)を、入力領域半径データ53、仮想領域半径データ55、および領域間ベクトルデータ56を参照して、式(3)に従って算出する。
A=(L+Ir)−Vr …(3)
上式(3)において、Lは、領域間ベクトルの大きさである。式(3)の結果、入力領域が仮想領域に接しないで仮想領域の内側に含まれる場合、移動量Aの値は負になる。入力領域が仮想領域に対して内側で接している場合、移動量Aの値は0になる。入力領域が仮想領域に対して2点で接している場合、入力領域が仮想領域に対して外側で接している場合、または、入力領域が仮想領域に接しないで外側に位置する場合、移動量Aの値は正になる。上式(3)によって得られた移動量Aを示すデータは、移動量データ57としてメインメモリ17に更新して記憶される。ステップS25の次にステップS27の処理が実行される。
【0096】
一方、ステップS26においてもステップS25と同様、仮想領域の移動量Aが算出される。ここで、ステップS26では、移動量Aは、仮想領域が入力領域からはみ出した部分の距離として算出される。つまり、仮想領域が入力領域からはみ出した分だけ仮想領域が移動される。換言すれば、仮想領域は、その全体が入力領域の内側に含まれるように移動される。具体的には、CPU11は、仮想領域が入力領域からはみ出した部分の距離(移動量A)を、入力領域半径データ53、仮想領域半径データ55、および領域間ベクトルデータ56を参照して、式(4)に従って算出する。
A=(L+Vr)−Ir …(4)
上式(4)において、Lは、領域間ベクトルの大きさである。式(4)の結果、仮想領域が入力領域に接しないで入力領域の内側に含まれる場合、移動量Aの値は負になる。仮想領域が入力領域に対して内側で接している場合、移動量Aの値は0になる。仮想領域が入力領域に対して2点で接している場合、仮想領域が入力領域に対して外側で接している場合、または、仮想領域が入力領域に接しないで外側に位置する場合、移動量Aの値は正になる。上式(4)によって得られた移動量Aを示すデータは、移動量データ57としてメインメモリ17に更新して記憶される。ステップS26の次にステップS27の処理が実行される。
【0097】
ステップS27においては、ステップS25またはS26で算出された移動量Aの値が正であるか否かが判定される。すなわち、CPU11は、メインメモリ17に記憶されている移動量データ57により示される移動量AがA>0であるか否かを判定する。ここで、A≦0であることは、入力領域および仮想領域のうちの小さい方の一方が他方の内側に含まれていることを意味しており、このとき、仮想領域を移動させる必要はない。ステップS27の処理は、仮想領域を移動させる必要があるか否かを判定するための処理である。ステップS27の判定において、移動量Aの値が正である場合、仮想領域を移動させる処理であるステップS28の処理が実行される。一方、移動量Aの値が正でない(すなわち、移動量Aが0または負である)場合、ステップS28の処理がスキップされてステップS29の処理が実行される。
【0098】
ステップS28においては、ステップS25またはS26で算出された移動量Aに基づいて仮想領域の位置が移動される。移動後の仮想領域の位置座標(Vpx,Vpy)は、移動前の仮想領域の位置座標(ステップS28の処理前の時点における仮想領域座標データ54により示される座標)(Vpx’,Vpy’)と、移動量Aと、領域間ベクトル(Lx,Ly)とに基づいて算出される。具体的には、CPU11は、メインメモリ17に記憶されている仮想領域座標データ54、領域間ベクトルデータ56、および移動量データ57を参照して、次の式(5)に従って移動後の仮想領域の位置を算出する。
Vpx=Vpx’+Lx/L×A
Vpy=Vpy’+Ly/L×A …(5)
上式(5)において、Lは、領域間ベクトルの大きさである。式(5)によって、仮想領域は、仮想領域の中心位置から入力領域の中心位置への方向に移動量Aの長さだけ移動される。上式(5)によって得られた仮想領域の位置座標(Vpx,Vpy)を示すデータは、仮想領域座標データ54としてメインメモリ17に更新して記憶される。ステップS28の次にステップS29の処理が実行される。
【0099】
ステップS29において、仮想領域の位置を表す座標がタッチ座標に設定される。すなわち、CPU11は、メインメモリ17に記憶されている仮想領域座標データ54により示される座標値を、現在タッチ座標データ58としてメインメモリ17に更新して記憶する。このとき、更新前における現在タッチ座標データ58により示される座標値は、前タッチ座標データ59としてメインメモリ17に更新して記憶される。以上によって、プレイヤによるタッチ入力に基づいて、プレイヤが指定しようとしたと判断される位置座標(すなわちタッチ座標)が算出される。ステップS29の処理が終了すると、CPU11はタッチ座標算出処理を終了する。
【0100】
図13の説明に戻り、ステップS2の次のステップS3において、ステップS2で算出されたタッチ座標に基づいて画面上におけるカーソルの位置が決定される。CPU11は、まず、現在のタッチ座標の位置を終点とし、前回のタッチ座標の位置を始点とするベクトルを算出する。このベクトルは、メインメモリ17に記憶されている現在タッチ座標データ58により示される座標と、前タッチ座標データ59により示される座標とを用いて算出することができる。さらに、CPU11は、上記ベクトルに基づいて画面上のカーソルを移動させる。CPU11は、カーソルの移動前の位置を基点とし、上記ベクトルの向きに応じた画面上の方向へ、上記ベクトルの大きさに応じた長さだけカーソルを移動させる。以上のステップS3によって、移動後のカーソルの位置が決定されることによってカーソルを移動させることができる。なお、タッチ入力が行われていない場合、すなわち、タッチフラグがオフに設定されている場合、CPU11はカーソルを移動させない。また、カーソルを移動させる方法は上記に限らず、例えば、タッチパッド7の入力面上の位置と画面上の位置とを対応付けておき、ステップS3で算出されたタッチ座標の位置に対応する画面上の位置にカーソルを移動するようにしてもよい。
【0101】
ステップS4においては、タッチパッド7の裏面に設けられたスイッチが押下されたか否かが判定される。なお、ステップS11で読み込んだ操作データには、上記スイッチが押下されたか否かを示すデータが含まれている。CPU11は、当該データに基づいて、スイッチが押下されたか否かを判定する。判定の結果、スイッチが押下されたと判定される場合、ステップS5の処理が実行される。一方、スイッチが押下されていないと判定される場合、ステップS5の処理がスキップされてステップS6の処理が実行される。
【0102】
ステップS5においては、ステップS3で位置が決定されたカーソルによって指定されるキーが特定される。この結果、特定されたキーに対応する文字が入力されることになる。
【0103】
ステップS6においては、表示処理が実行される。具体的には、キーボード32や文字表示領域34の画像とともに、ステップS3で決定された位置にカーソルがテレビ6の画面に表示される(図3参照)。また、ステップS5が実行された場合には、上記キーボードおよびカーソルが表示されるとともに、ステップS5で決定された文字が文字表示領域34に表示される。ステップS6の次にステップS7が実行される。
【0104】
ステップS7において、ゲームを終了するか否かが判定される。ゲームを終了するか否かの判定は、例えば、ゲームを終了するための所定の操作がプレイヤによって行われたか否かによって行うことができる。ステップS7の判定において、ゲームを終了すると判定される場合、CPU11は図13に示すゲーム処理を終了する。一方、ゲームを終了しないと判定される場合、ステップS2の処理が再度実行される。以降、ステップS7においてゲームを終了すると判定されるまでステップS2〜S7の処理ループが繰り返し実行される。
【0105】
以上のように本実施形態によれば、ゲーム装置2は、入力領域とは別に仮想領域を設定し、入力領域に追従するように仮想領域を変化させる。そして、仮想領域に基づいてプレイヤの操作内容を判断する。これによって、プレイヤが意図しない入力領域の変化に起因する、プレイヤの意図しない操作が行われることを防止することができる。
【0106】
なお、第1の実施形態においては、仮想領域の位置を用いて、カーソル33の画面上の位置を移動させる処理を実行する場合を例にとって説明した。ここで、他の実施形態においては、ゲーム装置2は、仮想領域に基づいて所定の処理を実行するものであればよい。所定の処理は、仮想領域の位置に限らず、仮想領域の形状および/または面積に基づいてその処理内容が決定されるものであってもよい。
【0107】
(第2の実施形態)
以下、本発明の第2の実施形態について説明する。第2の実施形態では、タッチパッド7の入力面の裏面に設けられた上記スイッチが押下される際に入力領域が変化することに起因する、プレイヤが意図しない操作を防止することを目的とする。すなわち、スイッチが押下される際には、入力面を単にタッチしている場合よりも入力面が強く押下されるので、入力領域が大きくなり、その結果入力位置も変化する。したがって、入力位置に基づいてカーソルを移動させる場合には、スイッチが押下されることによってカーソルが(プレイヤが意図しないにもかかわらず)移動してしまい、その結果、プレイヤが意図しない操作が行われてしまう。第2の実施形態は、スイッチが押下される際に、カーソルが意図しない方向へ移動してしまう問題を解決するものである。
【0108】
第2の実施形態に係るゲーム装置は、図1および図2に示すゲーム装置2と同じであるので、ゲーム装置2に関する詳細な説明は省略する。第2の実施形態においては、ゲーム装置2において実行されるゲーム処理が第1の実施形態とは異なる。以下、ゲーム処理を中心に第2の実施形態を説明する。
【0109】
図16は、第2の実施形態に係るゲーム装置10のメインメモリ17に記憶される主なデータを示す図である。図16に示すように、メインメモリ17には、入力座標データ51、現在タッチ座標データ58、前タッチ座標データ59、およびカーソル座標データ群71が記憶される。なお、図16においては、図12に示すデータと同じデータについて図12と同じ参照符号を付し、詳細な説明を省略する。
【0110】
カーソル座標データ群71は、カーソルの画面上における位置を表す座標(カーソル座標)を示すデータ(カーソル座標データ)の集合である。第2の実施形態においては、入力座標に基づいてカーソル座標を算出する処理が1フレーム毎に実行される。これによって、プレイヤは、タッチパッド7を用いてカーソルを移動させることができる。ゲーム装置2は、カーソル座標が算出されると、算出された順にカーソル座標データをメインメモリ17に追加して記憶する。タッチ入力が連続して検出される間は新たなカーソル座標が算出されるので、タッチ入力が連続して検出される間は、新たなカーソル座標データがカーソル座標データ群71に追加されていく。カーソル座標データ群71の内容は、タッチオフされたときにリセットされる。したがって、タッチオンが行われて最初に算出されたカーソル座標を示すカーソル座標データが第1カーソル座標データ71aとしてメインメモリ17に記憶され、2番目に算出されたカーソル座標を示すカーソル座標データが第2カーソル座標データ71bとしてメインメモリ17に記憶される。なお、ここでは、第n(nは1以上の整数)番目に算出されたカーソル座標を示すカーソル座標データを「第nカーソル座標データ」とする。
【0111】
次に、第2の実施形態におけるゲーム処理の詳細を、図17を用いて説明する。図17は、第2の実施形態に係るゲーム装置2において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置2の電源が投入されてから、図17に示すゲーム処理が開始されるまでの動作は、第1の実施形態と同様である。なお、図17において、図13に示すステップと同じ処理を示すステップについては図13と同じステップ番号を付し、詳細な説明は省略する。
【0112】
図17においては、まず、ステップS1において、初期処理が実行される。この初期処理は第1の実施形態における初期処理と同様の処理である。ステップS1の初期処理の後にゲームが開始され、以降のステップS51〜S7の処理ループが1フレーム毎に繰り返されることによってゲームが進行していく。
【0113】
ステップS51においては、タッチパッド7およびスイッチに関する入力データが取得される。第2の実施形態では、タッチパッド7に関する入力データには、上記入力座標を示すデータが含まれており、入力面積を示すデータは含まれていなくてもよい。また、スイッチに関する入力データは、スイッチが押下されたか否かを示すデータである。CPU11は、タッチパッド7およびスイッチに関する入力データをコントローラ5から読み込んで、メインメモリ17に記憶する。入力座標を示すデータは、入力座標データ51としてメインメモリ17に記憶される。ステップS51の次にステップS52の処理が実行される。
【0114】
ステップS52においては、ステップS51で取得された入力座標データに基づいてタッチ座標が算出される。タッチ座標の具体的な算出方法はどのような方法であってもよく、例えば、上記第1の実施形態におけるタッチ座標算出処理(ステップS3)と同様の方法で算出してもよいし、入力座標データにより示される入力座標をそのままタッチ座標とするようにしてもよい。ステップS52の次にステップS3の処理が実行される。
【0115】
ステップS3においては、ステップS2で算出されたタッチ座標に基づいて画面上におけるカーソルの位置が算出される。ステップS3の処理は第1の実施形態と同様である。ステップS3によって算出されたカーソルの位置を表すカーソル座標を示すデータ(カーソル座標データ)は、メインメモリ17に追加して記憶される。
【0116】
ステップS3の次に実行されるステップS4の判定処理は、第1の実施形態と同様である。第2の実施形態においては、ステップS4における判定結果が肯定であった場合、ステップS53およびS54の処理が実行される。一方、ステップS4における判定結果が否定であった場合、ステップS53およびS54の処理がスキップされてステップS6の処理が実行される。
【0117】
ステップS53においては、予め定められた所定数だけ前のフレームにおけるカーソル位置が特定される。具体的には、CPU11は、メインメモリ17に記憶されているカーソル座標データ群71を参照して、現在のフレームで算出されたカーソル座標データから所定数前に算出されたカーソル座標データを特定する。これによって、特定されたカーソル座標データにより示されるカーソル座標により表される位置が特定される。例えば、第iカーソル座標データ(iは1以上の整数)が最新のカーソル座標データとしてメインメモリ17に記憶されている場合を具体例として考える。上記所定数をj(jは1以上の整数)とすると、CPU11は、第(i−j)カーソル座標データにより示されるカーソル座標を特定する。以上のようにして、予め定められた所定数だけ前のフレームにおけるカーソル位置が特定することができる。
【0118】
なお、上記具体例において、j≧iの場合、該当するカーソル座標データが存在しないことになる。これを解消するために、例えば、j≧iの場合には、ステップS53で特定すべきカーソル位置を、第1カーソル座標データにより示されるカーソル座標により示されるカーソル位置としてもよい。また、例えば、所定数を、j≧iとなることが現実的にはあり得ないような値に設定してもよい。つまり、タッチパッド7にプレイヤの指が触れてからスイッチが押下されるまでに最低限要すると考えられる時間を想定し、所定数jにフレーム時間を積算した時間が当該時間よりも短い時間となるように所定数jを設定してもよい。
【0119】
ステップS53の次のステップS54においては、カーソルによって指定されるキーが特定される。具体的には、CPU11は、ステップS53で特定されたカーソル位置にカーソルがあるとした場合に当該カーソルによって指定されるキーを特定する。特定されるキーは、現在のカーソルによって指定されるキーではなく、所定数前のフレームにおけるカーソルによって指定されるキーである。これによって、スイッチの押下によってカーソルがプレイヤの意図しない移動を行う前にカーソルが指定していたキーを特定することができる。
【0120】
なお、ステップS6およびS7における処理は、第1の実施形態と同様であるので説明を省略する。
【0121】
以上のように、第2の実施形態によれば、スイッチが押下された時点におけるカーソルではなく、スイッチが押下された時点よりも少し前の時点(正確には、所定数フレームだけ前の時点)におけるカーソルによって指定されるキーが、文字を入力すべきキーとして選択される。タッチパッド7を用いてカーソルを移動させることによってキーを選択する場合、プレイヤは、まずカーソルが所望のキーを指定するようにカーソルを移動させ、次に、スイッチを押下すると考えられる。つまり、スイッチを押下する直前には、カーソルは正しいキー(所望のキー)を指定していると考えられる。したがって、本実施形態によれば、スイッチを押下する際にカーソルがプレイヤの意図しない移動を行ったとしても、スイッチを押下する前にカーソルが指定していたキーを選択することができるので、プレイヤは所望のキーを正確に選択することができる。
【0122】
なお、第2の実施形態においては、カーソル座標データを保存しておき、スイッチが押下されたことが検出された場合、所定数フレーム前の時点におけるカーソル座標データを用いて、プレイヤが意図しているカーソルの位置を特定するようにした。ここで、他の実施形態においては、カーソル座標データを保存する代わりに、入力座標またはタッチ座標を保存するようにしてもよい。このとき、スイッチが押下されたことが検出された場合、ゲーム装置は、所定数フレーム前の時点における入力座標またはタッチ座標を用いて、プレイヤが意図しているカーソルの位置を特定すればよい。
【0123】
また、第2の実施形態においては、ステップS53における所定数は、予め定められているものとしたが、他の実施形態においては、タッチパッドに対する入力状態等に基づいて当該所定数を決定するようにしてもよい。例えば、タッチパッドが入力面積を検出することが可能な場合には、ゲーム装置は、入力面積を示すデータを毎フレーム記憶しておく。さらに、前回のフレームにおける入力面積と今回のフレームにおける入力面積との差が、予め定められた所定値以上であるか否かを判定する。判定の結果、当該差が当該所定値以上となるフレーム(またはその前のフレーム)について、カーソル座標(入力座標またはタッチ座標でもよい)を記憶しておく。スイッチが押下されたことが検出された場合には、当該フレームにおけるカーソル座標を用いて、プレイヤが意図しているカーソルの位置を特定する。以上によれば、入力面積が大きく変化したフレーム、すなわち、プレイヤがスイッチを押下しようとしたフレームを検知することができ、このフレームにおけるカーソル位置を特定することができるので、プレイヤが意図しているカーソルの位置を正確に特定することができる。
【0124】
なお、第2の実施形態は、上述したようなタッチパッドと押下スイッチとが組み合わされた入力装置に限らず、2次元の値を入力することが可能な操作部を備えるとともに、その操作部を押下したことを検知することが可能な入力装置に適用することができる。例えば、スティックキーと押下スイッチとが組み合わされた入力装置についても適用することが可能である。
【0125】
従来より、2次元の入力を行うことが可能であるとともに押下することが可能なスティックキーを備えるパーソナルコンピュータがある。ユーザは、このスティックキーを前後方向および左右方向に傾倒することによって、傾倒方向に応じた2次元値の入力を行うことが可能である。さらに、このスティックキーを押下することによって、オン/オフの入力を行うことが可能である。このようなスティックキーを用いて、図3に示した例における文字入力操作を行うことが可能である。すなわち、スティックキーの傾倒に応じた2次元値を用いて画面上のカーソルを移動させ、スティックキーが押下されたことに応じて、カーソルで指定されるキーに対応する文字の入力を行うことが可能である。
【0126】
上記のようなスティックキーを操作する場合にも、スティックキーを押下する際にスティックキーが若干傾倒してしまうことがある。このとき、プレイヤが意図しないにもかかわらず、2次元の入力が行われてしまうことになる。具体的には、プレイヤは、スティックキーを傾倒させることによって所望のキーを指定する位置にカーソルを移動させた後、スティックキーを押下することによって当該所望のキーを選択する操作を行う。しかし、スティックキーを押下する際にスティックキーが若干傾倒してしまうことによってカーソルが移動し、スティックキーの押下が検出された時点では所望のキーとは別のキーをカーソルが指定してしまうことがある。
【0127】
ここで、上記のようなスティックキーを入力装置とする情報処理装置において第2の実施形態に係るプログラムを用いることによって、プレイヤは、スティックキーを押下する前においてカーソルによって指定されたキーを選択することができる。したがって、第2の実施形態によれば、上記のようなスティックキーを入力装置とする情報処理装置においても、所望のキーを正確に選択することができる。
【0128】
また、上記第1および第2の実施形態においては、コントローラ5から出力された入力データ(入力座標データおよび入力面積)を受け取ったゲーム装置2が、カーソルを移動させるために用いるタッチ座標ベクトルを算出する処理を実行した。ここで、他の実施形態では、コントローラ5側でタッチ座標ベクトルを算出する処理を実行するようにしてもよい。すなわち、コントローラ5は、入力領域を示すデータを記憶し、入力領域に基づいて仮想領域を算出し、算出した仮想領域を示すデータ(仮想領域の位置、大きさ、形状のうちの少なくとも1つを示すデータ)を生成するようにしてもよい。そして、コントローラ5は、生成されたデータを操作データとしてゲーム装置2に送信する。ゲーム装置2は、受信した上記操作データに基づいて所定のゲーム処理(例えば、カーソルを移動させる処理)を行う。以上の構成によれば、ゲーム装置2は、操作データに応じたゲーム処理を行うだけであるので、従来のゲーム装置をそのまま適用することができる。すなわち、上記コントローラを従来のゲーム装置に接続することによって、図1と同等のゲームシステムを実現することができる。
【産業上の利用可能性】
【0129】
本発明は、簡易な構成で、ポインティングデバイスの操作性を向上すること等を目的として、ゲーム装置等の情報処理装置において利用することが可能である。
【図面の簡単な説明】
【0130】
【図1】第1の実施形態に係る情報処理装置の一例であるゲームシステムの構成を示す外観図
【図2】図1に示すゲームシステムのブロック図
【図3】第1の実施形態における表示画面の一例を示す図
【図4】タッチ入力が開始された時刻t0における入力の様子を示す図
【図5】上記時刻t0からフレーム時間tが経過した時点(時刻:t0+t)における入力の様子を示す図
【図6】図5における時刻(t0+t)からフレーム時間tが経過した時点(時刻:t0+2t)における入力の様子を示す図
【図7】図6に示す状態から仮想領域42の位置を補正した後の入力の様子を示す図
【図8】タッチ入力が行われている途中のある時刻(t1)における入力の様子を示す図
【図9】時刻t1からフレーム時間tが経過した時点(時刻:t1+t)における入力の様子を示す図
【図10】図9における時刻(t1+t)からフレーム時間tが経過した時点(時刻:t1+2t)における入力の様子を示す図
【図11】図10に示す状態から仮想領域42の位置を補正した後の入力の様子を示す図
【図12】ゲーム装置2のメインメモリ17に記憶される主なデータを示す図
【図13】第1の実施形態に係るゲーム装置2において実行されるゲーム処理の流れを示すフローチャート
【図14】図13に示すタッチ座標算出処理の詳細な処理の流れを示すフローチャート
【図15】図13に示すタッチ座標算出処理の詳細な処理の流れを示すフローチャート
【図16】第2の実施形態に係るゲーム装置10のメインメモリ17に記憶される主なデータを示す図
【図17】第2の実施形態に係るゲーム装置2において実行されるゲーム処理の流れを示すフローチャート
【図18】入力面に対する入力が行われたときの様子を示す従来図
【図19】入力面に対する入力が行われたときの様子を示す従来図
【符号の説明】
【0131】
1 ゲームシステム
2 ゲーム装置
3 光ディスク
4 メモリカード
5 コントローラ
6 テレビ
7a,7b タッチパッド
11 CPU
17 メインメモリ
41 入力領域
42 仮想領域
【技術分野】
【0001】
本発明は、タッチパッド等の入力装置から入力されるデータを処理するための入力データ処理プログラムおよび情報処理装置に関する。
【背景技術】
【0002】
従来、タッチパネル等のポインティングデバイスを操作者が指等でタッチ操作することによって、画面に表示されているオブジェクト(例えばカーソル)等を操作する技術がある。ここで、入力面上における入力位置は、入力面上において指が接触している領域に基づいて決定されることがある。例えば図18に示す例では、操作者の指は円形領域92において入力面91と接触している。このとき、入力位置は、円形領域92の中心の位置93に決定される。つまり、円形領域92の中心の位置93を操作者が指し示していると判断される。なお、接触領域から入力位置を決定する方法としては、接触領域の重心の位置を入力位置として決定する方法もある。
【0003】
しかし、操作者の指と入力面との接触面積が変化しやすいことから、接触領域から入力位置を決定する上記方法では、操作者が意図しないにもかかわらず入力位置が変化してしまい、結果として操作者が意図しない操作が行われてしまうことがあった。特に、入力面に対して指の接触が開始された時点や、接触が終了する時点(入力面から指を離す時点)には、指の接触領域の位置や大きさが大きく変わりやすい。そのため、接触開始時点や接触終了時点では特に、操作者が意図しない操作が行われてしまう可能性が高い。
【0004】
図19は、図18に示す状態から操作者が入力面から指を離そうとした場合の入力面の様子を示す図である。すなわち、図19に示す時点では、操作者の指は円形領域94において入力面91と接触している。この時点における入力位置は円形領域94の中心の位置95に決定される。したがって、図18に示す状態から図19に示す状態に移行した場合、入力位置は、位置93から位置95へ移動したと判断されてしまう。しかし、この場合、操作者は入力面から指を単に離そうとしただけであり、入力位置を移動させる意図があったわけではない。つまり、この場合、入力位置が移動したことによって例えば画面上のカーソルが移動する等、操作者が意図しない(あるいは望まない)操作が行われてしまう。これによって、操作者は、ポインティングデバイスの操作性が悪いと感じる。なお、接触面積が変化することによって操作者の意図しない操作が行われてしまう現象は、操作者が入力面から指を離そうとした場合に限らず、操作者が入力面に指を接触させようとした場合や、入力面上で指を移動させようとした場合にも起こりうる。
【0005】
なお、特許文献1に記載のタッチ操作位置検出装置は、タッチパネルの周囲に配置された発光素子および受光素子と、受講素子の側方に配置されたカメラとを備えている。この装置は、受光素子からの情報に基づいて、操作指の接触範囲の中心位置を求めるとともに、さらにカメラからの撮影情報に基づいて中心位置を補正する。これによって上記装置は、操作者の意図に沿った入力位置を正確に求めることを目的としている。
【特許文献1】特開2003−5913号公報(要約書等)
【発明の開示】
【発明が解決しようとする課題】
【0006】
上記特許文献1に記載のタッチ操作位置検出装置は、発光素子および受光素子をタッチパネルの周囲に取り付けなければならず、さらに、カメラを用意しなければならない。そのため、この特許文献1に記載の技術では、装置の高コスト化、装置の肥大化および装置の複雑化を招く。また、発光素子および受光素子の数を少なくすれば、検出精度が低くなり、中心位置を適切に補正することができない場合も少なくないと考えられる。中心位置を適切に補正することができなければ、上述したような操作者が意図しない操作が行われてしまい、ポインティングデバイスの操作性が悪くなる。
【0007】
それ故に、本発明の主たる目的は、簡易な構成で、ポインティングデバイスの操作性を向上することができる入力データ処理プログラムおよび情報処理装置を提供することである。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0009】
第1の発明は、入力面上において入力が行われている入力領域を検出する入力装置(タッチパッド7)を備える情報処理装置(ゲーム装置2)のコンピュータ(CPU11等)に以下の処理を実行させる入力データ処理プログラム(ゲームプログラム)である。入力データ処理プログラムは、記憶ステップ(S13)と、仮想領域決定ステップ(S14およびS28)と、第1処理実行ステップ(S3)とを上記コンピュータに実行させる。記憶ステップにおいて、コンピュータは、入力装置の検出結果に基づいて入力領域(41)を示す入力領域データ(51,52)を繰り返し取得して情報処理装置のメモリ(メインメモリ17)に記憶する。仮想領域決定ステップにおいて、メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域(42)を決定する。第1処理実行ステップにおいて、仮想領域決定ステップにおいて決定された仮想領域に応じた内容で所定の第1処理(カーソルを移動させる処理)を実行する。
【0010】
第2の発明においては、仮想領域の中心または重心の位置が当該仮想領域の位置として算出され、当該仮想領域の位置に応じた内容で第1処理が実行されてもよい。
【0011】
第3の発明においては、仮想領域決定ステップにおいて、入力領域および仮想領域のうちの小さい方の一方が他方の内側に位置するように、当該仮想領域の位置が決定されてもよい。
【0012】
第4の発明においては、仮想領域決定ステップは、大きさ決定ステップ(14)と、移動ステップ(S28)とを含んでいてもよい。大きさ決定ステップにおいては、コンピュータは、メモリに入力領域データが記憶される度に、入力領域の大きさに追従するように仮想領域の大きさを決定する。移動ステップにおいては、大きさ決定ステップで決定された大きさの仮想領域および入力領域のうちの小さい方の領域の少なくとも一部が他方の領域の外部に位置するとき、当該小さい方の領域の全部が当該他方の領域の内部に位置するように当該仮想領域の位置を移動する。
【0013】
第5の発明においては、仮想領域は円形の領域であってもよい。すなわち、仮想領域決定ステップにおいては、仮想領域の位置を示す仮想位置データ、および当該仮想領域の半径を示す仮想半径データがメモリに記憶される。第1処理実行ステップにおいては、メモリに記憶された仮想位置データおよび仮想半径データのうち少なくとも1つに基づいて第1処理の内容が決定される。
【0014】
第6の発明においては、入力装置は、入力領域の面積と入力領域の位置とを示すデータを出力してもよい。このとき、記憶ステップは、取得ステップと、領域算出ステップとを含んでいる。取得ステップにおいては、コンピュータは、入力装置から出力されるデータを取得する。領域算出ステップにおいては、取得されたデータにより示される位置を中心とし、当該データにより示される面積を有する円形領域を算出し、当該算出された円形領域を示すデータを入力領域データとして記憶する。
【0015】
第7の発明においては、記憶ステップにおいては、入力装置の検出結果が入力面に対する入力がないことを示すとき、メモリへ入力領域データを記憶する処理が停止されてもよい。
【0016】
第8の発明においては、情報処理装置は表示装置(テレビ6)を備えている。さらに、第1処理実行ステップにおいては、表示装置の画面に表示されているオブジェクト(カーソル33)の位置を仮想領域の位置に基づいて移動させる処理が第1処理として実行されてもよい。
【0017】
第9の発明においては、入力装置は、入力面を押下可能な状態で支持するとともに、入力面が押下されたことを検出する押下検出装置(スイッチ)を備えていてもよい。このとき、入力データ処理プログラムは、入力面が押下されたことが検出されたとき、所定の第2処理(文字入力処理)を実行する第2処理実行ステップをコンピュータにさらに実行させてもよい。
【0018】
第10の発明においては、情報処理装置は、表示装置を備えている。さらに、第1処理実行ステップにおいては、表示装置の画面に表示されているカーソルの位置を仮想領域の位置に基づいて移動させる処理が第1処理として実行されてもよい。このとき、第2処理実行ステップにおいては、画面に表示されているオブジェクト(キーボード32の各キー)のうちでカーソルによって指定されるオブジェクトを処理対象として第2処理が実行される。
【0019】
第11の発明は、操作部(タッチパッド7の入力面、または、スティックキーのスティック等)に対するプレイヤの操作状態を検出して2次元値として出力する第1入力装置(タッチパッド7またはスティックキー等)と、操作部が押下されたことを検出する第2入力装置(スイッチ)と、表示装置(テレビ6)とを備える情報処理装置(ゲーム装置2)のコンピュータに、以下の処理を実行させる入力データ処理プログラム(ゲームプログラム)である。入力データ処理プログラムは、表示制御ステップ(S6)と、記憶ステップ(S51)と、取得ステップ(S4)と、位置制御ステップ(S52およびS3)と、前位置特定ステップ(S53)と、処理実行ステップ(S54)とをコンピュータに実行させる。表示制御ステップにおいては、コンピュータは、複数のオブジェクト(図3に示すキー)と、当該複数のオブジェクトを指定するためのカーソル(33)とを表示装置の画面に表示させる。記憶ステップにおいては、2次元値を示す第1データ(入力座標データ51)を第1入力装置から繰り返し取得して情報処理装置のメモリ(メインメモリ17)に記憶する。取得ステップにおいては、操作部が押下されたことを示す第2データを第2入力装置から取得する。位置制御ステップにおいては、メモリに第1データが記憶される度に、当該第1データにより示される2次元値に基づいてカーソルの位置を決定する。前位置特定ステップにおいては、第2データが取得されたとき、取得された時点でメモリに記憶されている最新の第1データから所定個数前に記憶された第1データに基づいて決定されたカーソルの位置を特定する。処理実行ステップにおいては、第2データが取得されたとき、前位置特定ステップにおいて特定された位置にカーソルがあるとした場合に当該カーソルによって指定されるオブジェクトを処理対象として、操作部を押下する操作に対応する処理を実行する。
【0020】
第12の発明においては、前位置特定ステップにおいて、所定個数は予め定められた数であってもよい。
【0021】
第13の発明においては、第1入力装置は、入力面上において入力が行われている入力領域の面積を検出することが可能であってもよい。このとき、第1データは、2次元値とともに入力面積を示す。前位置特定ステップにおいては、ある時点で記憶された第1データにより示される入力面積と、次に記憶された第1データにより示される入力面積との差が所定値以上である場合、当該ある時点で記憶された第1データまたは当該次に記憶された第1データにより示される2次元値に基づいてカーソルの位置が特定される。
【0022】
第14の発明は、入力面上において入力が行われている入力領域を検出する入力装置(タッチパッド7)を備える情報処理装置(ゲーム装置2)である。情報処理装置は、記憶制御手段(S13を実行するCPU11等。以下、単にステップ番号のみを示す。)と、仮想領域決定手段(S14およびS28)と、第1処理実行手段(S3)とを備えている。記憶制御手段は、入力装置の検出結果に基づいて入力領域を示す入力領域データを繰り返し取得して情報処理装置のメモリに記憶する。仮想領域決定手段は、メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する。第1処理実行手段は、仮想領域決定手段によって決定された仮想領域に応じた内容で所定の第1処理を実行する。
【0023】
第15の発明は、操作部(タッチパッド7の入力面、または、スティックキーのスティック等)に対するプレイヤの操作状態を検出して2次元値として出力する第1入力装置(タッチパッド7またはスティックキー等)と、操作部が押下されたことを検出する第2入力装置(スイッチ)、表示装置(テレビ6)とを備える情報処理装置(ゲーム装置2)である。情報処理装置は、表示制御手段(S6)と、記憶制御手段(S51)と、取得手段(S4)と、位置制御手段(S52およびS3)と、前位置特定手段(S53)と、処理実行手段(S54)とを備えている。表示制御手段は、複数のオブジェクトと、当該複数のオブジェクトを指定するためのカーソルとを表示装置の画面に表示させる。記憶制御手段は、2次元値を示す第1データを第1入力装置から繰り返し取得して情報処理装置のメモリに記憶する。取得手段は、操作部が押下されたことを示す第2データを第2入力装置から取得する。位置制御手段は、メモリに第1データが記憶される度に、当該第1データにより示される2次元値に基づいてカーソルの位置を決定する。前位置特定手段は、第2データが取得されたとき、取得された時点でメモリに記憶されている最新の第1データから所定個数前に記憶された第1データに基づいて決定されたカーソルの位置を特定する。処理実行手段は、第2データが取得されたとき、前位置特定手段によって特定された位置にカーソルがあるとした場合に当該カーソルによって指定されるオブジェクトを処理対象として、操作部を押下する操作に対応する処理を実行する。
【0024】
第16の発明は、操作データに応じて所定のデータ処理を実行する情報処理装置に接続可能な入力装置(コントローラ5)である。入力装置は、記憶制御手段と、仮想領域決定手段と、送信手段とを備えている。記憶制御手段は、入力面上において入力が行われている入力領域を繰り返し検出して当該入力領域を示す入力領域データをメモリに記憶する。仮想領域決定手段は、メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する。送信手段は、仮想領域決定手段によって決定された仮想領域を示すデータを操作データとして情報処理装置に送信する。
【発明の効果】
【0025】
第1の発明によれば、操作者による操作に応じて実行される第1処理の処理内容は、入力領域の変化に追従して変化する仮想領域に応じて決定される。すなわち、実際の接触領域である入力領域の変化よりも緩やかに変化する仮想領域に基づいて第1処理が実行される。したがって、操作者の指と入力面との接触面積が変化する場合であっても、仮想領域を用いることによってその変化を緩和または抑止し、その変化が第1処理の内容に反映しないようにすることができる。そのため、操作者の指と入力面との接触面積が変化することによって操作者の意図しない操作が行われることを防止することができる。また、本発明においてはカメラ等の構成要素が不要であるので、簡易な構成によってポインティングデバイスの操作性を向上することができる。
【0026】
第2の発明によれば、仮想領域の中心位置または重心位置を仮想領域の位置とすることによって、仮想領域の位置を容易に算出することができる。
【0027】
第3の発明によれば、仮想領域の位置は、入力領域と仮想領域とのうちで小さい方の領域が他方の領域に常に重なった状態となるように設定される。したがって、位置に関して仮想領域を入力領域に正確に追従させることができる。
【0028】
第4の発明によれば、仮想領域および入力領域のうちの小さい方の領域の少なくとも一部が他方の領域の外部に位置するときのみ、仮想領域が移動される。つまり、小さい方の一方が他方の内部に位置している間は仮想領域が移動されないので、入力領域の位置および大きさが多少変化しても仮想領域が常に移動するわけではない。これによって、入力領域の移動が仮想領域では緩和されることになるので、操作者の意図しない操作が行われることを確実に防止することができる。
【0029】
第5の発明によれば、仮想領域を円形領域として取り扱うので、仮想領域の位置および形状(大きさ)を、中心位置の座標および半径の長さによって仮想領域を表すことができる。したがって、仮想領域を少ないデータ量で表すことができる。
【0030】
第6の発明によれば、入力領域を円形領域として取り扱うので、仮想領域を円形領域として取り扱う場合と同様、入力領域を少ないデータ量で表すことができる。
【0031】
第7の発明によれば、入力面に対する入力が行われないとき、入力領域データを記憶する処理が行われないので、仮想領域を決定する処理も行われないこととなる。入力面に対する入力がないときには、仮想領域を決定する必要はないので、第7の発明によれば、入力面に対する入力が行われない場合には不要となる仮想領域決定処理を省略することができる。
【0032】
第8の発明によれば、表示装置の画面に表示されるオブジェクト(例えばカーソル等)が、仮想領域の位置、すなわち、入力装置に対する操作者の操作によって移動される。したがって、当該オブジェクトを移動する操作において、操作者の意図しないオブジェクトの移動が行われることを防止することができる。
【0033】
第9の発明によれば、操作者は、入力面上の任意の位置を指定する操作に加えて、入力面を押下する操作を行うことができる。このとき、入力面を押下する操作を行う際に入力面積が大きく変化しやすいので、仮に入力領域に基づいて第1処理を行うとすれば、この操作を行う際に操作者の意図しない操作が行われてしまう。これに対して、第9の発明によれば、入力面を押下する操作を行う際であっても、操作者の意図しない操作が行われることを防止することができる。
【0034】
第10の発明によれば、表示装置の画面に表示されるカーソルが、仮想領域の位置、すなわち、入力装置に対する操作者の操作によって移動される。また、カーソルによって指定されるオブジェクトを処理対象として第2処理が実行される。したがって、カーソルによってオブジェクトを指定して第2処理を行う操作において、操作者の意図しないオブジェクトの移動が行われることによって、操作者の意図しないオブジェクトに対して第2処理が実行されることを防止することができる。
【0035】
第11の発明によれば、操作者は、操作部を操作する(タッチパッドの入力面にタッチする、または、スティックキーを傾倒する等)ことによって、カーソルを移動させる操作を行うことができるとともに、操作部を押下する(タッチパッドの入力面を押下する、または、スティックキーを押下する等)ことによって、カーソルによって指定されるオブジェクトに対して所定の処理を実行する操作を行うことができる。ここで、所定の処理を実行するために操作部を押下した場合、操作部に対する操作状態が操作者の意図に反して変化してしまうことがある。すなわち、タッチパッドに対する入力面積が大きくなってしまったり、スティックキーが傾倒してしまったりすることがある。
【0036】
第11の発明においては、操作部の押下が検知された場合、押下が検知された時点で所定個数前に記憶されている第1データに基づいてカーソルの位置が特定される。つまり、押下が検知された時点よりも少し前、すなわち、操作部に対する操作状態が変化する前のカーソルの位置が特定される。そして、特定されたカーソルの位置が、押下時におけるカーソルの位置として扱われて所定の処理が実行される。これによって、操作部に対する操作状態が変化する前のカーソルの位置、すなわち、操作者が意図するカーソルの位置に従って所定の処理が実行されることとなる。したがって、第11の発明によれば、操作部が押下される際に操作者の意図しない操作が行われることを防止することができる。
【0037】
第12の発明によれば、所定個数の数が予め定められているので、ゲーム装置は、操作部の押下が検知されたとき、どの時点で記憶された第1データを参照するかを容易に決定することができる。
【0038】
第13の発明によれば、入力面積の変化が大きい時点における第1データが参照されてカーソルの位置が決定される。つまり、操作部に対する操作状態が変化した時点が検知され、その時点における第1データに基づいてカーソルの位置が決定される。このように、入力面積の変化によって、操作部に対する操作状態が変化した時点を正確に検出することができる。したがって、操作部が押下される際に操作者の意図しない操作が行われることを確実に防止することができる。
【0039】
なお、第14および第16の発明によれば、第1の発明と同様の効果を得ることができる。また、第15の発明によれば、第11の発明と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0040】
(第1の実施形態)
図1は、本発明の第1の実施形態に係る情報処理装置の一例であるゲームシステムの構成を示す外観図であり、図2はそのブロック図である。図1および図2に示すように、ゲームシステム1は、ゲーム装置2、光ディスク3、メモリカード4、コントローラ5、テレビ6(図2に示すスピーカ25を含む)を備える。光ディスク3およびメモリカード4は、ゲーム装置2に着脱自在に装着される。コントローラ5は、ゲーム装置2に設けられる複数(図1では、4つ)のコントローラポート用コネクタのいずれかに接続される。コントローラ5は複数の操作部を有し、具体的には、第1のタッチパッド7a、第2のタッチパッド7b、スタートボタン8a、セレクトボタン8b、Lボタン8c、およびRボタン8dを含む。また、他の実施形態においては、ゲーム装置2とコントローラ5との通信は、通信ケーブルを用いずに無線通信によって行われてもよい。また、テレビ6およびスピーカ25は、AVケーブル等によってゲーム装置2に接続される。なお、本発明は図1に示すような据え置き型のゲーム装置に限らず、携帯型のゲーム装置であってもよいし、業務用のゲーム装置であってもよいし、携帯電話やパソコン等、プログラムを実行することができる装置であってもよいことはもちろんである。以下、図2を参照しながら、本発明に係るゲームシステムにおける各部を詳細に説明するとともに、ゲームシステムにおける一般的な動作を説明する。
【0041】
外部記憶媒体の一例である光ディスク3は、例えばDVD−ROMであり、本発明に係るプログラムの一例であるゲームプログラムやキャラクタデータ等のゲームに関するデータを固定的に記憶している。プレイヤがゲームを行う場合、光ディスク3はゲーム装置2に装着される。なお、ゲームプログラム等を記憶する手段は、DVD−ROMに限らず、例えばCD−ROM、MO、メモリカード、ROMカートリッジ等の記憶媒体であってもよい。ゲームプログラム等は、ゲーム装置本体内のメモリやハードディスク等の記憶手段に記憶されるようにしてもよく、この場合、通信によりゲームプログラムをダウンロードするようにしてもよい。メモリカード4は、例えばフラッシュメモリ等の書き換え可能な記憶媒体によって構成され、例えばゲームにおけるセーブデータ等のデータを記憶する。
【0042】
ゲーム装置2は、光ディスク3に記録されているゲームプログラムを読み出し、ゲーム処理を行う。コントローラ5は、プレイヤがゲーム操作に関する入力を行うための入力装置である。コントローラ5は、プレイヤによるタッチパッド7aおよび7bの操作や各操作ボタン8a〜8dの押圧操作や後述するスイッチ(図示しない)の押圧操作に応じて操作データをゲーム装置2に出力する。複数のプレイヤによってゲームを行う場合、コントローラ5はプレイヤの数だけ設けられる。テレビ6は、ゲーム装置2から出力された画像データを画面に表示する。また、スピーカ25は、典型的にはテレビ6に内蔵されており、ゲーム装置2から出力されたゲームの音声を出力する。
【0043】
前述のように、コントローラ5は、その主面の左右両側に1つずつ、計2つのタッチパッド7aおよび7bを有する。なお、2つのタッチパッド7aおよび7bは同じ構成であり、以下では、2つのタッチパッド7aおよび7bを特に区別しない場合、単に「タッチパッド7」と記載する。タッチパッド7としては、例えば抵抗膜方式や光学式(赤外線方式)や静電容量結合式など、任意の方式のものを利用することができる。
【0044】
第1の実施形態においては、タッチパッド7は、入力面にプレイヤの指等が触れた領域(入力領域)の面積と、入力領域の位置とを出力する。タッチパッド7は、入力領域の重心位置(中心位置でもよい)を入力領域の位置として出力する。タッチパッド7は、入力領域の位置および形状(大きさ)を検出することが可能のものであればよく、例えば、入力面とプレイヤの指等が接触しているすべての位置を出力するものであってもよい。この場合、出力された位置の集合が入力領域となる。
【0045】
タッチパッド7は、入力領域の面積(入力面積)および入力領域の位置(入力位置)を所定のサンプリング時間毎に検出する。そして、検出した入力面積および入力位置を示す入力データを出力する。この入力データは、操作データとしてコントローラ5からゲーム装置2に出力される。ここでは、所定のサンプリング時間を画面表示のフレーム時間と同じであるとするが、サンプリング時間とフレーム時間は異なる長さであってもよい。
【0046】
また、第1の実施形態においては、コントローラ5の筐体は、タッチパッド7の入力面を押下可能なようにバネ等で支持しており、タッチパッド7の裏面にはそれぞれスイッチ(図示せず)が設けられる。プレイヤは、タッチパッド7の入力面を押下することによってスイッチを押下することができる。つまり、スイッチは、タッチパッド7の入力面が押下されたことを検出するためのものである。スイッチが押下されたか否かを示すデータは、タッチパッド7からの上記入力データと同様、操作データとしてコントローラ5からゲーム装置2に出力される。
【0047】
なお、以上に説明したコントローラ5は、第1の実施形態において用いられる入力装置の一例であり、入力装置は、入力面上における入力領域を検出することが可能なポインティングデバイスであればどのようなものであってもよい。例えば、入力装置は、タッチパッドを1つのみ備える構成であってもよいし、タッチパッドに代えてタッチパネルを備える構成であってもよい。
【0048】
次に、ゲーム装置2の構成について説明する。図2において、ゲーム装置2内には、CPU11およびそれに接続されるメモリコントローラ20が設けられる。さらに、ゲーム装置2内において、メモリコントローラ20は、グラフィックスプロセッシングユニット(GPU)24と、メインメモリ17と、デジタル信号処理回路(DSP)36と、各種インターフェース(I/F)21〜26とに接続される。また、DSP18を介してサブメモリ19と接続される。メモリコントローラ20は、これら各構成要素間のデータ転送を制御する。
【0049】
ゲーム開始の際、まず、ディスクドライブ27は、ゲーム装置2に装着された光ディスク3を駆動する。光ディスク3に記憶されているゲームプログラムは、ディスクI/F26およびメモリコントローラ20を介して、メインメモリ17に読み込まれる。メインメモリ17上のプログラムをCPU11が実行することによって、ゲームが開始される。ゲーム開始後、プレイヤは、各タッチパッド7aおよび7bや各操作ボタン8a〜8dや上記スイッチを用いてコントローラ5に対してゲーム操作等の入力を行う。プレイヤによる入力に従い、コントローラ5は、操作データをゲーム装置2に出力する。コントローラ5から出力される操作データは、コントローラI/F21およびメモリコントローラ20を介してCPU11に入力される。CPU11は、入力された操作データに応じてゲーム処理を行う。ゲーム処理における画像データ生成等に際して、GPU12やDSP18が用いられる。また、サブメモリ19は、DSP18が所定の処理を行う際に用いられる。
【0050】
GPU12は、ジオメトリユニット13およびレンダリングユニット14を含み、画像処理専用のメモリに接続されている。この画像処理専用メモリは、例えばカラーバッファ15およびZバッファ16として利用される。ジオメトリユニット13は、仮想3次元空間であるゲーム空間に置かれた物体や図形に関する立体モデル(例えばポリゴンで構成されるオブジェクト)の座標についての演算処理を行うものであり、例えば立体モデルの回転・拡大縮小・変形や、ワールド座標系の座標から視点座標系やスクリーン座標系の座標への変換を行うものである。レンダリングユニット14は、所定のテクスチャに基づいて、スクリーン座標に投影された立体モデルについてピクセル毎のカラーデータ(RGBデータ)をカラーバッファ15に書き込むことによって、ゲーム画像を生成する。また、カラーバッファ15は、レンダリングユニット14によって生成されたゲーム画像データ(RGBデータ)を保持するために確保されたメモリ領域である。Zバッファ16は、3次元の視点座標から2次元のスクリーン座標に変換する際に視点からの奥行情報を保持するために確保されたメモリ領域である。GPU12は、これらを用いてテレビ6に表示すべき画像データを生成し、適宜メモリコントローラ20およびビデオI/F22を介してテレビ6に出力する。なお、ゲームプログラム実行時にCPU11において生成される音声データは、メモリコントローラ20からオーディオI/F24を介して、スピーカ25に出力される。なお、第1の実施形態では、画像処理専用のメモリを別途設けたハードウェア構成としたが、これに限らず例えばメインメモリ17の一部を画像処理用のメモリとして利用する方式(UMA:Unified Memory Architecture)を使うようにしてもよい。ゲーム装置2は、ゲームプログラムを実行することにより生成したゲームデータをメモリコントローラ20およびメモリI/F23を介してメモリカード4に転送する。また、ゲーム装置2は、ゲーム開始に先立って、メモリカード4に記憶されたゲームデータを、メモリコントローラ20およびメモリI/F23を介してメインメモリ17に読み込む。
【0051】
次に、第1の実施形態に係るゲームプログラムによってゲーム装置2において実行される処理の概要を説明する。図3は、第1の実施形態における表示画面の一例を示す図である。図3に示すように、テレビ6の表示画面31には、キーボード32およびカーソル33が表示されている。プレイヤは、カーソル33が所望のキーを指定するようにタッチパッド7を用いてカーソル33を移動させる。そして、所望のキーがカーソル33によって指定された状態で当該キーを選択する操作(例えば上記スイッチを押下する操作)を行うことで、当該キーに対応する文字の入力を行うことができる。入力された文字は、表示画面31の下部の文字表示領域34に表示される。以下、図3に示すような表示画面が表示されている場合において、タッチパッド7およびスイッチを用いて文字を入力する操作がプレイヤによって行われる場合を例にとってゲーム装置2の処理を説明する。
【0052】
ゲーム装置2は、タッチパッド7による検出結果を1フレーム毎に取得する。次に、取得した検出結果に含まれる入力位置および入力面積から、入力領域の位置および大きさ(半径)を算出する。本実施形態においては、ゲーム装置2は入力領域を円形領域として取り扱う。つまり、ゲーム装置2は、タッチパッド7から取得される入力位置を中心とし、入力面積に応じた半径を有する円形の領域を入力領域とする。ゲーム装置2は、タッチパッド7に対する入力(タッチ入力)が検出されている間は、入力領域の位置および半径を1フレーム毎に算出する。
【0053】
また、ゲーム装置2は、タッチパッド7の入力面上に仮想領域を設定する。そして、入力領域の位置および半径に応じて仮想領域の位置および半径を決定する。仮想領域とは、タッチパッド7の入力面上に仮想的に設定される領域である。本実施形態では、仮想領域を円形の領域とする。仮想領域の位置とは、円形の仮想領域の中心位置である。仮想領域の位置および半径を決定する処理が毎フレーム実行されることによって、仮想領域は、1フレーム毎に変形および/または移動を行う。また、上記カーソル33の位置は、仮想領域の位置に基づいて決定される。具体的には、ゲーム装置2は、仮想領域の移動前の位置から移動後の位置までのベクトルを算出し、当該ベクトルの大きさに応じた(画面上の)距離だけ、当該ベクトルの向きに応じた(画面上の)方向にカーソルを移動する。以上によって、ゲーム装置2は、タッチ入力に基づいてカーソルの移動を制御することができる。
【0054】
次に、仮想領域の移動および変形を行う処理の詳細について説明する。まず、プレイヤがタッチ入力を開始する際において仮想領域が移動および変形を行う様子を、図4〜図7を用いて説明する。なお、図4〜図11において、一点鎖線で囲まれる領域41は入力領域を示し、実線で囲まれる領域(但し図4では点)42は仮想領域を示す。また、点43は仮想領域42の中心、すなわち、仮想領域42の位置を示す。
【0055】
図4は、タッチ入力が開始された時刻t0における入力の様子を示す図である。ここでは、時刻t0におけるフレームで入力が初めて検出され、当該フレームの前のフレームでは入力が検出されなかったものとする。図4に示すように、入力が初めて検出されたフレームでは、仮想領域42は点として表される。すなわち、タッチパッド7によって検出された入力面積および入力位置に基づいて入力領域41の位置および半径が決定されるので、ゲーム装置2は、仮想領域42の位置を入力領域41の位置に決定し、仮想領域42の半径を“0”に決定する。
【0056】
図5は、上記時刻t0からフレーム時間tが経過した時点(時刻:t0+t)における入力の様子を示す図である。つまり、図5は、図4に示すフレームの次のフレームにおける入力の様子を示す図である。図5において、点線で囲まれる領域41’は、前回のフレームにおける入力領域を示している。タッチパッド7に対する入力が開始された直後では、タッチパッド7に対するプレイヤの指の接触面積が次第に大きくなるので、入力領域の半径は次第に大きくなるように変化する。図5においても、前回のフレーム(図4)の時点から入力領域41が大きくなっている。
【0057】
一方、仮想領域42は、入力領域41の変化に追従して変化するように、その位置および半径が決定される。具体的には、仮想領域42の半径は、入力領域41の半径に近づくように決定される。したがって、図5に示すように、時刻(t0+t)の時点における仮想領域42の半径は、前回のフレームの時点よりも大きくなっている。なお、詳細は後述するが、仮想領域42が入力領域41の内側に位置しているので、時刻(t0+t)の時点では仮想領域42の位置は前回のフレームから移動しない。つまり、仮想領域42の位置は、前回のフレームにおける位置と同じ位置に決定される。
【0058】
図6は、図5における時刻(t0+t)からフレーム時間tが経過した時点(時刻:t0+2t)における入力の様子を示す図である。図6において、点線で囲まれる領域41’は、前回のフレームにおける入力領域を示しており、領域42’は、前回のフレームにおける入力領域を示している。時刻(t0+2t)においても時刻(t0+t)の場合と同様、入力領域41は、前回のフレームの時点における入力領域41’よりも大きくなっている。入力領域41は入力領域41’の位置からやや左方向に移動している。時刻(t0+2t)においても時刻(t0+t)と同様、仮想領域42の半径は入力領域41の半径に近づくように決定される。したがって、仮想領域42の半径は変化前の仮想領域42’の半径に比べて大きくなる。
【0059】
図6においては、入力領域41の内側から仮想領域42の一部がはみ出している。なお、図6では、仮想領域42の位置は仮想領域42’の位置と同じ位置であるとする。入力領域41が仮想領域42よりも大きい場合において、仮想領域42の半径を決定した結果、仮想領域42の少なくとも一部が入力領域41の外側にはみ出した場合には、仮想領域42の位置が補正される。
【0060】
図7は、図6に示す状態から仮想領域42の位置を補正した後の入力の様子を示す図である。図6に示すように、仮想領域42の少なくとも一部が入力領域41の外側にはみ出した場合、仮想領域42が入力領域41の内側に含まれるように仮想領域42は移動される。したがって、時刻(t0+t2)の時点においては、仮想領域42の位置は図7に示す点43の位置となる。なお、点43’は、移動前の仮想領域42’の位置を示している。
【0061】
時刻(t0+2t)以降のフレームにおいても、仮想領域42は、入力領域41に追従するようにその位置および半径が決定される。したがって、入力領域41が移動すれば入力領域41の移動に応じて仮想領域42は移動する。また、入力領域41が変化しない場合、仮想領域42は、最終的には入力領域41と同じ位置および半径となる。
【0062】
次に、入力領域41が前回のフレームよりも小さくなる場合について、図8〜図11を用いて説明する。入力領域41が前回のフレームよりも小さくなる場合とは、典型的には、タッチ入力が終了する場合(プレイヤの指がタッチパッド7から離れる場合)である。また、入力面上で指を移動させる場合にも、入力領域41が前回のフレームよりも小さくなることがあると考えられる。
【0063】
図8は、タッチ入力が行われている途中のある時刻(t1)における入力の様子を示す図である。図8においては、入力領域41と仮想領域42との位置および半径は同じであるとする(図8においては図面を見やすくする目的で、実線と一点鎖線の位置をずらして記載している)。
【0064】
図9は、時刻t1からフレーム時間tが経過した時点(時刻:t1+t)における入力の様子を示す図である。時刻(t1+t)においては、入力領域41は、前回のフレームにおける入力領域41’よりも小さくなっている。一方、仮想領域42は、入力領域41に追従して変化するように決定される。入力領域41が小さくなっているので、仮想領域42については、前回のフレームにおける仮想領域42’よりも小さくなるように半径が決定される。なお、図9に示すように入力領域41が小さくなっている場合には、仮想領域42が入力領域41の内側からはみ出していても仮想領域42は移動されない。図9においては、仮想領域42の位置は、前回のフレームにおける位置と同じ位置に決定される。
【0065】
図10は、図9における時刻(t1+t)からフレーム時間tが経過した時点(時刻:t1+2t)における入力の様子を示す図である。時刻(t1+2t)においても時刻(t1+t)の場合と同様、入力領域41は、前回のフレームの時点における入力領域41’よりも小さくなっている。入力領域41の位置は入力領域41’の位置からやや上方向に移動している。一方、仮想領域42の半径は、入力領域41の半径が小さくなっているので、これに応じて小さくなるように決定される。すなわち、仮想領域42の半径は変化前の仮想領域42’の半径に比べて小さくなる。
【0066】
ここで、図10においては、仮想領域42の内側から入力領域41の一部がはみ出している。なお、図10では、仮想領域42の位置は仮想領域42’の位置と同じ位置であるとする。仮想領域42が入力領域41よりも大きい場合において、仮想領域42の半径を決定した結果、入力領域41の少なくとも一部が仮想領域42の外側にはみ出した場合には、仮想領域42の位置が補正される。
【0067】
図11は、図10に示す状態から仮想領域42の位置を補正した後の入力の様子を示す図である。図10に示すように、入力領域41の少なくとも一部が仮想領域42の外側にはみ出した場合、入力領域41が仮想領域42の内側に含まれるように仮想領域42は移動される。したがって、時刻(t1+t2)の時点においては、仮想領域42の位置は図11に示す点43の位置となる。なお、点43’は、移動前の仮想領域41’の位置を示している。
【0068】
図6、図7、図10、および図11に示したように、仮想領域42の位置は、入力領域41との位置関係に基づいて決定される。具体的には、仮想領域42の位置は、入力領域41および仮想領域42のうちの小さい方の一方が他方の内側に位置するように決定される。より具体的には、入力領域41が仮想領域42よりも大きい場合(図6)、仮想領域42の位置は、仮想領域42が入力領域41の内側に位置するように決定される(図7)。一方、仮想領域42が入力領域41よりも大きい場合(図10)、仮想領域42の位置は、入力領域41が仮想領域42の内側に位置するように決定される(図11)。したがって、入力領域41の位置が変化したとしても、入力領域41と仮想領域42との位置関係が上記の条件を満たさない場合には仮想領域42の移動は行われない。つまり、カーソルの移動は行われない。
【0069】
時刻(t0+2t)以降のフレームにおいても、仮想領域42は、入力領域41に追従するようにその位置および半径が決定される。なお、タッチ入力が検出されなくなると、仮想領域42は設定されない。つまり、タッチ入力が検出されないフレームにおいては、仮想領域42の位置および半径を決定する処理は実行されない。
【0070】
タッチ入力が行われている間は、入力領域が大きくなった場合の処理(図4〜図7に示した処理)、または、入力領域が小さくなった場合の処理(図8〜図11に示した処理)が毎フレーム実行される。したがって、仮想領域は、タッチ入力が行われている間、入力領域に追従するように変化している。具体的には、仮想領域42の半径は、入力領域41の半径に追従するように決定される。
【0071】
ここで、タッチ入力が開始された直後、および、タッチ入力が終了する直前においては、入力領域の半径が大きく変化する。したがって、半径の変化に応じて入力領域の位置も変化してしまう。そのため、仮に入力領域の位置を用いてカーソルの移動操作を行うとすると、プレイヤが意図しないカーソル操作が行われてしまうという問題が生じる。入力開始直後や入力終了直前においては、プレイヤが意図しないにもかかわらず入力位置が変化するので、入力位置の変化に応じて(プレイヤが意図しなくとも)カーソルが移動してしまうからである。なお、この問題は、入力開始直後や入力終了直前において特に問題となるが、タッチ入力中であれば常に生じる可能性のある問題である。
【0072】
図3を例にとって具体的に説明すると、プレイヤが“A”を入力しようとして、“A”のキーを指し示す位置にカーソル33を移動させたとする。プレイヤはさらに、当該“A”のキーを選択するためにタッチパッド7を押下する。このとき、タッチパッド7を押下したためにプレイヤの指とタッチパッド7との接触面積(入力領域の半径)が大きくなる。これによって、入力領域の中心位置、すなわち、入力領域の位置が変化してしまうので、カーソル33が移動してしまうことがある。例えば、カーソル33が下方向に移動してしまい、“Z”のキーを指し示すような場合がある。この場合、タッチパッド7が押下されたことをスイッチが検出した時点ではカーソル33が“Z”のキーを指し示している結果、“Z”の文字が入力されてしまう。つまり、プレイヤの意図しない操作が行われてしまうことになる。
【0073】
そこで、本実施形態では、入力領域に追従して変化する仮想領域を設定し、仮想領域の位置を用いてカーソルの移動操作を行っている。図4〜図11に示したように、入力領域の半径の変化が大きい場合であっても仮想領域の半径の変化は緩和される。また、仮想領域の位置は入力領域との位置関係に基づいて決定され、入力領域の位置が変化したことに応じて仮想領域が移動するわけではない。したがって、入力領域の半径が大きく変化する場合であっても、仮想領域は移動しないか、移動するとしても入力領域の位置の移動に比べて移動量を緩和することができる。これによって、タッチパッド7を指で操作する場合において特に入力開始直後や入力終了直前に生じる、プレイヤが意図しない操作が行われるという問題を防止することができる。
【0074】
なお、入力面積が変化することは、操作者が入力面から指を離そうとした場合や操作者が入力面に指を接触させようとした場合に限らず、入力面と指とを接触させたまま入力面上で指を移動させようとした場合にも起こりうる。例えば、入力面上で指を左から右に移動させる場合、プレイヤは左からまっすぐ右に指を移動させているつもりでも、移動中に入力面積が変化する結果、入力領域の中心位置は上下方向に振れていることがある。このような場合、もし入力領域の位置に基づいてカーソルを移動させるとすると、カーソルは、左から右に移動するだけでなく、上下方向に振れて移動することになり、プレイヤの意図しない操作が行われてしまう。このような場合にも、本実施形態のように仮想領域に基づいてカーソルを移動させることによって、プレイヤの意図しない操作が行われることを防止することができる。
【0075】
次に、ゲームプログラムを実行することによってゲーム装置2において行われるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる主なデータについて図12を用いて説明する。図12は、ゲーム装置2のメインメモリ17に記憶される主なデータを示す図である。図12に示すように、メインメモリ17には、入力座標データ51、入力面積データ52、入力領域半径データ53、仮想領域座標データ54、仮想領域半径データ55、領域間ベクトルデータ56、移動量データ57、現在タッチ座標データ58、前タッチ座標データ59、追従度データ60、およびタッチフラグデータ61等が記憶される。なお、メインメモリ17には、図12に示すデータの他、画面に表示されるオブジェクト(図3に示したキーボード32)に関するデータ(オブジェクトの画像データ等)等、ゲーム処理に必要なデータが記憶される。
【0076】
入力座標データ51は、タッチパッド7によって検出される上記入力位置の座標を示すデータである。入力面積データ52は、タッチパッド7によって検出される上記入力面積を示すデータである。CPU11は、タッチパッド7によって検出される入力位置および入力面積を示すデータをコントローラ5を介して毎フレーム取得し、取得したデータを入力座標データ51および入力面積データ52としてメインメモリ17に記憶させる。以下では、入力面上における入力位置の座標を(Ipx,Ipy)と表し、入力面積をIsと表す。
【0077】
入力領域半径データ53は、円形領域として取り扱われる入力領域の半径を示すデータである。入力領域の半径は上記入力面積から算出される。以下では、入力領域の半径をIrと表す。
【0078】
仮想領域座標データ54は、仮想領域の位置を表す座標を示すデータである。また、仮想領域半径データ55は、仮想領域の半径を示すデータである。これらのデータは、タッチ入力が検出されている間は毎フレーム更新される。また、タッチ入力が検出されないフレームでは、これらのデータはメインメモリ17に記憶されない。以下では、仮想領域の位置の座標を(Vpx,Vpy)と表し、仮想領域の半径をVrと表す。
【0079】
領域間ベクトルデータ56は、入力領域の位置を始点とし仮想領域の位置を終点とする2次元のベクトル(領域間ベクトル)を示すデータである。以下では、領域間ベクトルを(Lx,Ly)と表す。移動量データ57は、仮想領域を1フレーム当たりに移動させる移動量を示すデータである。以下では、移動量をAと表す。
【0080】
現在タッチ座標データ58は、プレイヤがタッチ入力を行った位置としてゲーム装置2において取り扱われる位置の座標を示すデータである。以下では、この座標を「タッチ座標」と呼ぶ。具体的には、タッチ座標は、現在の仮想領域の座標である。ゲーム装置2は、タッチ座標に基づいてゲーム処理(本実施形態では、カーソルを移動させる処理)を実行する。現在タッチ座標データ58は、現在のタッチ座標を示すデータであり、仮想領域座標データ54と同様、タッチ入力が検出されている間は毎フレーム更新される。前タッチ座標データ59は、前回のタッチ座標を示すデータである。すなわち、ゲーム装置2において新たなタッチ座標が算出されると、算出されたタッチ座標を示すデータが現在タッチ座標データ58としてメインメモリ17に更新して記憶され、更新前の現在タッチ座標データ58は前タッチ座標データ59としてメインメモリ17に記憶される。
【0081】
追従度データ60は、追従度を示すデータである。追従度とは、仮想領域が入力領域に追従する度合いを示す指標である。ここでは、追従度Sは、0<S<1の範囲で設定される。追従度Sの値を大きくすると、入力領域に対する仮想領域の追従性を高くすることができ、追従度Sの値を小さくすると、入力領域に対する仮想領域の追従性を低くすることができる。なお、追従度Sの値は、ゲームプログラムにおいて予め設定されている値をゲーム装置2が読み込んでメインメモリ17に記憶させるようにしてもよいし、ゲーム状況やプレイヤによる指示に応じて値が適宜設定されるようにしてもよい。
【0082】
タッチフラグデータ61は、タッチ入力が現在行われているか否かを表すフラグを示すデータである。具体的には、タッチパッド7に対する入力がある場合、フラグの値は“1”に設定され、タッチパッド7に対する入力がない場合、フラグの値は“0”に設定される。
【0083】
次に、ゲームプログラムを実行することによってゲーム装置2において行われるゲーム処理の詳細を、図13〜図15を用いて説明する。図13は、ゲーム装置2において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置2の電源が投入されると、ゲーム装置2のCPU11は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ17等の各ユニットが初期化される。そして、光ディスク3に記憶されたゲームプログラムがメインメモリ17に読み込まれ、CPU11によって当該ゲームプログラムの実行が開始される。図13に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図13〜図15に示すフローチャートにおいては、ゲーム処理のうち、タッチパッド7への入力に基づいて上記カーソルを移動する処理について詳細に示し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。
【0084】
図13のステップS1において、まず、初期処理が実行される。具体的には、上記追従度Sの値を示す追従度データ60がメインメモリ17に記憶される。さらにステップS1においては、キーボード32、カーソル33および文字表示領域34がテレビ6の画面に表示される(図3参照)。ステップS1の初期処理の後にゲームが開始され、以降のステップS2〜S12の処理ループが1フレーム毎に繰り返されることによってゲームが進行していく。
【0085】
ステップS2において、タッチ座標算出処理が実行される。タッチ座標算出処理においては、プレイヤによるタッチ入力に基づいてタッチ座標が算出される。以下、図14および図15を用いてタッチ座標算出処理の詳細を説明する。
【0086】
図14および図15は、図13に示すタッチ座標算出処理(S2)の詳細な処理の流れを示すフローチャートである。出力ベクトル算出処理においては、まずステップS11において、タッチパッド7に対する入力があったか否かが判定される。具体的には、CPU11は、コントローラ5から出力される操作データを読み込み、上記入力位置および入力面積を示すデータが操作データに含まれているか否かを判定する。操作データにこれらのデータが含まれている場合、タッチパッド7に対する入力があると判定されてステップS13の処理が行われる。一方、操作データにこれらのデータが含まれておらず、タッチパッド7に対する入力がないことを示すデータが操作データに含まれている場合、タッチパッド7に対する入力がないと判定されてステップS12の処理が行われる。
【0087】
ステップS12においてはタッチフラグがオフに設定される。すなわち、CPU11は、メインメモリ17に記憶されているタッチフラグデータ61の値を“0”に設定する。ステップS12の後、CPU11はタッチ座標算出処理を終了する。すなわち、タッチ入力がない場合にはタッチ座標は算出されない。
【0088】
一方、ステップS13においては、タッチパッド7の入力位置および入力面積が取得される。具体的には、CPU22は、ステップS11で読み込んだ操作データに含まれている入力位置の座標および入力面積を示すデータを、入力座標データ51および入力面積データ52としてメインメモリ17に記憶する。続くステップS14において、ステップS13で取得された入力面積に基づいて入力領域の半径を算出する。入力領域の半径は、入力領域の形状を円形とし、当該入力面積を有する円形領域の半径を算出することによって得られる。算出された半径を示すデータは、入力領域半径データ53としてメインメモリ17に記憶される。
【0089】
ステップS15においては、ステップS11で検出されたタッチ入力が最初のタッチ入力であるか否かが判定される。ここで、最初のタッチ入力とは、前回のフレームでタッチ入力が検出されなかった場合に今回のフレームで検出されたタッチ入力である。ステップS15の判定は、具体的には、メインメモリ17に記憶されているタッチフラグデータ61を参照することによって行われる。すなわち、タッチフラグデータ61により示される値が“0”である場合、ステップS11で検出されたタッチ入力が最初のタッチ入力であると判定され、タッチフラグデータ61により示される値が“1”である場合、ステップS11で検出されたタッチ入力が最初のタッチ入力でないと判定される。ステップS11で検出されたタッチ入力が最初のタッチ入力であると判定される場合、ステップS16およびS17の処理が実行される。一方、ステップS11で検出されたタッチ入力が最初のタッチ入力でないと判定される場合、ステップS16およびS17の処理がスキップされてステップS21の処理が実行される。
【0090】
ステップS16においては、タッチフラグがオンに設定される。すなわち、CPU11は、メインメモリ17に記憶されているタッチフラグデータ61の値を“1”に設定する。続くステップS17において、仮想領域の座標および半径の値が初期化される。具体的には、仮想領域の座標(Vpx,Vpy)は、入力座標(Ipx,Ipy)に基づいて決定される。すなわち、CPU11は、メインメモリ17に記憶されている入力座標データ51を参照して、Vpx=Ipx、かつ、Vpy=Ipyとなるように仮想領域の座標を決定する。また、仮想領域の半径Vrは、Vr=0と決定される。以上のように決定された仮想領域の座標および半径を示すデータは、仮想領域座標データ54および仮想領域半径データ55としてメインメモリ17に記憶される。ステップS17の次にステップS21の処理が実行される。
【0091】
ステップS21においては、仮想領域の半径が、入力領域の半径に近づくように変更される。仮想領域の半径Vrは、変更前の仮想領域の半径(Vr’とする)と、入力領域の半径Irと、追従度Sとに基づいて算出される。CPU11は、メインメモリ17に記憶されている入力領域半径データ53、仮想領域半径データ55および追従度データ60を参照して、次の式(1)に従って仮想領域の半径Vrを算出する。
Vr=Vr’+(Ir−Vr’)×S …(1)
上式(1)によって得られた変更後の仮想領域の半径Vrを示すデータは、仮想領域半径データ55としてメインメモリ17に更新して記憶される。
【0092】
続くステップS22において、領域間ベクトルが算出される。上述したように、領域間ベクトルは、入力領域の位置を始点とし仮想領域の位置を終点とするベクトルである。領域間ベクトル(Lx,Ly)は、入力領域の位置座標(すなわち、入力座標)(Ipx,Ipy)と、仮想領域の位置座標(Vpx,Vpy)とに基づいて算出される。CPU11は、メインメモリ17に記憶されている入力座標データ51および仮想領域座標データ54を参照して、次の式(2)に従って領域間ベクトル(Lx,Ly)を算出する。
Lx=Ipx−Vpx
Ly=Ipy−Vpy …(2)
上式(2)によって得られた領域間ベクトル(Lx,Ly)を示すデータは、領域間ベクトルデータ56としてメインメモリ17に更新して記憶される。なお、ステップS22において、CPU11は、上式(2)によって得られた領域間ベクトル(Lx,Ly)の大きさをさらに算出する。
【0093】
ステップS23においては、ステップS22で算出された領域間ベクトル(Lx,Ly)の大きさが0であるか否かが判定される。ステップS23の判定において、領域間ベクトルの大きさが0である場合、後述するステップS24〜S28の処理がスキップされて、ステップS29の処理が実行される。領域間ベクトルの大きさが0である場合とは、入力領域の位置と仮想領域の位置とが同じ位置である場合である。この場合、仮想領域を移動させる必要はないので、仮想領域を移動させるための処理であるステップS24〜S28の処理がスキップされるのである。一方、ステップS23の判定において、領域間ベクトルの大きさが0である場合、ステップS24の処理が実行される。
【0094】
ステップS24においては、仮想領域の半径Vrと入力領域の半径Irとが比較され、仮想領域の半径Vrが入力領域の半径Irよりも大きいか否かが判定される。CPU11は、メインメモリ17に記憶されている入力領域半径データ53および仮想領域半径データ55を参照して、Vr>Irであるか否かを判定する。上述したように、仮想領域を移動させるべき移動量の算出方法は、仮想領域の半径が入力領域よりも大きい場合と小さい場合とで異なっている。ステップS24は、上記移動量の算出方法を決定するための処理である。ステップS24の判定の結果、仮想領域の半径Vrが入力領域の半径Irよりも大きい場合、ステップS25の処理が実行される。一方、仮想領域の半径Vrが入力領域の半径Ir以下である場合、ステップS26の処理が実行される。
【0095】
ステップS25においては、仮想領域の移動量Aが算出される。ステップS25では、移動量Aは、入力領域が仮想領域からはみ出した部分の距離として算出される。つまり、入力領域が仮想領域からはみ出した分だけ仮想領域が移動される。換言すれば、仮想領域は、入力領域の全体が仮想領域の内側に含まれるように移動される。具体的には、CPU11は、入力領域が仮想領域からはみ出した部分の距離(移動量A)を、入力領域半径データ53、仮想領域半径データ55、および領域間ベクトルデータ56を参照して、式(3)に従って算出する。
A=(L+Ir)−Vr …(3)
上式(3)において、Lは、領域間ベクトルの大きさである。式(3)の結果、入力領域が仮想領域に接しないで仮想領域の内側に含まれる場合、移動量Aの値は負になる。入力領域が仮想領域に対して内側で接している場合、移動量Aの値は0になる。入力領域が仮想領域に対して2点で接している場合、入力領域が仮想領域に対して外側で接している場合、または、入力領域が仮想領域に接しないで外側に位置する場合、移動量Aの値は正になる。上式(3)によって得られた移動量Aを示すデータは、移動量データ57としてメインメモリ17に更新して記憶される。ステップS25の次にステップS27の処理が実行される。
【0096】
一方、ステップS26においてもステップS25と同様、仮想領域の移動量Aが算出される。ここで、ステップS26では、移動量Aは、仮想領域が入力領域からはみ出した部分の距離として算出される。つまり、仮想領域が入力領域からはみ出した分だけ仮想領域が移動される。換言すれば、仮想領域は、その全体が入力領域の内側に含まれるように移動される。具体的には、CPU11は、仮想領域が入力領域からはみ出した部分の距離(移動量A)を、入力領域半径データ53、仮想領域半径データ55、および領域間ベクトルデータ56を参照して、式(4)に従って算出する。
A=(L+Vr)−Ir …(4)
上式(4)において、Lは、領域間ベクトルの大きさである。式(4)の結果、仮想領域が入力領域に接しないで入力領域の内側に含まれる場合、移動量Aの値は負になる。仮想領域が入力領域に対して内側で接している場合、移動量Aの値は0になる。仮想領域が入力領域に対して2点で接している場合、仮想領域が入力領域に対して外側で接している場合、または、仮想領域が入力領域に接しないで外側に位置する場合、移動量Aの値は正になる。上式(4)によって得られた移動量Aを示すデータは、移動量データ57としてメインメモリ17に更新して記憶される。ステップS26の次にステップS27の処理が実行される。
【0097】
ステップS27においては、ステップS25またはS26で算出された移動量Aの値が正であるか否かが判定される。すなわち、CPU11は、メインメモリ17に記憶されている移動量データ57により示される移動量AがA>0であるか否かを判定する。ここで、A≦0であることは、入力領域および仮想領域のうちの小さい方の一方が他方の内側に含まれていることを意味しており、このとき、仮想領域を移動させる必要はない。ステップS27の処理は、仮想領域を移動させる必要があるか否かを判定するための処理である。ステップS27の判定において、移動量Aの値が正である場合、仮想領域を移動させる処理であるステップS28の処理が実行される。一方、移動量Aの値が正でない(すなわち、移動量Aが0または負である)場合、ステップS28の処理がスキップされてステップS29の処理が実行される。
【0098】
ステップS28においては、ステップS25またはS26で算出された移動量Aに基づいて仮想領域の位置が移動される。移動後の仮想領域の位置座標(Vpx,Vpy)は、移動前の仮想領域の位置座標(ステップS28の処理前の時点における仮想領域座標データ54により示される座標)(Vpx’,Vpy’)と、移動量Aと、領域間ベクトル(Lx,Ly)とに基づいて算出される。具体的には、CPU11は、メインメモリ17に記憶されている仮想領域座標データ54、領域間ベクトルデータ56、および移動量データ57を参照して、次の式(5)に従って移動後の仮想領域の位置を算出する。
Vpx=Vpx’+Lx/L×A
Vpy=Vpy’+Ly/L×A …(5)
上式(5)において、Lは、領域間ベクトルの大きさである。式(5)によって、仮想領域は、仮想領域の中心位置から入力領域の中心位置への方向に移動量Aの長さだけ移動される。上式(5)によって得られた仮想領域の位置座標(Vpx,Vpy)を示すデータは、仮想領域座標データ54としてメインメモリ17に更新して記憶される。ステップS28の次にステップS29の処理が実行される。
【0099】
ステップS29において、仮想領域の位置を表す座標がタッチ座標に設定される。すなわち、CPU11は、メインメモリ17に記憶されている仮想領域座標データ54により示される座標値を、現在タッチ座標データ58としてメインメモリ17に更新して記憶する。このとき、更新前における現在タッチ座標データ58により示される座標値は、前タッチ座標データ59としてメインメモリ17に更新して記憶される。以上によって、プレイヤによるタッチ入力に基づいて、プレイヤが指定しようとしたと判断される位置座標(すなわちタッチ座標)が算出される。ステップS29の処理が終了すると、CPU11はタッチ座標算出処理を終了する。
【0100】
図13の説明に戻り、ステップS2の次のステップS3において、ステップS2で算出されたタッチ座標に基づいて画面上におけるカーソルの位置が決定される。CPU11は、まず、現在のタッチ座標の位置を終点とし、前回のタッチ座標の位置を始点とするベクトルを算出する。このベクトルは、メインメモリ17に記憶されている現在タッチ座標データ58により示される座標と、前タッチ座標データ59により示される座標とを用いて算出することができる。さらに、CPU11は、上記ベクトルに基づいて画面上のカーソルを移動させる。CPU11は、カーソルの移動前の位置を基点とし、上記ベクトルの向きに応じた画面上の方向へ、上記ベクトルの大きさに応じた長さだけカーソルを移動させる。以上のステップS3によって、移動後のカーソルの位置が決定されることによってカーソルを移動させることができる。なお、タッチ入力が行われていない場合、すなわち、タッチフラグがオフに設定されている場合、CPU11はカーソルを移動させない。また、カーソルを移動させる方法は上記に限らず、例えば、タッチパッド7の入力面上の位置と画面上の位置とを対応付けておき、ステップS3で算出されたタッチ座標の位置に対応する画面上の位置にカーソルを移動するようにしてもよい。
【0101】
ステップS4においては、タッチパッド7の裏面に設けられたスイッチが押下されたか否かが判定される。なお、ステップS11で読み込んだ操作データには、上記スイッチが押下されたか否かを示すデータが含まれている。CPU11は、当該データに基づいて、スイッチが押下されたか否かを判定する。判定の結果、スイッチが押下されたと判定される場合、ステップS5の処理が実行される。一方、スイッチが押下されていないと判定される場合、ステップS5の処理がスキップされてステップS6の処理が実行される。
【0102】
ステップS5においては、ステップS3で位置が決定されたカーソルによって指定されるキーが特定される。この結果、特定されたキーに対応する文字が入力されることになる。
【0103】
ステップS6においては、表示処理が実行される。具体的には、キーボード32や文字表示領域34の画像とともに、ステップS3で決定された位置にカーソルがテレビ6の画面に表示される(図3参照)。また、ステップS5が実行された場合には、上記キーボードおよびカーソルが表示されるとともに、ステップS5で決定された文字が文字表示領域34に表示される。ステップS6の次にステップS7が実行される。
【0104】
ステップS7において、ゲームを終了するか否かが判定される。ゲームを終了するか否かの判定は、例えば、ゲームを終了するための所定の操作がプレイヤによって行われたか否かによって行うことができる。ステップS7の判定において、ゲームを終了すると判定される場合、CPU11は図13に示すゲーム処理を終了する。一方、ゲームを終了しないと判定される場合、ステップS2の処理が再度実行される。以降、ステップS7においてゲームを終了すると判定されるまでステップS2〜S7の処理ループが繰り返し実行される。
【0105】
以上のように本実施形態によれば、ゲーム装置2は、入力領域とは別に仮想領域を設定し、入力領域に追従するように仮想領域を変化させる。そして、仮想領域に基づいてプレイヤの操作内容を判断する。これによって、プレイヤが意図しない入力領域の変化に起因する、プレイヤの意図しない操作が行われることを防止することができる。
【0106】
なお、第1の実施形態においては、仮想領域の位置を用いて、カーソル33の画面上の位置を移動させる処理を実行する場合を例にとって説明した。ここで、他の実施形態においては、ゲーム装置2は、仮想領域に基づいて所定の処理を実行するものであればよい。所定の処理は、仮想領域の位置に限らず、仮想領域の形状および/または面積に基づいてその処理内容が決定されるものであってもよい。
【0107】
(第2の実施形態)
以下、本発明の第2の実施形態について説明する。第2の実施形態では、タッチパッド7の入力面の裏面に設けられた上記スイッチが押下される際に入力領域が変化することに起因する、プレイヤが意図しない操作を防止することを目的とする。すなわち、スイッチが押下される際には、入力面を単にタッチしている場合よりも入力面が強く押下されるので、入力領域が大きくなり、その結果入力位置も変化する。したがって、入力位置に基づいてカーソルを移動させる場合には、スイッチが押下されることによってカーソルが(プレイヤが意図しないにもかかわらず)移動してしまい、その結果、プレイヤが意図しない操作が行われてしまう。第2の実施形態は、スイッチが押下される際に、カーソルが意図しない方向へ移動してしまう問題を解決するものである。
【0108】
第2の実施形態に係るゲーム装置は、図1および図2に示すゲーム装置2と同じであるので、ゲーム装置2に関する詳細な説明は省略する。第2の実施形態においては、ゲーム装置2において実行されるゲーム処理が第1の実施形態とは異なる。以下、ゲーム処理を中心に第2の実施形態を説明する。
【0109】
図16は、第2の実施形態に係るゲーム装置10のメインメモリ17に記憶される主なデータを示す図である。図16に示すように、メインメモリ17には、入力座標データ51、現在タッチ座標データ58、前タッチ座標データ59、およびカーソル座標データ群71が記憶される。なお、図16においては、図12に示すデータと同じデータについて図12と同じ参照符号を付し、詳細な説明を省略する。
【0110】
カーソル座標データ群71は、カーソルの画面上における位置を表す座標(カーソル座標)を示すデータ(カーソル座標データ)の集合である。第2の実施形態においては、入力座標に基づいてカーソル座標を算出する処理が1フレーム毎に実行される。これによって、プレイヤは、タッチパッド7を用いてカーソルを移動させることができる。ゲーム装置2は、カーソル座標が算出されると、算出された順にカーソル座標データをメインメモリ17に追加して記憶する。タッチ入力が連続して検出される間は新たなカーソル座標が算出されるので、タッチ入力が連続して検出される間は、新たなカーソル座標データがカーソル座標データ群71に追加されていく。カーソル座標データ群71の内容は、タッチオフされたときにリセットされる。したがって、タッチオンが行われて最初に算出されたカーソル座標を示すカーソル座標データが第1カーソル座標データ71aとしてメインメモリ17に記憶され、2番目に算出されたカーソル座標を示すカーソル座標データが第2カーソル座標データ71bとしてメインメモリ17に記憶される。なお、ここでは、第n(nは1以上の整数)番目に算出されたカーソル座標を示すカーソル座標データを「第nカーソル座標データ」とする。
【0111】
次に、第2の実施形態におけるゲーム処理の詳細を、図17を用いて説明する。図17は、第2の実施形態に係るゲーム装置2において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置2の電源が投入されてから、図17に示すゲーム処理が開始されるまでの動作は、第1の実施形態と同様である。なお、図17において、図13に示すステップと同じ処理を示すステップについては図13と同じステップ番号を付し、詳細な説明は省略する。
【0112】
図17においては、まず、ステップS1において、初期処理が実行される。この初期処理は第1の実施形態における初期処理と同様の処理である。ステップS1の初期処理の後にゲームが開始され、以降のステップS51〜S7の処理ループが1フレーム毎に繰り返されることによってゲームが進行していく。
【0113】
ステップS51においては、タッチパッド7およびスイッチに関する入力データが取得される。第2の実施形態では、タッチパッド7に関する入力データには、上記入力座標を示すデータが含まれており、入力面積を示すデータは含まれていなくてもよい。また、スイッチに関する入力データは、スイッチが押下されたか否かを示すデータである。CPU11は、タッチパッド7およびスイッチに関する入力データをコントローラ5から読み込んで、メインメモリ17に記憶する。入力座標を示すデータは、入力座標データ51としてメインメモリ17に記憶される。ステップS51の次にステップS52の処理が実行される。
【0114】
ステップS52においては、ステップS51で取得された入力座標データに基づいてタッチ座標が算出される。タッチ座標の具体的な算出方法はどのような方法であってもよく、例えば、上記第1の実施形態におけるタッチ座標算出処理(ステップS3)と同様の方法で算出してもよいし、入力座標データにより示される入力座標をそのままタッチ座標とするようにしてもよい。ステップS52の次にステップS3の処理が実行される。
【0115】
ステップS3においては、ステップS2で算出されたタッチ座標に基づいて画面上におけるカーソルの位置が算出される。ステップS3の処理は第1の実施形態と同様である。ステップS3によって算出されたカーソルの位置を表すカーソル座標を示すデータ(カーソル座標データ)は、メインメモリ17に追加して記憶される。
【0116】
ステップS3の次に実行されるステップS4の判定処理は、第1の実施形態と同様である。第2の実施形態においては、ステップS4における判定結果が肯定であった場合、ステップS53およびS54の処理が実行される。一方、ステップS4における判定結果が否定であった場合、ステップS53およびS54の処理がスキップされてステップS6の処理が実行される。
【0117】
ステップS53においては、予め定められた所定数だけ前のフレームにおけるカーソル位置が特定される。具体的には、CPU11は、メインメモリ17に記憶されているカーソル座標データ群71を参照して、現在のフレームで算出されたカーソル座標データから所定数前に算出されたカーソル座標データを特定する。これによって、特定されたカーソル座標データにより示されるカーソル座標により表される位置が特定される。例えば、第iカーソル座標データ(iは1以上の整数)が最新のカーソル座標データとしてメインメモリ17に記憶されている場合を具体例として考える。上記所定数をj(jは1以上の整数)とすると、CPU11は、第(i−j)カーソル座標データにより示されるカーソル座標を特定する。以上のようにして、予め定められた所定数だけ前のフレームにおけるカーソル位置が特定することができる。
【0118】
なお、上記具体例において、j≧iの場合、該当するカーソル座標データが存在しないことになる。これを解消するために、例えば、j≧iの場合には、ステップS53で特定すべきカーソル位置を、第1カーソル座標データにより示されるカーソル座標により示されるカーソル位置としてもよい。また、例えば、所定数を、j≧iとなることが現実的にはあり得ないような値に設定してもよい。つまり、タッチパッド7にプレイヤの指が触れてからスイッチが押下されるまでに最低限要すると考えられる時間を想定し、所定数jにフレーム時間を積算した時間が当該時間よりも短い時間となるように所定数jを設定してもよい。
【0119】
ステップS53の次のステップS54においては、カーソルによって指定されるキーが特定される。具体的には、CPU11は、ステップS53で特定されたカーソル位置にカーソルがあるとした場合に当該カーソルによって指定されるキーを特定する。特定されるキーは、現在のカーソルによって指定されるキーではなく、所定数前のフレームにおけるカーソルによって指定されるキーである。これによって、スイッチの押下によってカーソルがプレイヤの意図しない移動を行う前にカーソルが指定していたキーを特定することができる。
【0120】
なお、ステップS6およびS7における処理は、第1の実施形態と同様であるので説明を省略する。
【0121】
以上のように、第2の実施形態によれば、スイッチが押下された時点におけるカーソルではなく、スイッチが押下された時点よりも少し前の時点(正確には、所定数フレームだけ前の時点)におけるカーソルによって指定されるキーが、文字を入力すべきキーとして選択される。タッチパッド7を用いてカーソルを移動させることによってキーを選択する場合、プレイヤは、まずカーソルが所望のキーを指定するようにカーソルを移動させ、次に、スイッチを押下すると考えられる。つまり、スイッチを押下する直前には、カーソルは正しいキー(所望のキー)を指定していると考えられる。したがって、本実施形態によれば、スイッチを押下する際にカーソルがプレイヤの意図しない移動を行ったとしても、スイッチを押下する前にカーソルが指定していたキーを選択することができるので、プレイヤは所望のキーを正確に選択することができる。
【0122】
なお、第2の実施形態においては、カーソル座標データを保存しておき、スイッチが押下されたことが検出された場合、所定数フレーム前の時点におけるカーソル座標データを用いて、プレイヤが意図しているカーソルの位置を特定するようにした。ここで、他の実施形態においては、カーソル座標データを保存する代わりに、入力座標またはタッチ座標を保存するようにしてもよい。このとき、スイッチが押下されたことが検出された場合、ゲーム装置は、所定数フレーム前の時点における入力座標またはタッチ座標を用いて、プレイヤが意図しているカーソルの位置を特定すればよい。
【0123】
また、第2の実施形態においては、ステップS53における所定数は、予め定められているものとしたが、他の実施形態においては、タッチパッドに対する入力状態等に基づいて当該所定数を決定するようにしてもよい。例えば、タッチパッドが入力面積を検出することが可能な場合には、ゲーム装置は、入力面積を示すデータを毎フレーム記憶しておく。さらに、前回のフレームにおける入力面積と今回のフレームにおける入力面積との差が、予め定められた所定値以上であるか否かを判定する。判定の結果、当該差が当該所定値以上となるフレーム(またはその前のフレーム)について、カーソル座標(入力座標またはタッチ座標でもよい)を記憶しておく。スイッチが押下されたことが検出された場合には、当該フレームにおけるカーソル座標を用いて、プレイヤが意図しているカーソルの位置を特定する。以上によれば、入力面積が大きく変化したフレーム、すなわち、プレイヤがスイッチを押下しようとしたフレームを検知することができ、このフレームにおけるカーソル位置を特定することができるので、プレイヤが意図しているカーソルの位置を正確に特定することができる。
【0124】
なお、第2の実施形態は、上述したようなタッチパッドと押下スイッチとが組み合わされた入力装置に限らず、2次元の値を入力することが可能な操作部を備えるとともに、その操作部を押下したことを検知することが可能な入力装置に適用することができる。例えば、スティックキーと押下スイッチとが組み合わされた入力装置についても適用することが可能である。
【0125】
従来より、2次元の入力を行うことが可能であるとともに押下することが可能なスティックキーを備えるパーソナルコンピュータがある。ユーザは、このスティックキーを前後方向および左右方向に傾倒することによって、傾倒方向に応じた2次元値の入力を行うことが可能である。さらに、このスティックキーを押下することによって、オン/オフの入力を行うことが可能である。このようなスティックキーを用いて、図3に示した例における文字入力操作を行うことが可能である。すなわち、スティックキーの傾倒に応じた2次元値を用いて画面上のカーソルを移動させ、スティックキーが押下されたことに応じて、カーソルで指定されるキーに対応する文字の入力を行うことが可能である。
【0126】
上記のようなスティックキーを操作する場合にも、スティックキーを押下する際にスティックキーが若干傾倒してしまうことがある。このとき、プレイヤが意図しないにもかかわらず、2次元の入力が行われてしまうことになる。具体的には、プレイヤは、スティックキーを傾倒させることによって所望のキーを指定する位置にカーソルを移動させた後、スティックキーを押下することによって当該所望のキーを選択する操作を行う。しかし、スティックキーを押下する際にスティックキーが若干傾倒してしまうことによってカーソルが移動し、スティックキーの押下が検出された時点では所望のキーとは別のキーをカーソルが指定してしまうことがある。
【0127】
ここで、上記のようなスティックキーを入力装置とする情報処理装置において第2の実施形態に係るプログラムを用いることによって、プレイヤは、スティックキーを押下する前においてカーソルによって指定されたキーを選択することができる。したがって、第2の実施形態によれば、上記のようなスティックキーを入力装置とする情報処理装置においても、所望のキーを正確に選択することができる。
【0128】
また、上記第1および第2の実施形態においては、コントローラ5から出力された入力データ(入力座標データおよび入力面積)を受け取ったゲーム装置2が、カーソルを移動させるために用いるタッチ座標ベクトルを算出する処理を実行した。ここで、他の実施形態では、コントローラ5側でタッチ座標ベクトルを算出する処理を実行するようにしてもよい。すなわち、コントローラ5は、入力領域を示すデータを記憶し、入力領域に基づいて仮想領域を算出し、算出した仮想領域を示すデータ(仮想領域の位置、大きさ、形状のうちの少なくとも1つを示すデータ)を生成するようにしてもよい。そして、コントローラ5は、生成されたデータを操作データとしてゲーム装置2に送信する。ゲーム装置2は、受信した上記操作データに基づいて所定のゲーム処理(例えば、カーソルを移動させる処理)を行う。以上の構成によれば、ゲーム装置2は、操作データに応じたゲーム処理を行うだけであるので、従来のゲーム装置をそのまま適用することができる。すなわち、上記コントローラを従来のゲーム装置に接続することによって、図1と同等のゲームシステムを実現することができる。
【産業上の利用可能性】
【0129】
本発明は、簡易な構成で、ポインティングデバイスの操作性を向上すること等を目的として、ゲーム装置等の情報処理装置において利用することが可能である。
【図面の簡単な説明】
【0130】
【図1】第1の実施形態に係る情報処理装置の一例であるゲームシステムの構成を示す外観図
【図2】図1に示すゲームシステムのブロック図
【図3】第1の実施形態における表示画面の一例を示す図
【図4】タッチ入力が開始された時刻t0における入力の様子を示す図
【図5】上記時刻t0からフレーム時間tが経過した時点(時刻:t0+t)における入力の様子を示す図
【図6】図5における時刻(t0+t)からフレーム時間tが経過した時点(時刻:t0+2t)における入力の様子を示す図
【図7】図6に示す状態から仮想領域42の位置を補正した後の入力の様子を示す図
【図8】タッチ入力が行われている途中のある時刻(t1)における入力の様子を示す図
【図9】時刻t1からフレーム時間tが経過した時点(時刻:t1+t)における入力の様子を示す図
【図10】図9における時刻(t1+t)からフレーム時間tが経過した時点(時刻:t1+2t)における入力の様子を示す図
【図11】図10に示す状態から仮想領域42の位置を補正した後の入力の様子を示す図
【図12】ゲーム装置2のメインメモリ17に記憶される主なデータを示す図
【図13】第1の実施形態に係るゲーム装置2において実行されるゲーム処理の流れを示すフローチャート
【図14】図13に示すタッチ座標算出処理の詳細な処理の流れを示すフローチャート
【図15】図13に示すタッチ座標算出処理の詳細な処理の流れを示すフローチャート
【図16】第2の実施形態に係るゲーム装置10のメインメモリ17に記憶される主なデータを示す図
【図17】第2の実施形態に係るゲーム装置2において実行されるゲーム処理の流れを示すフローチャート
【図18】入力面に対する入力が行われたときの様子を示す従来図
【図19】入力面に対する入力が行われたときの様子を示す従来図
【符号の説明】
【0131】
1 ゲームシステム
2 ゲーム装置
3 光ディスク
4 メモリカード
5 コントローラ
6 テレビ
7a,7b タッチパッド
11 CPU
17 メインメモリ
41 入力領域
42 仮想領域
【特許請求の範囲】
【請求項1】
入力面上において入力が行われている入力領域を検出する入力装置を備える情報処理装置のコンピュータに、
前記入力装置の検出結果に基づいて前記入力領域を示す入力領域データを繰り返し取得して前記情報処理装置のメモリに記憶する記憶ステップと、
前記メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する仮想領域決定ステップと、
前記仮想領域決定ステップにおいて決定された仮想領域に応じた内容で所定の第1処理を実行する第1処理実行ステップとを実行させる、入力データ処理プログラム。
【請求項2】
前記第1処理実行ステップにおいては、前記仮想領域の中心または重心の位置が当該仮想領域の位置として算出され、当該仮想領域の位置に応じた内容で前記第1処理が実行される、請求項1に記載の入力データ処理プログラム。
【請求項3】
前記仮想領域決定ステップにおいては、前記入力領域および前記仮想領域のうちの小さい方の一方が他方の内側に位置するように、当該仮想領域の位置が決定される、請求項1に記載の入力データ処理プログラム。
【請求項4】
前記仮想領域決定ステップは、
前記メモリに入力領域データが記憶される度に、前記入力領域の大きさに追従するように仮想領域の大きさを決定する大きさ決定ステップと、
前記大きさ決定ステップで決定された大きさの仮想領域および前記入力領域のうちの小さい方の領域の少なくとも一部が他方の領域の外部に位置するとき、当該小さい方の領域の全部が当該他方の領域の内部に位置するように当該仮想領域の位置を移動する移動ステップとを含む、請求項3に記載の入力データ処理プログラム。
【請求項5】
前記仮想領域は円形の領域であり、
前記仮想領域決定ステップにおいては、前記仮想領域の位置を示す仮想位置データ、および当該仮想領域の半径を示す仮想半径データが前記メモリに記憶され、
前記第1処理実行ステップにおいては、前記メモリに記憶された仮想位置データおよび仮想半径データのうち少なくとも1つに基づいて前記第1処理の内容が決定される、請求項1に記載の入力データ処理プログラム。
【請求項6】
前記入力装置は、前記入力領域の面積と前記入力領域の位置とを示すデータを出力し、
前記記憶ステップは、
前記入力装置から出力されるデータを取得する取得ステップと、
前記取得されたデータにより示される位置を中心とし、当該データにより示される面積を有する円形領域を算出し、当該算出された円形領域を示すデータを前記入力領域データとして記憶する領域算出ステップとを含む、請求項1に記載の入力データ処理プログラム。
【請求項7】
前記記憶ステップにおいては、前記入力装置の検出結果が前記入力面に対する入力がないことを示すとき、前記メモリへ前記入力領域データを記憶する処理が停止される、請求項1に記載の入力データ処理プログラム。
【請求項8】
前記情報処理装置は表示装置を備えており、
前記第1処理実行ステップにおいては、前記表示装置の画面に表示されているオブジェクトの位置を前記仮想領域の位置に基づいて移動させる処理が前記第1処理として実行される、請求項1に記載の入力データ処理プログラム。
【請求項9】
前記入力装置は、前記入力面を押下可能な状態で支持するとともに、前記入力面が押下されたことを検出する押下検出装置を備えており、
前記入力面が押下されたことが検出されたとき、所定の第2処理を実行する第2処理実行ステップを前記コンピュータにさらに実行させる、請求項1に記載の入力データ処理プログラム。
【請求項10】
前記情報処理装置は、表示装置を備えており、
前記第1処理実行ステップにおいては、前記表示装置の画面に表示されているカーソルの位置を前記仮想領域の位置に基づいて移動させる処理が前記第1処理として実行され、
前記第2処理実行ステップにおいては、前記画面に表示されているオブジェクトのうちで前記カーソルによって指定されるオブジェクトを処理対象として前記第2処理が実行される、請求項9に記載の入力データ処理プログラム。
【請求項11】
操作部に対するプレイヤの操作状態を検出して2次元値として出力する第1入力装置と、前記操作部が押下されたことを検出する第2入力装置と、表示装置とを備える情報処理装置のコンピュータに、
複数のオブジェクトと、当該複数のオブジェクトを指定するためのカーソルとを表示装置の画面に表示させる表示制御ステップと、
前記2次元値を示す第1データを前記第1入力装置から繰り返し取得して前記情報処理装置のメモリに記憶する記憶ステップと、
前記操作部が押下されたことを示す第2データを前記第2入力装置から取得する取得ステップと、
前記メモリに第1データが記憶される度に、当該第1データにより示される2次元値に基づいて前記カーソルの位置を決定する位置制御ステップと、
前記第2データが取得されたとき、取得された時点で前記メモリに記憶されている最新の第1データから所定個数前に記憶された第1データに基づいて決定された前記カーソルの位置を特定する前位置特定ステップと、
前記第2データが取得されたとき、前記前位置特定ステップにおいて特定された位置にカーソルがあるとした場合に当該カーソルによって指定されるオブジェクトを処理対象として、前記操作部を押下する操作に対応する処理を実行する処理実行ステップとを実行させる、入力データ処理プログラム。
【請求項12】
前記前位置特定ステップにおいては、前記所定個数は予め定められた数である、請求項11に記載の入力データ処理プログラム。
【請求項13】
前記第1入力装置は、入力面上において入力が行われている入力領域の面積を検出することが可能であり、
前記第1データは、前記2次元値とともに前記入力面積を示し、
前記前位置特定ステップにおいては、ある時点で記憶された第1データにより示される入力面積と、次に記憶された第1データにより示される入力面積との差が所定値以上である場合、当該ある時点で記憶された第1データまたは当該次に記憶された第1データにより示される2次元値に基づいて前記カーソルの位置が特定される、請求項11に記載の入力データ処理プログラム。
【請求項14】
入力面上において入力が行われている入力領域を検出する入力装置を備える情報処理装置であって、
前記入力装置の検出結果に基づいて前記入力領域を示す入力領域データを繰り返し取得して前記情報処理装置のメモリに記憶する記憶制御手段と、
前記メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する仮想領域決定手段と、
前記仮想領域決定手段によって決定された仮想領域に応じた内容で所定の第1処理を実行する第1処理実行手段とを備える、情報処理装置。
【請求項15】
操作部に対するプレイヤの操作状態を検出して2次元値として出力する第1入力装置と、前記操作部が押下されたことを検出する第2入力装置と、表示装置とを備える情報処理装置であって、
複数のオブジェクトと、当該複数のオブジェクトを指定するためのカーソルとを表示装置の画面に表示させる表示制御手段と、
前記2次元値を示す第1データを前記第1入力装置から繰り返し取得して前記情報処理装置のメモリに記憶する記憶制御手段と、
前記操作部が押下されたことを示す第2データを前記第2入力装置から取得する取得手段と、
前記メモリに第1データが記憶される度に、当該第1データにより示される2次元値に基づいて前記カーソルの位置を決定する位置制御手段と、
前記第2データが取得されたとき、取得された時点で前記メモリに記憶されている最新の第1データから所定個数前に記憶された第1データに基づいて決定された前記カーソルの位置を特定する前位置特定手段と、
前記第2データが取得されたとき、前記前位置特定手段によって特定された位置にカーソルがあるとした場合に当該カーソルによって指定されるオブジェクトを処理対象として、前記操作部を押下する操作に対応する処理を実行する処理実行手段とを備える、情報処理装置。
【請求項16】
操作データに応じて所定のデータ処理を実行する情報処理装置に接続可能な入力装置であって、
入力面上において入力が行われている入力領域を繰り返し検出して当該入力領域を示す入力領域データをメモリに記憶する記憶制御手段と、
前記メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する仮想領域決定手段と、
前記仮想領域決定手段によって決定された仮想領域を示すデータを前記操作データとして前記情報処理装置に送信する送信手段とを備える、入力装置。
【請求項1】
入力面上において入力が行われている入力領域を検出する入力装置を備える情報処理装置のコンピュータに、
前記入力装置の検出結果に基づいて前記入力領域を示す入力領域データを繰り返し取得して前記情報処理装置のメモリに記憶する記憶ステップと、
前記メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する仮想領域決定ステップと、
前記仮想領域決定ステップにおいて決定された仮想領域に応じた内容で所定の第1処理を実行する第1処理実行ステップとを実行させる、入力データ処理プログラム。
【請求項2】
前記第1処理実行ステップにおいては、前記仮想領域の中心または重心の位置が当該仮想領域の位置として算出され、当該仮想領域の位置に応じた内容で前記第1処理が実行される、請求項1に記載の入力データ処理プログラム。
【請求項3】
前記仮想領域決定ステップにおいては、前記入力領域および前記仮想領域のうちの小さい方の一方が他方の内側に位置するように、当該仮想領域の位置が決定される、請求項1に記載の入力データ処理プログラム。
【請求項4】
前記仮想領域決定ステップは、
前記メモリに入力領域データが記憶される度に、前記入力領域の大きさに追従するように仮想領域の大きさを決定する大きさ決定ステップと、
前記大きさ決定ステップで決定された大きさの仮想領域および前記入力領域のうちの小さい方の領域の少なくとも一部が他方の領域の外部に位置するとき、当該小さい方の領域の全部が当該他方の領域の内部に位置するように当該仮想領域の位置を移動する移動ステップとを含む、請求項3に記載の入力データ処理プログラム。
【請求項5】
前記仮想領域は円形の領域であり、
前記仮想領域決定ステップにおいては、前記仮想領域の位置を示す仮想位置データ、および当該仮想領域の半径を示す仮想半径データが前記メモリに記憶され、
前記第1処理実行ステップにおいては、前記メモリに記憶された仮想位置データおよび仮想半径データのうち少なくとも1つに基づいて前記第1処理の内容が決定される、請求項1に記載の入力データ処理プログラム。
【請求項6】
前記入力装置は、前記入力領域の面積と前記入力領域の位置とを示すデータを出力し、
前記記憶ステップは、
前記入力装置から出力されるデータを取得する取得ステップと、
前記取得されたデータにより示される位置を中心とし、当該データにより示される面積を有する円形領域を算出し、当該算出された円形領域を示すデータを前記入力領域データとして記憶する領域算出ステップとを含む、請求項1に記載の入力データ処理プログラム。
【請求項7】
前記記憶ステップにおいては、前記入力装置の検出結果が前記入力面に対する入力がないことを示すとき、前記メモリへ前記入力領域データを記憶する処理が停止される、請求項1に記載の入力データ処理プログラム。
【請求項8】
前記情報処理装置は表示装置を備えており、
前記第1処理実行ステップにおいては、前記表示装置の画面に表示されているオブジェクトの位置を前記仮想領域の位置に基づいて移動させる処理が前記第1処理として実行される、請求項1に記載の入力データ処理プログラム。
【請求項9】
前記入力装置は、前記入力面を押下可能な状態で支持するとともに、前記入力面が押下されたことを検出する押下検出装置を備えており、
前記入力面が押下されたことが検出されたとき、所定の第2処理を実行する第2処理実行ステップを前記コンピュータにさらに実行させる、請求項1に記載の入力データ処理プログラム。
【請求項10】
前記情報処理装置は、表示装置を備えており、
前記第1処理実行ステップにおいては、前記表示装置の画面に表示されているカーソルの位置を前記仮想領域の位置に基づいて移動させる処理が前記第1処理として実行され、
前記第2処理実行ステップにおいては、前記画面に表示されているオブジェクトのうちで前記カーソルによって指定されるオブジェクトを処理対象として前記第2処理が実行される、請求項9に記載の入力データ処理プログラム。
【請求項11】
操作部に対するプレイヤの操作状態を検出して2次元値として出力する第1入力装置と、前記操作部が押下されたことを検出する第2入力装置と、表示装置とを備える情報処理装置のコンピュータに、
複数のオブジェクトと、当該複数のオブジェクトを指定するためのカーソルとを表示装置の画面に表示させる表示制御ステップと、
前記2次元値を示す第1データを前記第1入力装置から繰り返し取得して前記情報処理装置のメモリに記憶する記憶ステップと、
前記操作部が押下されたことを示す第2データを前記第2入力装置から取得する取得ステップと、
前記メモリに第1データが記憶される度に、当該第1データにより示される2次元値に基づいて前記カーソルの位置を決定する位置制御ステップと、
前記第2データが取得されたとき、取得された時点で前記メモリに記憶されている最新の第1データから所定個数前に記憶された第1データに基づいて決定された前記カーソルの位置を特定する前位置特定ステップと、
前記第2データが取得されたとき、前記前位置特定ステップにおいて特定された位置にカーソルがあるとした場合に当該カーソルによって指定されるオブジェクトを処理対象として、前記操作部を押下する操作に対応する処理を実行する処理実行ステップとを実行させる、入力データ処理プログラム。
【請求項12】
前記前位置特定ステップにおいては、前記所定個数は予め定められた数である、請求項11に記載の入力データ処理プログラム。
【請求項13】
前記第1入力装置は、入力面上において入力が行われている入力領域の面積を検出することが可能であり、
前記第1データは、前記2次元値とともに前記入力面積を示し、
前記前位置特定ステップにおいては、ある時点で記憶された第1データにより示される入力面積と、次に記憶された第1データにより示される入力面積との差が所定値以上である場合、当該ある時点で記憶された第1データまたは当該次に記憶された第1データにより示される2次元値に基づいて前記カーソルの位置が特定される、請求項11に記載の入力データ処理プログラム。
【請求項14】
入力面上において入力が行われている入力領域を検出する入力装置を備える情報処理装置であって、
前記入力装置の検出結果に基づいて前記入力領域を示す入力領域データを繰り返し取得して前記情報処理装置のメモリに記憶する記憶制御手段と、
前記メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する仮想領域決定手段と、
前記仮想領域決定手段によって決定された仮想領域に応じた内容で所定の第1処理を実行する第1処理実行手段とを備える、情報処理装置。
【請求項15】
操作部に対するプレイヤの操作状態を検出して2次元値として出力する第1入力装置と、前記操作部が押下されたことを検出する第2入力装置と、表示装置とを備える情報処理装置であって、
複数のオブジェクトと、当該複数のオブジェクトを指定するためのカーソルとを表示装置の画面に表示させる表示制御手段と、
前記2次元値を示す第1データを前記第1入力装置から繰り返し取得して前記情報処理装置のメモリに記憶する記憶制御手段と、
前記操作部が押下されたことを示す第2データを前記第2入力装置から取得する取得手段と、
前記メモリに第1データが記憶される度に、当該第1データにより示される2次元値に基づいて前記カーソルの位置を決定する位置制御手段と、
前記第2データが取得されたとき、取得された時点で前記メモリに記憶されている最新の第1データから所定個数前に記憶された第1データに基づいて決定された前記カーソルの位置を特定する前位置特定手段と、
前記第2データが取得されたとき、前記前位置特定手段によって特定された位置にカーソルがあるとした場合に当該カーソルによって指定されるオブジェクトを処理対象として、前記操作部を押下する操作に対応する処理を実行する処理実行手段とを備える、情報処理装置。
【請求項16】
操作データに応じて所定のデータ処理を実行する情報処理装置に接続可能な入力装置であって、
入力面上において入力が行われている入力領域を繰り返し検出して当該入力領域を示す入力領域データをメモリに記憶する記憶制御手段と、
前記メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する仮想領域決定手段と、
前記仮想領域決定手段によって決定された仮想領域を示すデータを前記操作データとして前記情報処理装置に送信する送信手段とを備える、入力装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公開番号】特開2007−65853(P2007−65853A)
【公開日】平成19年3月15日(2007.3.15)
【国際特許分類】
【出願番号】特願2005−249264(P2005−249264)
【出願日】平成17年8月30日(2005.8.30)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成19年3月15日(2007.3.15)
【国際特許分類】
【出願日】平成17年8月30日(2005.8.30)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]