(57)【特許請求の範囲】
【請求項１】
入力面上において入力が行われている入力領域を検出する入力装置を備える情報処理装置のコンピュータに、
前記入力装置の検出結果に基づいて前記入力領域を示す入力領域データを繰り返し取得して前記情報処理装置のメモリに記憶する記憶ステップと、
前記メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する仮想領域決定ステップと、
前記仮想領域決定ステップにおいて決定された仮想領域に応じた内容で所定の第１処理を実行する第１処理実行ステップとを実行させる、入力データ処理プログラム。
【請求項２】
前記第１処理実行ステップにおいては、前記仮想領域の中心または重心の位置が当該仮想領域の位置として算出され、当該仮想領域の位置に応じた内容で前記第１処理が実行される、請求項１に記載の入力データ処理プログラム。
【請求項３】
前記仮想領域決定ステップにおいては、前記入力領域および前記仮想領域のうちの小さい方の一方が他方の内側に位置するように、当該仮想領域の位置が決定される、請求項１に記載の入力データ処理プログラム。
【請求項４】
前記仮想領域決定ステップは、
前記メモリに入力領域データが記憶される度に、前記入力領域の大きさに追従するように仮想領域の大きさを決定する大きさ決定ステップと、
前記大きさ決定ステップで決定された大きさの仮想領域および前記入力領域のうちの小さい方の領域の少なくとも一部が他方の領域の外部に位置するとき、当該小さい方の領域の全部が当該他方の領域の内部に位置するように当該仮想領域の位置を移動する移動ステップとを含む、請求項３に記載の入力データ処理プログラム。
【請求項５】
前記仮想領域は円形の領域であり、
前記仮想領域決定ステップにおいては、前記仮想領域の位置を示す仮想位置データ、および当該仮想領域の半径を示す仮想半径データが前記メモリに記憶され、
前記第１処理実行ステップにおいては、前記メモリに記憶された仮想位置データおよび仮想半径データのうち少なくとも１つに基づいて前記第１処理の内容が決定される、請求項１に記載の入力データ処理プログラム。
【請求項６】
前記入力装置は、前記入力領域の面積と前記入力領域の位置とを示すデータを出力し、
前記記憶ステップは、
前記入力装置から出力されるデータを取得する取得ステップと、
前記取得されたデータにより示される位置を中心とし、当該データにより示される面積を有する円形領域を算出し、当該算出された円形領域を示すデータを前記入力領域データとして記憶する領域算出ステップとを含む、請求項１に記載の入力データ処理プログラム。
【請求項７】
前記記憶ステップにおいては、前記入力装置の検出結果が前記入力面に対する入力がないことを示すとき、前記メモリへ前記入力領域データを記憶する処理が停止される、請求項１に記載の入力データ処理プログラム。
【請求項８】
前記情報処理装置は表示装置を備えており、
前記第１処理実行ステップにおいては、前記表示装置の画面に表示されているオブジェクトの位置を前記仮想領域の位置に基づいて移動させる処理が前記第１処理として実行される、請求項１に記載の入力データ処理プログラム。
【請求項９】
前記入力装置は、前記入力面を押下可能な状態で支持するとともに、前記入力面が押下されたことを検出する押下検出装置を備えており、
前記入力面が押下されたことが検出されたとき、所定の第２処理を実行する第２処理実行ステップを前記コンピュータにさらに実行させる、請求項１に記載の入力データ処理プログラム。
【請求項１０】
前記情報処理装置は、表示装置を備えており、
前記第１処理実行ステップにおいては、前記表示装置の画面に表示されているカーソルの位置を前記仮想領域の位置に基づいて移動させる処理が前記第１処理として実行され、
前記第２処理実行ステップにおいては、前記画面に表示されているオブジェクトのうちで前記カーソルによって指定されるオブジェクトを処理対象として前記第２処理が実行される、請求項９に記載の入力データ処理プログラム。
【請求項１１】
操作部に対するプレイヤの操作状態を検出して２次元値として出力する第１入力装置と、前記操作部が押下されたことを検出する第２入力装置と、表示装置とを備える情報処理装置のコンピュータに、
オブジェクトと、当該オブジェクトを指定するためのカーソルとを表示装置の画面に表示させる表示制御ステップと、
前記２次元値を示す第１データを前記第１入力装置から繰り返し取得して前記情報処理装置のメモリに記憶する記憶ステップと、
前記操作部が押下されたことを示す第２データを前記第２入力装置から取得する取得ステップと、
前記メモリに第１データが記憶される度に、当該第１データにより示される２次元値に基づいて前記カーソルの位置を決定する位置制御ステップと、
前記第２データが取得されたとき、取得された時点で前記メモリに記憶されている最新の第１データから所定個数前に記憶された第１データに基づいて決定された前記カーソルの位置を特定する前位置特定ステップと、
前記第２データが取得されたとき、前記前位置特定ステップにおいて特定された位置にカーソルがあるとした場合に当該カーソルによって指定されるオブジェクトを処理対象として、前記操作部を押下する操作に対応する処理を実行する処理実行ステップとを実行させ、
前記第１入力装置は、入力面上において入力が行われている入力領域の面積を検出することが可能であり、
前記第１データは、前記２次元値とともに前記入力面積を示し、
前記前位置特定ステップにおいては、ある時点で記憶された第１データにより示される入力面積と、次に記憶された第１データにより示される入力面積との差が所定値以上である場合、当該ある時点で記憶された第１データまたは当該次に記憶された第１データにより示される２次元値に基づいて前記カーソルの位置が特定される、入力データ処理プログラム。
【請求項１２】
前記前位置特定ステップにおいては、前記所定個数は予め定められた数である、請求項１１に記載の入力データ処理プログラム。
【請求項１３】
入力面上において入力が行われている入力領域を検出する入力装置を備える情報処理装置であって、
前記入力装置の検出結果に基づいて前記入力領域を示す入力領域データを繰り返し取得して前記情報処理装置のメモリに記憶する記憶制御手段と、
前記メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する仮想領域決定手段と、
前記仮想領域決定手段によって決定された仮想領域に応じた内容で所定の第１処理を実行する第１処理実行手段とを備える、情報処理装置。
【請求項１４】
操作部に対するプレイヤの操作状態を検出して２次元値として出力する第１入力装置と、前記操作部が押下されたことを検出する第２入力装置と、表示装置とを備える情報処理装置であって、
オブジェクトと、当該オブジェクトを指定するためのカーソルとを表示装置の画面に表示させる表示制御手段と、
前記２次元値を示す第１データを前記第１入力装置から繰り返し取得して前記情報処理装置のメモリに記憶する記憶制御手段と、
前記操作部が押下されたことを示す第２データを前記第２入力装置から取得する取得手段と、
前記メモリに第１データが記憶される度に、当該第１データにより示される２次元値に基づいて前記カーソルの位置を決定する位置制御手段と、
前記第２データが取得されたとき、取得された時点で前記メモリに記憶されている最新の第１データから所定個数前に記憶された第１データに基づいて決定された前記カーソルの位置を特定する前位置特定手段と、
前記第２データが取得されたとき、前記前位置特定手段によって特定された位置にカーソルがあるとした場合に当該カーソルによって指定されるオブジェクトを処理対象として、前記操作部を押下する操作に対応する処理を実行する処理実行手段とを備え、
前記第１入力装置は、入力面上において入力が行われている入力領域の面積を検出することが可能であり、
前記第１データは、前記２次元値とともに前記入力面積を示し、
前記前位置特定手段は、ある時点で記憶された第１データにより示される入力面積と、次に記憶された第１データにより示される入力面積との差が所定値以上である場合、当該ある時点で記憶された第１データまたは当該次に記憶された第１データにより示される２次元値に基づいて前記カーソルの位置を特定する、情報処理装置。
【請求項１５】
操作データに応じて所定のデータ処理を実行する情報処理装置に接続可能な入力装置であって、
入力面上において入力が行われている入力領域を繰り返し検出して当該入力領域を示す入力領域データをメモリに記憶する記憶制御手段と、
前記メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する仮想領域決定手段と、
前記仮想領域決定手段によって決定された仮想領域を示すデータを前記操作データとして前記情報処理装置に送信する送信手段とを備える、入力装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タッチパッド等の入力装置から入力されるデータを処理するための入力データ処理プログラムおよび情報処理装置に関する。
【背景技術】
【０００２】
従来、タッチパネル等のポインティングデバイスを操作者が指等でタッチ操作することによって、画面に表示されているオブジェクト（例えばカーソル）等を操作する技術がある。ここで、入力面上における入力位置は、入力面上において指が接触している領域に基づいて決定されることがある。例えば図１８に示す例では、操作者の指は円形領域９２において入力面９１と接触している。このとき、入力位置は、円形領域９２の中心の位置９３に決定される。つまり、円形領域９２の中心の位置９３を操作者が指し示していると判断される。なお、接触領域から入力位置を決定する方法としては、接触領域の重心の位置を入力位置として決定する方法もある。
【０００３】
しかし、操作者の指と入力面との接触面積が変化しやすいことから、接触領域から入力位置を決定する上記方法では、操作者が意図しないにもかかわらず入力位置が変化してしまい、結果として操作者が意図しない操作が行われてしまうことがあった。特に、入力面に対して指の接触が開始された時点や、接触が終了する時点（入力面から指を離す時点）には、指の接触領域の位置や大きさが大きく変わりやすい。そのため、接触開始時点や接触終了時点では特に、操作者が意図しない操作が行われてしまう可能性が高い。
【０００４】
図１９は、図１８に示す状態から操作者が入力面から指を離そうとした場合の入力面の様子を示す図である。すなわち、図１９に示す時点では、操作者の指は円形領域９４において入力面９１と接触している。この時点における入力位置は円形領域９４の中心の位置９５に決定される。したがって、図１８に示す状態から図１９に示す状態に移行した場合、入力位置は、位置９３から位置９５へ移動したと判断されてしまう。しかし、この場合、操作者は入力面から指を単に離そうとしただけであり、入力位置を移動させる意図があったわけではない。つまり、この場合、入力位置が移動したことによって例えば画面上のカーソルが移動する等、操作者が意図しない（あるいは望まない）操作が行われてしまう。これによって、操作者は、ポインティングデバイスの操作性が悪いと感じる。なお、接触面積が変化することによって操作者の意図しない操作が行われてしまう現象は、操作者が入力面から指を離そうとした場合に限らず、操作者が入力面に指を接触させようとした場合や、入力面上で指を移動させようとした場合にも起こりうる。
【０００５】
なお、特許文献１に記載のタッチ操作位置検出装置は、タッチパネルの周囲に配置された発光素子および受光素子と、受講素子の側方に配置されたカメラとを備えている。この装置は、受光素子からの情報に基づいて、操作指の接触範囲の中心位置を求めるとともに、さらにカメラからの撮影情報に基づいて中心位置を補正する。これによって上記装置は、操作者の意図に沿った入力位置を正確に求めることを目的としている。
【特許文献１】特開２００３−５９１３号公報（要約書等）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記特許文献１に記載のタッチ操作位置検出装置は、発光素子および受光素子をタッチパネルの周囲に取り付けなければならず、さらに、カメラを用意しなければならない。そのため、この特許文献１に記載の技術では、装置の高コスト化、装置の肥大化および装置の複雑化を招く。また、発光素子および受光素子の数を少なくすれば、検出精度が低くなり、中心位置を適切に補正することができない場合も少なくないと考えられる。中心位置を適切に補正することができなければ、上述したような操作者が意図しない操作が行われてしまい、ポインティングデバイスの操作性が悪くなる。
【０００７】
それ故に、本発明の主たる目的は、簡易な構成で、ポインティングデバイスの操作性を向上することができる入力データ処理プログラムおよび情報処理装置を提供することである。
【課題を解決するための手段】
【０００８】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００９】
第１の発明は、入力面上において入力が行われている入力領域を検出する入力装置（タッチパッド７）を備える情報処理装置（ゲーム装置２）のコンピュータ（ＣＰＵ１１等）に以下の処理を実行させる入力データ処理プログラム（ゲームプログラム）である。入力データ処理プログラムは、記憶ステップ（Ｓ１３）と、仮想領域決定ステップ（Ｓ１４およびＳ２８）と、第１処理実行ステップ（Ｓ３）とを上記コンピュータに実行させる。記憶ステップにおいて、コンピュータは、入力装置の検出結果に基づいて入力領域（４１）を示す入力領域データ（５１，５２）を繰り返し取得して情報処理装置のメモリ（メインメモリ１７）に記憶する。仮想領域決定ステップにおいて、メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域（４２）を決定する。第１処理実行ステップにおいて、仮想領域決定ステップにおいて決定された仮想領域に応じた内容で所定の第１処理（カーソルを移動させる処理）を実行する。
【００１０】
第２の発明においては、仮想領域の中心または重心の位置が当該仮想領域の位置として算出され、当該仮想領域の位置に応じた内容で第１処理が実行されてもよい。
【００１１】
第３の発明においては、仮想領域決定ステップにおいて、入力領域および仮想領域のうちの小さい方の一方が他方の内側に位置するように、当該仮想領域の位置が決定されてもよい。
【００１２】
第４の発明においては、仮想領域決定ステップは、大きさ決定ステップ（１４）と、移動ステップ（Ｓ２８）とを含んでいてもよい。大きさ決定ステップにおいては、コンピュータは、メモリに入力領域データが記憶される度に、入力領域の大きさに追従するように仮想領域の大きさを決定する。移動ステップにおいては、大きさ決定ステップで決定された大きさの仮想領域および入力領域のうちの小さい方の領域の少なくとも一部が他方の領域の外部に位置するとき、当該小さい方の領域の全部が当該他方の領域の内部に位置するように当該仮想領域の位置を移動する。
【００１３】
第５の発明においては、仮想領域は円形の領域であってもよい。すなわち、仮想領域決定ステップにおいては、仮想領域の位置を示す仮想位置データ、および当該仮想領域の半径を示す仮想半径データがメモリに記憶される。第１処理実行ステップにおいては、メモリに記憶された仮想位置データおよび仮想半径データのうち少なくとも１つに基づいて第１処理の内容が決定される。
【００１４】
第６の発明においては、入力装置は、入力領域の面積と入力領域の位置とを示すデータを出力してもよい。このとき、記憶ステップは、取得ステップと、領域算出ステップとを含んでいる。取得ステップにおいては、コンピュータは、入力装置から出力されるデータを取得する。領域算出ステップにおいては、取得されたデータにより示される位置を中心とし、当該データにより示される面積を有する円形領域を算出し、当該算出された円形領域を示すデータを入力領域データとして記憶する。
【００１５】
第７の発明においては、記憶ステップにおいては、入力装置の検出結果が入力面に対する入力がないことを示すとき、メモリへ入力領域データを記憶する処理が停止されてもよい。
【００１６】
第８の発明においては、情報処理装置は表示装置（テレビ６）を備えている。さらに、第１処理実行ステップにおいては、表示装置の画面に表示されているオブジェクト（カーソル３３）の位置を仮想領域の位置に基づいて移動させる処理が第１処理として実行されてもよい。
【００１７】
第９の発明においては、入力装置は、入力面を押下可能な状態で支持するとともに、入力面が押下されたことを検出する押下検出装置（スイッチ）を備えていてもよい。このとき、入力データ処理プログラムは、入力面が押下されたことが検出されたとき、所定の第２処理（文字入力処理）を実行する第２処理実行ステップをコンピュータにさらに実行させてもよい。
【００１８】
第１０の発明においては、情報処理装置は、表示装置を備えている。さらに、第１処理実行ステップにおいては、表示装置の画面に表示されているカーソルの位置を仮想領域の位置に基づいて移動させる処理が第１処理として実行されてもよい。このとき、第２処理実行ステップにおいては、画面に表示されているオブジェクト（キーボード３２の各キー）のうちでカーソルによって指定されるオブジェクトを処理対象として第２処理が実行される。
【００１９】
第１１の発明は、操作部（タッチパッド７の入力面、または、スティックキーのスティック等）に対するプレイヤの操作状態を検出して２次元値として出力する第１入力装置（タッチパッド７またはスティックキー等）と、操作部が押下されたことを検出する第２入力装置（スイッチ）と、表示装置（テレビ６）とを備える情報処理装置（ゲーム装置２）のコンピュータに、以下の処理を実行させる入力データ処理プログラム（ゲームプログラム）である。入力データ処理プログラムは、表示制御ステップ（Ｓ６）と、記憶ステップ（Ｓ５１）と、取得ステップ（Ｓ４）と、位置制御ステップ（Ｓ５２およびＳ３）と、前位置特定ステップ（Ｓ５３）と、処理実行ステップ（Ｓ５４）とをコンピュータに実行させる。表示制御ステップにおいては、コンピュータは、オブジェクト（図３に示すキー）と、当該オブジェクトを指定するためのカーソル（３３）とを表示装置の画面に表示させる。記憶ステップにおいては、２次元値を示す第１データ（入力座標データ５１）を第１入力装置から繰り返し取得して情報処理装置のメモリ（メインメモリ１７）に記憶する。取得ステップにおいては、操作部が押下されたことを示す第２データを第２入力装置から取得する。位置制御ステップにおいては、メモリに第１データが記憶される度に、当該第１データにより示される２次元値に基づいてカーソルの位置を決定する。前位置特定ステップにおいては、第２データが取得されたとき、取得された時点でメモリに記憶されている最新の第１データから所定個数前に記憶された第１データに基づいて決定されたカーソルの位置を特定する。処理実行ステップにおいては、第２データが取得されたとき、前位置特定ステップにおいて特定された位置にカーソルがあるとした場合に当該カーソルによって指定されるオブジェクトを処理対象として、操作部を押下する操作に対応する処理を実行する。また、第１入力装置は、入力面上において入力が行われている入力領域の面積を検出することが可能であってもよい。このとき、第１データは、２次元値とともに入力面積を示す。前位置特定ステップにおいては、ある時点で記憶された第１データにより示される入力面積と、次に記憶された第１データにより示される入力面積との差が所定値以上である場合、当該ある時点で記憶された第１データまたは当該次に記憶された第１データにより示される２次元値に基づいてカーソルの位置が特定される。
【００２０】
第１２の発明においては、前位置特定ステップにおいて、所定個数は予め定められた数であってもよい。
【００２２】
第１３の発明は、入力面上において入力が行われている入力領域を検出する入力装置（タッチパッド７）を備える情報処理装置（ゲーム装置２）である。情報処理装置は、記憶制御手段（Ｓ１３を実行するＣＰＵ１１等。以下、単にステップ番号のみを示す。）と、仮想領域決定手段（Ｓ１４およびＳ２８）と、第１処理実行手段（Ｓ３）とを備えている。記憶制御手段は、入力装置の検出結果に基づいて入力領域を示す入力領域データを繰り返し取得して情報処理装置のメモリに記憶する。仮想領域決定手段は、メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する。第１処理実行手段は、仮想領域決定手段によって決定された仮想領域に応じた内容で所定の第１処理を実行する。
【００２３】
第１４の発明は、操作部（タッチパッド７の入力面、または、スティックキーのスティック等）に対するプレイヤの操作状態を検出して２次元値として出力する第１入力装置（タッチパッド７またはスティックキー等）と、操作部が押下されたことを検出する第２入力装置（スイッチ）、表示装置（テレビ６）とを備える情報処理装置（ゲーム装置２）である。情報処理装置は、表示制御手段（Ｓ６）と、記憶制御手段（Ｓ５１）と、取得手段（Ｓ４）と、位置制御手段（Ｓ５２およびＳ３）と、前位置特定手段（Ｓ５３）と、処理実行手段（Ｓ５４）とを備えている。表示制御手段は、複数のオブジェクトと、当該複数のオブジェクトを指定するためのカーソルとを表示装置の画面に表示させる。記憶制御手段は、２次元値を示す第１データを第１入力装置から繰り返し取得して情報処理装置のメモリに記憶する。取得手段は、操作部が押下されたことを示す第２データを第２入力装置から取得する。位置制御手段は、メモリに第１データが記憶される度に、当該第１データにより示される２次元値に基づいてカーソルの位置を決定する。前位置特定手段は、第２データが取得されたとき、取得された時点でメモリに記憶されている最新の第１データから所定個数前に記憶された第１データに基づいて決定されたカーソルの位置を特定する。処理実行手段は、第２データが取得されたとき、前位置特定手段によって特定された位置にカーソルがあるとした場合に当該カーソルによって指定されるオブジェクトを処理対象として、操作部を押下する操作に対応する処理を実行する。
【００２４】
第１５の発明は、操作データに応じて所定のデータ処理を実行する情報処理装置に接続可能な入力装置（コントローラ５）である。入力装置は、記憶制御手段と、仮想領域決定手段と、送信手段とを備えている。記憶制御手段は、入力面上において入力が行われている入力領域を繰り返し検出して当該入力領域を示す入力領域データをメモリに記憶する。仮想領域決定手段は、メモリに入力領域データが記憶される度に、当該入力領域データにより示される入力領域の変化に追従して変化するように仮想領域を決定する。送信手段は、仮想領域決定手段によって決定された仮想領域を示すデータを操作データとして情報処理装置に送信する。
【発明の効果】
【００２５】
第１の発明によれば、操作者による操作に応じて実行される第１処理の処理内容は、入力領域の変化に追従して変化する仮想領域に応じて決定される。すなわち、実際の接触領域である入力領域の変化よりも緩やかに変化する仮想領域に基づいて第１処理が実行される。したがって、操作者の指と入力面との接触面積が変化する場合であっても、仮想領域を用いることによってその変化を緩和または抑止し、その変化が第１処理の内容に反映しないようにすることができる。そのため、操作者の指と入力面との接触面積が変化することによって操作者の意図しない操作が行われることを防止することができる。また、本発明においてはカメラ等の構成要素が不要であるので、簡易な構成によってポインティングデバイスの操作性を向上することができる。
【００２６】
第２の発明によれば、仮想領域の中心位置または重心位置を仮想領域の位置とすることによって、仮想領域の位置を容易に算出することができる。
【００２７】
第３の発明によれば、仮想領域の位置は、入力領域と仮想領域とのうちで小さい方の領域が他方の領域に常に重なった状態となるように設定される。したがって、位置に関して仮想領域を入力領域に正確に追従させることができる。
【００２８】
第４の発明によれば、仮想領域および入力領域のうちの小さい方の領域の少なくとも一部が他方の領域の外部に位置するときのみ、仮想領域が移動される。つまり、小さい方の一方が他方の内部に位置している間は仮想領域が移動されないので、入力領域の位置および大きさが多少変化しても仮想領域が常に移動するわけではない。これによって、入力領域の移動が仮想領域では緩和されることになるので、操作者の意図しない操作が行われることを確実に防止することができる。
【００２９】
第５の発明によれば、仮想領域を円形領域として取り扱うので、仮想領域の位置および形状（大きさ）を、中心位置の座標および半径の長さによって仮想領域を表すことができる。したがって、仮想領域を少ないデータ量で表すことができる。
【００３０】
第６の発明によれば、入力領域を円形領域として取り扱うので、仮想領域を円形領域として取り扱う場合と同様、入力領域を少ないデータ量で表すことができる。
【００３１】
第７の発明によれば、入力面に対する入力が行われないとき、入力領域データを記憶する処理が行われないので、仮想領域を決定する処理も行われないこととなる。入力面に対する入力がないときには、仮想領域を決定する必要はないので、第７の発明によれば、入力面に対する入力が行われない場合には不要となる仮想領域決定処理を省略することができる。
【００３２】
第８の発明によれば、表示装置の画面に表示されるオブジェクト（例えばカーソル等）が、仮想領域の位置、すなわち、入力装置に対する操作者の操作によって移動される。したがって、当該オブジェクトを移動する操作において、操作者の意図しないオブジェクトの移動が行われることを防止することができる。
【００３３】
第９の発明によれば、操作者は、入力面上の任意の位置を指定する操作に加えて、入力面を押下する操作を行うことができる。このとき、入力面を押下する操作を行う際に入力面積が大きく変化しやすいので、仮に入力領域に基づいて第１処理を行うとすれば、この操作を行う際に操作者の意図しない操作が行われてしまう。これに対して、第９の発明によれば、入力面を押下する操作を行う際であっても、操作者の意図しない操作が行われることを防止することができる。
【００３４】
第１０の発明によれば、表示装置の画面に表示されるカーソルが、仮想領域の位置、すなわち、入力装置に対する操作者の操作によって移動される。また、カーソルによって指定されるオブジェクトを処理対象として第２処理が実行される。したがって、カーソルによってオブジェクトを指定して第２処理を行う操作において、操作者の意図しないオブジェクトの移動が行われることによって、操作者の意図しないオブジェクトに対して第２処理が実行されることを防止することができる。
【００３５】
第１１の発明によれば、操作者は、操作部を操作する（タッチパッドの入力面にタッチする、または、スティックキーを傾倒する等）ことによって、カーソルを移動させる操作を行うことができるとともに、操作部を押下する（タッチパッドの入力面を押下する、または、スティックキーを押下する等）ことによって、カーソルによって指定されるオブジェクトに対して所定の処理を実行する操作を行うことができる。ここで、所定の処理を実行するために操作部を押下した場合、操作部に対する操作状態が操作者の意図に反して変化してしまうことがある。すなわち、タッチパッドに対する入力面積が大きくなってしまったり、スティックキーが傾倒してしまったりすることがある。
【００３６】
第１１の発明においては、操作部の押下が検知された場合、押下が検知された時点で所定個数前に記憶されている第１データに基づいてカーソルの位置が特定される。つまり、押下が検知された時点よりも少し前、すなわち、操作部に対する操作状態が変化する前のカーソルの位置が特定される。そして、特定されたカーソルの位置が、押下時におけるカーソルの位置として扱われて所定の処理が実行される。これによって、操作部に対する操作状態が変化する前のカーソルの位置、すなわち、操作者が意図するカーソルの位置に従って所定の処理が実行されることとなる。したがって、第１１の発明によれば、操作部が押下される際に操作者の意図しない操作が行われることを防止することができる。また、第１１の発明によれば、入力面積の変化が大きい時点における第１データが参照されてカーソルの位置が決定される。つまり、操作部に対する操作状態が変化した時点が検知され、その時点における第１データに基づいてカーソルの位置が決定される。このように、入力面積の変化によって、操作部に対する操作状態が変化した時点を正確に検出することができる。したがって、操作部が押下される際に操作者の意図しない操作が行われることを確実に防止することができる。
【００３７】
第１２の発明によれば、所定個数の数が予め定められているので、ゲーム装置は、操作部の押下が検知されたとき、どの時点で記憶された第１データを参照するかを容易に決定することができる。
【００３９】
なお、第１３および第１５の発明によれば、第１の発明と同様の効果を得ることができる。また、第１４の発明によれば、第１１の発明と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００４０】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る情報処理装置の一例であるゲームシステムの構成を示す外観図であり、図２はそのブロック図である。図１および図２に示すように、ゲームシステム１は、ゲーム装置２、光ディスク３、メモリカード４、コントローラ５、テレビ６（図２に示すスピーカ２５を含む）を備える。光ディスク３およびメモリカード４は、ゲーム装置２に着脱自在に装着される。コントローラ５は、ゲーム装置２に設けられる複数（図１では、４つ）のコントローラポート用コネクタのいずれかに接続される。コントローラ５は複数の操作部を有し、具体的には、第１のタッチパッド７ａ、第２のタッチパッド７ｂ、スタートボタン８ａ、セレクトボタン８ｂ、Ｌボタン８ｃ、およびＲボタン８ｄを含む。また、他の実施形態においては、ゲーム装置２とコントローラ５との通信は、通信ケーブルを用いずに無線通信によって行われてもよい。また、テレビ６およびスピーカ２５は、ＡＶケーブル等によってゲーム装置２に接続される。なお、本発明は図１に示すような据え置き型のゲーム装置に限らず、携帯型のゲーム装置であってもよいし、業務用のゲーム装置であってもよいし、携帯電話やパソコン等、プログラムを実行することができる装置であってもよいことはもちろんである。以下、図２を参照しながら、本発明に係るゲームシステムにおける各部を詳細に説明するとともに、ゲームシステムにおける一般的な動作を説明する。
【００４１】
外部記憶媒体の一例である光ディスク３は、例えばＤＶＤ−ＲＯＭであり、本発明に係るプログラムの一例であるゲームプログラムやキャラクタデータ等のゲームに関するデータを固定的に記憶している。プレイヤがゲームを行う場合、光ディスク３はゲーム装置２に装着される。なお、ゲームプログラム等を記憶する手段は、ＤＶＤ−ＲＯＭに限らず、例えばＣＤ−ＲＯＭ、ＭＯ、メモリカード、ＲＯＭカートリッジ等の記憶媒体であってもよい。ゲームプログラム等は、ゲーム装置本体内のメモリやハードディスク等の記憶手段に記憶されるようにしてもよく、この場合、通信によりゲームプログラムをダウンロードするようにしてもよい。メモリカード４は、例えばフラッシュメモリ等の書き換え可能な記憶媒体によって構成され、例えばゲームにおけるセーブデータ等のデータを記憶する。
【００４２】
ゲーム装置２は、光ディスク３に記録されているゲームプログラムを読み出し、ゲーム処理を行う。コントローラ５は、プレイヤがゲーム操作に関する入力を行うための入力装置である。コントローラ５は、プレイヤによるタッチパッド７ａおよび７ｂの操作や各操作ボタン８ａ〜８ｄの押圧操作や後述するスイッチ（図示しない）の押圧操作に応じて操作データをゲーム装置２に出力する。複数のプレイヤによってゲームを行う場合、コントローラ５はプレイヤの数だけ設けられる。テレビ６は、ゲーム装置２から出力された画像データを画面に表示する。また、スピーカ２５は、典型的にはテレビ６に内蔵されており、ゲーム装置２から出力されたゲームの音声を出力する。
【００４３】
前述のように、コントローラ５は、その主面の左右両側に１つずつ、計２つのタッチパッド７ａおよび７ｂを有する。なお、２つのタッチパッド７ａおよび７ｂは同じ構成であり、以下では、２つのタッチパッド７ａおよび７ｂを特に区別しない場合、単に「タッチパッド７」と記載する。タッチパッド７としては、例えば抵抗膜方式や光学式（赤外線方式）や静電容量結合式など、任意の方式のものを利用することができる。
【００４４】
第１の実施形態においては、タッチパッド７は、入力面にプレイヤの指等が触れた領域（入力領域）の面積と、入力領域の位置とを出力する。タッチパッド７は、入力領域の重心位置（中心位置でもよい）を入力領域の位置として出力する。タッチパッド７は、入力領域の位置および形状（大きさ）を検出することが可能のものであればよく、例えば、入力面とプレイヤの指等が接触しているすべての位置を出力するものであってもよい。この場合、出力された位置の集合が入力領域となる。
【００４５】
タッチパッド７は、入力領域の面積（入力面積）および入力領域の位置（入力位置）を所定のサンプリング時間毎に検出する。そして、検出した入力面積および入力位置を示す入力データを出力する。この入力データは、操作データとしてコントローラ５からゲーム装置２に出力される。ここでは、所定のサンプリング時間を画面表示のフレーム時間と同じであるとするが、サンプリング時間とフレーム時間は異なる長さであってもよい。
【００４６】
また、第１の実施形態においては、コントローラ５の筐体は、タッチパッド７の入力面を押下可能なようにバネ等で支持しており、タッチパッド７の裏面にはそれぞれスイッチ（図示せず）が設けられる。プレイヤは、タッチパッド７の入力面を押下することによってスイッチを押下することができる。つまり、スイッチは、タッチパッド７の入力面が押下されたことを検出するためのものである。スイッチが押下されたか否かを示すデータは、タッチパッド７からの上記入力データと同様、操作データとしてコントローラ５からゲーム装置２に出力される。
【００４７】
なお、以上に説明したコントローラ５は、第１の実施形態において用いられる入力装置の一例であり、入力装置は、入力面上における入力領域を検出することが可能なポインティングデバイスであればどのようなものであってもよい。例えば、入力装置は、タッチパッドを１つのみ備える構成であってもよいし、タッチパッドに代えてタッチパネルを備える構成であってもよい。
【００４８】
次に、ゲーム装置２の構成について説明する。図２において、ゲーム装置２内には、ＣＰＵ１１およびそれに接続されるメモリコントローラ２０が設けられる。さらに、ゲーム装置２内において、メモリコントローラ２０は、グラフィックスプロセッシングユニット（ＧＰＵ）２４と、メインメモリ１７と、デジタル信号処理回路（ＤＳＰ）３６と、各種インターフェース（Ｉ／Ｆ）２１〜２６とに接続される。また、ＤＳＰ１８を介してサブメモリ１９と接続される。メモリコントローラ２０は、これら各構成要素間のデータ転送を制御する。
【００４９】
ゲーム開始の際、まず、ディスクドライブ２７は、ゲーム装置２に装着された光ディスク３を駆動する。光ディスク３に記憶されているゲームプログラムは、ディスクＩ／Ｆ２６およびメモリコントローラ２０を介して、メインメモリ１７に読み込まれる。メインメモリ１７上のプログラムをＣＰＵ１１が実行することによって、ゲームが開始される。ゲーム開始後、プレイヤは、各タッチパッド７ａおよび７ｂや各操作ボタン８ａ〜８ｄや上記スイッチを用いてコントローラ５に対してゲーム操作等の入力を行う。プレイヤによる入力に従い、コントローラ５は、操作データをゲーム装置２に出力する。コントローラ５から出力される操作データは、コントローラＩ／Ｆ２１およびメモリコントローラ２０を介してＣＰＵ１１に入力される。ＣＰＵ１１は、入力された操作データに応じてゲーム処理を行う。ゲーム処理における画像データ生成等に際して、ＧＰＵ１２やＤＳＰ１８が用いられる。また、サブメモリ１９は、ＤＳＰ１８が所定の処理を行う際に用いられる。
【００５０】
ＧＰＵ１２は、ジオメトリユニット１３およびレンダリングユニット１４を含み、画像処理専用のメモリに接続されている。この画像処理専用メモリは、例えばカラーバッファ１５およびＺバッファ１６として利用される。ジオメトリユニット１３は、仮想３次元空間であるゲーム空間に置かれた物体や図形に関する立体モデル（例えばポリゴンで構成されるオブジェクト）の座標についての演算処理を行うものであり、例えば立体モデルの回転・拡大縮小・変形や、ワールド座標系の座標から視点座標系やスクリーン座標系の座標への変換を行うものである。レンダリングユニット１４は、所定のテクスチャに基づいて、スクリーン座標に投影された立体モデルについてピクセル毎のカラーデータ（ＲＧＢデータ）をカラーバッファ１５に書き込むことによって、ゲーム画像を生成する。また、カラーバッファ１５は、レンダリングユニット１４によって生成されたゲーム画像データ（ＲＧＢデータ）を保持するために確保されたメモリ領域である。Ｚバッファ１６は、３次元の視点座標から２次元のスクリーン座標に変換する際に視点からの奥行情報を保持するために確保されたメモリ領域である。ＧＰＵ１２は、これらを用いてテレビ６に表示すべき画像データを生成し、適宜メモリコントローラ２０およびビデオＩ／Ｆ２２を介してテレビ６に出力する。なお、ゲームプログラム実行時にＣＰＵ１１において生成される音声データは、メモリコントローラ２０からオーディオＩ／Ｆ２４を介して、スピーカ２５に出力される。なお、第１の実施形態では、画像処理専用のメモリを別途設けたハードウェア構成としたが、これに限らず例えばメインメモリ１７の一部を画像処理用のメモリとして利用する方式（ＵＭＡ：Ｕｎｉｆｉｅｄ  Ｍｅｍｏｒｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ）を使うようにしてもよい。ゲーム装置２は、ゲームプログラムを実行することにより生成したゲームデータをメモリコントローラ２０およびメモリＩ／Ｆ２３を介してメモリカード４に転送する。また、ゲーム装置２は、ゲーム開始に先立って、メモリカード４に記憶されたゲームデータを、メモリコントローラ２０およびメモリＩ／Ｆ２３を介してメインメモリ１７に読み込む。
【００５１】
次に、第１の実施形態に係るゲームプログラムによってゲーム装置２において実行される処理の概要を説明する。図３は、第１の実施形態における表示画面の一例を示す図である。図３に示すように、テレビ６の表示画面３１には、キーボード３２およびカーソル３３が表示されている。プレイヤは、カーソル３３が所望のキーを指定するようにタッチパッド７を用いてカーソル３３を移動させる。そして、所望のキーがカーソル３３によって指定された状態で当該キーを選択する操作（例えば上記スイッチを押下する操作）を行うことで、当該キーに対応する文字の入力を行うことができる。入力された文字は、表示画面３１の下部の文字表示領域３４に表示される。以下、図３に示すような表示画面が表示されている場合において、タッチパッド７およびスイッチを用いて文字を入力する操作がプレイヤによって行われる場合を例にとってゲーム装置２の処理を説明する。
【００５２】
ゲーム装置２は、タッチパッド７による検出結果を１フレーム毎に取得する。次に、取得した検出結果に含まれる入力位置および入力面積から、入力領域の位置および大きさ（半径）を算出する。本実施形態においては、ゲーム装置２は入力領域を円形領域として取り扱う。つまり、ゲーム装置２は、タッチパッド７から取得される入力位置を中心とし、入力面積に応じた半径を有する円形の領域を入力領域とする。ゲーム装置２は、タッチパッド７に対する入力（タッチ入力）が検出されている間は、入力領域の位置および半径を１フレーム毎に算出する。
【００５３】
また、ゲーム装置２は、タッチパッド７の入力面上に仮想領域を設定する。そして、入力領域の位置および半径に応じて仮想領域の位置および半径を決定する。仮想領域とは、タッチパッド７の入力面上に仮想的に設定される領域である。本実施形態では、仮想領域を円形の領域とする。仮想領域の位置とは、円形の仮想領域の中心位置である。仮想領域の位置および半径を決定する処理が毎フレーム実行されることによって、仮想領域は、１フレーム毎に変形および／または移動を行う。また、上記カーソル３３の位置は、仮想領域の位置に基づいて決定される。具体的には、ゲーム装置２は、仮想領域の移動前の位置から移動後の位置までのベクトルを算出し、当該ベクトルの大きさに応じた（画面上の）距離だけ、当該ベクトルの向きに応じた（画面上の）方向にカーソルを移動する。以上によって、ゲーム装置２は、タッチ入力に基づいてカーソルの移動を制御することができる。
【００５４】
次に、仮想領域の移動および変形を行う処理の詳細について説明する。まず、プレイヤがタッチ入力を開始する際において仮想領域が移動および変形を行う様子を、図４〜図７を用いて説明する。なお、図４〜図１１において、一点鎖線で囲まれる領域４１は入力領域を示し、実線で囲まれる領域（但し図４では点）４２は仮想領域を示す。また、点４３は仮想領域４２の中心、すなわち、仮想領域４２の位置を示す。
【００５５】
図４は、タッチ入力が開始された時刻ｔ０における入力の様子を示す図である。ここでは、時刻ｔ０におけるフレームで入力が初めて検出され、当該フレームの前のフレームでは入力が検出されなかったものとする。図４に示すように、入力が初めて検出されたフレームでは、仮想領域４２は点として表される。すなわち、タッチパッド７によって検出された入力面積および入力位置に基づいて入力領域４１の位置および半径が決定されるので、ゲーム装置２は、仮想領域４２の位置を入力領域４１の位置に決定し、仮想領域４２の半径を“０”に決定する。
【００５６】
図５は、上記時刻ｔ０からフレーム時間ｔが経過した時点（時刻：ｔ０＋ｔ）における入力の様子を示す図である。つまり、図５は、図４に示すフレームの次のフレームにおける入力の様子を示す図である。図５において、点線で囲まれる領域４１’は、前回のフレームにおける入力領域を示している。タッチパッド７に対する入力が開始された直後では、タッチパッド７に対するプレイヤの指の接触面積が次第に大きくなるので、入力領域の半径は次第に大きくなるように変化する。図５においても、前回のフレーム（図４）の時点から入力領域４１が大きくなっている。
【００５７】
一方、仮想領域４２は、入力領域４１の変化に追従して変化するように、その位置および半径が決定される。具体的には、仮想領域４２の半径は、入力領域４１の半径に近づくように決定される。したがって、図５に示すように、時刻（ｔ０＋ｔ）の時点における仮想領域４２の半径は、前回のフレームの時点よりも大きくなっている。なお、詳細は後述するが、仮想領域４２が入力領域４１の内側に位置しているので、時刻（ｔ０＋ｔ）の時点では仮想領域４２の位置は前回のフレームから移動しない。つまり、仮想領域４２の位置は、前回のフレームにおける位置と同じ位置に決定される。
【００５８】
図６は、図５における時刻（ｔ０＋ｔ）からフレーム時間ｔが経過した時点（時刻：ｔ０＋２ｔ）における入力の様子を示す図である。図６において、点線で囲まれる領域４１’は、前回のフレームにおける入力領域を示しており、領域４２’は、前回のフレームにおける入力領域を示している。時刻（ｔ０＋２ｔ）においても時刻（ｔ０＋ｔ）の場合と同様、入力領域４１は、前回のフレームの時点における入力領域４１’よりも大きくなっている。入力領域４１は入力領域４１’の位置からやや左方向に移動している。時刻（ｔ０＋２ｔ）においても時刻（ｔ０＋ｔ）と同様、仮想領域４２の半径は入力領域４１の半径に近づくように決定される。したがって、仮想領域４２の半径は変化前の仮想領域４２’の半径に比べて大きくなる。
【００５９】
図６においては、入力領域４１の内側から仮想領域４２の一部がはみ出している。なお、図６では、仮想領域４２の位置は仮想領域４２’の位置と同じ位置であるとする。入力領域４１が仮想領域４２よりも大きい場合において、仮想領域４２の半径を決定した結果、仮想領域４２の少なくとも一部が入力領域４１の外側にはみ出した場合には、仮想領域４２の位置が補正される。
【００６０】
図７は、図６に示す状態から仮想領域４２の位置を補正した後の入力の様子を示す図である。図６に示すように、仮想領域４２の少なくとも一部が入力領域４１の外側にはみ出した場合、仮想領域４２が入力領域４１の内側に含まれるように仮想領域４２は移動される。したがって、時刻（ｔ０＋ｔ２）の時点においては、仮想領域４２の位置は図７に示す点４３の位置となる。なお、点４３’は、移動前の仮想領域４２’の位置を示している。
【００６１】
時刻（ｔ０＋２ｔ）以降のフレームにおいても、仮想領域４２は、入力領域４１に追従するようにその位置および半径が決定される。したがって、入力領域４１が移動すれば入力領域４１の移動に応じて仮想領域４２は移動する。また、入力領域４１が変化しない場合、仮想領域４２は、最終的には入力領域４１と同じ位置および半径となる。
【００６２】
次に、入力領域４１が前回のフレームよりも小さくなる場合について、図８〜図１１を用いて説明する。入力領域４１が前回のフレームよりも小さくなる場合とは、典型的には、タッチ入力が終了する場合（プレイヤの指がタッチパッド７から離れる場合）である。また、入力面上で指を移動させる場合にも、入力領域４１が前回のフレームよりも小さくなることがあると考えられる。
【００６３】
図８は、タッチ入力が行われている途中のある時刻（ｔ１）における入力の様子を示す図である。図８においては、入力領域４１と仮想領域４２との位置および半径は同じであるとする（図８においては図面を見やすくする目的で、実線と一点鎖線の位置をずらして記載している）。
【００６４】
図９は、時刻ｔ１からフレーム時間ｔが経過した時点（時刻：ｔ１＋ｔ）における入力の様子を示す図である。時刻（ｔ１＋ｔ）においては、入力領域４１は、前回のフレームにおける入力領域４１’よりも小さくなっている。一方、仮想領域４２は、入力領域４１に追従して変化するように決定される。入力領域４１が小さくなっているので、仮想領域４２については、前回のフレームにおける仮想領域４２’よりも小さくなるように半径が決定される。なお、図９に示すように入力領域４１が小さくなっている場合には、仮想領域４２が入力領域４１の内側からはみ出していても仮想領域４２は移動されない。図９においては、仮想領域４２の位置は、前回のフレームにおける位置と同じ位置に決定される。
【００６５】
図１０は、図９における時刻（ｔ１＋ｔ）からフレーム時間ｔが経過した時点（時刻：ｔ１＋２ｔ）における入力の様子を示す図である。時刻（ｔ１＋２ｔ）においても時刻（ｔ１＋ｔ）の場合と同様、入力領域４１は、前回のフレームの時点における入力領域４１’よりも小さくなっている。入力領域４１の位置は入力領域４１’の位置からやや上方向に移動している。一方、仮想領域４２の半径は、入力領域４１の半径が小さくなっているので、これに応じて小さくなるように決定される。すなわち、仮想領域４２の半径は変化前の仮想領域４２’の半径に比べて小さくなる。
【００６６】
ここで、図１０においては、仮想領域４２の内側から入力領域４１の一部がはみ出している。なお、図１０では、仮想領域４２の位置は仮想領域４２’の位置と同じ位置であるとする。仮想領域４２が入力領域４１よりも大きい場合において、仮想領域４２の半径を決定した結果、入力領域４１の少なくとも一部が仮想領域４２の外側にはみ出した場合には、仮想領域４２の位置が補正される。
【００６７】
図１１は、図１０に示す状態から仮想領域４２の位置を補正した後の入力の様子を示す図である。図１０に示すように、入力領域４１の少なくとも一部が仮想領域４２の外側にはみ出した場合、入力領域４１が仮想領域４２の内側に含まれるように仮想領域４２は移動される。したがって、時刻（ｔ１＋ｔ２）の時点においては、仮想領域４２の位置は図１１に示す点４３の位置となる。なお、点４３’は、移動前の仮想領域４１’の位置を示している。
【００６８】
図６、図７、図１０、および図１１に示したように、仮想領域４２の位置は、入力領域４１との位置関係に基づいて決定される。具体的には、仮想領域４２の位置は、入力領域４１および仮想領域４２のうちの小さい方の一方が他方の内側に位置するように決定される。より具体的には、入力領域４１が仮想領域４２よりも大きい場合（図６）、仮想領域４２の位置は、仮想領域４２が入力領域４１の内側に位置するように決定される（図７）。一方、仮想領域４２が入力領域４１よりも大きい場合（図１０）、仮想領域４２の位置は、入力領域４１が仮想領域４２の内側に位置するように決定される（図１１）。したがって、入力領域４１の位置が変化したとしても、入力領域４１と仮想領域４２との位置関係が上記の条件を満たさない場合には仮想領域４２の移動は行われない。つまり、カーソルの移動は行われない。
【００６９】
時刻（ｔ０＋２ｔ）以降のフレームにおいても、仮想領域４２は、入力領域４１に追従するようにその位置および半径が決定される。なお、タッチ入力が検出されなくなると、仮想領域４２は設定されない。つまり、タッチ入力が検出されないフレームにおいては、仮想領域４２の位置および半径を決定する処理は実行されない。
【００７０】
タッチ入力が行われている間は、入力領域が大きくなった場合の処理（図４〜図７に示した処理）、または、入力領域が小さくなった場合の処理（図８〜図１１に示した処理）が毎フレーム実行される。したがって、仮想領域は、タッチ入力が行われている間、入力領域に追従するように変化している。具体的には、仮想領域４２の半径は、入力領域４１の半径に追従するように決定される。
【００７１】
ここで、タッチ入力が開始された直後、および、タッチ入力が終了する直前においては、入力領域の半径が大きく変化する。したがって、半径の変化に応じて入力領域の位置も変化してしまう。そのため、仮に入力領域の位置を用いてカーソルの移動操作を行うとすると、プレイヤが意図しないカーソル操作が行われてしまうという問題が生じる。入力開始直後や入力終了直前においては、プレイヤが意図しないにもかかわらず入力位置が変化するので、入力位置の変化に応じて（プレイヤが意図しなくとも）カーソルが移動してしまうからである。なお、この問題は、入力開始直後や入力終了直前において特に問題となるが、タッチ入力中であれば常に生じる可能性のある問題である。
【００７２】
図３を例にとって具体的に説明すると、プレイヤが“Ａ”を入力しようとして、“Ａ”のキーを指し示す位置にカーソル３３を移動させたとする。プレイヤはさらに、当該“Ａ”のキーを選択するためにタッチパッド７を押下する。このとき、タッチパッド７を押下したためにプレイヤの指とタッチパッド７との接触面積（入力領域の半径）が大きくなる。これによって、入力領域の中心位置、すなわち、入力領域の位置が変化してしまうので、カーソル３３が移動してしまうことがある。例えば、カーソル３３が下方向に移動してしまい、“Ｚ”のキーを指し示すような場合がある。この場合、タッチパッド７が押下されたことをスイッチが検出した時点ではカーソル３３が“Ｚ”のキーを指し示している結果、“Ｚ”の文字が入力されてしまう。つまり、プレイヤの意図しない操作が行われてしまうことになる。
【００７３】
そこで、本実施形態では、入力領域に追従して変化する仮想領域を設定し、仮想領域の位置を用いてカーソルの移動操作を行っている。図４〜図１１に示したように、入力領域の半径の変化が大きい場合であっても仮想領域の半径の変化は緩和される。また、仮想領域の位置は入力領域との位置関係に基づいて決定され、入力領域の位置が変化したことに応じて仮想領域が移動するわけではない。したがって、入力領域の半径が大きく変化する場合であっても、仮想領域は移動しないか、移動するとしても入力領域の位置の移動に比べて移動量を緩和することができる。これによって、タッチパッド７を指で操作する場合において特に入力開始直後や入力終了直前に生じる、プレイヤが意図しない操作が行われるという問題を防止することができる。
【００７４】
なお、入力面積が変化することは、操作者が入力面から指を離そうとした場合や操作者が入力面に指を接触させようとした場合に限らず、入力面と指とを接触させたまま入力面上で指を移動させようとした場合にも起こりうる。例えば、入力面上で指を左から右に移動させる場合、プレイヤは左からまっすぐ右に指を移動させているつもりでも、移動中に入力面積が変化する結果、入力領域の中心位置は上下方向に振れていることがある。このような場合、もし入力領域の位置に基づいてカーソルを移動させるとすると、カーソルは、左から右に移動するだけでなく、上下方向に振れて移動することになり、プレイヤの意図しない操作が行われてしまう。このような場合にも、本実施形態のように仮想領域に基づいてカーソルを移動させることによって、プレイヤの意図しない操作が行われることを防止することができる。
【００７５】
次に、ゲームプログラムを実行することによってゲーム装置２において行われるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる主なデータについて図１２を用いて説明する。図１２は、ゲーム装置２のメインメモリ１７に記憶される主なデータを示す図である。図１２に示すように、メインメモリ１７には、入力座標データ５１、入力面積データ５２、入力領域半径データ５３、仮想領域座標データ５４、仮想領域半径データ５５、領域間ベクトルデータ５６、移動量データ５７、現在タッチ座標データ５８、前タッチ座標データ５９、追従度データ６０、およびタッチフラグデータ６１等が記憶される。なお、メインメモリ１７には、図１２に示すデータの他、画面に表示されるオブジェクト（図３に示したキーボード３２）に関するデータ（オブジェクトの画像データ等）等、ゲーム処理に必要なデータが記憶される。
【００７６】
入力座標データ５１は、タッチパッド７によって検出される上記入力位置の座標を示すデータである。入力面積データ５２は、タッチパッド７によって検出される上記入力面積を示すデータである。ＣＰＵ１１は、タッチパッド７によって検出される入力位置および入力面積を示すデータをコントローラ５を介して毎フレーム取得し、取得したデータを入力座標データ５１および入力面積データ５２としてメインメモリ１７に記憶させる。以下では、入力面上における入力位置の座標を（Ｉｐｘ，Ｉｐｙ）と表し、入力面積をＩｓと表す。
【００７７】
入力領域半径データ５３は、円形領域として取り扱われる入力領域の半径を示すデータである。入力領域の半径は上記入力面積から算出される。以下では、入力領域の半径をＩｒと表す。
【００７８】
仮想領域座標データ５４は、仮想領域の位置を表す座標を示すデータである。また、仮想領域半径データ５５は、仮想領域の半径を示すデータである。これらのデータは、タッチ入力が検出されている間は毎フレーム更新される。また、タッチ入力が検出されないフレームでは、これらのデータはメインメモリ１７に記憶されない。以下では、仮想領域の位置の座標を（Ｖｐｘ，Ｖｐｙ）と表し、仮想領域の半径をＶｒと表す。
【００７９】
領域間ベクトルデータ５６は、入力領域の位置を始点とし仮想領域の位置を終点とする２次元のベクトル（領域間ベクトル）を示すデータである。以下では、領域間ベクトルを（Ｌｘ，Ｌｙ）と表す。移動量データ５７は、仮想領域を１フレーム当たりに移動させる移動量を示すデータである。以下では、移動量をＡと表す。
【００８０】
現在タッチ座標データ５８は、プレイヤがタッチ入力を行った位置としてゲーム装置２において取り扱われる位置の座標を示すデータである。以下では、この座標を「タッチ座標」と呼ぶ。具体的には、タッチ座標は、現在の仮想領域の座標である。ゲーム装置２は、タッチ座標に基づいてゲーム処理（本実施形態では、カーソルを移動させる処理）を実行する。現在タッチ座標データ５８は、現在のタッチ座標を示すデータであり、仮想領域座標データ５４と同様、タッチ入力が検出されている間は毎フレーム更新される。前タッチ座標データ５９は、前回のタッチ座標を示すデータである。すなわち、ゲーム装置２において新たなタッチ座標が算出されると、算出されたタッチ座標を示すデータが現在タッチ座標データ５８としてメインメモリ１７に更新して記憶され、更新前の現在タッチ座標データ５８は前タッチ座標データ５９としてメインメモリ１７に記憶される。
【００８１】
追従度データ６０は、追従度を示すデータである。追従度とは、仮想領域が入力領域に追従する度合いを示す指標である。ここでは、追従度Ｓは、０＜Ｓ＜１の範囲で設定される。追従度Ｓの値を大きくすると、入力領域に対する仮想領域の追従性を高くすることができ、追従度Ｓの値を小さくすると、入力領域に対する仮想領域の追従性を低くすることができる。なお、追従度Ｓの値は、ゲームプログラムにおいて予め設定されている値をゲーム装置２が読み込んでメインメモリ１７に記憶させるようにしてもよいし、ゲーム状況やプレイヤによる指示に応じて値が適宜設定されるようにしてもよい。
【００８２】
タッチフラグデータ６１は、タッチ入力が現在行われているか否かを表すフラグを示すデータである。具体的には、タッチパッド７に対する入力がある場合、フラグの値は“１”に設定され、タッチパッド７に対する入力がない場合、フラグの値は“０”に設定される。
【００８３】
次に、ゲームプログラムを実行することによってゲーム装置２において行われるゲーム処理の詳細を、図１３〜図１５を用いて説明する。図１３は、ゲーム装置２において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置２の電源が投入されると、ゲーム装置２のＣＰＵ１１は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ１７等の各ユニットが初期化される。そして、光ディスク３に記憶されたゲームプログラムがメインメモリ１７に読み込まれ、ＣＰＵ１１によって当該ゲームプログラムの実行が開始される。図１３に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図１３〜図１５に示すフローチャートにおいては、ゲーム処理のうち、タッチパッド７への入力に基づいて上記カーソルを移動する処理について詳細に示し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。
【００８４】
図１３のステップＳ１において、まず、初期処理が実行される。具体的には、上記追従度Ｓの値を示す追従度データ６０がメインメモリ１７に記憶される。さらにステップＳ１においては、キーボード３２、カーソル３３および文字表示領域３４がテレビ６の画面に表示される（図３参照）。ステップＳ１の初期処理の後にゲームが開始され、以降のステップＳ２〜Ｓ１２の処理ループが１フレーム毎に繰り返されることによってゲームが進行していく。
【００８５】
ステップＳ２において、タッチ座標算出処理が実行される。タッチ座標算出処理においては、プレイヤによるタッチ入力に基づいてタッチ座標が算出される。以下、図１４および図１５を用いてタッチ座標算出処理の詳細を説明する。
【００８６】
図１４および図１５は、図１３に示すタッチ座標算出処理（Ｓ２）の詳細な処理の流れを示すフローチャートである。出力ベクトル算出処理においては、まずステップＳ１１において、タッチパッド７に対する入力があったか否かが判定される。具体的には、ＣＰＵ１１は、コントローラ５から出力される操作データを読み込み、上記入力位置および入力面積を示すデータが操作データに含まれているか否かを判定する。操作データにこれらのデータが含まれている場合、タッチパッド７に対する入力があると判定されてステップＳ１３の処理が行われる。一方、操作データにこれらのデータが含まれておらず、タッチパッド７に対する入力がないことを示すデータが操作データに含まれている場合、タッチパッド７に対する入力がないと判定されてステップＳ１２の処理が行われる。
【００８７】
ステップＳ１２においてはタッチフラグがオフに設定される。すなわち、ＣＰＵ１１は、メインメモリ１７に記憶されているタッチフラグデータ６１の値を“０”に設定する。ステップＳ１２の後、ＣＰＵ１１はタッチ座標算出処理を終了する。すなわち、タッチ入力がない場合にはタッチ座標は算出されない。
【００８８】
一方、ステップＳ１３においては、タッチパッド７の入力位置および入力面積が取得される。具体的には、ＣＰＵ２２は、ステップＳ１１で読み込んだ操作データに含まれている入力位置の座標および入力面積を示すデータを、入力座標データ５１および入力面積データ５２としてメインメモリ１７に記憶する。続くステップＳ１４において、ステップＳ１３で取得された入力面積に基づいて入力領域の半径を算出する。入力領域の半径は、入力領域の形状を円形とし、当該入力面積を有する円形領域の半径を算出することによって得られる。算出された半径を示すデータは、入力領域半径データ５３としてメインメモリ１７に記憶される。
【００８９】
ステップＳ１５においては、ステップＳ１１で検出されたタッチ入力が最初のタッチ入力であるか否かが判定される。ここで、最初のタッチ入力とは、前回のフレームでタッチ入力が検出されなかった場合に今回のフレームで検出されたタッチ入力である。ステップＳ１５の判定は、具体的には、メインメモリ１７に記憶されているタッチフラグデータ６１を参照することによって行われる。すなわち、タッチフラグデータ６１により示される値が“０”である場合、ステップＳ１１で検出されたタッチ入力が最初のタッチ入力であると判定され、タッチフラグデータ６１により示される値が“１”である場合、ステップＳ１１で検出されたタッチ入力が最初のタッチ入力でないと判定される。ステップＳ１１で検出されたタッチ入力が最初のタッチ入力であると判定される場合、ステップＳ１６およびＳ１７の処理が実行される。一方、ステップＳ１１で検出されたタッチ入力が最初のタッチ入力でないと判定される場合、ステップＳ１６およびＳ１７の処理がスキップされてステップＳ２１の処理が実行される。
【００９０】
ステップＳ１６においては、タッチフラグがオンに設定される。すなわち、ＣＰＵ１１は、メインメモリ１７に記憶されているタッチフラグデータ６１の値を“１”に設定する。続くステップＳ１７において、仮想領域の座標および半径の値が初期化される。具体的には、仮想領域の座標（Ｖｐｘ，Ｖｐｙ）は、入力座標（Ｉｐｘ，Ｉｐｙ）に基づいて決定される。すなわち、ＣＰＵ１１は、メインメモリ１７に記憶されている入力座標データ５１を参照して、Ｖｐｘ＝Ｉｐｘ、かつ、Ｖｐｙ＝Ｉｐｙとなるように仮想領域の座標を決定する。また、仮想領域の半径Ｖｒは、Ｖｒ＝０と決定される。以上のように決定された仮想領域の座標および半径を示すデータは、仮想領域座標データ５４および仮想領域半径データ５５としてメインメモリ１７に記憶される。ステップＳ１７の次にステップＳ２１の処理が実行される。
【００９１】
ステップＳ２１においては、仮想領域の半径が、入力領域の半径に近づくように変更される。仮想領域の半径Ｖｒは、変更前の仮想領域の半径（Ｖｒ’とする）と、入力領域の半径Ｉｒと、追従度Ｓとに基づいて算出される。ＣＰＵ１１は、メインメモリ１７に記憶されている入力領域半径データ５３、仮想領域半径データ５５および追従度データ６０を参照して、次の式（１）に従って仮想領域の半径Ｖｒを算出する。
Ｖｒ＝Ｖｒ’＋（Ｉｒ−Ｖｒ’）×Ｓ  …（１）
上式（１）によって得られた変更後の仮想領域の半径Ｖｒを示すデータは、仮想領域半径データ５５としてメインメモリ１７に更新して記憶される。
【００９２】
続くステップＳ２２において、領域間ベクトルが算出される。上述したように、領域間ベクトルは、入力領域の位置を始点とし仮想領域の位置を終点とするベクトルである。領域間ベクトル（Ｌｘ，Ｌｙ）は、入力領域の位置座標（すなわち、入力座標）（Ｉｐｘ，Ｉｐｙ）と、仮想領域の位置座標（Ｖｐｘ，Ｖｐｙ）とに基づいて算出される。ＣＰＵ１１は、メインメモリ１７に記憶されている入力座標データ５１および仮想領域座標データ５４を参照して、次の式（２）に従って領域間ベクトル（Ｌｘ，Ｌｙ）を算出する。
Ｌｘ＝Ｉｐｘ−Ｖｐｘ
Ｌｙ＝Ｉｐｙ−Ｖｐｙ  …（２）
上式（２）によって得られた領域間ベクトル（Ｌｘ，Ｌｙ）を示すデータは、領域間ベクトルデータ５６としてメインメモリ１７に更新して記憶される。なお、ステップＳ２２において、ＣＰＵ１１は、上式（２）によって得られた領域間ベクトル（Ｌｘ，Ｌｙ）の大きさをさらに算出する。
【００９３】
ステップＳ２３においては、ステップＳ２２で算出された領域間ベクトル（Ｌｘ，Ｌｙ）の大きさが０であるか否かが判定される。ステップＳ２３の判定において、領域間ベクトルの大きさが０である場合、後述するステップＳ２４〜Ｓ２８の処理がスキップされて、ステップＳ２９の処理が実行される。領域間ベクトルの大きさが０である場合とは、入力領域の位置と仮想領域の位置とが同じ位置である場合である。この場合、仮想領域を移動させる必要はないので、仮想領域を移動させるための処理であるステップＳ２４〜Ｓ２８の処理がスキップされるのである。一方、ステップＳ２３の判定において、領域間ベクトルの大きさが０である場合、ステップＳ２４の処理が実行される。
【００９４】
ステップＳ２４においては、仮想領域の半径Ｖｒと入力領域の半径Ｉｒとが比較され、仮想領域の半径Ｖｒが入力領域の半径Ｉｒよりも大きいか否かが判定される。ＣＰＵ１１は、メインメモリ１７に記憶されている入力領域半径データ５３および仮想領域半径データ５５を参照して、Ｖｒ＞Ｉｒであるか否かを判定する。上述したように、仮想領域を移動させるべき移動量の算出方法は、仮想領域の半径が入力領域よりも大きい場合と小さい場合とで異なっている。ステップＳ２４は、上記移動量の算出方法を決定するための処理である。ステップＳ２４の判定の結果、仮想領域の半径Ｖｒが入力領域の半径Ｉｒよりも大きい場合、ステップＳ２５の処理が実行される。一方、仮想領域の半径Ｖｒが入力領域の半径Ｉｒ以下である場合、ステップＳ２６の処理が実行される。
【００９５】
ステップＳ２５においては、仮想領域の移動量Ａが算出される。ステップＳ２５では、移動量Ａは、入力領域が仮想領域からはみ出した部分の距離として算出される。つまり、入力領域が仮想領域からはみ出した分だけ仮想領域が移動される。換言すれば、仮想領域は、入力領域の全体が仮想領域の内側に含まれるように移動される。具体的には、ＣＰＵ１１は、入力領域が仮想領域からはみ出した部分の距離（移動量Ａ）を、入力領域半径データ５３、仮想領域半径データ５５、および領域間ベクトルデータ５６を参照して、式（３）に従って算出する。
Ａ＝（Ｌ＋Ｉｒ）−Ｖｒ  …（３）
上式（３）において、Ｌは、領域間ベクトルの大きさである。式（３）の結果、入力領域が仮想領域に接しないで仮想領域の内側に含まれる場合、移動量Ａの値は負になる。入力領域が仮想領域に対して内側で接している場合、移動量Ａの値は０になる。入力領域が仮想領域に対して２点で接している場合、入力領域が仮想領域に対して外側で接している場合、または、入力領域が仮想領域に接しないで外側に位置する場合、移動量Ａの値は正になる。上式（３）によって得られた移動量Ａを示すデータは、移動量データ５７としてメインメモリ１７に更新して記憶される。ステップＳ２５の次にステップＳ２７の処理が実行される。
【００９６】
一方、ステップＳ２６においてもステップＳ２５と同様、仮想領域の移動量Ａが算出される。ここで、ステップＳ２６では、移動量Ａは、仮想領域が入力領域からはみ出した部分の距離として算出される。つまり、仮想領域が入力領域からはみ出した分だけ仮想領域が移動される。換言すれば、仮想領域は、その全体が入力領域の内側に含まれるように移動される。具体的には、ＣＰＵ１１は、仮想領域が入力領域からはみ出した部分の距離（移動量Ａ）を、入力領域半径データ５３、仮想領域半径データ５５、および領域間ベクトルデータ５６を参照して、式（４）に従って算出する。
Ａ＝（Ｌ＋Ｖｒ）−Ｉｒ  …（４）
上式（４）において、Ｌは、領域間ベクトルの大きさである。式（４）の結果、仮想領域が入力領域に接しないで入力領域の内側に含まれる場合、移動量Ａの値は負になる。仮想領域が入力領域に対して内側で接している場合、移動量Ａの値は０になる。仮想領域が入力領域に対して２点で接している場合、仮想領域が入力領域に対して外側で接している場合、または、仮想領域が入力領域に接しないで外側に位置する場合、移動量Ａの値は正になる。上式（４）によって得られた移動量Ａを示すデータは、移動量データ５７としてメインメモリ１７に更新して記憶される。ステップＳ２６の次にステップＳ２７の処理が実行される。
【００９７】
ステップＳ２７においては、ステップＳ２５またはＳ２６で算出された移動量Ａの値が正であるか否かが判定される。すなわち、ＣＰＵ１１は、メインメモリ１７に記憶されている移動量データ５７により示される移動量ＡがＡ＞０であるか否かを判定する。ここで、Ａ≦０であることは、入力領域および仮想領域のうちの小さい方の一方が他方の内側に含まれていることを意味しており、このとき、仮想領域を移動させる必要はない。ステップＳ２７の処理は、仮想領域を移動させる必要があるか否かを判定するための処理である。ステップＳ２７の判定において、移動量Ａの値が正である場合、仮想領域を移動させる処理であるステップＳ２８の処理が実行される。一方、移動量Ａの値が正でない（すなわち、移動量Ａが０または負である）場合、ステップＳ２８の処理がスキップされてステップＳ２９の処理が実行される。
【００９８】
ステップＳ２８においては、ステップＳ２５またはＳ２６で算出された移動量Ａに基づいて仮想領域の位置が移動される。移動後の仮想領域の位置座標（Ｖｐｘ，Ｖｐｙ）は、移動前の仮想領域の位置座標（ステップＳ２８の処理前の時点における仮想領域座標データ５４により示される座標）（Ｖｐｘ’，Ｖｐｙ’）と、移動量Ａと、領域間ベクトル（Ｌｘ，Ｌｙ）とに基づいて算出される。具体的には、ＣＰＵ１１は、メインメモリ１７に記憶されている仮想領域座標データ５４、領域間ベクトルデータ５６、および移動量データ５７を参照して、次の式（５）に従って移動後の仮想領域の位置を算出する。
Ｖｐｘ＝Ｖｐｘ’＋Ｌｘ／Ｌ×Ａ
Ｖｐｙ＝Ｖｐｙ’＋Ｌｙ／Ｌ×Ａ  …（５）
上式（５）において、Ｌは、領域間ベクトルの大きさである。式（５）によって、仮想領域は、仮想領域の中心位置から入力領域の中心位置への方向に移動量Ａの長さだけ移動される。上式（５）によって得られた仮想領域の位置座標（Ｖｐｘ，Ｖｐｙ）を示すデータは、仮想領域座標データ５４としてメインメモリ１７に更新して記憶される。ステップＳ２８の次にステップＳ２９の処理が実行される。
【００９９】
ステップＳ２９において、仮想領域の位置を表す座標がタッチ座標に設定される。すなわち、ＣＰＵ１１は、メインメモリ１７に記憶されている仮想領域座標データ５４により示される座標値を、現在タッチ座標データ５８としてメインメモリ１７に更新して記憶する。このとき、更新前における現在タッチ座標データ５８により示される座標値は、前タッチ座標データ５９としてメインメモリ１７に更新して記憶される。以上によって、プレイヤによるタッチ入力に基づいて、プレイヤが指定しようとしたと判断される位置座標（すなわちタッチ座標）が算出される。ステップＳ２９の処理が終了すると、ＣＰＵ１１はタッチ座標算出処理を終了する。
【０１００】
図１３の説明に戻り、ステップＳ２の次のステップＳ３において、ステップＳ２で算出されたタッチ座標に基づいて画面上におけるカーソルの位置が決定される。ＣＰＵ１１は、まず、現在のタッチ座標の位置を終点とし、前回のタッチ座標の位置を始点とするベクトルを算出する。このベクトルは、メインメモリ１７に記憶されている現在タッチ座標データ５８により示される座標と、前タッチ座標データ５９により示される座標とを用いて算出することができる。さらに、ＣＰＵ１１は、上記ベクトルに基づいて画面上のカーソルを移動させる。ＣＰＵ１１は、カーソルの移動前の位置を基点とし、上記ベクトルの向きに応じた画面上の方向へ、上記ベクトルの大きさに応じた長さだけカーソルを移動させる。以上のステップＳ３によって、移動後のカーソルの位置が決定されることによってカーソルを移動させることができる。なお、タッチ入力が行われていない場合、すなわち、タッチフラグがオフに設定されている場合、ＣＰＵ１１はカーソルを移動させない。また、カーソルを移動させる方法は上記に限らず、例えば、タッチパッド７の入力面上の位置と画面上の位置とを対応付けておき、ステップＳ３で算出されたタッチ座標の位置に対応する画面上の位置にカーソルを移動するようにしてもよい。
【０１０１】
ステップＳ４においては、タッチパッド７の裏面に設けられたスイッチが押下されたか否かが判定される。なお、ステップＳ１１で読み込んだ操作データには、上記スイッチが押下されたか否かを示すデータが含まれている。ＣＰＵ１１は、当該データに基づいて、スイッチが押下されたか否かを判定する。判定の結果、スイッチが押下されたと判定される場合、ステップＳ５の処理が実行される。一方、スイッチが押下されていないと判定される場合、ステップＳ５の処理がスキップされてステップＳ６の処理が実行される。
【０１０２】
ステップＳ５においては、ステップＳ３で位置が決定されたカーソルによって指定されるキーが特定される。この結果、特定されたキーに対応する文字が入力されることになる。
【０１０３】
ステップＳ６においては、表示処理が実行される。具体的には、キーボード３２や文字表示領域３４の画像とともに、ステップＳ３で決定された位置にカーソルがテレビ６の画面に表示される（図３参照）。また、ステップＳ５が実行された場合には、上記キーボードおよびカーソルが表示されるとともに、ステップＳ５で決定された文字が文字表示領域３４に表示される。ステップＳ６の次にステップＳ７が実行される。
【０１０４】
ステップＳ７において、ゲームを終了するか否かが判定される。ゲームを終了するか否かの判定は、例えば、ゲームを終了するための所定の操作がプレイヤによって行われたか否かによって行うことができる。ステップＳ７の判定において、ゲームを終了すると判定される場合、ＣＰＵ１１は図１３に示すゲーム処理を終了する。一方、ゲームを終了しないと判定される場合、ステップＳ２の処理が再度実行される。以降、ステップＳ７においてゲームを終了すると判定されるまでステップＳ２〜Ｓ７の処理ループが繰り返し実行される。
【０１０５】
以上のように本実施形態によれば、ゲーム装置２は、入力領域とは別に仮想領域を設定し、入力領域に追従するように仮想領域を変化させる。そして、仮想領域に基づいてプレイヤの操作内容を判断する。これによって、プレイヤが意図しない入力領域の変化に起因する、プレイヤの意図しない操作が行われることを防止することができる。
【０１０６】
なお、第１の実施形態においては、仮想領域の位置を用いて、カーソル３３の画面上の位置を移動させる処理を実行する場合を例にとって説明した。ここで、他の実施形態においては、ゲーム装置２は、仮想領域に基づいて所定の処理を実行するものであればよい。所定の処理は、仮想領域の位置に限らず、仮想領域の形状および／または面積に基づいてその処理内容が決定されるものであってもよい。
【０１０７】
（第２の実施形態）
以下、本発明の第２の実施形態について説明する。第２の実施形態では、タッチパッド７の入力面の裏面に設けられた上記スイッチが押下される際に入力領域が変化することに起因する、プレイヤが意図しない操作を防止することを目的とする。すなわち、スイッチが押下される際には、入力面を単にタッチしている場合よりも入力面が強く押下されるので、入力領域が大きくなり、その結果入力位置も変化する。したがって、入力位置に基づいてカーソルを移動させる場合には、スイッチが押下されることによってカーソルが（プレイヤが意図しないにもかかわらず）移動してしまい、その結果、プレイヤが意図しない操作が行われてしまう。第２の実施形態は、スイッチが押下される際に、カーソルが意図しない方向へ移動してしまう問題を解決するものである。
【０１０８】
第２の実施形態に係るゲーム装置は、図１および図２に示すゲーム装置２と同じであるので、ゲーム装置２に関する詳細な説明は省略する。第２の実施形態においては、ゲーム装置２において実行されるゲーム処理が第１の実施形態とは異なる。以下、ゲーム処理を中心に第２の実施形態を説明する。
【０１０９】
図１６は、第２の実施形態に係るゲーム装置１０のメインメモリ１７に記憶される主なデータを示す図である。図１６に示すように、メインメモリ１７には、入力座標データ５１、現在タッチ座標データ５８、前タッチ座標データ５９、およびカーソル座標データ群７１が記憶される。なお、図１６においては、図１２に示すデータと同じデータについて図１２と同じ参照符号を付し、詳細な説明を省略する。
【０１１０】
カーソル座標データ群７１は、カーソルの画面上における位置を表す座標（カーソル座標）を示すデータ（カーソル座標データ）の集合である。第２の実施形態においては、入力座標に基づいてカーソル座標を算出する処理が１フレーム毎に実行される。これによって、プレイヤは、タッチパッド７を用いてカーソルを移動させることができる。ゲーム装置２は、カーソル座標が算出されると、算出された順にカーソル座標データをメインメモリ１７に追加して記憶する。タッチ入力が連続して検出される間は新たなカーソル座標が算出されるので、タッチ入力が連続して検出される間は、新たなカーソル座標データがカーソル座標データ群７１に追加されていく。カーソル座標データ群７１の内容は、タッチオフされたときにリセットされる。したがって、タッチオンが行われて最初に算出されたカーソル座標を示すカーソル座標データが第１カーソル座標データ７１ａとしてメインメモリ１７に記憶され、２番目に算出されたカーソル座標を示すカーソル座標データが第２カーソル座標データ７１ｂとしてメインメモリ１７に記憶される。なお、ここでは、第ｎ（ｎは１以上の整数）番目に算出されたカーソル座標を示すカーソル座標データを「第ｎカーソル座標データ」とする。
【０１１１】
次に、第２の実施形態におけるゲーム処理の詳細を、図１７を用いて説明する。図１７は、第２の実施形態に係るゲーム装置２において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置２の電源が投入されてから、図１７に示すゲーム処理が開始されるまでの動作は、第１の実施形態と同様である。なお、図１７において、図１３に示すステップと同じ処理を示すステップについては図１３と同じステップ番号を付し、詳細な説明は省略する。
【０１１２】
図１７においては、まず、ステップＳ１において、初期処理が実行される。この初期処理は第１の実施形態における初期処理と同様の処理である。ステップＳ１の初期処理の後にゲームが開始され、以降のステップＳ５１〜Ｓ７の処理ループが１フレーム毎に繰り返されることによってゲームが進行していく。
【０１１３】
ステップＳ５１においては、タッチパッド７およびスイッチに関する入力データが取得される。第２の実施形態では、タッチパッド７に関する入力データには、上記入力座標を示すデータが含まれており、入力面積を示すデータは含まれていなくてもよい。また、スイッチに関する入力データは、スイッチが押下されたか否かを示すデータである。ＣＰＵ１１は、タッチパッド７およびスイッチに関する入力データをコントローラ５から読み込んで、メインメモリ１７に記憶する。入力座標を示すデータは、入力座標データ５１としてメインメモリ１７に記憶される。ステップＳ５１の次にステップＳ５２の処理が実行される。
【０１１４】
ステップＳ５２においては、ステップＳ５１で取得された入力座標データに基づいてタッチ座標が算出される。タッチ座標の具体的な算出方法はどのような方法であってもよく、例えば、上記第１の実施形態におけるタッチ座標算出処理（ステップＳ３）と同様の方法で算出してもよいし、入力座標データにより示される入力座標をそのままタッチ座標とするようにしてもよい。ステップＳ５２の次にステップＳ３の処理が実行される。
【０１１５】
ステップＳ３においては、ステップＳ２で算出されたタッチ座標に基づいて画面上におけるカーソルの位置が算出される。ステップＳ３の処理は第１の実施形態と同様である。ステップＳ３によって算出されたカーソルの位置を表すカーソル座標を示すデータ（カーソル座標データ）は、メインメモリ１７に追加して記憶される。
【０１１６】
ステップＳ３の次に実行されるステップＳ４の判定処理は、第１の実施形態と同様である。第２の実施形態においては、ステップＳ４における判定結果が肯定であった場合、ステップＳ５３およびＳ５４の処理が実行される。一方、ステップＳ４における判定結果が否定であった場合、ステップＳ５３およびＳ５４の処理がスキップされてステップＳ６の処理が実行される。
【０１１７】
ステップＳ５３においては、予め定められた所定数だけ前のフレームにおけるカーソル位置が特定される。具体的には、ＣＰＵ１１は、メインメモリ１７に記憶されているカーソル座標データ群７１を参照して、現在のフレームで算出されたカーソル座標データから所定数前に算出されたカーソル座標データを特定する。これによって、特定されたカーソル座標データにより示されるカーソル座標により表される位置が特定される。例えば、第ｉカーソル座標データ（ｉは１以上の整数）が最新のカーソル座標データとしてメインメモリ１７に記憶されている場合を具体例として考える。上記所定数をｊ（ｊは１以上の整数）とすると、ＣＰＵ１１は、第（ｉ−ｊ）カーソル座標データにより示されるカーソル座標を特定する。以上のようにして、予め定められた所定数だけ前のフレームにおけるカーソル位置が特定することができる。
【０１１８】
なお、上記具体例において、ｊ≧ｉの場合、該当するカーソル座標データが存在しないことになる。これを解消するために、例えば、ｊ≧ｉの場合には、ステップＳ５３で特定すべきカーソル位置を、第１カーソル座標データにより示されるカーソル座標により示されるカーソル位置としてもよい。また、例えば、所定数を、ｊ≧ｉとなることが現実的にはあり得ないような値に設定してもよい。つまり、タッチパッド７にプレイヤの指が触れてからスイッチが押下されるまでに最低限要すると考えられる時間を想定し、所定数ｊにフレーム時間を積算した時間が当該時間よりも短い時間となるように所定数ｊを設定してもよい。
【０１１９】
ステップＳ５３の次のステップＳ５４においては、カーソルによって指定されるキーが特定される。具体的には、ＣＰＵ１１は、ステップＳ５３で特定されたカーソル位置にカーソルがあるとした場合に当該カーソルによって指定されるキーを特定する。特定されるキーは、現在のカーソルによって指定されるキーではなく、所定数前のフレームにおけるカーソルによって指定されるキーである。これによって、スイッチの押下によってカーソルがプレイヤの意図しない移動を行う前にカーソルが指定していたキーを特定することができる。
【０１２０】
なお、ステップＳ６およびＳ７における処理は、第１の実施形態と同様であるので説明を省略する。
【０１２１】
以上のように、第２の実施形態によれば、スイッチが押下された時点におけるカーソルではなく、スイッチが押下された時点よりも少し前の時点（正確には、所定数フレームだけ前の時点）におけるカーソルによって指定されるキーが、文字を入力すべきキーとして選択される。タッチパッド７を用いてカーソルを移動させることによってキーを選択する場合、プレイヤは、まずカーソルが所望のキーを指定するようにカーソルを移動させ、次に、スイッチを押下すると考えられる。つまり、スイッチを押下する直前には、カーソルは正しいキー（所望のキー）を指定していると考えられる。したがって、本実施形態によれば、スイッチを押下する際にカーソルがプレイヤの意図しない移動を行ったとしても、スイッチを押下する前にカーソルが指定していたキーを選択することができるので、プレイヤは所望のキーを正確に選択することができる。
【０１２２】
なお、第２の実施形態においては、カーソル座標データを保存しておき、スイッチが押下されたことが検出された場合、所定数フレーム前の時点におけるカーソル座標データを用いて、プレイヤが意図しているカーソルの位置を特定するようにした。ここで、他の実施形態においては、カーソル座標データを保存する代わりに、入力座標またはタッチ座標を保存するようにしてもよい。このとき、スイッチが押下されたことが検出された場合、ゲーム装置は、所定数フレーム前の時点における入力座標またはタッチ座標を用いて、プレイヤが意図しているカーソルの位置を特定すればよい。
【０１２３】
また、第２の実施形態においては、ステップＳ５３における所定数は、予め定められているものとしたが、他の実施形態においては、タッチパッドに対する入力状態等に基づいて当該所定数を決定するようにしてもよい。例えば、タッチパッドが入力面積を検出することが可能な場合には、ゲーム装置は、入力面積を示すデータを毎フレーム記憶しておく。さらに、前回のフレームにおける入力面積と今回のフレームにおける入力面積との差が、予め定められた所定値以上であるか否かを判定する。判定の結果、当該差が当該所定値以上となるフレーム（またはその前のフレーム）について、カーソル座標（入力座標またはタッチ座標でもよい）を記憶しておく。スイッチが押下されたことが検出された場合には、当該フレームにおけるカーソル座標を用いて、プレイヤが意図しているカーソルの位置を特定する。以上によれば、入力面積が大きく変化したフレーム、すなわち、プレイヤがスイッチを押下しようとしたフレームを検知することができ、このフレームにおけるカーソル位置を特定することができるので、プレイヤが意図しているカーソルの位置を正確に特定することができる。
【０１２４】
なお、第２の実施形態は、上述したようなタッチパッドと押下スイッチとが組み合わされた入力装置に限らず、２次元の値を入力することが可能な操作部を備えるとともに、その操作部を押下したことを検知することが可能な入力装置に適用することができる。例えば、スティックキーと押下スイッチとが組み合わされた入力装置についても適用することが可能である。
【０１２５】
従来より、２次元の入力を行うことが可能であるとともに押下することが可能なスティックキーを備えるパーソナルコンピュータがある。ユーザは、このスティックキーを前後方向および左右方向に傾倒することによって、傾倒方向に応じた２次元値の入力を行うことが可能である。さらに、このスティックキーを押下することによって、オン／オフの入力を行うことが可能である。このようなスティックキーを用いて、図３に示した例における文字入力操作を行うことが可能である。すなわち、スティックキーの傾倒に応じた２次元値を用いて画面上のカーソルを移動させ、スティックキーが押下されたことに応じて、カーソルで指定されるキーに対応する文字の入力を行うことが可能である。
【０１２６】
上記のようなスティックキーを操作する場合にも、スティックキーを押下する際にスティックキーが若干傾倒してしまうことがある。このとき、プレイヤが意図しないにもかかわらず、２次元の入力が行われてしまうことになる。具体的には、プレイヤは、スティックキーを傾倒させることによって所望のキーを指定する位置にカーソルを移動させた後、スティックキーを押下することによって当該所望のキーを選択する操作を行う。しかし、スティックキーを押下する際にスティックキーが若干傾倒してしまうことによってカーソルが移動し、スティックキーの押下が検出された時点では所望のキーとは別のキーをカーソルが指定してしまうことがある。
【０１２７】
ここで、上記のようなスティックキーを入力装置とする情報処理装置において第２の実施形態に係るプログラムを用いることによって、プレイヤは、スティックキーを押下する前においてカーソルによって指定されたキーを選択することができる。したがって、第２の実施形態によれば、上記のようなスティックキーを入力装置とする情報処理装置においても、所望のキーを正確に選択することができる。
【０１２８】
また、上記第１および第２の実施形態においては、コントローラ５から出力された入力データ（入力座標データおよび入力面積）を受け取ったゲーム装置２が、カーソルを移動させるために用いるタッチ座標ベクトルを算出する処理を実行した。ここで、他の実施形態では、コントローラ５側でタッチ座標ベクトルを算出する処理を実行するようにしてもよい。すなわち、コントローラ５は、入力領域を示すデータを記憶し、入力領域に基づいて仮想領域を算出し、算出した仮想領域を示すデータ（仮想領域の位置、大きさ、形状のうちの少なくとも１つを示すデータ）を生成するようにしてもよい。そして、コントローラ５は、生成されたデータを操作データとしてゲーム装置２に送信する。ゲーム装置２は、受信した上記操作データに基づいて所定のゲーム処理（例えば、カーソルを移動させる処理）を行う。以上の構成によれば、ゲーム装置２は、操作データに応じたゲーム処理を行うだけであるので、従来のゲーム装置をそのまま適用することができる。すなわち、上記コントローラを従来のゲーム装置に接続することによって、図１と同等のゲームシステムを実現することができる。
【産業上の利用可能性】
【０１２９】
本発明は、簡易な構成で、ポインティングデバイスの操作性を向上すること等を目的として、ゲーム装置等の情報処理装置において利用することが可能である。
【図面の簡単な説明】
【０１３０】
【図１】第１の実施形態に係る情報処理装置の一例であるゲームシステムの構成を示す外観図
【図２】図１に示すゲームシステムのブロック図
【図３】第１の実施形態における表示画面の一例を示す図
【図４】タッチ入力が開始された時刻ｔ０における入力の様子を示す図
【図５】上記時刻ｔ０からフレーム時間ｔが経過した時点（時刻：ｔ０＋ｔ）における入力の様子を示す図
【図６】図５における時刻（ｔ０＋ｔ）からフレーム時間ｔが経過した時点（時刻：ｔ０＋２ｔ）における入力の様子を示す図
【図７】図６に示す状態から仮想領域４２の位置を補正した後の入力の様子を示す図
【図８】タッチ入力が行われている途中のある時刻（ｔ１）における入力の様子を示す図
【図９】時刻ｔ１からフレーム時間ｔが経過した時点（時刻：ｔ１＋ｔ）における入力の様子を示す図
【図１０】図９における時刻（ｔ１＋ｔ）からフレーム時間ｔが経過した時点（時刻：ｔ１＋２ｔ）における入力の様子を示す図
【図１１】図１０に示す状態から仮想領域４２の位置を補正した後の入力の様子を示す図
【図１２】ゲーム装置２のメインメモリ１７に記憶される主なデータを示す図
【図１３】第１の実施形態に係るゲーム装置２において実行されるゲーム処理の流れを示すフローチャート
【図１４】図１３に示すタッチ座標算出処理の詳細な処理の流れを示すフローチャート
【図１５】図１３に示すタッチ座標算出処理の詳細な処理の流れを示すフローチャート
【図１６】第２の実施形態に係るゲーム装置１０のメインメモリ１７に記憶される主なデータを示す図
【図１７】第２の実施形態に係るゲーム装置２において実行されるゲーム処理の流れを示すフローチャート
【図１８】入力面に対する入力が行われたときの様子を示す従来図
【図１９】入力面に対する入力が行われたときの様子を示す従来図
【符号の説明】
【０１３１】
１  ゲームシステム
２  ゲーム装置
３  光ディスク
４  メモリカード
５  コントローラ
６  テレビ
７ａ，７ｂ  タッチパッド
１１  ＣＰＵ
１７  メインメモリ
４１  入力領域
４２  仮想領域
【図１】
0004590328.tif 000002
【図２】
0004590328.tif 000003
【図３】
0004590328.tif 000004
【図４】
0004590328.tif 000005
【図５】
0004590328.tif 000006
【図６】
0004590328.tif 000007
【図７】
0004590328.tif 000008
【図８】
0004590328.tif 000009
【図９】
0004590328.tif 000010
【図１０】
0004590328.tif 000011
【図１１】
0004590328.tif 000012
【図１２】
0004590328.tif 000013
【図１３】
0004590328.tif 000014
【図１４】
0004590328.tif 000015
【図１５】
0004590328.tif 000016
【図１６】
0004590328.tif 000017
【図１７】
0004590328.tif 000018
【図１８】
0004590328.tif 000019
【図１９】
0004590328.tif 000020