(57)【特許請求の範囲】
【請求項１】
ユーザの身体を乗せることが可能な入力装置から出力される当該入力装置に加わる荷重に基づいたデータが利用可能であり、当該入力装置から得られたデータを処理する情報処理装置のコンピュータで実行される情報処理プログラムであって、
前記コンピュータを
前記入力装置から出力されたデータに基づいて、当該入力装置に加わる荷重における重心位置を繰り返し取得する重心位置取得手段と、
前記重心位置を用いて、前記入力装置上で足踏みするユーザ方向を算出するユーザ方向算出手段と、
前記ユーザ方向に基づいて、所定の処理を行う処理手段として機能させる、情報処理プログラム。
【請求項２】
前記ユーザ方向算出手段は、前記重心位置の移動方向に基づいて、前記ユーザ方向を算出する、請求項１に記載の情報処理プログラム。
【請求項３】
前記ユーザ方向算出手段は、前記重心位置取得手段によって異なるタイミングで取得された２つの重心位置を結ぶ直線に垂直な方向候補を用いて、前記ユーザ方向を算出する、請求項１または２に記載の情報処理プログラム。
【請求項４】
前記ユーザ方向算出手段は、前記重心位置取得手段によって異なるタイミングで連続して取得された２つの重心位置を結ぶ直線に垂直な方向候補を用いて、前記ユーザ方向を算出する、請求項１乃至３のいずれか１つに記載の情報処理プログラム。
【請求項５】
前記ユーザ方向算出手段は、前回の処理で決定された前記ユーザ方向を、前記方向候補が示す方向へ所定の割合で近づけることによって、前記ユーザ方向を更新する、請求項３または４のいずれか１つに記載の情報処理プログラム。
【請求項６】
前記ユーザ方向算出手段は、前記方向候補が得られた重心位置間の距離が長いほど、前記割合を大きく設定する、請求項５に記載の情報処理プログラム。
【請求項７】
前記ユーザ方向算出手段は、前記方向候補が得られた重心位置間の距離が所定の長さより短い場合、前回の処理で決定された前記ユーザ方向を変化させない、請求項６に記載の情報処理プログラム。
【請求項８】
前記ユーザ方向算出手段は、異なるタイミングで繰り返し取得された２つの重心位置を結ぶ直線に垂直な方向候補を繰り返し算出し、当該繰り返し算出された複数の方向候補に基づいて１つの方向候補を算出する、請求項３乃至７のいずれか１つに記載の情報処理プログラム。
【請求項９】
前記ユーザ方向算出手段は、前記直線に垂直な一対の方向のうち、現時点で設定されている前記ユーザ方向に近い方を前記方向候補として算出する、請求項３乃至８のいずれか１つに記載の情報処理プログラム。
【請求項１０】
前記ユーザ方向算出手段は、前記直線に垂直な一対の方向のうち、一方の方向が所定の範囲内である場合、他方の方向を前記方向候補として算出する、請求項３乃至９のいずれか１つに記載の情報処理プログラム。
【請求項１１】
前記ユーザ方向算出手段は、異なるタイミングで繰り返し取得された２つの重心位置を結ぶ直線に垂直な方向で、かつ、当該２つの重心位置の距離を大きさとした方向候補ベクトルを繰り返し算出し、当該繰り返し算出された複数の方向候補ベクトルを加算した１つのベクトルの方向を前記方向候補として算出する、請求項３乃至７のいずれか１つに記載の情報処理プログラム。
【請求項１２】
前記ユーザ方向算出手段は、前記直線に垂直な一対の方向のうち、現時点で設定されている前記ユーザ方向に近い方を前記方向候補ベクトルの方向として算出する、請求項１１に記載の情報処理プログラム。
【請求項１３】
前記ユーザ方向算出手段は、前記直線に垂直な一対の方向のうち、一方の方向が所定の範囲内である場合、他方の方向を前記方向候補ベクトルの方向として算出する、請求項１１または１２記載の情報処理プログラム。
【請求項１４】
前記ユーザ方向算出手段が算出したユーザ方向に延びる少なくとも１つの判定線を設定する判定線設定手段として、さらに前記コンピュータを機能させ、
前記処理手段は、前記重心位置取得手段が繰り返し取得する重心位置が前記判定線を横断した場合、前記入力装置上でユーザが足踏みしたと判定し、当該判定に基づいて前記所定の処理を行う、請求項１乃至１３のいずれか１つに記載の情報処理プログラム。
【請求項１５】
前記重心位置取得手段が取得する重心位置に基づいて、前記入力装置上で足踏みするユーザの足踏み中心位置を算出する足踏み中心位置算出手段として、さらに前記コンピュータを機能させ、
前記判定線設定手段は、前記ユーザ方向へ前記足踏み中心位置を基準とした位置に前記判定線を設定する、請求項１４に記載の情報処理プログラム。
【請求項１６】
前記判定線設定手段は、前記足踏み中心位置を中心として所定の間隙を有する位置にそれぞれ前記ユーザ方向へ延びる２つの前記判定線を設定し、
前記処理手段は、前記重心位置が前記間隙から前記判定線の一方を横断した場合、前記入力装置上でユーザが一方の足で足踏みしたと判定し、前記重心位置が前記間隙から前記判定線の他方を横断した場合、前記入力装置上でユーザが他方の足で足踏みしたと判定し、当該判定に基づいて前記所定の処理を行う、請求項１５に記載の情報処理プログラム。
【請求項１７】
前記足踏み中心位置算出手段は、前記重心位置取得手段が繰り返し取得する重心位置に所定の割合で追従する位置に前記足踏み中心位置を設定する、請求項１５または１６に記載の情報処理プログラム。
【請求項１８】
前記足踏み中心位置算出手段は、前記重心位置取得手段が所定期間内に繰り返し取得した重心位置を平均した位置に前記足踏み中心位置を設定する、請求項１５または１６に記載の情報処理プログラム。
【請求項１９】
前記判定線設定手段は、所定の基準方向に対する前記ユーザ方向の角度に応じて、前記間隙の幅を変化させる、請求項１６に記載の情報処理プログラム。
【請求項２０】
前記処理手段は、前記ユーザ方向に基づいて、仮想世界に設定されたオブジェクトおよび仮想カメラの少なくとも一方の方向を変化させることによって、前記所定の処理を行う、請求項１乃至１９のいずれか１つに記載の情報処理プログラム。
【請求項２１】
ユーザの身体を乗せることが可能な入力装置から出力される当該入力装置に加わる荷重に基づいたデータが利用可能であり、当該入力装置から得られたデータを処理する情報処理装置であって、
前記入力装置から出力されたデータに基づいて、当該入力装置に加わる荷重における重心位置を繰り返し取得する重心位置取得手段と、
前記重心位置を用いて、前記入力装置上で足踏みするユーザ方向を算出するユーザ方向算出手段と、
前記ユーザ方向に基づいて、所定の処理を行う処理手段とを備える、情報処理装置。
【請求項２２】
複数の装置が通信可能に構成され、ユーザの身体を乗せることが可能な入力装置から出力される当該入力装置に加わる荷重に基づいたデータが利用可能であり、当該入力装置から得られたデータを処理する情報処理システムであって、
前記入力装置から出力されたデータに基づいて、当該入力装置に加わる荷重における重心位置を繰り返し取得する重心位置取得手段と、
前記重心位置を用いて、前記入力装置上で足踏みするユーザ方向を算出するユーザ方向算出手段と、
前記ユーザ方向に基づいて、所定の処理を行う処理手段とを備える、情報処理システム。
【請求項２３】
ユーザの身体を乗せることが可能な入力装置から出力される当該入力装置に加わる荷重に基づいたデータが利用可能であり、当該入力装置から得られたデータを処理することが可能な少なくとも１つの情報処理装置により構成される情報処理システムに含まれる１つのプロセッサまたは複数のプロセッサ間の協働により実行される情報処理方法であって、
前記入力装置から出力されたデータに基づいて、当該入力装置に加わる荷重における重心位置を繰り返し取得する重心位置取得ステップと、
前記重心位置を用いて、前記入力装置上で足踏みするユーザ方向を算出するユーザ方向算出ステップと、
前記ユーザ方向に基づいて、所定の処理を行う処理ステップとを含む、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関し、特に例えば、ユーザの動作に基づいた処理を行う情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関する。
【背景技術】
【０００２】
従来、ユーザが加える荷重の変化に基づいてゲームを行うことができるゲームシステムがある（例えば、特許文献１参照）。一例として、上記特許文献１で開示されたゲームシステムは、荷重センサを備えたボード型コントローラ上にユーザが乗ることによって当該荷重センサが検出した荷重値に基づいてゲーム処理が実行される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２６４１９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１で開示されたゲームシステムでは、ボード型コントローラの方向とボード型コントローラ上にユーザが乗るユーザの方向とが予め固定的に定義付けた上でゲーム処理が実行されている。したがって、ユーザは、上記定義付けられた方向に合わせた操作が常に要求され、操作方法が限定されてしまうことになる。例えば、ユーザが上記定義付けられた方向とは異なる方向に向いた状態でボード型コントローラ上に載って操作した場合、ユーザが行った操作をゲーム装置に正確に入力することができないため、ユーザが所望したゲーム処理を行うことができない。
【０００５】
それ故に、本発明の目的は、ユーザの動作を正確に判定して当該動作に応じた処理を行うことができる情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。なお、特許請求の範囲の記載を解釈する際に、特許請求の範囲の記載によってのみその範囲が解釈されるべきであることが理解され、特許請求の範囲の記載と本欄の記載とが矛盾する場合には、特許請求の範囲の記載が優先する。
【０００７】
本発明の情報処理プログラムの一構成例は、ユーザの身体を乗せることが可能な入力装置から出力される当該入力装置に加わる荷重に基づいたデータが利用可能であり、当該入力装置から得られたデータを処理する情報処理装置のコンピュータで実行される。情報処理プログラムは、重心位置取得手段、ユーザ方向算出手段、および処理手段として、コンピュータを機能させる。重心位置取得手段は、入力装置から出力されたデータに基づいて、入力装置に加わる荷重における重心位置を繰り返し取得する。ユーザ方向算出手段は、重心位置を用いて、入力装置上で足踏みするユーザ方向を算出する。処理手段は、ユーザ方向に基づいて、所定の処理を行う。
【０００８】
上記によれば、入力装置上におけるユーザ方向を判定して、当該ユーザ方向に応じた処理が可能となる。
【０００９】
また、上記ユーザ方向算出手段は、重心位置の移動方向に基づいて、ユーザ方向を算出してもよい。
【００１０】
上記によれば、入力装置に加わる荷重の重心位置の移動方向によって、容易にユーザ方向を算出することができる。
【００１１】
また、上記ユーザ方向算出手段は、重心位置取得手段によって異なるタイミングで取得された２つの重心位置を結ぶ直線に垂直な方向候補を用いて、ユーザ方向を算出してもよい。
【００１２】
上記によれば、異なるタイミングで取得された２つの重心位置を結ぶ直線に垂直な方向を用いて、容易にユーザ方向を算出することができる。
【００１３】
また、上記ユーザ方向算出手段は、重心位置取得手段によって異なるタイミングで連続して取得された２つの重心位置を結ぶ直線に垂直な方向候補を用いて、ユーザ方向を算出してもよい。
【００１４】
上記によれば、異なるタイミングで連続して取得された２つの重心位置を結ぶ直線に垂直な方向を用いて、容易にユーザ方向を算出することができる。
【００１５】
また、上記ユーザ方向算出手段は、前回の処理で決定されたユーザ方向を、方向候補が示す方向へ所定の割合で近づけることによって、ユーザ方向を更新してもよい。
【００１６】
上記によれば、新たに得られた方向候補が示す方向に所定割合近づけることによって、当該方向候補が有する誤差等を取り除きながら、ユーザ動作に応じたユーザ方向に更新することができる。
【００１７】
また、上記ユーザ方向算出手段は、方向候補が得られた重心位置間の距離が長いほど、割合を大きく設定してもよい。
【００１８】
上記によれば、重心位置の移動量が大きい場合にユーザ方向を大きく変化させる重み付けを行って、ユーザ方向をより正確に推定することができる。
【００１９】
また、上記ユーザ方向算出手段は、方向候補が得られた重心位置間の距離が所定の長さより短い場合、前回の処理で決定されたユーザ方向を変化させなくてもよい。
【００２０】
上記によれば、方向候補を用いてユーザ方向を推定する際の誤差を取り除くことができる。
【００２１】
また、上記ユーザ方向算出手段は、異なるタイミングで繰り返し取得された２つの重心位置を結ぶ直線に垂直な方向候補を繰り返し算出し、当該繰り返し算出された複数の方向候補に基づいて１つの方向候補を算出してもよい。
【００２２】
上記によれば、複数の方向候補を用いて１つの方向候補を算出することによって、突発的に方向候補に生じる誤差がユーザ方向の推定に与える影響を少なくすることができる。
【００２３】
また、上記ユーザ方向算出手段は、直線に垂直な一対の方向のうち、現時点で設定されているユーザ方向に近い方を方向候補として算出してもよい。
【００２４】
上記によれば、ユーザ方向が急激に変化しないことを利用して、ユーザ方向をより正確に判定することができる。
【００２５】
また、上記ユーザ方向算出手段は、直線に垂直な一対の方向のうち、一方の方向が所定の範囲内である場合、他方の方向を方向候補として算出してもよい。
【００２６】
上記によれば、入力装置上でユーザが取りにくい姿勢におけるユーザ方向を除外することによって、ユーザ方向の判定精度を向上させることができる。
【００２７】
また、上記ユーザ方向算出手段は、異なるタイミングで繰り返し取得された２つの重心位置を結ぶ直線に垂直な方向で、かつ、当該２つの重心位置の距離を大きさとした方向候補ベクトルを繰り返し算出し、当該繰り返し算出された複数の方向候補ベクトルを加算した１つのベクトルの方向を方向候補として算出してもよい。
【００２８】
上記によれば、加算されたベクトルの方向が重心の移動量で重み付けされた方向となるため、ユーザ方向をより正確に推定することができる。
【００２９】
また、上記ユーザ方向算出手段は、直線に垂直な一対の方向のうち、現時点で設定されているユーザ方向に近い方を方向候補ベクトルの方向として算出してもよい。
【００３０】
上記によれば、ユーザ方向が急激に変化しないことを利用して、ユーザ方向をより正確に判定することができる。
【００３１】
また、上記ユーザ方向算出手段は、直線に垂直な一対の方向のうち、一方の方向が所定の範囲内である場合、他方の方向を方向候補ベクトルの方向として算出してもよい。
【００３２】
上記によれば、入力装置上でユーザが取りにくい姿勢におけるユーザ方向を除外することによって、ユーザ方向の判定精度を向上させることができる。
【００３３】
また、判定線設定手段として、さらにコンピュータを機能させてもよい。上記判定線設定手段は、上記ユーザ方向算出手段が算出したユーザ方向に延びる少なくとも１つの判定線を設定する。この場合、上記処理手段は、重心位置取得手段が繰り返し取得する重心位置が判定線を横断した場合、入力装置上でユーザが足踏みしたと判定し、当該判定に基づいて所定の処理を行ってもよい。
【００３４】
上記によれば、ユーザ方向を入力装置上の足踏み判定に用いることができる。
【００３５】
また、足踏み中心位置算出手段として、さらにコンピュータを機能させてもよい。上記足踏み中心位置算出手段は、重心位置取得手段が取得する重心位置に基づいて、入力装置上で足踏みするユーザの足踏み中心位置を算出する。この場合、上記判定線設定手段は、ユーザ方向へ足踏み中心位置を基準とした位置に判定線を設定してもよい。
【００３６】
上記によれば、足踏み判定で用いる判定線を適切な位置に設定することができる。
【００３７】
また、上記判定線設定手段は、足踏み中心位置を中心として所定の間隙を有する位置にそれぞれユーザ方向へ延びる２つの判定線を設定してもよい。上記処理手段は、重心位置が間隙から判定線の一方を横断した場合、入力装置上でユーザが一方の足で足踏みしたと判定し、重心位置が間隙から判定線の他方を横断した場合、入力装置上でユーザが他方の足で足踏みしたと判定し、当該判定に基づいて所定の処理を行ってもよい。
【００３８】
上記によれば、左足の足踏みおよび右足の足踏みをそれぞれ異なる判定線で判定することによって、より正確な足踏み動作の判定が可能となる。
【００３９】
また、上記足踏み中心位置算出手段は、重心位置取得手段が繰り返し取得する重心位置に所定の割合で追従する位置に足踏み中心位置を設定してもよい。
【００４０】
また、上記足踏み中心位置算出手段は、重心位置取得手段が所定期間内に繰り返し取得した重心位置を平均した位置に足踏み中心位置を設定してもよい。
【００４１】
上記によれば、足踏み中心位置を容易に算出することができる。
【００４２】
また、上記判定線設定手段は、所定の基準方向に対するユーザ方向の角度に応じて、間隙の幅を変化させてもよい。
【００４３】
上記によれば、入力装置の形状等に合わせて、適切な判定線を設定することができる。
【００４４】
また、上記処理手段は、ユーザ方向に基づいて、仮想世界に設定されたオブジェクトおよび仮想カメラの少なくとも一方の方向を変化させることによって、所定の処理を行ってもよい。
【００４５】
上記によれば、ユーザ方向によって仮想世界におけるオブジェクトや仮想カメラの方向を変化させることができる。
【００４６】
また、本発明は、上記各手段を備える情報処理装置および情報処理システムや上記各手段で行われる動作を含む情報処理方法の形態で実施されてもよい。
【発明の効果】
【００４７】
本発明によれば、入力装置上におけるユーザ方向を判定して、当該ユーザ方向に応じた処理が可能となる。
【図面の簡単な説明】
【００４８】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置本体５の機能ブロック図
【図３】図１のボード型コントローラ９の外観の一例を示す斜視図
【図４】図１のボード型コントローラ９の電気的な構成の一例を示すブロック図
【図５】図１のボード型コントローラ９を用いて操作するユーザの様子の一例を示す図
【図６】図１のモニタ２に表示される画像の一例を示す図
【図７】ボード型コントローラ９上においてユーザが足踏みする方向を変えた場合にプレイヤオブジェクト正面方向が変化する一例を示す図
【図８】重心位置の移動に応じて推定方向ベクトルが算出される一例を示す図
【図９】算出されたユーザ正面方向ベクトルに応じて設定される足踏み判定線の一例を示す図
【図１０】図１のゲーム装置本体５のメインメモリに記憶される主なデータおよびプログラムの一例を示す図
【図１１】図１のゲーム装置本体５において実行される処理の一例を示すフローチャート
【図１２】図１１におけるステップ４４の推定方向ベクトル算出処理の一例を示すサブルーチン
【図１３】図１１におけるステップ４５のユーザ方向ベクトル算出処理の一例を示すサブルーチン
【図１４】図１１におけるステップ４６の足踏み判定線設定処理の一例を示すサブルーチン
【図１５】図１１におけるステップ４７の動作設定処理の一例を示すサブルーチン
【図１６】推定方向ベクトルの方向を反転させる反転範囲の一例を示す図
【発明を実施するための形態】
【００４９】
図１を参照して、本発明の一実施形態に係る情報処理プログラムを実行する情報処理装置および当該情報処理装置を含む情報処理システムについて説明する。以下、説明を具体的にするために、当該情報処理装置の一例として据置型のゲーム装置本体５を用い、ゲーム装置本体５を含むゲームシステムを用いて説明する。なお、図１は、据置型のゲーム装置３を含むゲームシステム１の一例を示す外観図である。図２は、ゲーム装置本体５の一例を示すブロック図である。以下、当該ゲームシステム１について説明する。
【００５０】
図１において、ゲームシステム１は、表示手段の一例である家庭用テレビジョン受像機（以下、モニタと記載する）２と、モニタ２に接続コードを介して接続する据置型のゲーム装置３とから構成される。モニタ２は、ゲーム装置３から出力された音声信号を音声出力するためのスピーカを備える。また、ゲーム装置３は、本願発明の情報処理プログラムの一例となるプログラム（例えば、ゲームプログラム）を記録した光ディスク４と、光ディスク４のプログラムを実行してゲーム画面をモニタ２に表示出力させるためのコンピュータを搭載したゲーム装置本体５と、表示画面に表示されたオブジェクト等を操作するために必要な操作情報をゲーム装置本体５に与えるためのコントローラ７と、ボード型コントローラ９とを含む。なお、ゲームシステム１は、少なくともボード型コントローラ９を用いたゲーム操作に基づいて、ゲーム装置本体５においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をモニタ２等の表示装置に表示するものである。なお、ゲーム装置本体５とコントローラ７およびボード型コントローラ９とは、無線によって無線通信可能に接続される。例えば、上記無線通信は、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格に従って実行されるが、赤外線や無線ＬＡＮなど他の規格に従って実行されてもよい。
【００５１】
ゲーム装置本体５は、無線コントローラモジュール１９（図２参照）を内蔵する。無線コントローラモジュール１９は、コントローラ７および／またはボード型コントローラ９から無線送信されるデータを受信し、ゲーム装置本体５からコントローラ７へデータを送信して、コントローラ７および／またはボード型コントローラ９とゲーム装置本体５とを無線通信によって接続する。また、ゲーム装置本体５には、ゲーム装置本体５に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着される。
【００５２】
ゲーム装置本体５には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ１７（図２参照）が搭載される。ゲーム装置本体５は、光ディスク４に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ２に表示する。ゲームプログラム等は、光ディスク４に限らず、フラッシュメモリ１７に予め記録されたものを実行するようにしてもよい。また、ゲーム装置本体５は、フラッシュメモリ１７に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置３のユーザは、モニタ２等に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００５３】
コントローラ７およびボード型コントローラ９は、無線コントローラモジュール１９を内蔵するゲーム装置本体５へ、例えばＢｌｕｅｔｏｏｔｈの技術を用いて操作情報等の送信データをそれぞれ無線送信する。コントローラ７は、主にモニタ２の表示画面に表示された選択肢の選択等をするための操作手段である。コントローラ７は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン（十字キー等を含む）とが設けられている。
【００５４】
なお、他の実施形態においてはコントローラ７および／またはボード型コントローラ９とゲーム装置本体５とは有線で接続されてもよい。また、本実施形態では、ゲームシステム１に含まれるコントローラ７およびボード型コントローラ９はそれぞれ１つとするが、ゲーム装置本体５は複数のコントローラ７および複数のボード型コントローラ９と通信可能であり、所定台数のコントローラ７およびボード型コントローラ９をそれぞれ同時に使用することによって複数人でゲームをプレイすることが可能である。
【００５５】
コントローラ７は、例えばプラスチック成型によって形成されたハウジングを有しており、当該ハウジングに複数の操作部（操作ボタン）が設けられている。そして、コントローラ７は、操作部に対する入力状態（各操作ボタンが押下されたか否か）を示す操作データをゲーム装置本体５に送信する。なお、後述する本発明の実施形態においては、コントローラ７を用いることなくゲームをプレイすることが可能である。ボード型コントローラ９の詳細な構成については後述する。
【００５６】
次に、図２を参照して、ゲーム装置本体５の内部構成について説明する。図２は、ゲーム装置本体５の構成の一例を示すブロック図である。ゲーム装置本体５は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、システムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ／Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）１３、ディスクドライブ１４、およびＡＶ−ＩＣ（Ａｕｄｉｏ  Ｖｉｄｅｏ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１５等を有する。
【００５７】
ＣＰＵ１０は、光ディスク４に記憶されたプログラムを実行することによって処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムＬＳＩ１１の内部構成については、後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたプログラムや、フラッシュメモリ１７から読み出されたプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置本体５の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ３５または外部メインメモリ１２に読み出したデータを書き込む。
【００５８】
システムＬＳＩ１１には、入出力プロセッサ３１、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）３２、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３４、および内部メインメモリ３５が設けられる。図示は省略するが、これらの構成要素３１、３２、３４、および３５は、内部バスによって互いに接続される。
【００５９】
ＧＰＵ３２は、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ３４は、ＧＰＵ３２がグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ３２は、ＶＲＡＭ３４に記憶されたデータを用いて画像データを作成する。
【００６０】
上述のように生成された画像データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをモニタ２に出力する。また、ＡＶ−ＩＣ１５は、システムＬＳＩ１１において生成された音声データを読み出し、モニタ２のスピーカに出力する。これによって、画像がモニタ２に表示されるとともに音がスピーカから出力される。
【００６１】
入出力プロセッサ（Ｉ／Ｏプロセッサ）３１は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ３１は、フラッシュメモリ１７、および無線コントローラモジュール１９に接続される。無線コントローラモジュール１９にはアンテナ２３が接続される。
【００６２】
入出力プロセッサ３１は、アンテナ２３および無線コントローラモジュール１９を介して、コントローラ７および／またはボード型コントローラ９から送信される操作データ等を受信し、内部メインメモリ３５または外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。なお、内部メインメモリ３５には、外部メインメモリ１２と同様に、光ディスク４から読み出されたプログラムや、フラッシュメモリ１７から読み出されたプログラムを記憶したり、各種データを記憶したりしてもよく、ＣＰＵ１０のワーク領域やバッファ領域として用いられてもかまわない。
【００６３】
入出力プロセッサ３１は、図示しない無線通信モジュールやアンテナを介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。また、入出力プロセッサ３１は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、上記アンテナ、および上記無線通信モジュールを介して受信し、受信したデータをフラッシュメモリ１７に記憶する。フラッシュメモリ１７には、ゲーム装置本体５と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体５を利用してプレイしたゲームのセーブデータ（処理の結果データまたは途中データ）が記憶されてもよい。
【００６４】
次に、図３および図４を参照して、ボード型コントローラ９の構成について説明する。図３は、図１に示したボード型コントローラ９の外観の一例を示す斜視図である。図３に示されるように、ボード型コントローラ９は、ユーザがその上に乗る（ユーザの足を乗せる）台９ａ、台９ａに掛かる荷重を検出するための少なくとも４つの荷重センサ９４ａ〜９４ｄを備える。各荷重センサ９４ａ〜９４ｄは、それぞれ台９ａに内包されており、図３においてはそれらの配置位置がそれぞれ破線で示されている。なお、以下の説明において、４つの荷重センサ９４ａ〜９４ｄを総称して説明する場合、荷重センサ９４と記載することがある。
【００６５】
台９ａは、略直方体に形成されており、上面視で略長方形状である。例えば、台９ａは、長方形状の短辺が３０ｃｍ程度に設定され、長辺が５０ｃｍ程度に設定される。台９ａの上面は、平坦に形成され、ユーザが両足裏をそれぞれ置いて乗るための一対の面が設定されている。具体的には、台９ａの上面には、電源ボタン９ｃが設けられている方向が初期設定においてユーザの後方となるように配置された場合に、ユーザが左足を乗せるための面（図３における左奥側に２重線で囲まれた領域）および左足を乗せるための面（図３における右手前側に２重線で囲まれた領域）がそれぞれ設定されている。そして、台９ａの４隅の側面は、例えば部分的に円柱状に張り出すように形成されている。
【００６６】
台９ａにおいて、４つの荷重センサ９４ａ〜９４ｄは、所定の間隔を置いて配置される。当該実施例では、４つの荷重センサ９４ａ〜９４ｄは、台９ａの周縁部に、具体的には４隅にそれぞれ配置される。荷重センサ９４ａ〜９４ｄの間隔は、台９ａに対するユーザの荷重のかけ方によるゲーム操作の意図をより精度良く検出できるように適宜な値に設定される。例えば、荷重センサ９４ａ〜９４ｄは、ボード型コントローラ９の４隅下部に設けられた４つの脚が配置される箇所にそれぞれ設けられる。
【００６７】
荷重センサ９４は、例えば歪ゲージ（歪センサ）式ロードセルであり、入力された荷重を電気信号に変換する荷重変換器である。荷重センサ９４では、荷重入力に応じて、起歪体が変形して歪が生じる。この歪が、起歪体に貼り付けられた歪センサによって電気抵抗の変化に変換され、さらに電圧変化に変換される。したがって、荷重センサ９４は、入力荷重を示す電圧信号を出力端子から出力することができる。
【００６８】
なお、荷重センサ９４は、音叉振動式、弦振動式、静電容量式、圧電式、磁歪式、またはジャイロ式のような他の方式の荷重センサであってもよい。
【００６９】
図３に戻って、ボード型コントローラ９には、さらに、電源ボタン９ｃが設けられる。ボード型コントローラ９が起動していない状態で電源ボタン９ｃが操作（例えば、電源ボタン９ｃの押下）されると、ボード型コントローラ９の各回路コンポーネント（図４参照）に電力が供給される。ただし、ボード型コントローラ９は、ゲーム装置本体５からの指示に従って電源オンされて各回路コンポーネントに電力供給が開始される場合もある。なお、ボード型コントローラ９は、ユーザが乗っていない状態が一定時間（例えば、３０秒）以上継続すると、自動的に電源がオフされてもよい。また、ボード型コントローラ９が起動している状態で、電源ボタン９ｃが再度操作された場合、電源がオフされて各回路コンポーネントへの電力供給が停止されてもよい。
【００７０】
図４は、ボード型コントローラ９の電気的な構成の一例を示すブロック図である。なお、図４では、信号およびデータの流れは実線矢印で示され、電力の供給が破線矢印で示されている。
【００７１】
図４において、ボード型コントローラ９は、その動作を制御するためのマイクロコンピュータ（マイコン）１００を含む。マイコン１００は、図示しないＣＰＵ、ＲＯＭ、およびＲＡＭ等を含み、ＣＰＵがＲＯＭに記憶されたプログラムに従ってボード型コントローラ９の動作を制御する。
【００７２】
マイコン１００には、電源ボタン９ｃ、ＡＤコンバータ１０２、および無線モジュール１０６が接続される。さらに、無線モジュール１０６には、アンテナ１０６ａが接続される。４つの荷重センサ９４ａ〜９４ｄは、それぞれＡＤコンバータ１０２に接続される。
【００７３】
荷重センサ９４ａ〜９４ｄは、入力された荷重を示す信号をそれぞれ出力する。これらの信号は、ＡＤコンバータ１０２でアナログ信号からデジタルデータに変換されて、マイコン１００に入力される。荷重センサ９４ａ〜９４ｄの検出値には荷重センサ９４ａ〜９４ｄの識別情報が付与されて、いずれの荷重センサ９４ａ〜９４ｄの検出値であるかが識別可能にされる。このようにして、マイコン１００は、同一時刻における４つの荷重センサ９４ａ〜９４ｄそれぞれの荷重検出値を示すデータを取得することができる。
【００７４】
荷重センサ９４ａ〜９４ｄからの検出値を示すデータは、ボード型コントローラ９のボード操作データ（入力データ）として、マイコン１００から無線モジュール１０６およびアンテナ１０６ａを介してゲーム装置本体５に送信される。例えば、ゲーム装置本体５からの命令を受けて荷重検出を行った場合、マイコン１００は、ＡＤコンバータ１０２から荷重センサ９４ａ〜９４ｄの検出値データを受信したことに応じて、当該検出値データをゲーム装置本体５に送信する。なお、マイコン１００は、一定時間ごとに上記検出値データをゲーム装置本体５に送信するようにしてもよい。荷重の検出周期よりも送信周期が長い場合には、送信タイミングまでに検出された複数の検出タイミングの荷重値を含むデータを送信すればよい。
【００７５】
なお、無線モジュール１０６は、ゲーム装置本体５の無線コントローラモジュール１９と同じ無線規格（Ｂｌｕｅｔｏｏｔｈ、無線ＬＡＮなど）で通信可能にされる。したがって、ゲーム装置本体５のＣＰＵ１０は、無線コントローラモジュール１９等を介して情報取得命令をボード型コントローラ９に送信することができる。このように、ボード型コントローラ９は、無線モジュール１０６およびアンテナ１０６ａを介して、ゲーム装置本体５からの命令を受信することができる。また、ボード型コントローラ９は、荷重センサ９４ａ〜９４ｄの荷重検出値（または荷重算出値）を含むボード操作データをゲーム装置本体５に送信することができる。
【００７６】
例えば４つの荷重センサ９４ａ〜９４ｄで検出される４つの荷重値の単なる合計値を用いて実行されるようなゲームの場合には、ユーザはボード型コントローラ９の４つの荷重センサ９４ａ〜９４ｄに対して任意の位置をとることができる。つまり、ユーザは、台９ａの上の任意の位置に任意の向きで乗ってゲームをプレイすることができる。しかしながら、ゲームの種類によっては、４つの荷重センサ９４で検出される荷重値がボード型コントローラ９に対してどのような位置に加えられたのかを識別し、ボード型コントローラ９に対してユーザがどのような方向に向いて乗っているのかを識別して処理を行ってもよい。この場合、ボード型コントローラ９の４つの荷重センサ９４から得られた荷重値を用いて、ボード型コントローラ９とユーザとの位置関係を推定し、当該ユーザ方向を方向入力に用いて処理することが可能となる。
【００７７】
しかしながら、ボード型コントローラ９を用いて方向入力を行う場合、初期設定としてボード型コントローラ９とユーザとの位置関係が把握されている必要がある。この場合、例えば、初期設定において４つの荷重センサ９４とユーザとの位置関係を予め規定しておき、当該初期設定においては当該所定の位置関係が得られるようにユーザが台９ａ上に乗ることが前提とされてもよい。典型的には、台９ａの中央に乗ったユーザの前後左右にそれぞれ荷重センサ９４ａ〜９４ｄが２つずつ存在するような位置関係、つまり、ユーザがボード型コントローラ９の台９ａの中央に乗った位置関係が初期設定において規定される。この場合、当該実施例では、ボード型コントローラ９の台９ａが平面視で矩形状に形成されるとともにその矩形の１辺（長辺）に電源ボタン９ｃが設けられているので、この電源ボタン９ｃを目印として利用して、ユーザには電源ボタン９ｃの設けられた長辺が所定の方向（前、後、左または右）に存在するようにして初期設定において台９ａに乗ってもらうことを予め決めておく。このようにすれば、荷重センサ９４ａ〜９４ｄで初期設定において検出される荷重値は、ユーザから見て所定の方向（右前、左前、右後および左後）の荷重値となる。具体的には、電源ボタン９ｃの設けられた長辺がユーザの後方左右となるように、初期設定においてユーザに台９ａに乗ってもらう。この場合、荷重センサ９４ａ〜９４ｄで初期設定において検出される荷重値は、それぞれユーザから見て右後ろの荷重値、左後ろの荷重値、右前の荷重値、および左前の荷重値となる。そして、初期設定後においては、４つの荷重センサ９４ａ〜９４ｄから得られた荷重値を用いて、ボード型コントローラ９に乗っているユーザ方向の変化を推定し、当該ユーザ方向を用いて所定の処理が行われる。
【００７８】
次に、ゲーム装置本体５が行う具体的な処理を説明する前に、図５〜図９を用いてゲーム装置本体５で行う情報処理の概要について説明する。なお、図５は、ボード型コントローラ９を用いて操作するユーザの様子の一例を示す図である。図６は、モニタ２に表示される画像の一例を示す図である。図７は、ボード型コントローラ９上においてユーザが足踏みする方向を変えた場合にプレイヤオブジェクト正面方向（移動方向）が変化する一例を示す図である。図８は、重心位置の移動に応じて推定方向ベクトルが算出される一例を示す図である。図９は、算出されたユーザ正面方向ベクトルに応じて設定される足踏み判定線の一例を示す図である。
【００７９】
図５に示すように、ユーザは、ボード型コントローラ９上に乗って操作する。そして、ユーザは、モニタ２に表示された画像を見て、ボード型コントローラ９上でのユーザの正面方向を変化させながらボード型コントローラ９上で動作（例えば、足踏み動作や屈伸動作）することによってプレイする。そして、モニタ２には、ボード型コントローラ９上におけるユーザの正面方向（ユーザ方向）と、ボード型コントローラ９上におけるユーザ動作とに応じて、仮想世界においてプレイヤオブジェクトＰｏが動作（例えば、移動方向や姿勢が変化する動作や移動速度が変化する動作）し、プレイヤオブジェクトＰｏの位置や方向に応じて仮想世界に設定される仮想カメラの位置や方向を変化させたゲーム画像が表現される。一例として、図５においては、仮想世界内をウォーキング、ジョギング、またはランニングするプレイヤオブジェクトＰｏが表示されている。そして、ユーザは、ボード型コントローラ９上で、ウォーキング、ジョギング、またはランニングするように足踏みする。この場合、ユーザの足踏み動作に応じた速度で、プレイヤオブジェクトＰｏが仮想世界内を移動するとともに、ボード型コントローラ９上におけるユーザ方向に応じて仮想世界内におけるプレイヤオブジェクトＰｏの移動方向が変化する。
【００８０】
例えば、ボード型コントローラ９上でユーザが足踏みするような動作をした場合、当該足踏み動作に応じた速度でプレイヤオブジェクトＰｏがウォーキング、ジョギング、またはランニングして仮想世界内を移動する。また、ボード型コントローラ９上でユーザが屈伸するような動作をした場合、当該屈伸動作に応じたジャンプ力でプレイヤオブジェクトＰｏが仮想世界内をジャンプして移動する。このように、ユーザは、ボード型コントローラ９上の動作によって、プレイヤオブジェクトＰｏの移動方法や移動速度を変化させることができる。
【００８１】
上述したように、ボード型コントローラ９からはボード型コントローラ９上のユーザ動作に応じた荷重検出値が出力される。そして、上記荷重検出値を用いれば、ボード型コントローラ９に加わっている合計荷重やボード型コントローラ９に加わっている荷重の重心位置の算出が可能である。また、上記合計荷重の変化や重心位置の変化を用いれば、ユーザがボード型コントローラ９上でどのような動作をしているのか推定することが可能となる。このようなボード型コントローラ９上で推定されるユーザ動作に応じて、プレイヤオブジェクトＰｏの移動方法や移動速度が設定される。
【００８２】
また、ボード型コントローラ９上におけるユーザ方向に応じて、仮想世界内におけるプレイヤオブジェクトＰｏの方向（例えば、プレイヤオブジェクトＰｏの正面方向や移動方向）が変化する。一例として、図７に示すように、ユーザがボード型コントローラ９上で足踏みしている方向を左に変えた場合（すなわち、ユーザ方向が左方向へ変化した場合）、プレイヤオブジェクトＰｏが移動する方向（プレイヤオブジェクトＰｏの正面方向）がプレイヤオブジェクトＰｏから見て左に変化する。また、ユーザがボード型コントローラ９上で足踏みしている方向を右に変えた場合（すなわち、ユーザ方向が右方向へ変化した場合）、プレイヤオブジェクトＰｏが移動する方向がプレイヤオブジェクトＰｏから見て右に変化する。このように、ボード型コントローラ９上におけるユーザ方向をプレイヤオブジェクトＰｏの姿勢や移動方向に連動させることによって、ユーザはボード型コントローラ９上で仮想世界内を自分自身が移動しているかのようなリアリティある操作が可能となる。なお、プレイヤオブジェクトＰｏを含む仮想世界画像を生成してモニタ２に表示するための仮想カメラの位置や方向については、上記プレイヤオブジェクトＰｏの姿勢や移動方向が変化（すなわち、ボード型コントローラ９上におけるユーザ方向が変化）することに応じて変化させてもいいし、変化させなくてもよい。前者の場合、プレイヤオブジェクトＰｏの方向や位置を上記仮想カメラの向きや位置に連動させることによって、ユーザはさらにモニタ２を介してあたかも仮想世界内を移動しているかのような感覚を味わうことができる。
【００８３】
ボード型コントローラ９上におけるユーザ方向を推定する際、ボード型コントローラ９に加わっている荷重の重心位置の動きに基づいて算出される推定方向ベクトルが用いられる。例えば、図８に示すように、推定方向ベクトルは、ボード型コントローラ９の台９ａ上の位置に対応する所定の座標系（例えば、台９ａの中心を原点、台９ａの長辺方向をＸ１軸方向、短辺方向をＹ１軸方向とするＸ１Ｙ１座標系）において、異なる時点で得られた２つの上記重心位置（典型的には、連続して得られた２つの重心位置）を結ぶ直線に垂直で、かつ、ボード型コントローラ９の上面に平行（例えば、水平方向）な方向で、当該直線の長さに設定される。すなわち、推定方向ベクトルは、上記重心位置の移動量の長さで、当該重心位置の移動方向に対して垂直方向に設定される。ここで、推定方向ベクトルが設定される上記方向は、上記移動方向に対して左水平方向および右水平方向の２方向が考えられる。後述により明らかとなるが、推定方向ベクトルは、上記２方向のうち、後述の処理において設定されるユーザ方向ベクトルの方向に近い方が選択される。そして、上記ユーザ方向は、上述したように設定された推定方向ベクトルを所定数（例えば、３０フレーム分）加算することによって算出されるユーザ方向ベクトルによって推定される。具体的には、上記推定方向ベクトルを得られた時系列順に所定数加算して正規化することによってユーザ方向ベクトルを算出し、当該ユーザ方向ベクトルの方向がボード型コントローラ９上における現時点のユーザ方向であると推定する。
【００８４】
また、ユーザがボード型コントローラ９上で足踏みする動作の判定においても上記重心位置が用いられる。例えば、上記座標系に、ユーザが足踏み動作において左足を上げて右足を下げた場合に上記重心位置が移動する領域（右足領域）と、ユーザが足踏み動作において右足を上げて左足を下げた場合に上記重心位置が移動する領域（左足領域）とが設定される。例えば、電源ボタン９ｃが設けられている長辺が後方となるようにユーザがボード型コントローラ９上に乗って足踏みする場合、台９ａ上における左右（例えば、電源ボタン９ｃを後方にした左右）に左足領域および右足領域が設定され、左足領域および右足領域の間にはユーザの前後方向に延びる所定幅の中立領域が設定される。そして、上記重心位置が中立領域から右足領域に移動した場合にユーザが左足を上げたと判断し、上記重心位置が中立領域から左足領域に移動した場合にユーザが右足を上げたと判断する。
【００８５】
なお、ユーザは、ボード型コントローラ９上で向きを変えながら足踏みをすることが考えられる。この場合、図９に示すように、ボード型コントローラ９上においてユーザが足踏みしている動作を判定する際にも上記ユーザ方向ベクトルが用いられる。ここで、上記左足領域、上記右足領域、および上記中立領域それぞれの位置を固定していると、ユーザがボード型コントローラ９上で向きを変えると正確な足踏み判定ができなくなる。このような場合、上記座標系における重心位置の移動を用いて算出されるユーザ方向ベクトルに基づいて、上記座標系における上記左足領域、上記右足領域、および上記中立領域を移動させればよい。例えば、上記中立領域が延びる方向をユーザ方向ベクトルの方向に変化させるとともに、上記中立領域の中心位置がユーザの足踏み中心位置と一致するように上記中立領域を移動させる。そして、当該中立領域の移動に応じて上記左足領域および上記右足領域を移動させる。このように上記左足領域、上記右足領域、および上記中立領域を移動させることによって、ボード型コントローラ９上で向きを変えながらユーザが足踏みしたとしても、正確に足踏み判定を行うことができる。
【００８６】
次に、ゲームシステム１において行われる情報処理の詳細を説明する。まず、図１０を参照して、当該情報処理において用いられる主なデータについて説明する。なお、図１０は、ゲーム装置本体５の外部メインメモリ１２および／または内部メインメモリ３５（以下、２つのメインメモリを総称して、単にメインメモリと記載する）に記憶される主なデータおよびプログラムの一例を示す図である。
【００８７】
図１０に示すように、メインメモリのデータ記憶領域には、操作データＤａ、荷重値データＤｂ、重心位置データＤｃ、推定方向ベクトルデータＤｄ、ユーザ方向ベクトル候補データＤｅ、ユーザ方向ベクトルデータＤｆ、重心移動量データＤｇ、足踏み中心位置データＤｈ、足踏み判定線データＤｉ、オブジェクト動作データＤｊ、走行速度データＤｋ、走行距離データＤｍ、足踏みフラグデータＤｎ、および画像データＤｏ等が記憶される。なお、メインメモリには、図１０に示す情報に含まれるデータの他、モニタ２に表示される他のオブジェクト等に関するデータ等、処理に必要なデータ等が適宜記憶される。また、メインメモリのプログラム記憶領域には、情報処理プログラムを構成する各種プログラム群Ｐａが記憶される。
【００８８】
操作データＤａは、コントローラ７やボード型コントローラ９から送信データとして送信されてくる一連の操作情報が格納され、最新の操作データに更新される。例えば、操作データＤａは、荷重データＤａ１等を含んでいる。荷重データＤａ１は、ボード型コントローラ９の荷重センサ９４ａ〜９４ｄがそれぞれ検出した荷重検出値を示すデータである。
【００８９】
なお、ゲーム装置本体５に備える無線コントローラモジュール１９は、コントローラ７やボード型コントローラ９から所定周期（例えば、１／２００秒毎）に送信される操作情報に含まれるデータ（例えば、荷重検出値を示すデータ）を受信し、無線コントローラモジュール１９に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられたデータが処理周期である１フレーム毎（例えば、１／６０秒毎）に読み出されて、メインメモリの操作データＤａ（例えば、荷重データＤａ１）がそれぞれ更新される。
【００９０】
このとき、操作情報を受信する周期と処理周期とが異なるために、上記バッファには複数の時点に受信した操作情報が記述されていることになる。後述する処理の説明においては、後述する各ステップにおいて、複数の時点に受信した操作情報のうち最新の操作情報のみを用いて処理して、次のステップに進める態様を用いる。
【００９１】
また、後述する処理フローでは、荷重データＤａ１が処理周期である１フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、ボード型コントローラ９からの送信周期毎に荷重データＤａ１をそれぞれ更新し、当該更新された荷重データＤａ１を処理周期毎に利用する態様でもかまわない。この場合、荷重データＤａ１を更新する周期と、他の処理周期とが異なることになる。
【００９２】
荷重値データＤｂは、ボード型コントローラ９が検出する荷重値を示すデータの集合である。例えば、荷重値データＤｂは、荷重センサ９４ａ〜９４ｄがそれぞれ検出した荷重の合計値（合計荷重値）を示すデータの集合である。具体的には、荷重値データＤｂは、時系列的に算出された所定期間内（例えば、３０フレーム分）の上記合計荷重値を示すデータの配列であり、配列の各要素に上記合計荷重値を示すデータが時系列に格納される。
【００９３】
重心位置データＤｃは、ボード型コントローラ９に加わっている荷重の重心位置を示すデータの集合である。例えば、重心位置データＤｃは、荷重センサ９４ａ〜９４ｄがそれぞれ検出した荷重値から所定の数式を用いて算出される重心位置を示すデータの集合である。具体的には、重心位置データＤｃは、時系列的に算出された所定期間内（例えば、３１フレーム分以上）の上記重心位置を示すデータの配列であり、配列の各要素に上記重心位置を示すデータが時系列に格納される。
【００９４】
推定方向ベクトルデータＤｄは、上記重心位置の動きに基づいて設定される推定方向ベクトル（図８参照）を示すデータの集合である。例えば、推定方向ベクトルデータＤｄは、前回の処理で算出された重心位置と時系列的に連続する今回の処理で算出された重心位置とを用いて繰り返し算出される推定方向ベクトルを示すデータの集合である。具体的には、推定方向ベクトルデータＤｄは、時系列的に算出された所定期間内（例えば、３０フレーム分）の上記推定方向ベクトルを示すデータの配列であり、配列の各要素に上記推定方向ベクトルを示すデータが時系列に格納される。
【００９５】
ユーザ方向ベクトル候補データＤｅは、現時点から所定時間内（例えば、３０フレーム分）に得られた推定方向ベクトルを足し合わせて正規化することによって得られるユーザ方向ベクトル候補を示すデータである。
【００９６】
ユーザ方向ベクトルデータＤｆは、ボード型コントローラ９上におけるユーザ方向を推定したユーザ方向ベクトルを示すデータである。後述により明らかとなるが、ユーザ方向ベクトルの方向は、上記ユーザ方向ベクトル候補の方向に所定の条件に基づいて近づけることによって、逐次更新される。
【００９７】
重心移動量データＤｇは、所定期間内における上記重心位置の移動量を示す重心移動量を示すデータである。
【００９８】
足踏み中心位置データＤｈは、ボード型コントローラ９上において足踏みしているユーザの足踏み中心位置を示すデータである。足踏み判定線データＤｉは、ユーザ方向ベクトルおよび足踏み中心位置に基づいて算出され、ユーザの足踏み動作を判定するために用いられる各判定線（判定基準線、左足踏み判定線、右足踏み判定線）を示すデータである。
【００９９】
オブジェクト動作データＤｊは、仮想世界におけるプレイヤオブジェクトＰｏの動作、位置、および方向を示すデータである。走行速度データＤｋは、仮想世界内を走行（歩行）するプレイヤオブジェクトＰｏの速度を示すデータである。走行距離データＤｍは、仮想世界内を走行（歩行）したプレイヤオブジェクトＰｏの距離を示すデータである。
【０１００】
足踏みフラグデータＤｎは、ボード型コントローラ９上においてユーザが左足を上げて右足で足踏みするような動作をした場合にオンに設定され、右足を上げて左足で足踏みするような動作をした場合にオフに設定される足踏みフラグを示すデータである。
【０１０１】
画像データＤｏは、プレイヤオブジェクトデータＤｏ１および背景画像データＤｏ２等を含んでいる。プレイヤオブジェクトデータＤｏ１は、仮想世界にプレイヤオブジェクトＰｏを配置してゲーム画像を生成するためのデータである。背景画像データＤｏ２は、仮想世界に背景を配置してゲーム画像を生成するためのデータである。
【０１０２】
次に、図１１〜図１６を参照して、ゲーム装置本体５において行われる情報処理の詳細を説明する。なお、図１１は、ゲーム装置本体５において実行される情報処理の一例を示すフローチャートである。図１２は、図１１におけるステップ４４の推定方向ベクトル算出処理の一例を示すサブルーチンである。図１３は、図１１におけるステップ４５のユーザ方向ベクトル算出処理の一例を示すサブルーチンである。図１４は、図１１におけるステップ４６の足踏み判定線設定処理の一例を示すサブルーチンである。図１５は、図１１におけるステップ４７の動作設定処理の一例を示すサブルーチンである。図１６は、推定方向ベクトルの方向を反転させる反転範囲の一例を示す図である。ここで、図１１〜図１５に示すフローチャートにおいては、情報処理のうち、ボード型コントローラ９を用いたユーザの操作に応じて、プレイヤオブジェクトＰｏが動作して表示される処理について主に説明し、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図１１〜図１５では、ＣＰＵ１０が実行する各ステップを「Ｓ」と略称する。
【０１０３】
ゲーム装置本体５の電源が投入されると、ゲーム装置本体５のＣＰＵ１０は、ＲＯＭ／ＲＴＣ１３に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶された情報処理プログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該プログラムの実行が開始される。図１１〜図１５に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【０１０４】
図１１において、ＣＰＵ１０は、処理の初期設定を行い（ステップ４１）、次のステップに処理を進める。例えば、上記ステップ４１における初期設定において、ＣＰＵ１０は、仮想世界の設定やプレイヤオブジェクトＰｏの配置および方向等の初期設定を行って、オブジェクト動作データＤｊ等を更新する。また、上記ステップ４１における初期設定では、ＣＰＵ１０は、モニタ２に表示する画像やスピーカから出力する音声を用いて、ボード型コントローラ９の前方方向（例えば、図３に示す電源ボタン９ｃが設けられている側面を後方側面として、当該後方側面から当該後方側面と相対する前方側面へ向かう方向）をユーザの正面方向としてボード型コントローラ９上に乗るようにユーザを促す。そして、ＣＰＵ１０は、ユーザ方向ベクトルをボード型コントローラ９の前面方向に設定し、ユーザ方向ベクトルデータＤｆを更新する。さらに、上記ステップ４１における初期設定では、以下の情報処理を行うために他のパラメータを初期化する。例えば、ＣＰＵ１０は、上述したメインメモリに格納される各データが示す他のパラメータをそれぞれ所定値（例えば０、空値、またはＮｕｌｌ値）に初期化する。
【０１０５】
次に、ＣＰＵ１０は、操作データを取得して（ステップ４２）、次のステップに処理を進める。例えば、ＣＰＵ１０は、ボード型コントローラ９から受信した操作データを用いて、当該操作データに含まれる荷重検出値を示すデータを用いて荷重データＤａ１を更新する。ここで、上記操作データには、荷重センサ９４ａ〜９４ｄがそれぞれ検出した荷重検出値を示すデータが含まれており、荷重センサ９４ａ〜９４ｄの識別情報によって区別された当該データをそれぞれ用いて、荷重データＤａ１が更新される。なお、操作データを受信する周期と上記ステップ４２を行う処理周期とが異なるために、当該処理周期の間に複数回の操作データが受信されてバッファに格納されている。上記ステップ４２においては、上記複数回受信された操作データのうち最新の操作データのみを用いて操作データＤａが更新される例を用いる。
【０１０６】
次に、ＣＰＵ１０は、荷重値および重心位置を算出して（ステップ４３）、次のステップに処理を進める。例えば、ＣＰＵ１０は、荷重データＤａ１が示す荷重検出値を合計して合計荷重値を算出し、当該合計荷重値を示すデータを用いて荷重値データＤｂにおける時系列データ配列のうち最新のデータを更新する。具体的には、荷重データＤａ１は、荷重センサ９４ａ〜９４ｄがそれぞれ検出した最新の荷重検出値を示しているため、当該荷重検出値を合計することによって、上記合計荷重値が算出される。また、ＣＰＵ１０は、荷重データＤａ１が示す荷重検出値を用いて重心位置を算出し、当該重心位置を示すデータを用いて重心位置データＤｃにおける時系列データ配列のうち最新のデータを更新する。以下、重心位置の算出方法の一例を説明する。
【０１０７】
上記重心位置は、ボード型コントローラ９の台９ａに加わる荷重の重心位置であり、各荷重センサ９４ａ〜９４ｄ（図３参照）が検出する荷重値によって定められる。例えば、上記重心位置は、ボード型コントローラ９の台９ａ上の位置に対応する所定の座標系（例えば、台９ａの中心を原点、台９ａの長辺方向をＸ軸方向、短辺方向をＹ軸方向とするＸＹ座標系）に基づいた座標値によって表される。そして、荷重センサ９４ａが検出する荷重値をａ、荷重センサ９４ｂが検出する荷重値をｂ、荷重センサ９４ｃが検出する荷重値をｃ、荷重センサ９４ｄが検出する荷重値をｄとした場合、重心のＸ軸座標値（Ｘ）およびＹ軸座標値（Ｙ）は、以下の数式を用いて算出することができる。
Ｘ＝（（ａ＋ｃ）―（ｂ＋ｄ））×ｍ
Ｙ＝（（ｃ＋ｄ）―（ａ＋ｂ））×ｎ
ここで、ｍおよびｎは、それぞれ予め定められた定数である。このようにして算出される重心位置は、ボード型コントローラ９上のユーザ動作や体重移動（姿勢）に応じて変化する。例えば、ユーザが左足を上げた場合に重心位置のＸ軸座標値が正の値となり、ユーザが右足を上げた場合に重心位置のＸ軸座標値が負の値となる。なお、上記重心位置の算出式は単なる一例であり、その他の方法によって重心位置が算出されてもよい。
【０１０８】
次に、ＣＰＵ１０は、推定方向ベクトルを算出して（ステップ４４）、次のステップに処理を進める。以下、図１２を参照して、上記ステップ４４で行う推定方向ベクトル算出処理について説明する。
【０１０９】
図１２において、ＣＰＵ１０は、前回の処理において重心位置が算出されているか否かを判断する（ステップ５１）。例えば、ＣＰＵ１０は、重心位置データＤｃを参照して、前回の処理ループにおけるステップ４３において重心位置が算出されているか否かを判断する。そして、ＣＰＵ１０は、前回の処理において重心位置が算出されている場合、次のステップ５２に処理を進める。一方、ＣＰＵ１０は、前回の処理において重心位置が算出されていない場合、当該サブルーチンによる処理を終了する。
【０１１０】
ステップ５２において、ＣＰＵ１０は、差分ベクトルを算出し、次のステップに処理を進める。例えば、ＣＰＵ１０は、上記座標系において、前回の処理ループにおいて算出された重心位置から今回の処理ループにおいて算出された重心位置までの差分ベクトルを算出する。
【０１１１】
次に、ＣＰＵ１０は、上記差分ベクトルを用いて推定方向ベクトルを算出し（ステップ５３）、次のステップに処理を進める。例えば、ＣＰＵ１０は、上記座標系において、上記ステップ５２で算出された差分ベクトルに直交する方向で、当該差分ベクトルと同じ長さを有するベクトルを、推定方向ベクトルとして算出する。なお、差分ベクトルに直交する方向は一対の２方向が考えられるが、ＣＰＵ１０は、当該２方向のうち、上記座標系においてユーザ方向ベクトルデータＤｆが示すユーザ方向ベクトルの方向に近い方向を推定方向ベクトルとして選択する。そして、ＣＰＵ１０は、算出された推定方向ベクトルを示すデータを用いて、推定方向ベクトルデータＤｄにおける時系列データ配列のうち最新のデータを更新する。
【０１１２】
次に、ＣＰＵ１０は、上記ステップ５３で算出された推定方向ベクトルが反転範囲内か否かを判断する（ステップ５４）。例えば、図１６に示すように、ボード型コントローラ９の後方方向付近（例えば、当該後方方向を中心に左右それぞれ１５°の範囲）に、推定方向ベクトルの方向を反転させる反転範囲が設定されている。そして、ＣＰＵ１０は、推定方向ベクトルが上記反転範囲内である場合、次のステップ５５に処理を進める。一方、ＣＰＵ１０は、推定方向ベクトルが反転範囲内にない場合、当該サブルーチンによる処理を終了する。
【０１１３】
ステップ５５において、ＣＰＵ１０は、上記ステップ５３において算出された推定方向ベクトルの方向を反転させ、反転させた推定方向ベクトルを用いて推定方向ベクトルデータＤｄにおける時系列データ配列のうち最新のデータを更新して、当該サブルーチンによる処理を終了する。ここで、上記反転範囲は、ボード型コントローラ９の後方方向付近に設けられている。これは、モニタ２を見ながらユーザがプレイすることが基本の遊技姿勢とし、一般的にボード型コントローラ９の前方方向がモニタ２への方向となることを想定している。この場合、ユーザがモニタ２を背にしてボード型コントローラ９の後方方向に向くような遊技姿勢となることが考えにくいため、当該方向に推定方向ベクトルの方向が設定された場合にボード型コントローラ９の前方方向付近に当該方向を反転させることによって、ユーザ方向の判定精度を向上させることができる。このような効果を期待しない場合、上記推定方向ベクトルの方向を反転させる処理は行わなくてもかまわない。この場合、推定方向ベクトルが全方向に設定可能となり、ユーザ方向も全方向へ重み付けされることなく設定されることになるため、ユーザ自身も全方向へ任意に方向指示することが可能となる。
【０１１４】
図１１に戻り、上記ステップ４４における推定方向ベクトル算出処理の後、ＣＰＵ１０は、ユーザ方向ベクトルを算出して、次のステップに処理を進める（ステップ４５）。以下、図１３を参照して、上記ステップ４５で行うユーザ方向ベクトル算出処理について説明する。
【０１１５】
図１３において、ＣＰＵ１０は、所定フレーム分の推定方向ベクトルを加算し（ステップ６１）、次のステップに処理を進める。例えば、ＣＰＵ１０は、推定方向ベクトルデータＤｄに格納されている時系列データ配列のうち最新の所定フレーム分（例えば、３０フレーム分）のデータを取得し、当該データが示す推定方向ベクトルを足し合わせることによって１つのベクトルを算出する。なお、推定方向ベクトルデータＤｄに格納されている時系列データ配列の数が上記所定フレーム数未満の場合、当該時系列データ配列分のデータが示す推定方向ベクトルを足し合わせることによって１つのベクトルを算出すればよい。
【０１１６】
次に、ＣＰＵ１０は、上記ステップ６１において算出したベクトルを正規化してユーザ方向ベクトル候補を算出し（ステップ６２）、次のステップに処理を進める。例えば、ＣＰＵ１０は、上記ステップ６１において算出したベクトルを長さ１に正規化してユーザ方向ベクトル候補を算出し、当該ユーザ方向ベクトル候補を用いてユーザ方向ベクトル候補データＤｅを更新する。なお、ユーザ方向ベクトル候補の方向は、所定フレーム分の推定方向ベクトルを足し合わせたベクトル方向となるが、上述したように推定方向ベクトルの長さが重心位置の移動量に基づいて設定されているため、結果的に重心の移動量で重み付けされた方向となる。
【０１１７】
次に、ＣＰＵ１０は、所定フレーム分（例えば、３０フレーム分）の重心移動量Ｍｇを算出し（ステップ６３）、次のステップに処理を進める。例えば、ＣＰＵ１０は、重心位置データＤｃに格納されている時系列データ配列のうち、上記重心移動量Ｍｇを算出するための所定フレーム分に１を加えた最新のフレーム分（例えば、最新の３１フレーム分）の重心位置を取得する。そして、ＣＰＵ１０は、連続して取得された重心位置間の移動距離を、それぞれ上記所定フレーム分累積して重心移動量Ｍｇを算出し、算出された重心移動量Ｍｇを用いて重心移動量データＤｇを更新する。なお、重心位置データＤｃに格納されている時系列データ配列の数が上記所定フレーム数に１を加えた数未満の場合、当該時系列データ配列分のデータが示す重心位置を取得して、当該重心位置間の移動距離を累積して重心移動量Ｍｇを算出すればよい。
【０１１８】
次に、ＣＰＵ１０は、重心移動量Ｍｇが閾値ａ１以上で閾値ａ２未満であるか否かを判断する（ステップ６４）。そして、ＣＰＵ１０は、重心移動量Ｍｇが閾値ａ１以上で閾値ａ２未満である場合、次のステップ６５に処理を進める。一方、ＣＰＵ１０は、重心移動量Ｍｇが閾値ａ１以上で閾値ａ２未満でない場合、次のステップ６６に処理を進める。ここで、ａ１＜ａ２であり、例えばボード型コントローラ９の長辺方向の長さを２とした場合、閾値ａ１＝０．７５、閾値ａ２＝１．００に設定される。
【０１１９】
ステップ６５において、ＣＰＵ１０は、重心移動量Ｍｇによって決められる割合Ｐ％だけ、ユーザ方向ベクトルの方向がユーザ方向ベクトル候補の方向に近づくようにユーザ方向ベクトルを更新し、当該サブルーチンによる処理を終了する。例えば、ボード型コントローラ９の長辺方向の長さを２とした場合、ＣＰＵ１０は、割合Ｐを
Ｐ＝｛（Ｍｇ−ａ１）／（ａ２−ａ１）｝＊１００
で算出する。具体的には、ボード型コントローラ９の長辺方向の長さを２とした場合、割合Ｐは、
Ｐ＝｛（Ｍｇ−０．７５）／０．２５｝＊１００
となる。そして、ＣＰＵ１０は、ユーザ方向ベクトル候補データＤｅおよびユーザ方向ベクトルデータＤｆを参照して、ユーザ方向ベクトルの方向がユーザ方向ベクトル候補の方向に割合Ｐ％だけ近づくようにユーザ方向ベクトルの方向を変化させ、変化させたユーザ方向ベクトルを用いてユーザ方向ベクトルデータＤｆを更新する。
【０１２０】
一方、ステップ６６において、ＣＰＵ１０は、重心移動量Ｍｇが閾値ａ２以上であるか否かを判断する。そして、ＣＰＵ１０は、重心移動量Ｍｇが閾値ａ２以上である場合、次のステップ６７に処理を進める。一方、ＣＰＵ１０は、重心移動量Ｍｇが閾値ａ１未満である場合、ユーザ方向ベクトルを変化させることなく当該サブルーチンによる処理を終了する。
【０１２１】
ステップ６７において、ＣＰＵ１０は、ユーザ方向ベクトル候補をそのままユーザ方向ベクトルとしてユーザ方向ベクトルデータＤｆを更新し、当該サブルーチンによる処理を終了する。
【０１２２】
なお、上述した処理では、重心移動量Ｍｇに応じてユーザ方向ベクトルをユーザ方向候補に近づける割合を変化させる例を用いた。これは、ユーザが足踏みした場合に重心位置がユーザの左右に移動する特性を利用してユーザ方向を推定しているためであり、重心位置の移動量が大きい場合にユーザ方向を変化させる重み付けを行ってユーザ方向をより正確に推定するためである。したがって、このような重み付けが可能となる他のパラメータに応じて、上記割合を変化させてもかまわない。例えば、上記ステップ６１において所定フレーム分の推定方向ベクトルを加算した１つのベクトルの長さに応じて、上記割合を変化させてもかまわない。当該ベクトルの長さについても、加算されている推定方向ベクトルの長さが重心位置の移動量に基づいて設定されているため、結果的に重心の移動量に基づいた重み付けが可能なパラメータとして取り扱うことができる。
【０１２３】
また、ユーザ方向ベクトルをユーザ方向候補に近づける割合は、０％および１００％から選択的に選ばれてもかまわない。例えば、重心移動量Ｍｇが所定の閾値（例えば、閾値ａ１や閾値ａ２、またはその間の値）未満であった場合、上記割合を０％に設定、すなわちユーザ方向ベクトルが全くユーザ方向ベクトル候補に近づかないためにユーザ方向ベクトルがそのまま設定される。また、重心移動量Ｍｇが所定の閾値以上であった場合、上記割合を１００％に設定、すなわちユーザ方向ベクトル候補がそのままユーザ方向ベクトルとなって設定される。
【０１２４】
図１１に戻り、ステップ４５におけるユーザ方向ベクトル算出処理の後、ＣＰＵ１０は、足踏み判定線を設定する処理を行い（ステップ４６）、次のステップに処理を進める。以下、図１４を参照して、上記ステップ４６で行う足踏み判定線設定処理について説明する。
【０１２５】
図１４において、ＣＰＵ１０は、足踏み中心位置を算出して（ステップ７１）、次のステップに処理を進める。例えば、ＣＰＵ１０は、上記座標系（Ｘ１，Ｙ１）における足踏み中心位置（ＭＸ１，ＭＹ１）を
ＭＸ１＝（ｂ２＊ＭＸ１ａ＋ＧＸ１）／ｂ１
ＭＹ１＝（ｂ２＊ＭＹ１ａ＋ＧＹ１）／ｂ１
で算出し、算出された足踏み中心位置（ＭＸ１，ＭＹ１）を用いて足踏み中心位置データＤｈを更新する。ここで、ＭＸ１ａおよびＭＹ１ａは、前回の処理で算出された足踏み中心位置のＸ１座標値およびＹ１座標値を示している。ＧＸ１およびＧＹ１は、上記ステップ４３で算出された最新の重心位置のＸ１座標値およびＹ１座標値を示している。そして、ｂ１およびｂ２は、それぞれ予め定められた定数であり、例えばｂ１＝１８０、ｂ２＝ｂ１−１＝１７９で設定される。上記数式から明らかなように、当該数式に基づいて算出される足踏み中心位置（ＭＸ１，ＭＹ１）は、ボード型コントローラ９に加わっている最新の荷重の重心位置に所定の割合（ｂ２／ｂ１）で追従するようにその位置が変化する。このように上記重心位置に所定の割合で追従する位置を算出することによって、ボード型コントローラ９上で足踏みしているユーザの足踏み中心位置を求めることができる。
【０１２６】
なお、足踏み中心位置は、他の方法で求めてもかまわない。例えば、直前の所定期間中に得られた重心位置を平均した位置を足踏み中心位置として設定してもかまわない。このように所定期間内の重心位置を平均した位置であっても、ボード型コントローラ９上で足踏みしているユーザの足踏み中心位置を求めることができる。
【０１２７】
また、足踏み中心位置は、ユーザが足踏みする際に左足を乗せる位置と右足を乗せる位置との中間点を推定するための位置である。すなわち、足踏み中心位置は、ボード型コントローラ９に乗っているユーザの身体中心（身体の重心）から鉛直方向へ延びる直線が、ボード型コントローラ９の台９ａと交わる位置を推定するための位置として定義されてもかまわない。このような定義に基づいて、上記足踏み中心位置を他の方法で求めてもかまわない。
【０１２８】
次に、ＣＰＵ１０は、足踏み中心位置を通るユーザ方向へ判定基準線を設定し（ステップ７２）、次のステップに処理を進める。例えば、ＣＰＵ１０は、ユーザ方向ベクトルデータＤｆおよび足踏み中心位置データＤｈを参照して、現時点のユーザ方向ベクトルおよび足踏み中心位置を取得し、上記座標系において当該足踏み中心位置を通ってユーザ方向ベクトルの方向（ユーザ方向）に延びる判定基準線（図９参照）を設定する。そして、ＣＰＵ１０は、設定された判定基準線を用いて、足踏み判定線データＤｉに含まれる判定基準線を示すデータを更新する。
【０１２９】
次に、ＣＰＵ１０は、足踏み中心位置およびユーザ方向に応じて、中立領域幅を算出し（ステップ７３）、次のステップに処理を進める。例えば、ＣＰＵ１０は、ユーザ方向（ユーザ方向ベクトルの方向）の直線とボード型コントローラ９の前方方向の直線とで成す角のうち、小さい方の角度が大きいほど、中立領域幅を小さく設定する。また、ＣＰＵ１０は、足踏み中心位置がボード型コントローラ９の台９ａの中心（すなわち、上記座標系の原点）から離れるほど、中立領域幅を小さく設定する。例えば、ボード型コントローラ９の台９ａの大きさは有限であり、台９ａの端で足踏みする場合に足踏みすることが難しくなることがある。このような場合であっても、中立領域幅を小さく設定することによって、足踏み判定を正確に行うことができる。
【０１３０】
次に、ＣＰＵ１０は、中立領域幅に基づいて、左足踏み判定線および右足踏み判定線を設定し（ステップ７４）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ１０は、上記判定基準線を中心として両側平行に左足踏み判定線および右足踏み判定線を設定する。なお、ＣＰＵ１０は、ユーザ方向に向かって上記判定基準線の左側に左足踏み判定線を設定し、ユーザ方向に向かって上記判定基準線の右側に右足踏み判定線を設定するとともに、左足踏み判定線と右足踏み判定線との間隙幅が上記中立領域幅となるように左足踏み判定線および右足踏み判定線（図９参照）を設定する。そして、ＣＰＵ１０は、設定された左足踏み判定線および右足踏み判定線を用いて、足踏み判定線データＤｉに含まれる左足踏み判定線および右足踏み判定線を示すデータを更新する。
【０１３１】
図１１に戻り、上記ステップ４６における足踏み判定線設定処理の後、ＣＰＵ１０は、動作設定処理を行い（ステップ４７）、次のステップに処理を進める。以下、図１５を参照して、ステップ４７で行う動作設定処理について説明する。
【０１３２】
図１５において、ＣＰＵ１０は、足踏みフラグデータＤｎを参照して、足踏みフラグがオフに設定されているか否かを判断する（ステップ１１１）。そして、ＣＰＵ１０は、足踏みフラグがオフに設定されている場合、次のステップ１１２に処理を進める。一方、ＣＰＵ１０は、足踏みフラグがオンに設定されている場合、次のステップ１１６に処理を進める。
【０１３３】
ステップ１１２において、ＣＰＵ１０は、最新の重心位置が中立領域から右足領域へ移動したか否かを判断する。例えば、ＣＰＵ１０は、重心位置データＤｃが示す最新の重心位置および足踏み判定線データＤｉが示す右足踏み判定線を用いて、左足踏み判定線および右足踏み判定線で挟まれた中立領域から右足踏み判定線を越えて右足領域へ重心位置が移動したか否かを判断する。そして、ＣＰＵ１０は、最新の重心位置が中立領域から右足領域へ移動した場合、次のステップ１１３に処理を進める。一方、ＣＰＵ１０は、最新の重心位置が中立領域から右足領域へ移動していない場合、次のステップ１１６に処理を進める。
【０１３４】
ステップ１１３において、ＣＰＵ１０は、左足を上げる動作にプレイヤオブジェクトＰｏの動作を設定し、次のステップに処理を進める。例えば、ＣＰＵ１０は、プレイヤオブジェクトＰｏが左足を上げた状態で、走る、歩く、またはその場で停止するように、プレイヤオブジェクトＰｏの動作を設定してオブジェクト動作データＤｊを更新する。ここで、プレイヤオブジェクトＰｏが走っているのか、歩いているのか、その場で停止しているのかについては、走行速度データＤｋが示す速度に基づいて設定される。また、ＣＰＵ１０は、ユーザ方向ベクトルデータＤｆが示すユーザ方向ベクトルの方向に応じて、仮想世界におけるプレイヤオブジェクトＰｏの方向を設定してオブジェクト動作データＤｊを更新する。なお、ユーザ方向ベクトルの方向やプレイヤオブジェクトＰｏの方向に応じて、仮想世界に設定されている仮想カメラの方向や位置を変化させる場合、上記ステップ１１３において仮想カメラに関するデータが更新される。
【０１３５】
次に、ＣＰＵ１０は、走行速度および走行距離を算出して（ステップ１１４）、次のステップに処理を進める。例えば、ＣＰＵ１０は、右足を上げる動作に設定されてから現時点までを処理対象期間として、当該処理対象期間の長さ（時間）、当該処理対象期間における合計荷重値の推移、および当該処理対象期間における重心位置の推移の少なくとも１つを用いて、走行速度および走行距離を算出する。
【０１３６】
一例として、ＣＰＵ１０は、上記処理対象期間の長さ（時間）に基づいて、走行速度（プレイヤオブジェクトＰｏが移動する速度）を算出し、算出された速度を用いて走行速度データＤｋを更新する。具体的には、ＣＰＵ１０は、上記処理対象期間の長さが短い程、プレイヤオブジェクトＰｏが移動する速度を速く算出する。この場合、ユーザがボード型コントローラ９上で足踏みするピッチが短いほどプレイヤオブジェクトＰｏが仮想世界内を移動する速度が速くなることになる。
【０１３７】
また、処理対象期間の長さ（時間）および上述のように算出されたプレイヤオブジェクトＰｏの移動速度に基づいて、走行距離（プレイヤオブジェクトＰｏが移動した距離）が算出され、算出された距離を用いて走行距離データＤｍが更新される。具体的には、ＣＰＵ１０は、処理対象期間の長さおよびプレイヤオブジェクトＰｏの移動速度に基づいて、当該処理対象期間中にプレイヤオブジェクトＰｏが仮想世界内を移動した距離を算出する。そして、ＣＰＵ１０は、走行距離データＤｍが示す走行距離に算出された移動距離を加算することによって新たな走行距離を算出し、当該新たな走行距離を用いて走行距離データＤｍを更新する。なお、ＣＰＵ１０は、上記新たな走行距離およびプレイヤオブジェクトＰｏの方向に基づいて、プレイヤオブジェクトＰｏの仮想世界における新たな配置位置を算出し、当該新たな配置位置を用いてオブジェクト動作データＤｊを更新する。
【０１３８】
次に、ＣＰＵ１０は、足踏みフラグをオンに設定して足踏みフラグデータＤｎを更新し（ステップ１１５）、当該サブルーチンによる処理を終了する。
【０１３９】
ステップ１１６において、ＣＰＵ１０は、足踏みフラグデータＤｎを参照して、足踏みフラグがオンに設定されているか否かを判断する。そして、ＣＰＵ１０は、足踏みフラグがオンに設定されている場合、次のステップ１１７に処理を進める。一方、ＣＰＵ１０は、足踏みフラグがオフに設定されている場合、次のステップ１２１に処理を進める。
【０１４０】
ステップ１１７において、ＣＰＵ１０は、最新の重心位置が中立領域から左足領域へ移動したか否かを判断する。例えば、ＣＰＵ１０は、重心位置データＤｃが示す最新の重心位置および足踏み判定線データＤｉが示す左足踏み判定線を用いて、中立領域から左足踏み判定線を越えて左足領域へ重心位置が移動したか否かを判断する。そして、ＣＰＵ１０は、最新の重心位置が中立領域から左足領域へ移動した場合、次のステップ１１８に処理を進める。一方、ＣＰＵ１０は、最新の重心位置が中立領域から左足領域へ移動していない場合、次のステップ１２１に処理を進める。
【０１４１】
ステップ１１８において、ＣＰＵ１０は、右足を上げる動作にプレイヤオブジェクトＰｏの動作を設定し、次のステップに処理を進める。例えば、ＣＰＵ１０は、プレイヤオブジェクトＰｏが右足を上げた状態で、走る、歩く、またはその場で停止するように、プレイヤオブジェクトＰｏの動作を設定してオブジェクト動作データＤｊを更新する。ここで、プレイヤオブジェクトＰｏが走っているのか、歩いているのか、その場で停止しているのかについては、上記ステップ１１３と同様に走行速度データＤｋが示す速度に基づいて設定される。また、ＣＰＵ１０は、ユーザ方向ベクトルデータＤｆが示すユーザ方向ベクトルの方向に応じて、仮想世界におけるプレイヤオブジェクトＰｏの方向を設定してオブジェクト動作データＤｊを更新する。なお、ユーザ方向ベクトルの方向やプレイヤオブジェクトＰｏの方向に応じて、仮想世界に設定されている仮想カメラの方向や位置を変化させる場合、上記ステップ１１３において仮想カメラに関するデータが更新される。
【０１４２】
次に、ＣＰＵ１０は、走行速度および走行距離を算出して（ステップ１１９）、次のステップに処理を進める。例えば、ＣＰＵ１０は、左足を上げる動作に設定されてから現時点までを処理対象期間として、当該処理対象期間の長さ（時間）、当該処理対象期間における合計荷重値の推移、および当該処理対象期間における重心位置の推移の少なくとも１つを用いて、上記ステップ１１４と同様に、走行速度および走行距離を算出する。
【０１４３】
次に、足踏みフラグをオフに設定して足踏みフラグデータＤｎを更新し（ステップ１２０）、当該サブルーチンによる処理を終了する。
【０１４４】
一方、ボード型コントローラ９上においてユーザが右足で足踏みするような動作や左足で足踏みするような動作をしていない場合（例えば、足踏み動作において一方の足を上げている状態や両足を下ろして静止している状態である場合）、ＣＰＵ１０は、現在設定されている動作を継続する動作に設定し（ステップ１２１）、次のステップに処理を進める。例えば、ＣＰＵ１０は、現時点においてオブジェクト動作として設定されている上げ足はそのままプレイヤオブジェクトＰｏの動作として設定し、走行速度データＤｋが示す速度に基づいて、走る、歩く、またはその場で停止する動作を設定して、設定された動作を用いてオブジェクト動作データＤｊを更新する。また、ＣＰＵ１０は、ユーザ方向ベクトルデータＤｆが示すユーザ方向ベクトルの方向に応じて、仮想世界におけるプレイヤオブジェクトＰｏの方向を設定してオブジェクト動作データＤｊを更新する。なお、ユーザ方向ベクトルの方向やプレイヤオブジェクトＰｏの方向に応じて、仮想世界に設定されている仮想カメラの方向や位置を変化させる場合、上記ステップ１１３において仮想カメラに関するデータが更新される。
【０１４５】
次に、ＣＰＵ１０は、走行速度および走行距離を算出して（ステップ１２２）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ１０は、走行速度データＤｋが示す速度を所定値だけ減衰させ、減衰後の速度を用いて走行速度データＤｋを更新する。具体的には、ＣＰＵ１０は、プレイヤオブジェクトＰｏの速度に基づいて、プレイヤオブジェクトＰｏが仮想世界内を移動した距離を算出し、走行距離データＤｍが示す走行距離に算出された移動距離を加算することによって新たな走行距離を算出して、当該新たな走行距離を用いて走行距離データＤｍを更新する。また、ＣＰＵ１０は、上記新たな走行距離およびプレイヤオブジェクトＰｏの方向に基づいて、プレイヤオブジェクトＰｏの仮想世界における新たな配置位置を算出し、当該新たな配置位置を用いてオブジェクト動作データＤｊを更新する。
【０１４６】
図１１に戻り、上記ステップ４７における動作設定処理の後、ＣＰＵ１０は、表示制御処理を行って（ステップ４８）、次のステップに処理を進める。例えば、ＣＰＵ１０は、オブジェクト動作データＤｊが示すオブジェクトの動作、位置、および方向に基づいて、プレイヤオブジェクトＰｏを動作させて仮想世界に配置してモニタ２に表示する。また、ＣＰＵ１０は、走行速度データＤｋおよび走行距離データＤｍに基づいて、走行情報（例えば、文字情報）を生成してモニタ２に表示してもよい。
【０１４７】
次に、ＣＰＵ１０は、ゲームを終了するか否かを判断する（ステップ４９）。ゲームを終了する条件としては、例えば、ゲームオーバーやゲームクリアとなる条件が満たされたことや、ユーザがゲームを終了する操作を行ったこと等がある。ＣＰＵ１０は、ゲームを終了しない場合に上記ステップ４２に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。
【０１４８】
このように、上述した処理によれば、ユーザがボード型コントローラ９上で足踏みしている方向を判定できるため、ユーザの動作を正確に判定することが可能である。例えば、当該方向を方向入力とすることによって、様々な情報処理に対する操作入力として用いることが可能となる。
【０１４９】
なお、上述した実施例では、ユーザがボード型コントローラ９上で足踏みしているユーザ方向に応じて、仮想世界におけるプレイヤオブジェクトＰｏの方向を変化させる処理を行う例を用いたが、当該ユーザ方向に応じて他の処理を行ってもかまわない。例えば、上記ユーザ方向に応じて、モニタ２に表示する仮想世界を生成するための仮想カメラの方向を変化させる処理を行ってもかまわない。この場合、ユーザがボード型コントローラ９上で足踏みしている方向に応じて仮想世界に対する視線方向が変化するため、ユーザが仮想世界を歩いた場合に見える仮想世界をモニタ２に表示することが可能となり、あたかも仮想世界内にいるかのような画像を表示することが可能となる。このように、上記ユーザ方向は、仮想世界における様々なキャラクタ、オブジェクト、仮想カメラ等の方向を制御するために用いることができる。
【０１５０】
また、上述した実施例では、上記ユーザ方向に応じて、足踏み判定線（中立領域）の方向を変化させることによって、ボード型コントローラ９上で足踏みしているユーザ動作を正確に判定している。すなわち、足踏み判定線（中立領域）を固定した状態で足踏み動作を判定する場合、ユーザがボード型コントローラ９上で足踏み方向を変えた場合に正確な動作判定が困難となるが、当該方向変化に応じて足踏み判定線（中立領域）を変化させることによって正確な動作判定が可能となる。このように、上記ユーザ方向は、仮想世界におけるオブジェクトや仮想カメラの方向を制御するだけでなく、ユーザ動作を判定するための判定ラインの制御にも有効であり、他の判定処理の条件変更に用いることができることは言うまでもない。
【０１５１】
一例として、上述した足踏み判定線（中立領域）を、ユーザがボード型コントローラ９上で屈伸（ジャンプ）する動作の判定に用いることができる。例えば、最新の中心位置が中立領域内にあり、かつ、合計荷重値が所定の閾値（例えば、ユーザの体重に所定の割合を加算した値）以上に到達した場合に、ユーザがボード型コントローラ９上で屈伸する動作を行ったと判断する。このような動作判定においても、中立領域がユーザ方向に応じて変化させることができるため、当該動作判定をより正確に行うことができる。
【０１５２】
また、上述した説明では、ユーザがボード型コントローラ９上で足踏みしているユーザ方向に応じて、即時にオブジェクトや仮想カメラの方向制御が連動するような処理例を用いた。しかしながら、ユーザ方向の変化に応じて、所定の時間遅れてオブジェクトや仮想カメラの方向制御が行われるような処理でもかまわない。この場合、ユーザ方向が変わった後に、所定時間遅れて当該向きの変化に追従してオブジェクトや仮想カメラの方向が変化することになる。
【０１５３】
また、上述した情報処理例では、推定方向ベクトルの方向が反転範囲内である場合に当該推定方向ベクトルの方向を反転させて判定精度を向上させているが、他の処理段階において方向を反転させる処理を行ってもかまわない。例えば、上記ステップ６５またはステップ６７の処理においてユーザ方向ベクトルの方向を更新する際、新たに設定されるユーザ方向ベクトルの方向が上記反転範囲内である場合に、当該ユーザ方向ベクトルの方向を反転させてもかまわない。この場合、上記ステップ５４およびステップ５５における推定方向ベクトルの方向反転処理に、ユーザ方向ベクトルの方向反転処理をさらに加えてもいいし、推定方向ベクトルの方向反転処理の代わりにユーザ方向ベクトルの方向反転処理を行ってもかまわない。
【０１５４】
また、上述した情報処理例では、推定方向ベクトルを複数加算することによってユーザ方向ベクトル候補の方向を算出しているが、１つの推定方向ベクトルの方向をそのままユーザ方向ベクトル候補の方向としてもかまわない。この場合、上記ステップ４４で推定方向ベクトルが算出された後、ステップ４５の処理を行い、ステップ６１の処理を行わずにステップ６２において当該推定方向ベクトルを正規化してユーザ方向ベクトル候補が算出される。このような場合であっても、ユーザ方向ベクトル候補を得た１つの推定方向ベクトルを算出するために用いられた２つの重心間長さを、重心移動量Ｍｇに設定することによって、重心間長さが長い場合にユーザ方向を変化させる重み付けが可能となる。
【０１５５】
また、上述した処理例では、異なるタイミングで連続して算出された２つの重心位置を結ぶ差分ベクトルを用いて、繰り返し推定方向ベクトルを算出している。しかしながら、推定方向ベクトルは、他の重心位置を用いて算出されてもかまわない。例えば、異なるタイミングで算出された２つの重心位置であれば連続して算出されたものでなくてもよく、１つの重心位置と、当該重心位置が算出されてから所定時間後に算出された重心位置とを用いて推定方向ベクトルを算出してもかまわない。
【０１５６】
また、上述した処理例では、２本の判定線（左足踏み判定線、右足踏み判定線）を用いて、ユーザがボード型コントローラ９上で足踏みする動作の判定を行っている。このように中立領域を設けることによって、判定線付近を重心位置が様々な方向へ移動する場合であっても、何度も足踏み判定することを防止することができる。なお、このような効果を期待しない場合、ユーザの足踏みを判定するための判定線は、１本（例えば、基準判定線；図９参照）でもかまわない。この場合、当該判定線を一方から他方へ重心位置が横断した場合にユーザが一方の足で足踏みしたと判定し、当該判定線を他方から一方へ重心位置が横断した場合にユーザが他方の足で足踏みしたと判定する。
【０１５７】
また、上述したゲーム例では、プレイヤオブジェクトＰｏを少なくとも含む仮想世界の画像をモニタ２に表示したが、他の態様の仮想世界の画像をモニタ２に表示してもかまわない。例えば、プレイヤオブジェクトＰｏを表示せずに、プレイヤオブジェクトＰｏから見た主観視点の仮想世界画像をモニタ２に表示してもよい。この場合、モニタ２に主観視点で表示されている仮想世界の奥行方向は、プレイヤオブジェクトＰｏの移動方向と同じであってもいいし、プレイヤオブジェクトＰｏの移動方向と異なっていてもよい。モニタ２に主観視点で表示されている仮想世界の奥行方向と、プレイヤオブジェクトＰｏの移動方向と同じである場合、移動方向を奥行方向とした仮想世界がモニタ２に表示されるために、移動方向を設定する操作が直感的で当該移動方向をユーザが所望する方向に合わせることが容易となることは言うまでもない。
【０１５８】
また、上述したシステム例では、仮想世界を表示するために１つの据置型の画像表示装置（モニタ２）を用いているが、可搬型の画像表示装置を用いてもかまわない。例えば、ユーザが可搬型の画像表示装置を把持して当該画像表示装置の画像を見ながら、ボード型コントローラ９上で足踏みする操作を行う場合、足踏みする方向を変えた場合であっても把持している画像表示装置自体の方向も変えることができるため、ユーザにとって仮想世界の画像が見やすく、ゲームの臨場感も高まることが考えられる。この場合、上述した１つの据置型の画像表示装置（モニタ２）に代えて可搬型の画像表示装置を用いてもいいし、据置型の画像表示装置に加えて可搬型の画像表示装置も用いるシステムであってもかまわない。
【０１５９】
また、上述した処理例においては、ボード型コントローラ９を用いて判定されたユーザ動作に応じて、プレイヤオブジェクトＰｏが仮想世界内を走ったり歩いたりする画像がモニタ２に表示される例を用いたが、他の情報処理にも本発明が適用できることは言うまでもない。例えば、ボード型コントローラ９を用いて判定されたユーザ動作に応じて、プレイヤオブジェクトＰｏが仮想世界内で自転車や一輪車等の乗り物を操って移動する画像がモニタ２に表示されてもかまわない。
【０１６０】
また、上述した説明では、ボード型コントローラ９に４つの荷重センサ９４を設けているが、上記処理においてボード型コントローラ９に加わっている荷重の重心位置の情報が取得できれば、荷重センサ９４を５つ以上も設けてもいいし、荷重センサ９４を３つ設けてもかまわない。
【０１６１】
上述した説明では、コントローラ７とゲーム装置本体５とが無線通信によって接続されるとともに、ボード型コントローラ９とゲーム装置本体５とが無線通信によって接続された態様を用いたが、他の態様によって無線通信が行われてもかまわない。第１の例として、ボード型コントローラ９の操作データがコントローラ７へ無線送信され、ボード型コントローラ９から受信した操作データと共にコントローラ７の操作データを、コントローラ７がゲーム装置本体５へ無線送信する。この場合、コントローラ７とゲーム装置本体５とが無線通信によって直接的に接続されるが、ボード型コントローラ９とゲーム装置本体５とはコントローラ７を介した無線通信によって接続されることになる。第２の例として、コントローラ７の操作データがボード型コントローラ９へ無線送信され、コントローラ７から受信した操作データと共にボード型コントローラ９の操作データを、ボード型コントローラ９がゲーム装置本体５へ無線送信する。この場合、ボード型コントローラ９とゲーム装置本体５とが無線通信によって直接的に接続されるが、コントローラ７とゲーム装置本体５とはボード型コントローラ９を介した無線通信によって接続されることになる。第３の例として、コントローラ７とボード型コントローラ９とがケーブルを介して電気的に接続され、ボード型コントローラ９の操作データが当該ケーブルを介してコントローラ７へ送信される。そして、ボード型コントローラ９から上記ケーブルを介して受信した操作データと共にコントローラ７の操作データを、コントローラ７がゲーム装置本体５へ無線送信する。第４の例として、コントローラ７とボード型コントローラ９とがケーブルを介して電気的に接続され、コントローラ７の操作データが当該ケーブルを介してボード型コントローラ９へ送信される。そして、コントローラ７から上記ケーブルを介して受信した操作データと共にボード型コントローラ９の操作データを、ボード型コントローラ９がゲーム装置本体５へ無線送信する。
【０１６２】
また、コントローラ７および／またはボード型コントローラ９とゲーム装置本体５とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ７および／またはボード型コントローラ９に接続されたケーブルをゲーム装置本体５の接続端子に接続する。第１の例として、コントローラ７とゲーム装置本体５とが第１のケーブルを介して電気的に接続され、ボード型コントローラ９とゲーム装置本体５とも第２のケーブルを介して電気的に接続される。第２の例として、コントローラ７とゲーム装置本体５との間のみがケーブルを介して電気的に接続される。この場合、ボード型コントローラ９の操作データは、コントローラ７へ無線送信された後に上記ケーブルを介してゲーム装置本体５に送信されてもいいし、ボード型コントローラ９から直接ゲーム装置本体５に無線送信されてもよい。第３の例として、ボード型コントローラ９とゲーム装置本体５との間のみがケーブルを介して電気的に接続される。この場合、コントローラ７の操作データは、ボード型コントローラ９へ無線送信された後に上記ケーブルを介してゲーム装置本体５に送信されてもいいし、コントローラ７から直接ゲーム装置本体５に無線送信されてもよい。
【０１６３】
また、上記実施例では、据置型のゲーム装置３を用いて説明したが、携帯型のゲーム装置や一般的なパーソナルコンピュータ等の情報処理装置で本発明の情報処理プログラムを実行して、本発明を実現してもかまわない。また、他の実施形態では、ゲーム装置に限らず任意の携帯型電子機器、例えば、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）や携帯電話、パーソナルコンピュータ、カメラ等であってもよい。何れの装置であっても、当該装置とボード型コントローラ９とを無線または有線で接続することによって、本発明を実現することができる。
【０１６４】
また、上述した説明では情報処理をゲーム装置本体５で行う例を用いたが、上記情報処理における処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲーム装置本体５が他の装置（例えば、サーバや他のゲーム装置）と通信可能に構成されている場合、上記情報処理における処理ステップは、ゲーム装置本体５および当該他の装置が協働することによって実行してもよい。一例として、他の装置において、プレイヤオブジェクトＰｏおよび仮想世界等を設定する処理が行われ、ゲーム装置本体５からオブジェクト動作データ、走行速度データ、走行距離データ等が他の装置へ送信されて、上記情報処理が行われることが考えられる。そして、他の装置で生成された仮想世界を示す画像データがゲーム装置本体５へ送信され、当該仮想世界がモニタ２に表示される。このように、上記情報処理における処理ステップの少なくとも一部を他の装置で行うことによって、上述した情報処理と同様の処理が可能となる。なお、上記情報処理における処理ステップの少なくとも一部をボード型コントローラ９（マイコン１００）で行ってもよい。また、上述した情報処理は、少なくとも１つの情報処理装置により構成される情報処理システムに含まれる１つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施形態においては、ゲーム装置本体５のＣＰＵ１０が所定のプログラムを実行することによって、上述したフローチャートによる処理が行われたが、ゲーム装置本体５が備える専用回路によって上記処理の一部または全部が行われてもよい。
【０１６５】
また、上述したゲーム装置本体５の形状や、コントローラ７やボード型コントローラ９の形状および各種操作ボタンやセンサの形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した情報処理で用いられる処理順序、設定値、表示態様、判定に用いられる値等は、単なる一例に過ぎず他の順序、表示態様、値であっても、本発明を実現できることは言うまでもない。
【０１６６】
また、上記情報処理プログラム（ゲームプログラム）は、光ディスク４等の外部記憶媒体を通じてゲーム装置本体５に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体５に供給されてもよい。また、情報処理プログラムは、ゲーム装置本体５内部の不揮発性記憶装置に予め記録されていてもよい。なお、情報処理プログラムを記憶する情報記憶媒体としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープなどでもよい。また、上記情報処理プログラムを記憶する情報記憶媒体としては、不揮発性半導体メモリや揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【０１６７】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書（定義を含めて）が優先する。
【産業上の利用可能性】
【０１６８】
本発明に係る情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法は、ユーザの動作を正確に判定することができ、ユーザの動作に基づいた処理等を行う情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法として有用である。
【符号の説明】
【０１６９】
１…ゲームシステム
２…モニタ
７０６…スピーカ
３…ゲーム装置
４…光ディスク
５…ゲーム装置本体
１０…ＣＰＵ
１１…システムＬＳＩ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１５…ＡＶ−ＩＣ
１６…ＡＶコネクタ
１７…フラッシュメモリ
１９…無線コントローラモジュール
２３…アンテナ
３１…入出力プロセッサ
３２…ＧＰＵ
３４…ＶＲＡＭ
３５…内部メインメモリ
７…コントローラ
１００…マイコン
１０６…無線モジュール
９…ボード型コントローラ
９４…荷重センサ
１０２…ＡＤコンバータ
【図１】
0005785844.tif 000002
【図２】
0005785844.tif 000003
【図３】
0005785844.tif 000004
【図４】
0005785844.tif 000005
【図５】
0005785844.tif 000006
【図６】
0005785844.tif 000007
【図７】
0005785844.tif 000008
【図８】
0005785844.tif 000009
【図９】
0005785844.tif 000010
【図１０】
0005785844.tif 000011
【図１１】
0005785844.tif 000012
【図１２】
0005785844.tif 000013
【図１３】
0005785844.tif 000014
【図１４】
0005785844.tif 000015
【図１５】
0005785844.tif 000016
【図１６】
0005785844.tif 000017