(57)【要約】【課題】ユーザが意図的に行った動作を正確に判定することが可能な情報処理プログラム及び情報処理装置を提供する。【解決手段】ゲーム装置は、荷重コントローラが検出する荷重値とプレイヤの重心位置と所定の時間間隔で算出する。ゲーム装置は、まず、算出した重心位置に基づいて、重心の移動があったか否か、及び、その移動方向を判定する。次に、ゲーム装置は、プレイヤの荷重の所定時間における変化を判定する。ゲーム装置は荷重の増加量が閾値以上の場合、重心の移動方向にプレイヤが腰を振ったと判定する。【選択図】図１３
2011070597.tif 000002
【特許請求の範囲】
【請求項１】
ユーザの荷重を検出する荷重センサを備えた入力装置からの信号を処理する情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、前記コンピュータを、
前記入力装置からの信号に基づいて、前記ユーザの荷重又は当該荷重の時間変化に関する荷重情報を取得する荷重情報取得手段、
前記入力装置からの信号に基づいて、前記ユーザの重心位置又は当該重心位置の移動方向に関する重心情報を取得する重心情報取得手段、
前記荷重情報が第１の条件を満たしたか否かを判定する荷重判定手段、および、
前記荷重判定手段による判定結果が肯定であるときの前記重心情報に基づいて、前記ユーザの所定の動作を判定する動作判定手段、として機能させる情報処理プログラム。
【請求項２】
前記荷重判定手段は、前記荷重情報に基づいて、前記ユーザの荷重が増加しているか否かを判定する、請求項１に記載の情報処理プログラム。
【請求項３】
前記荷重判定手段は、前記荷重の増加率が所定の閾値以上であるか否かを判定する、請求項２に記載の情報処理プログラム。
【請求項４】
前記重心情報取得手段は、前記入力装置からの信号に基づいて、前記重心位置の移動方向に関する重心情報を取得し、
前記動作判定手段は、前記荷重判定手段による判定結果が肯定であるときに前記重心情報取得手段によって取得された前記重心位置の移動方向に関する重心情報に基づいて、前記ユーザの所定の動作を判定する、請求項１に記載の情報処理プログラム。
【請求項５】
前記重心情報取得手段は、前記入力装置からの信号に基づいて、前記重心位置に関する重心情報を取得し、
前記動作判定手段は、前記荷重判定手段による判定結果が否定であるときの前記重心位置の所定軸方向における座標値の絶対値が所定の閾値以上である場合、前記ユーザが所定の動作を行ったと判定する、請求項１に記載の情報処理プログラム。
【請求項６】
前記重心情報取得手段は、前記入力装置からの信号に基づいて、前記重心位置及び前記重心位置の移動方向に関する重心情報を取得し、
前記重心位置の第１軸方向の座標値の絶対値が第１の閾値以上であるか否かを判定する第１閾値判定手段、として前記コンピュータをさらに機能させ、
前記動作判定手段は、前記荷重判定手段による判定結果が肯定であり、かつ、前記第１閾値判定手段による判定結果が肯定であるときの前記重心位置の移動方向に基づいて、前記ユーザの前記所定の動作を判定する、請求項１に記載の情報処理プログラム。
【請求項７】
前記重心位置の前記第１軸方向の座標値の絶対値が前記第１の閾値より大きい第２の閾値以上であるか否かを判定する第２閾値判定手段、として前記コンピュータをさらに機能させ、
前記動作判定手段は、前記荷重判定手段による判定結果が否定であり、かつ、前記第２閾値判定手段による判定結果が肯定であるときの前記重心位置に基づいて、前記ユーザの前記所定の動作を判定する、請求項６に記載の情報処理プログラム。
【請求項８】
前記重心情報取得手段は、前記入力装置からの信号に基づいて、前記重心位置に関する重心情報を取得し、
前記重心位置が、前記入力装置に設けられた前記ユーザによって荷重が加えられる入力面の所定の位置に設定された所定の領域に存在するか否かを判定する領域判定手段、として前記コンピュータをさらに機能させ、
前記動作判定手段は、前記荷重判定手段による判定結果が肯定であり、かつ、その時点での前記領域判定手段による判定結果が否定である場合、前記ユーザが前記所定の動作を行ったと判定する、請求項１に記載の情報処理プログラム。
【請求項９】
前記重心情報取得手段は、前記入力装置からの信号に基づいて、前記重心位置及び前記重心位置の移動方向に関する重心情報を取得し、
前記重心位置の第１軸方向の座標値の絶対値が所定の閾値以上であるか否かを判定する閾値判定手段、として前記コンピュータをさらに機能させ、
前記動作判定手段は、
前記閾値判定手段による判定結果が肯定である場合、当該肯定であるときの前記重心位置に基づいて、前記ユーザの所定の動作を判定し、
前記閾値判定手段による判定結果が否定であり、かつ、前記荷重判定手段による判定結果が肯定であるときの前記重心位置の移動方向に基づいて、前記ユーザの所定の動作を判定する、請求項１に記載の情報処理プログラム。
【請求項１０】
前記重心情報取得手段が取得した重心情報に基づいて、前記ユーザの重心位置の移動速度を算出する移動速度算出手段、
前記移動速度算出手段によって算出された前記重心位置の移動速度が第２の条件を満たすか否かを判定する移動速度判定手段、として前記コンピュータをさらに機能させ、
前記動作判定手段は、前記荷重判定手段による判定結果が肯定であり、かつ、その時の前記移動速度判定手段による判定結果が肯定である場合に、前記重心情報に基づいて、前記ユーザの所定の動作を判定する、請求項１に記載の情報処理プログラム。
【請求項１１】
前記入力装置に設けられた前記ユーザによって荷重が加えられる入力面には、複数の第１領域、及び、当該第１領域の境界に複数の第２領域が予め設定され、
前記動作判定手段は、前記荷重判定手段による判定結果が否定である場合の前記重心情報取得手段が取得した前記重心位置が前記第１領域に存在するとき、前記ユーザが前記所定の動作を行ったと判定する、請求項１に記載の情報処理プログラム。
【請求項１２】
前記動作判定手段は、前記ユーザが所定の方向に所定の動作を行ったか否かを判定する、請求項１に記載の情報処理プログラム。
【請求項１３】
前記動作判定手段は、前記ユーザが所定の方向に所定の動作を行ったか否かを繰り返し判定し、
前記動作判定手段によって前記ユーザが所定の方向に所定の動作を行ったと判定された場合、前記ユーザが所定の動作を行った方向を示す判定結果を記憶する判定結果記憶手段、として前記コンピュータをさらに機能させ、
前記動作判定手段は、前記重心情報に基づくユーザが所定の動作を行った方向が、前記判定結果記憶手段に記憶された直前の判定結果によって示される方向と異なる場合のみ、前記ユーザが所定の動作を行ったと判定する、請求項１に記載の情報処理プログラム。
【請求項１４】
前記入力装置に設けられた前記ユーザによって荷重が加えられる入力面には、前記ユーザの動作方向を示す複数の領域が予め設定されており、
前記動作判定手段は、前記重心位置が存在する前記入力面上の前記領域が示す方向に、前記ユーザが所定の動作を行ったと判定する、請求項１３に記載の情報処理プログラム。
【請求項１５】
前記動作判定手段は、前記荷重判定手段による判定結果が否定である場合の前記重心位置が存在する前記入力面上の前記領域が示す方向に、前記ユーザが所定の動作を行ったと判定する、請求項１４に記載の情報処理プログラム。
【請求項１６】
前記動作判定手段による判定結果が肯定の場合、前記ユーザが所定の動作を行う様子を表示装置に表示させる表示制御手段、として前記コンピュータをさらに機能させる、請求項１に記載の情報処理プログラム。
【請求項１７】
ユーザの荷重を検出する荷重センサを備えた入力装置からの信号を処理する情報処理装置であって、
前記入力装置からの信号に基づいて、前記ユーザの荷重又は当該荷重の時間変化に関する荷重情報を取得する荷重情報取得手段と、
前記入力装置からの信号に基づいて、前記ユーザの重心位置又は当該重心位置の移動方向に関する重心情報を取得する重心情報取得手段と、
前記荷重情報が第１の条件を満たしたか否かを判定する荷重判定手段と、
前記荷重判定手段による判定結果が肯定であるときの前記重心情報に基づいて、前記ユーザの所定の動作を判定する動作判定手段と、を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム及び情報処理装置に関し、具体的には、ユーザの荷重及び重心位置に基づいて所定の処理を行う情報処理プログラム及び情報処理装置に関する。
【背景技術】
【０００２】
従来より、ユーザの重心位置に基づいて画面に表示されるキャラクタを移動させる情報処理装置が存在する（例えば、特許文献１）。具体的には、特許文献１に記載の装置では、所定のニュートラル円が設定され、重心位置がニュートラル円から出た場合にキャラクタが移動する。重心位置がニュートラル円から出ていないときは、キャラクタは移動しない。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３３４０８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１に記載の技術では、以下の課題があった。すなわち、ユーザが重心位置を移動させる場合、ユーザが意図する方向とは異なる方向に一時的に重心位置が移動する場合がある。具体的には、ユーザが重心位置を移動させる場合、ユーザが意図する方向と反対方向に一時的に重心位置が移動した後、重心位置は、ユーザが意図する方向に移動する場合がある。このような場合において、上記特許文献１に記載の装置では、ユーザが意図する方向と反対方向への重心位置の移動を検出してキャラクタを移動させてしまうことになるため、ユーザが意図した通りにキャラクタを移動させることができないという問題があった。
【０００５】
それ故、本発明の目的は、ユーザが意図的に行った動作を正確に判定することが可能な情報処理プログラム及び情報処理装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【０００７】
本発明は、ユーザの荷重を検出する荷重センサを備えた入力装置からの信号を処理する情報処理装置のコンピュータにおいて実行される情報処理プログラムである。当該情報処理プログラムは、上記コンピュータを、荷重情報取得手段、重心情報取得手段、荷重判定手段、及び、動作判定手段として機能させる。荷重情報取得手段は、上記入力装置からの信号に基づいて、ユーザの荷重又は当該荷重の時間変化に関する荷重情報を取得する。重心情報取得手段は、上記入力装置からの信号に基づいて、上記ユーザの重心位置又は当該重心位置の移動方向に関する重心情報を取得する。荷重判定手段は、上記荷重情報が第１の条件を満たしたか否かを判定する。そして、動作判定手段は、上記荷重判定手段による判定結果が肯定であるときの上記重心情報に基づいて、ユーザの所定の動作を判定する。
【０００８】
なお、荷重情報は、所定時点での荷重値でもよいし、荷重値の増加率や減少率、荷重値の最大値（又は極大値）や最小値（又は極小値）、荷重変化のパターン等であってもよい。また、上記重心情報は、ユーザの重心位置に関する情報であってもよいし、当該重心位置が移動する方向に関する情報であってもよい。
【０００９】
上記によれば、荷重判定手段によって上記荷重情報が所定の条件を満たしたか否かを判定することができる。そして、判定結果が肯定であるときの重心位置又は重心位置の移動方向に基づいて、ユーザの所定の動作を判定することができる。これにより、ユーザが行った動作を正確に判定することができる。
【００１０】
本発明では、上記荷重判定手段は、上記荷重情報に基づいて、ユーザの荷重が増加しているか否かを判定してもよい。
【００１１】
上記によれば、ユーザの荷重が増加しているか否かを判定することができる。これにより、ユーザの荷重が増加しているときの重心位置又は重心位置の移動方向に基づいて、ユーザの所定の動作を判定することができる。また、ユーザの所定の動作に伴って荷重が変化している場合において、荷重が増加に転じた時点で迅速にユーザの所定の動作を判定することができる。
【００１２】
本発明では、上記荷重判定手段は、上記荷重の増加率が所定の閾値以上であるか否かを判定してもよい。
【００１３】
上記によれば、荷重の増加率が所定の閾値以上であるときの重心位置又は重心位置の移動方向に基づいて、ユーザの所定の動作を判定することができる。これにより、ユーザの意図した動作を正確に判定することができる。
【００１４】
本発明では、上記重心情報取得手段は、上記入力装置からの信号に基づいて、上記重心位置の移動方向に関する重心情報を取得してもよい。そして、上記動作判定手段は、上記荷重判定手段による判定結果が肯定であるときに上記重心情報取得手段によって取得された上記重心位置の移動方向に関する重心情報に基づいて、ユーザの所定の動作を判定してもよい。
【００１５】
上記によれば、荷重判定手段による判定結果が肯定であるときの重心位置の移動方向に基づいて、ユーザの所定の動作を判定することができる。例えば、重心位置の移動方向にユーザが所定の動作を行ったと判定することができる。
【００１６】
本発明では、上記重心情報取得手段は、上記入力装置からの信号に基づいて、上記重心位置に関する重心情報を取得してもよい。そして、上記動作判定手段は、上記荷重判定手段による判定結果が否定であるときの上記重心位置の所定軸方向における座標値の絶対値が所定の閾値以上である場合、ユーザが所定の動作を行ったと判定してもよい。
【００１７】
上記によれば、荷重判定手段による判定結果が否定である場合でも、そのときの重心位置に基づいて、ユーザの動作を判定することができる。すなわち、荷重判定手段による判定結果が否定である場合でも、重心位置の座標値の絶対値が所定の閾値以上である場合には、ユーザが所定の動作を行ったと判定するため、ユーザが意図した動作をより正確に判定することができる。
【００１８】
本発明では、上記重心情報取得手段は、上記入力装置からの信号に基づいて、上記重心位置及び上記重心位置の移動方向に関する重心情報を取得してもよい。また、上記情報処理プログラムは、第１閾値判定手段として上記コンピュータをさらに機能させてもよい。第１閾値判定手段は、上記重心位置の第１軸方向の座標値の絶対値が第１の閾値以上であるか否かを判定する。そして、上記動作判定手段は、上記荷重判定手段による判定結果が肯定であり、かつ、上記第１閾値判定手段による判定結果が肯定であるときの上記重心位置の移動方向に基づいて、ユーザの上記所定の動作を判定する。
【００１９】
上記によれば、荷重判定手段による判定結果が肯定であり、かつ、そのときの重心位置の絶対値が第１の閾値以上である場合に、当該時点での重心位置の移動方向に基づいてユーザの所定の動作を判定することができる。これにより、ユーザの意図した動作をより正確に判定することができる。
【００２０】
本発明では、上記情報処理プログラムは、第２閾値判定手段として上記コンピュータをさらに機能させてもよい。第２閾値判定手段は、上記重心位置の上記第１軸方向の座標値の絶対値が上記第１の閾値より大きい第２の閾値以上であるか否かを判定する。そして、上記動作判定手段は、上記荷重判定手段による判定結果が否定であり、かつ、上記第２閾値判定手段による判定結果が肯定であるときの上記重心位置に基づいて、ユーザの上記所定の動作を判定する。
【００２１】
上記によれば、荷重判定手段による判定結果が否定であり、かつ、そのときの重心位置の絶対値が第２の閾値以上である場合に、当該時点での重心位置に基づいてユーザの所定の動作を判定することができる。これにより、荷重判定手段による判定結果が否定であっても、ユーザの意図した動作をより正確に判定することができる。
【００２２】
本発明では、上記重心情報取得手段は、上記入力装置からの信号に基づいて、上記重心位置及び上記重心位置の移動方向に関する重心情報を取得してもよい。また、上記情報処理プログラムは、領域判定手段として上記コンピュータをさらに機能させてもよい。領域判定手段は、上記重心位置が上記入力装置に設けられた上記ユーザによって荷重が加えられる入力面の所定の位置に設定された所定の領域に存在するか否かを判定する。そして、上記動作判定手段は、上記荷重判定手段による判定結果が肯定であり、かつ、その時点での上記領域判定手段による判定結果が否定である場合、ユーザが所定の動作を行ったと判定する。
【００２３】
上記によれば、荷重判定手段による判定結果が肯定であり、かつ、入力面に設定された所定の領域に重心位置が存在しない場合、ユーザが所定の動作を行ったと判定することができる。すなわち、荷重判定手段による判定結果が肯定である場合でも、その時点の重心位置が上記所定の領域に存在する場合は、ユーザは所定の動作を行ったと判定されない。これにより、ユーザの意図した動作をより正確に判定することができる。例えば、入力面の中心付近に上記所定の領域が設定される場合、重心位置が入力面の中心付近に存在するときは、ユーザは所定の動作を行ったと判定されず、ユーザの意図した動作を判定することができる。
【００２４】
本発明では、上記重心情報取得手段は、上記入力装置からの信号に基づいて、上記重心位置及び上記重心位置の移動方向に関する重心情報を取得してもよい。また、上記情報処理プログラムは、閾値判定手段として上記コンピュータをさらに機能させてもよい。閾値判定手段は、上記重心位置の第１軸方向の座標値の絶対値が所定の閾値以上であるか否かを判定する。そして、上記動作判定手段は、上記閾値判定手段による判定結果が肯定である場合、当該肯定であるときの上記重心位置に基づいて、ユーザの所定の動作を判定する。一方、上記動作判定手段は、上記閾値判定手段による判定結果が否定であり、かつ、上記荷重判定手段による判定結果が肯定であるときの上記重心位置の移動方向に基づいて、ユーザの所定の動作を判定する。
【００２５】
上記によれば、重心位置の絶対値が所定の閾値以上である場合は、重心位置に基づいてユーザの動作を判定することができる。一方、重心位置の絶対値が所定の閾値未満である場合は、荷重判定手段による判定結果が肯定か否かを判定し、肯定であるときの重心位置の移動方向に基づいて、ユーザの動作を判定することができる。
【００２６】
本発明では、上記情報処理プログラムは、移動速度算出手段、及び、移動速度判定手段として上記コンピュータをさらに機能させてもよい。移動速度算出手段は、上記重心情報取得手段が取得した重心情報に基づいて、ユーザの重心位置の移動速度を算出する。移動速度判定手段は、上記移動速度算出手段によって算出された上記重心位置の移動速度が第２の条件を満たすか否かを判定する。そして、上記動作判定手段は、上記荷重判定手段による判定結果が肯定であり、かつ、その時の上記移動速度判定手段による判定結果が肯定である場合に、上記重心情報に基づいて、ユーザの所定の動作を判定する。
【００２７】
上記によれば、重心位置の移動速度をも考慮してユーザの動作を判定することができる。例えば、荷重判定手段による判定結果が肯定であり、かつ、重心位置の移動速度が所定の閾値以上である場合に、上記重心情報に基づいて、ユーザの所定の動作を判定することができる。
【００２８】
本発明では、上記入力装置に設けられた上記ユーザによって荷重が加えられる入力面には、複数の第１領域、及び、当該第１領域の境界に複数の第２領域が予め設定されてもよい。この場合において、上記動作判定手段は、上記荷重判定手段による判定結果が否定である場合の上記重心情報取得手段が取得した上記重心位置が上記第１領域に存在するとき、ユーザが上記所定の動作を行ったと判定する。
【００２９】
上記によれば、荷重判定手段による判定結果が否定である場合でも、重心位置に基づいてユーザの動作を判定することができる。すなわち、荷重判定手段による判定結果が否定であるときのユーザの重心位置が、入力面に設定された第１領域に存在する場合のみ、ユーザが所定の動作を行ったと判定することができる。
【００３０】
本発明では、上記動作判定手段は、ユーザが所定の方向に所定の動作を行ったか否かを判定してもよい。
【００３１】
上記によれば、ユーザによる方向を伴う動作を判定することができる。
【００３２】
本発明では、上記動作判定手段は、ユーザが所定の方向に所定の動作を行ったか否かを繰り返し判定してもよい。また、上記情報処理プログラムは、判定結果記憶手段として上記コンピュータをさらに機能させる。判定結果記憶手段は、上記動作判定手段によってユーザが所定の方向に所定の動作を行ったと判定された場合、ユーザが所定の動作を行った方向を示す判定結果を記憶する。そして、上記動作判定手段は、上記重心情報に基づくユーザが所定の動作を行った方向が、上記判定結果記憶手段に記憶された直前の判定結果によって示される方向と異なる場合のみ、ユーザが所定の動作を行ったと判定する。
【００３３】
上記によれば、ユーザが所定の方向に所定の動作を行ったか否かを繰り返し判定することができ、直前にユーザが所定の動作を行った方向を記憶することができる。そして、今回のユーザの動作判定において、上記重心情報に基づくユーザが所定の動作を行った方向と直前のユーザの動作方向とが異なる場合のみ、ユーザが所定の動作を行ったと判定することができる。これにより、連続して同じ方向にユーザが所定の動作を行ったと判定されることを防止することができ、誤判定を防止することができる。
【００３４】
本発明では、上記入力装置に設けられた上記ユーザによって荷重が加えられる入力面には、上記ユーザの動作方向を示す複数の領域が予め設定されてもよい。そして、上記動作判定手段は、上記重心位置が存在する上記入力面上の上記領域が示す方向に、上記ユーザが所定の動作を行ったと判定する。
【００３５】
上記によれば、入力装置の入力面には複数の領域が予め設定される。そして、重心位置が存在する上記入力面上の領域が示す方向に、ユーザが所定の動作を行ったと判定することができる。
【００３６】
本発明では、上記動作判定手段は、上記荷重判定手段による判定結果が否定である場合の上記重心位置が存在する上記入力面上の上記領域が示す方向に、上記ユーザが所定の動作を行ったと判定してもよい。
【００３７】
上記によれば、荷重判定手段による判定結果が否定である場合であっても、そのときの重心位置が存在する上記入力面上の領域が示す方向に、ユーザが所定の動作を行ったと判定することができる。
【００３８】
本発明では、上記情報処理プログラムは、表示制御手段として上記コンピュータをさらに機能させてもよい。表示制御手段は、上記動作判定手段による判定結果が肯定の場合、ユーザが所定の動作を行う様子を表示装置に表示させる。
【００３９】
上記によれば、ユーザが行った動作を表示装置に表示させることができる。
【００４０】
また、本発明は、上記情報処理プログラムを実行する情報処理装置の形態で実施されてもよい。
【発明の効果】
【００４１】
本発明によれば、ユーザが意図的に行った動作を正確に判定することができる。
【図面の簡単な説明】
【００４２】
【図１】本発明の一実施例であるゲームシステムの外観を示す外観図
【図２】本実施例のビデオゲームシステム１０の電気的な構成を示すブロック図
【図３】図１に示した荷重コントローラ３６の外観を示す斜視図
【図４】図３に示した荷重コントローラ３６のＶＩ−ＶＩ断面図
【図５】荷重コントローラ３６の電気的な構成の一例を示すブロック図
【図６】プレイヤが荷重コントローラ３６の上に乗り、本実施形態に係るゲームを行う様子を示した図
【図７Ａ】本実施形態に係るゲームの画面の一例を示した図
【図７Ｂ】プレイヤが左に腰を振る動作に応じてプレイヤキャラクタ１２０が左に腰を振り、選択オブジェクト１２１が選択される様子を示した図
【図８Ａ】荷重コントローラ３６を上方から見た図
【図８Ｂ】荷重コントローラ３６の台３６ａ上の位置に対応した、ＸＹ座標系を示す図
【図９Ａ】プレイヤが腰を右方向に振った場合の重心位置の変化を示す図
【図９Ｂ】プレイヤが腰を右方向に振った場合において、荷重コントローラ３６が検出する荷重値の変化を示す図
【図１０】重心位置の移動方向に基づいたプレイヤの腰振り方向の算出方法を示した図
【図１１】重心位置による振り方向を示した図
【図１２】ゲーム装置１２のメインメモリ（外部メインメモリ４６又は内部メインメモリ４２ｅ）に記憶される主なデータを示す図
【図１３】ゲーム装置１２において実行されるゲーム処理の流れを示すメインフローチャート
【図１４】重心移動の判定処理（Ｓ３）の詳細を示すフローチャート
【図１５】荷重値変化の判定処理（Ｓ４）の詳細を示すフローチャート
【図１６】重心位置による腰振り判定処理（Ｓ５）の詳細を示すフローチャート
【発明を実施するための形態】
【００４３】
［ゲームシステムの全体構成］
次に、図面を参照して本発明に一実施例について説明する。図１は、本発明の一実施例であるゲームシステムの外観を示す外観図である。ゲームシステム１０は、ゲーム装置１２、コントローラ２２および荷重コントローラ３６を含む。なお、図示は省略するが、この実施例のゲーム装置１２は、最大４つのコントローラ（２２，３６）と通信可能に設計されている。また、ゲーム装置１２と各コントローラ（２２，３６）とは、無線によって接続される。たとえば、無線通信は、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格に従って実行されるが、赤外線や無線ＬＡＮなど他の規格に従って実行されてもよい。
【００４４】
ゲーム装置１２は、略直方体のハウジング１４を含み、ハウジング１４の前面にはディスクスロット１６が設けられる。ディスクスロット１６から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク１８が挿入されて、ハウジング１４内のディスクドライブ５４（図２参照）に装着される。ディスクスロット１６の周囲には、ＬＥＤと導光板が配置され、さまざまな処理に応答させて点灯させることが可能である。
【００４５】
また、ゲーム装置１２のハウジング１４の前面であり、その上部には、電源ボタン２０ａおよびリセットボタン２０ｂが設けられ、その下部には、イジェクトボタン２０ｃが設けられる。さらに、リセットボタン２０ｂとイジェクトボタン２０ｃとの間であり、ディスクスロット１６の近傍には、外部メモリカード用コネクタカバー２８が設けられる。この外部メモリカード用コネクタカバー２８の内側には、外部メモリカード用コネクタ６２（図２参照）が設けられ、図示しない外部メモリカード（以下、単に「メモリカード」という。）が挿入される。メモリカードは、光ディスク１８から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（ゲームの結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置１２の内部に設けられるフラッシュメモリ４４（図２参照）のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。
【００４６】
なお、メモリカードとしては、汎用のＳＤカードを用いることができるが、メモリスティックやマルチメディアカード（登録商標）のような他の汎用のメモリカードを用いることもできる。
【００４７】
ゲーム装置１２のハウジング１４の後面には、ＡＶケーブルコネクタ５８（図２参照）が設けられ、そのＡＶコネクタ５８を用いて、ＡＶケーブル３２ａを通してゲーム装置１２にモニタ３４およびスピーカ３４ａを接続する。このモニタ３４およびスピーカ３４ａは典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２ａは、ゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ビデオゲームのゲーム画像が表示され、左右のスピーカ３４ａからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ３４の周辺（この実施例では、モニタ３４の上側）には、２つの赤外ＬＥＤ（マーカ）３４０ｍ，３４０ｎを備えるマーカ部３４ｂが設けられる。このマーカ部３４ｂは、電源ケーブル３２ｂを通してゲーム装置１２に接続される。したがって、マーカ部３４ｂには、ゲーム装置１２から電源が供給される。これによって、マーカ３４０ｍ，３４０ｎは発光し、それぞれモニタ３４の前方に向けて赤外光を出力する。
【００４８】
なお、ゲーム装置１２の電源は、一般的なＡＣアダプタ（図示せず）によって与えられる。ＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置１２は、家庭用電源（商用電源）を、駆動に適した低いＤＣ電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【００４９】
このゲームシステム１０において、ユーザまたはユーザがゲーム（またはゲームに限らず、他のアプリケーション）をプレイするために、ユーザはまずゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）のプログラムを記録している適宜の光ディスク１８を選択し、その光ディスク１８をゲーム装置１２のディスクドライブ５４にローディングする。それに応じて、ゲーム装置１２がその光ディスク１８に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。
【００５０】
ユーザはゲーム装置１２に入力を与えるためにコントローラ２２を操作する。たとえば、入力手段２６のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段２６に対する操作以外にも、コントローラ２２自体を動かすことによって、動画オブジェクト（ユーザオブジェクト）を異なる方向に移動させ、または３Ｄのゲーム世界におけるユーザの視点（カメラ位置）を変化させることができる。コントローラ２２には、３軸方向の加速度を検出する加速度センサ（図示せず）を備えており、ユーザがコントローラ２２を動かすことによって生じる加速度を検出することができる。ゲーム装置１２は、コントローラ２２からの加速度に応じて所定のゲーム処理をすることができる。さらに、コントローラ２２には、マーカ３４０ｍ，３４０ｎが発する赤外光を撮像する撮像手段が備えられており、これによって、コントローラ２２は、モニタ３４の画面上を指示する指示入力装置としても機能する。
【００５１】
図２は、本実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。図示は省略するが、ハウジング１４内の各コンポーネントは、プリント基板に実装される。図２に示されるように、ゲーム装置１２には、ＣＰＵ４０が設けられる。このＣＰＵ４０は、ゲームプロセッサとして機能する。このＣＰＵ４０には、システムＬＳＩ４２が接続される。このシステムＬＳＩ４２には、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８、ディスクドライブ５４およびＡＶ  ＩＣ５６が接続される。
【００５２】
外部メインメモリ４６は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりし、ＣＰＵ４０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ４８は、いわゆるブートＲＯＭであり、ゲーム装置１２の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ５４は、光ディスク１８からプログラムデータやテクスチャデータ等を読み出し、ＣＰＵ４０の制御の下で、後述する内部メインメモリ４２ｅまたは外部メインメモリ４６に書き込む。
【００５３】
システムＬＳＩ４２には、入出力プロセッサ４２ａ、ＧＰＵ（Graphics Processor Unit）４２ｂ，ＤＳＰ（Digital Signal Processor）４２ｃ，ＶＲＡＭ４２ｄおよび内部メインメモリ４２ｅが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。
【００５４】
入出力プロセッサ（Ｉ／Ｏプロセッサ）４２ａは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後で詳細に説明する。
【００５５】
ＧＰＵ４２ｂは、描画手段の一部を形成し、ＣＰＵ４０からのグラフィクスコマンド（作画命令）を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、ＣＰＵ４０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ４２ｂに与える。
【００５６】
図示は省略するが、上述したように、ＧＰＵ４２ｂにはＶＲＡＭ４２ｄが接続される。ＧＰＵ４２ｂが作画コマンドを実行するにあたって必要なデータ（画像データ：ポリゴンデータやテクスチャデータなどのデータ）は、ＧＰＵ４２ｂがＶＲＡＭ４２ｄにアクセスして取得する。なお、ＣＰＵ４０は、描画に必要な画像データを、ＧＰＵ４２ｂを介してＶＲＡＭ４２ｄに書き込む。ＧＰＵ４２ｂは、ＶＲＡＭ４２ｄにアクセスして描画のためのゲーム画像データを作成する。
【００５７】
なお、この実施例では、ＧＰＵ４２ｂがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、ＧＰＵ４２ｂは当該任意のアプリケーションについての画像データを生成する。
【００５８】
また、ＤＳＰ４２ｃは、オーディオプロセッサとして機能し、内部メインメモリ４２ｅや外部メインメモリ４６に記憶されるサウンドデータや音波形（音色）データを用いて、スピーカ３４ａから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【００５９】
上述のように生成されたゲーム画像データおよびオーディオデータは、ＡＶ  ＩＣ５６によって読み出され、ＡＶコネクタ５８を介してモニタ３４およびスピーカ３４ａに出力される。したがって、ゲーム画面がモニタ３４に表示され、ゲームに必要な音（音楽）がスピーカ３４ａから出力される。
【００６０】
また、入出力プロセッサ４２ａには、フラッシュメモリ４４、無線通信モジュール５０および無線コントローラモジュール５２が接続されるとともに、拡張コネクタ６０および外部メモリカード用コネクタ６２が接続される。また、無線通信モジュール５０にはアンテナ５０ａが接続され、無線コントローラモジュール５２にはアンテナ５２ａが接続される。
【００６１】
入出力プロセッサ４２ａは、無線通信モジュール５０を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ４２ａは、定期的にフラッシュメモリ４４にアクセスし、ネットワークへ送信する必要があるデータ（送信データとする）の有無を検出し、当該送信データが有る場合には、無線通信モジュール５０およびアンテナ５０ａを介してネットワークに送信する。また、入出力プロセッサ４２ａは、他のゲーム装置から送信されるデータ（受信データとする）を、ネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、受信データをフラッシュメモリ４４に記憶する。ただし、一定の場合には、受信データをそのまま破棄する。さらに、入出力プロセッサ４２ａは、ダウンロードサーバからダウンロードしたデータ（ダウンロードデータとする）をネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、ダウンロードデータをフラッシュメモリ４４に記憶する。
【００６２】
また、入出力プロセッサ４２ａは、コントローラ２２や荷重コントローラ３６から送信される入力データをアンテナ５２ａおよび無線コントローラモジュール５２を介して受信し、内部メインメモリ４２ｅまたは外部メインメモリ４６のバッファ領域に記憶（一時記憶）する。入力データは、ＣＰＵ４０のゲーム処理によって利用された後、バッファ領域から消去される。
【００６３】
なお、この実施例では、上述したように、無線コントローラモジュール５２は、Ｂｌｕｅｔｏｏｔｈ規格にしたがってコントローラ２２や荷重コントローラ３６との間で通信を行う。
【００６４】
また、図面の都合上、図２では、コントローラ２２と荷重コントローラ３６とをまとめて記載してある。
【００６５】
さらに、入出力プロセッサ４２ａには、拡張コネクタ６０および外部メモリカード用コネクタ６２が接続される。拡張コネクタ６０は、ＵＳＢやＳＣＳＩのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ６０に有線ＬＡＮアダプタを接続し、無線通信モジュール５０に代えて当該有線ＬＡＮを利用することもできる。外部メモリカード用コネクタ６２には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ４２ａは、拡張コネクタ６０や外部メモリカード用コネクタ６２を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００６６】
詳細な説明は省略するが、図１にも示したように、ゲーム装置１２（ハウジング１４）には、電源ボタン２０ａ，リセットボタン２０ｂおよびイジェクトボタン２０ｃが設けられる。電源ボタン２０ａは、システムＬＳＩ４２に接続される。この電源ボタン２０ａがオンされると、ゲーム装置１２の各コンポーネントに図示しないＡＣアダプタを経て電源が供給され、システムＬＳＩ４２は、通常の通電状態となるモード（通常モードと呼ぶこととする）を設定する。一方、電源ボタン２０ａがオフされると、ゲーム装置１２の一部のコンポーネントのみに電源が供給され、システムＬＳＩ４２は、消費電力を必要最低限に抑えるモード（以下、「スタンバイモード」という。）を設定する。この実施例では、スタンバイモードが設定された場合には、システムＬＳＩ４２は、入出力プロセッサ４２ａ、フラッシュメモリ４４、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８および無線通信モジュール５０、無線コントローラモジュール５２以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、このスタンバイモードは、ＣＰＵ４０によってアプリケーションの実行が行われないモードである。
【００６７】
なお、システムＬＳＩ４２には、スタンバイモードにおいても電源が供給されるが、ＧＰＵ４２ｂ、ＤＳＰ４２ｃおよびＶＲＡＭ４２ｄへのクロックの供給を停止することにより、これらを駆動させないようにして、消費電力を低減するようにしてある。
【００６８】
また、図示は省略するが、ゲーム装置１２のハウジング１４内部には、ＣＰＵ４０やシステムＬＳＩ４２などのＩＣの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【００６９】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン２０ａがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【００７０】
また、通常モードとスタンバイモードの切り替えは、コントローラ２２の電源スイッチ（入力手段２６のスイッチの１つ）のオン／オフの切り替えによっても遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール５２ａへの電源供給を行わない設定にしてもよい。
【００７１】
リセットボタン２０ｂもまた、システムＬＳＩ４２に接続される。リセットボタン２０ｂが押されると、システムＬＳＩ４２は、ゲーム装置１２の起動プログラムを再起動する。イジェクトボタン２０ｃは、ディスクドライブ５４に接続される。イジェクトボタン２０ｃが押されると、ディスクドライブ５４から光ディスク１８が排出される。
【００７２】
図３は、図１に示した荷重コントローラ３６の外観を示す斜視図である。図３に示されるように、荷重コントローラ３６は、ユーザがその上に乗る（ユーザの足を乗せる）台３６ａ、および台３６ａにかかる荷重を検出するための少なくとも４つの荷重センサ３６４（３６４ａ〜３６４ｄ）を備える。なお、各荷重センサ３６４は台３６ａに内包されており（図４参照）、図３においてはその配置が点線で示されている。
【００７３】
台３６ａは、略直方体に形成されており、上面視で略長方形状である。たとえば長方形の短辺が３０ｃｍ程度に設定され、その長辺が５０ｃｍ程度に設定される。ユーザが乗る台３６ａの上面は平坦にされる。台３６ａの４隅の側面は、部分的に円柱状に張り出すように形成されている。
【００７４】
この台３６ａにおいて、４つの荷重センサ３６４は、所定の間隔を置いて配置される。この実施例では、４つの荷重センサ３６４は、台３６ａの周縁部に、具体的には４隅にそれぞれ配置される。荷重センサ３６４の間隔は、台３６ａに対するユーザの荷重のかけ方によるゲーム操作の意図をより精度良く検出できるように適宜な値に設定される。
【００７５】
図４は、図３に示した荷重コントローラ３６のＶＩ−ＶＩ断面図を示すとともに、荷重センサ３６４の配置された隅の部分が拡大表示されている。この図４から分かるように、台３６ａは、ユーザが乗るための支持板３６０と脚３６２を含む。脚３６２は、荷重センサ３６４が配置される箇所に設けられる。この実施例では４つの荷重センサ３６４が４隅に配置されるので、４つの脚３６２が４隅に設けられる。脚３６２は、たとえばプラスチック成型によって略有底円筒状に形成されており、荷重センサ３６４は、脚３６２内の底面に設けられた球面部品３６２ａ上に配置される。支持板３６０は、この荷重センサ３６４を介して脚３６２に支持される。
【００７６】
支持板３６０は、上面と側面上部とを形成する上層板３６０ａ、下面と側面下部とを形成する下層板３６０ｂ、および上層板３６０ａと下層板３６０ｂとの間に設けられる中層板３６０ｃを含む。上層板３６０ａと下層板３６０ｂとは、たとえばプラスチック成型により形成されており、接着等により一体化される。中層板３６０ｃは、たとえば１枚の金属板のプレス成型により形成されている。この中層板３６０ｃが、４つの荷重センサ３６４の上に固定される。上層板３６０ａは、その下面に格子状のリブ（図示しない）を有しており、当該リブを介して中層板３６０ｃに支持されている。したがって、台３６ａにユーザが乗ったときには、その荷重は、支持板３６０、荷重センサ３６４および脚３６２を伝達する。図４に矢印で示したように、入力される荷重によって生じた床からの反作用は、脚３６２から、球面部品３６２ａ、荷重センサ３６４、中層板３６０ｃを介して、上層板３６０ａに伝達する。
【００７７】
荷重センサ３６４は、たとえば歪ゲージ（歪センサ）式ロードセルであり、入力された荷重を電気信号に変換する荷重変換器である。荷重センサ３６４では、荷重入力に応じて、起歪体３６５が変形して歪が生じる。この歪が、起歪体に貼り付けられた歪センサ３６６によって、電気抵抗の変化に変換され、さらに電圧変化に変換される。したがって、荷重センサ３６４は、入力荷重を示す電圧信号を出力端子から出力する。
【００７８】
なお、荷重センサ３６４は、音叉振動式、弦振動式、静電容量式、圧電式、磁歪式、またはジャイロ式のような他の方式の荷重センサであってもよい。
【００７９】
図３に戻って、荷重コントローラ３６には、さらに、電源ボタン３６ｃが設けられる。この電源ボタン３６ｃがオンされると、荷重コントローラ３６の各回路コンポーネント（図５参照）に電源が供給される。ただし、荷重コントローラ３６は、ゲーム装置１２からの指示に従ってオンされる場合もある。また、荷重コントローラ３６は、ユーザが乗っていない状態が一定時間（たとえば、３０秒）以上継続すると、電源がオフされる。ただし、荷重コントローラ３６が起動されている状態で、電源ボタン３６ｃをオンしたときに、電源がオフされてもよい。
【００８０】
図５は、荷重コントローラ３６の電気的な構成の一例を示すブロック図である。なお、この図５では、信号および通信の流れは実線矢印で示される。破線矢印は、電源の供給を示している。
【００８１】
荷重コントローラ３６は、その動作を制御するためのマイクロコンピュータ（マイコン）１００を含む。マイコン１００は図示しないＣＰＵ、ＲＯＭおよびＲＡＭ等を含み、ＣＰＵはＲＯＭに記憶されたプログラムに従って荷重コントローラ３６の動作を制御する。
【００８２】
マイコン１００には、電源ボタン３６ｃ、ＡＤコンバータ１０２、ＤＣ−ＤＣコンバータ１０４および無線モジュール１０６が接続される。さらに、無線モジュール１０６には、アンテナ１０６ａが接続される。４つの荷重センサ３６４は、それぞれ、増幅器１０８を介してＡＤコンバータ１０２に接続される。
【００８３】
また、荷重コントローラ３６には電源供給のために電池１１０が収容されている。他の実施例では、電池に代えてＡＣアダプタを接続し、商用電源を供給するようにしてもよい。かかる場合には、ＤＣ−ＤＣコンバータに代えて、交流を直流に変換し、直流電圧を降圧および整流する電源回路を設ける必要がある。この実施例では、マイコン１００および無線モジュール１０６への電源の供給は、電池から直接的に行われる。つまり、マイコン１００内部の一部のコンポーネント（ＣＰＵ）と無線モジュール１０６とには、常に電源が供給されており、電源ボタン３６ｃがオンされたか否か、ゲーム装置１２から電源オン（荷重検出）のコマンドが送信されたか否かを検出する。一方、荷重センサ３６４、ＡＤコンバータ１０２および増幅器１０８には、電池１１０からの電源がＤＣ−ＤＣコンバータ１０４を介して供給される。ＤＣ−ＤＣコンバータ１０４は、電池１１０からの直流電流の電圧値を異なる電圧値に変換して、荷重センサ３６４、ＡＤコンバータ１０２および増幅器１０８に与える。
【００８４】
これら荷重センサ３６４、ＡＤコンバータ１０２および増幅器１０８への電源供給は、マイコン１００によるＤＣ−ＤＣコンバータ１０４の制御によって、必要に応じて行われるようにしてよい。つまり、マイコン１００は、荷重センサ３６４を動作させて荷重を検出する必要があると判断されるときに、ＤＣ−ＤＣコンバータ１０４を制御して、各荷重センサ３６４、ＡＤコンバータ１０２および各増幅器１０８に電源を供給するようにしてよい。
【００８５】
電源が供給されると、各荷重センサ３６４は、入力された荷重を示す信号を出力する。当該信号は各増幅器１０８で増幅され、ＡＤコンバータ１０２でアナログ信号からディジタルデータに変換されて、マイコン１００に入力される。各荷重センサ３６４の検出値には各荷重センサ３６４の識別情報が付与されて、いずれの荷重センサ３６４の検出値であるかが識別可能にされる。このようにして、マイコン１００は、同一時刻における４つの荷重センサ３６４のそれぞれの荷重検出値を示すデータを取得することができる。
【００８６】
一方、マイコン１００は、荷重センサ３６４を動作させる必要がないと判断されるとき、つまり、荷重検出タイミングでないとき、ＤＣ−ＤＣコンバータ１０４を制御して、荷重センサ３６４、ＡＤコンバータ１０２および増幅器１０８への電源の供給を停止する。このように、荷重コントローラ３６では、必要なときにだけ、荷重センサ３６４を動作させて荷重の検出を行うことができるので、荷重検出のための電力消費を抑制することができる。
【００８７】
荷重検出の必要なときとは、典型的には、ゲーム装置１２（図１）が荷重データを取得したいときである。たとえば、ゲーム装置１２が荷重情報を必要とするとき、ゲーム装置１２は荷重コントローラ３６に対して荷重取得命令を送信する。マイコン１００は、ゲーム装置１２から荷重取得命令を受信したときに、ＤＣ−ＤＣコンバータ１０４を制御して、荷重センサ３６４等に電源を供給し、荷重を検出する。一方、マイコン１００は、ゲーム装置１２から荷重取得命令を受信していないときには、ＤＣ−ＤＣコンバータ１０４を制御して、電源供給を停止する。
【００８８】
あるいは、マイコン１００は、一定時間ごとに荷重検出タイミングであると判断して、ＤＣ−ＤＣコンバータ１０４を制御するようにしてもよい。このような周期的な荷重検出を行う場合、周期情報は、たとえば、初めにゲーム装置１２から荷重コントローラ３６のマイコン１００に与えられて記憶されてよいし、または、予めマイコン１００に記憶されてよい。
【００８９】
荷重センサ３６４からの検出値を示すデータは、荷重コントローラ３６の操作データ（入力データ）として、マイコン１００から無線モジュール１０６およびアンテナ１０６ｂを介してゲーム装置１２（図１）に送信される。たとえば、ゲーム装置１２からの命令を受けて荷重検出を行った場合、マイコン１００は、ＡＤコンバータ１０２から荷重センサ３６４の検出値データを受信したときに、当該検出値データをゲーム装置１２に送信する。あるいは、マイコン１００は、一定時間ごとに検出値データをゲーム装置１２に送信するようにしてもよい。荷重の検出周期よりも送信周期が長い場合には、送信タイミングまでに検出された複数の検出タイミングの荷重値を含むデータが送信される。
【００９０】
なお、無線モジュール１０６は、ゲーム装置１２の無線コントローラモジュール５２と同じ無線規格（Ｂｌｕｅｔｏｏｔｈ、無線ＬＡＮなど）で通信可能にされる。したがって、ゲーム装置１２のＣＰＵ４０は、無線コントローラモジュール５２等を介して荷重取得命令を荷重コントローラ３６に送信することができる。荷重コントローラ３６のマイコン１００は、無線モジュール１０６およびアンテナ１０６ａを介して、ゲーム装置１２からの命令を受信し、また、各荷重センサ３６４の荷重検出値（または荷重算出値）を含む入力データをゲーム装置１２に送信することができる。
【００９１】
たとえば４つの荷重センサ３６４で検出される４つの荷重値の単なる合計値に基づいて実行されるようなゲームの場合には、ユーザは荷重コントローラ３６の４つの荷重センサ３６４に対して任意の位置をとることができ、つまり、ユーザは台３６ａの上の任意の位置に任意の向きで乗ってゲームをプレイすることができる。しかし、ゲームの種類によっては、各荷重センサ３６４で検出される荷重値がユーザから見ていずれの方向の荷重値であるかを識別して処理を行う必要があり、つまり、荷重コントローラ３６の４つの荷重センサ３６４とユーザとの位置関係が把握されている必要がある。この場合、たとえば、４つの荷重センサ３６４とユーザとの位置関係を予め規定しておき、当該所定の位置関係が得られるようにユーザが台３６ａ上に乗ることが前提とされてよい。典型的には、台３６ａの中央に乗ったユーザの前後左右にそれぞれ荷重センサ３６４が２つずつ存在するような位置関係、つまり、ユーザが荷重コントローラ３６の台３６ａの中央に乗ったとき、ユーザの中心から右前、左前、右後および左後の方向にそれぞれ荷重センサ３６４が存在するような位置関係が規定される。この場合、この実施例では、荷重コントローラ３６の台３６ａが平面視で矩形状に形成されるとともにその矩形の１辺（長辺）に電源ボタン３６ｃが設けられているので、この電源ボタン３６ｃを目印として利用して、ユーザには電源ボタン３６ｃの設けられた長辺が所定の方向（前、後、左または右）に存在するようにして台３６ａに乗ってもらうことを予め決めておく。このようにすれば、各荷重センサ３６４で検出される荷重値は、ユーザから見て所定の方向（右前、左前、右後および左後）の荷重値となる。したがって、荷重コントローラ３６およびゲーム装置１２は、荷重検出値データに含まれる各荷重センサ３６４の識別情報と、予め設定（記憶）された各荷重センサ３６４のユーザに対する位置ないし方向を示す配置データとに基づいて、各荷重検出値がユーザから見ていずれの方向に対応するかを把握することができる。これにより、たとえば前後左右の操作方向のようなユーザによるゲーム操作の意図を把握することが可能になる。
【００９２】
なお、各荷重センサ３６４のユーザに対する配置は予め規定せずに、初期設定やゲーム中の設定などでユーザの入力によって配置が設定されるようにしてもよい。たとえば、ユーザから見て所定の方向（左前、右前、左後または右後など）の部分に乗るようにユーザに指示する画面を表示するとともに荷重値を取得することによって、各荷重センサ３６４のユーザに対する位置関係を特定することができるので、この設定による配置データを生成して記憶するようにしてよい。あるいは、モニタ３４の画面上に、荷重コントローラ３６の配置を選択するための画面を表示して、目印（電源ボタン３６ｃ）がユーザから見てどの方向に存在するかをコントローラ２２による入力によって選択してもらい、この選択に応じて各荷重センサ３６４の配置データを生成して記憶するようにしてよい。
【００９３】
［ゲーム処理の概要］
次に、図６及び図７を参照して、本発明の一実施形態に係るゲーム処理の概要について説明する。図６は、プレイヤが荷重コントローラ３６の上に乗り、本実施形態に係るゲームを行う様子を示した図である。図６に示すように、プレイヤはモニタ３４の画面の方向を向きながら荷重コントローラ３６の上に乗る。荷重コントローラ３６は、その長手方向が画面に向かう方向に対して垂直になるように置かれる（横置きの配置という）。
【００９４】
本実施形態では、プレイヤが荷重コントローラ３６の上に乗り、腰を振る動作を行うゲームを想定する。具体的には、本実施形態に係るゲームでは、プレイヤは、モニタ３４の画面に表示された問題を解きながら腰を振る動作を行うことによって、出題された問題に回答する。図７Ａは、本実施形態に係るゲームの画面の一例を示した図である。図７Ａに示すように、画面にはプレイヤキャラクタ１２０、選択オブジェクト１２１〜１２３、及び、問題表示領域１２４が表示されている。プレイヤキャラクタ１２０は、プレイヤによって操作されるキャラクタであり、プレイヤの腰の振り動作に応じて動作する。プレイヤキャラクタ１２０は、ゲーム空間上を画面の奥方向を向いて立っている。すなわち、画面には、プレイヤキャラクタ１２０の後ろ姿が表示されている。従って、プレイヤが例えば右に腰を振ると、プレイヤキャラクタ１２０が画面の右方向に腰を振る様子が表示される。選択オブジェクト１２１〜１２３は、プレイヤキャラクタ１２０が表示される位置の周辺に表示される。具体的には、選択オブジェクト１２１は、プレイヤキャラクタ１２０の左側に、選択オブジェクト１２２は、プレイヤキャラクタ１２０の右側に、選択オブジェクト１２３は、プレイヤキャラクタ１２０の後ろ側に表示されている。選択オブジェクト１２１〜１２３は、プレイヤによって選択されるオブジェクトであり、当該選択オブジェクトには、数字が表示される。問題表示領域１２４には、問題が表示されており、具体的には数字が表示される。本実施形態に係るゲームでは、プレイヤは、選択オブジェクト１２１〜１２３に表示された数字の合計が問題表示領域１２４に表示された数字になるように、選択オブジェクト１２１〜１２３を複数選択する。
【００９５】
例えば、図７Ａに示す問題では、問題表示領域１２４に表示された数字は「５」である。また、選択オブジェクト１２１に表示された数字は「１」、選択オブジェクト１２２に表示された数字は「４」、選択オブジェクト１２３に表示された数字は「３」である。このような問題において、選択オブジェクト１２１〜１２３に表示された数字の合計が問題表示領域１２４に表示された数字になるようにするためには、プレイヤは選択オブジェクト１２１及び選択オブジェクト１２２を選択する必要がある。プレイヤが選択オブジェクト１２１及び選択オブジェクト１２２を選択すると、プレイヤは当該問題に正解したことになる。
【００９６】
選択オブジェクト１２１〜１２３の選択は、プレイヤが腰を振ることによって行われる。図７Ｂは、プレイヤが左に腰を振る動作に応じてプレイヤキャラクタ１２０が左に腰を振り、選択オブジェクト１２１が選択される様子を示した図である。図７Ｂでは、プレイヤキャラクタ１２０が腰を左側に振る様子が示されている。この場合、プレイヤ自身は荷重コントローラ３６上で左に腰を振る動作を行う。すると、プレイヤキャラクタ１２０が腰を左に振る様子が画面に表示され、プレイヤキャラクタ１２０の左側に位置する選択オブジェクト１２１が選択される。図７Ｂに示すように、選択オブジェクト１２１が選択されると、当該オブジェクトが選択されたことが容易に認識できるように、当該オブジェクトは強調表示される（選択オブジェクト１２１が振動するように表示されたり、選択オブジェクト１２１の表示色が変化したりする）。次に、プレイヤは、問題に正解するため選択オブジェクト１２２を選択するように、腰を右側に振る動作を行う。すると、プレイヤキャラクタ１２０が腰を右に振る様子が画面に表示され、プレイヤキャラクタ１２０の右側に位置する選択オブジェクト１２２が選択される。
【００９７】
以上のように、本実施形態に係るゲームでは、プレイヤは腰を前後左右方向に振ることによって、画面に表示された選択オブジェクトを選択する。そして、選択した選択オブジェクトに表示された数字の合計が、問題表示領域１２４に表示された数字と等しくなるように、プレイヤは選択オブジェクトを選択する。プレイヤが問題に正解すると、正解したことを示す表示がなされ、次の問題が出題される。そして、本実施形態に係るゲームでは、所定の制限時間にプレイヤが何問正解したかによって、スコアが算出される。このようにして、プレイヤは数字の足し算を頭の中で行うと共に、腰を振る動作を行うことによって、運動をしながら頭を鍛えるゲームを楽しむ。
【００９８】
次に、ゲーム装置１２による腰振り判定（プレイヤが前後左右のどの方向に腰を振ったかの判定）の方法について、説明する。本実施形態では、第１の腰振り判定と第２の腰振り判定が行われる。第１の腰振り判定は、荷重コントローラ３６が検出するプレイヤの重心位置及び荷重値に基づいて、行われる。第２の腰振り判定は、重心位置に基づいた腰振り判定である。以下では、まずプレイヤの重心位置の算出方法について説明した後、第１の腰振り判定について説明する。
【００９９】
重心位置は、荷重コントローラ３６の台３６ａに加わる荷重の重心位置であり、荷重コントローラ３６の荷重センサ３６４ａ〜３６４ｄが検出する荷重値によって定められる。重心位置は、荷重コントローラ３６の台３６ａ上の位置に対応した、ＸＹ座標系の座標値によって表される。図８Ａは、荷重コントローラ３６を上方から見た図である。図８Ｂは、荷重コントローラ３６の台３６ａ上の位置に対応した、ＸＹ座標系を示す図である。図８Ａにおいて、中心Ｏ’より右側（荷重センサ３６４ａ及び３６４ｂが内包された側）の領域は、プレイヤが右足を乗せる領域である。中心Ｏ'より左側（荷重センサ３６４ｃ及び３６４ｄが内包された側）の領域は、プレイヤが左足を乗せる領域である。図８Ａ及び図８Ｂに示されるように、荷重コントローラ３６の台３６ａ上の位置は、ＸＹ座標系の位置と対応しており、例えば、台３６ａの中心Ｏ'は、ＸＹ座標系の原点Ｏに対応する。
【０１００】
ここで、荷重センサ３６４ａが検出する荷重値をａ、荷重センサ３６４ｂが検出する荷重値をｂ、荷重センサ３６４ｃが検出する荷重値をｃ、荷重センサ３６４ｄが検出する荷重値をｄとした場合、重心のＸ軸座標値（ＸＧ）及びＹ軸座標値（ＹＧ）は、以下の式１及び式２によって算出される。
ＸＧ＝（（ａ＋ｂ―ｃ−ｄ）／基準体重）×ｍ−初期のＸ座標値・・・（１）
ＹＧ＝（（ａ＋ｃ―ｂ−ｄ）／基準体重）×ｎ−初期のＹ座標値・・・（２）
ここで、ｍ及びｎは所定の定数である。重心位置（ＸＧ，ＹＧ）は、−１≦ＸＧ≦１、−１≦ＹＧ≦１で算出される。また、基準体重とは、プレイヤが静止状態で荷重コントローラ３６の上に乗ったときに各荷重センサ３６４が検出する荷重値の合計値（すなわち、プレイヤの体重）である。基準体重は、ゲーム開始時に測定される。また、初期のＸ座標値は、Ｘ軸方向の重心位置の補正値であり、プレイヤがゲーム開始時に静止状態で荷重コントローラ３６の上に乗ったときに検出される重心のＸ座標値である。同様に、初期のＹ座標値は、Ｙ軸方向の重心位置の補正値であり、プレイヤがゲーム開始時に静止状態で荷重コントローラ３６の上に乗ったときに検出される重心のＹ座標値である。プレイヤが、台３６ａ上の正しい位置に正しい姿勢で乗ると（台３６ａの中心Ｏ'を挟んで台３６ａ上の所定の位置に両足を乗せ、両足にバランスよく体重をかけて静止すると）、重心位置は、ＸＹ座標系の原点Ｏに位置する。しかしながら、実際には、正しい位置に正しい姿勢で乗ることは難しいため、プレイヤが台３６ａの上に乗ると、重心位置は原点Ｏからずれた位置に検出される。このずれは、プレイヤの台３６ａの乗り方によって異なる。従って、ゲーム開始時に、プレイヤの乗り方の違いによる重心位置のずれを検出し、ゲーム中に検出する重心位置を補正することで、プレイヤの動作を正確に判定することができる。なお、上記重心位置の算出式は単なる一例であり、その他の方法によって重心位置を算出してもよい。
【０１０１】
次に、第１の腰振り判定について説明する。まず、プレイヤが腰振り動作を行った場合の、重心位置の変化と荷重値の変化について説明する。プレイヤが腰振り動作を行うと、上記重心位置は変化する。これは、プレイヤが腰を振ることによって、体重が腰を振る方向に移動するためである。一方、プレイヤが腰を振ると、一時的にプレイヤの意図する方向とは異なる方向に重心位置が移動する場合がある。図９Ａは、プレイヤが腰を右方向に振った場合の重心位置の変化を示す図である。図９Ａでは、プレイヤが腰振り動作を開始した直後における重心位置Ｐ１からプレイヤが腰振り動作を終了した時点における重心位置Ｐ２１が表示されている。重心位置Ｐ２は、重心位置Ｐ１が検出された時点から所定時間（例えば、１／６０秒。１フレーム時間という。）経過後の重心位置である。重心位置Ｐ３は、重心位置Ｐ２が検出された時点からさらに１フレーム時間経過後の重心位置である。すなわち、図９Ａにおいて、重心位置Ｐｉ（ｉは１〜２１までの正の整数）は、プレイヤが腰振り動作を開始した直後からｉフレーム時間経過後の重心位置を示す。
【０１０２】
図９Ａに示すように、プレイヤが右方向に腰を振る場合、一時的に左方向に重心が移動した後、右方向に重心が移動する。これは、次に示す理由からである。すなわち、プレイヤが右方向に腰を振ろうとすると、その反動で一時的に左足の方に体重が移動する。具体的には、プレイヤが右方向に腰を振るために腰に右方向の力を加えようとすると、慣性の法則により、左方向の力が体全体にかかる。このため、プレイヤは、その左方向の力に対向しようとして無意識的に左足で踏ん張ろうとする。従って、プレイヤが右方向に腰を振る場合、一時的に左方向に重心が移動する。ここでは、この一時的な重心の移動を伴う無意識的な動作を「予備動作」と呼ぶ。予備動作では、プレイヤが右方向に腰振り動作を開始後、左方向に重心位置が移動し、その後反転して、右方向に重心位置が移動する。そして、重心のＸ座標値が０を超えた辺りで予備動作は終了する。すなわち、図９Ａでは、予備動作は、重心位置Ｐ１の時点から開始されて、重心位置Ｐ１２付近の時点で終了する。予備動作が終了すると、重心位置は、プレイヤが腰を振る方向（右方向）に移動する。
【０１０３】
本実施形態では、上記予備動作によるプレイヤの意思とは反対方向の腰振り動作の検出を排除し、プレイヤが意図した腰振り動作を正確に検出するため、プレイヤの腰振り動作に応じた荷重値の変化を検出する。プレイヤが腰振り動作を行うと、荷重コントローラ３６が検出する荷重値（各荷重センサ３６４が検出する荷重値の合計値）は、変化する。図９Ｂは、プレイヤが腰を右方向に振った場合において、荷重コントローラ３６が検出する荷重値の変化を示す図である。図９Ｂにおいて、縦軸は体重比率（検出した荷重値を基準体重で除した値）を示し、横軸は、プレイヤが腰振り動作を開始した時点からの経過時間（フレーム時間）を示す。図９Ｂにおいて、各点Ｗｉ（ｉは１〜２１までの正の整数）は、図９Ａにおける重心位置Ｐｉが検出された時点での荷重値（各荷重センサ３６４が検出する荷重値の合計値）を示す。
【０１０４】
図９Ｂに示すように、プレイヤが右方向に腰振り動作を開始してから予備動作が終了する時点の間（Ｗ１の時点からＷ１２の時点までの間）、荷重値は、緩やかに増加しながら途中で極大値（Ｗ７）を示し、その後減少する。予備動作が終了する時点（Ｗ１２の時点）では、荷重値は、極小値（最小値）を示す。その後、荷重値は、再び増加する（Ｗ１２〜Ｗ２０）。この荷重値の変化の原因を、次に示す。
【０１０５】
上述したように、プレイヤが右方向に腰を振ろうとすると、その反動で一時的に左足の方に体重が移動する（図９ＡではＰ１〜Ｐ７、図９ＢではＷ１〜Ｗ７）。この体重移動に伴ってプレイヤが左足で体重を支えようと踏ん張ると、鉛直下方向の力が荷重コントローラ３６にかかる。従って、荷重コントローラ３６が検出する荷重値は、予備動作によって重心位置が左方向に移動する間（Ｐ１〜Ｐ７の間）、プレイヤの体重よりも大きくなる（Ｗ１〜Ｗ７）。プレイヤが左足で体重を支えようと踏ん張った後、その反動によりプレイヤの足（より具体的には左足）には、鉛直上向きの力が加わる。この鉛直上向きの力によって、プレイヤの体に鉛直上向きの加速度が生じるため、荷重コントローラ３６が検出する荷重値は、減少する（Ｗ７〜Ｗ１２）。そして、予備動作が終了すると、プレイヤが右方向に腰を振るために加えた力によって、プレイヤの腰が台３６ａの中心Ｏ'よりも右方向に移動を開始する。プレイヤの腰が右方向に移動すると、重心位置は原点Ｏよりも右方向に移動する（Ｐ１２以降）。すると、右足にプレイヤの体重がかかるようになり、プレイヤはバランスを保つため、右足で体重を支えようとして強く踏ん張る。この踏ん張る力に応じて、荷重コントローラ３６には鉛直下向きの力が加わり、荷重コントローラ３６が検出する荷重値は、増加する（Ｗ１２〜Ｗ２０）。このときの荷重値の増加の割合は、上記予備動作における荷重の増加の割合よりも大きくなる。これは、予備動作においては、プレイヤが、左方向に移動した体重を支えるために左足に無意識的に力を加えるのに対して、腰の振り方向（右方向）へは意識的に体重を移動させるためである。プレイヤは意識的に体重を移動させると、バランスを保とうとしてより強く右足を踏ん張らせようとする。
【０１０６】
以上のように、プレイヤが腰を振る動作を行うと、重心位置及び荷重値が変化する。本実施形態では、重心位置の変化と荷重値の変化とに基づいて、プレイヤがどの方向に腰を振ったかを判定する。具体的には、所定期間（所定フレーム時間）における荷重値の変化量が、所定の閾値以上か否かを判定する（荷重判定を行う）。当該変化量が閾値以上であった時点における重心位置の移動方向をプレイヤが腰を振った方向として定める。例えば、図９Ｂに示す荷重値の変化を検出した場合、１フレーム時間から７フレーム時間までの間（Ｗ１〜Ｗ７）の荷重値の変化量は、上記閾値未満であるため、荷重判定の判定結果は否定である。従って、この期間における重心位置の移動方向は、腰振り判定には用いられない（この期間ではプレイヤが腰を振ったと判定されない）。一方、１３フレーム時間から２０フレーム時間までの間（Ｗ１３〜Ｗ２０）の変化量は、上記閾値以上であるため、荷重判定の判定結果は肯定となる。従って、この期間に検出される重心位置の移動方向を、プレイヤが腰を振った方向として算出する（この期間の重心位置の移動方向にプレイヤが腰を振ったと判定される）。
【０１０７】
図１０は、重心位置の移動方向に基づいたプレイヤの腰振り方向の算出方法を示した図である。図１０において、点Ｐｉはｉフレーム時間における重心位置を示し、点Ｐｉ＋１はｉ＋１フレーム時間における重心位置を示す。図１０に示すように、ｉフレーム時間における重心位置の移動方向は、重心位置Ｐｉを始点、重心位置Ｐｉ＋１を終点とするベクトルＶに基づいて定められる。具体的には、重心位置の移動方向は、当該ベクトルＶとＹ軸とがなす角度θに基づいて算出される。例えば、角度θが−３０度〜３０度の範囲の場合、重心位置の移動方向を「前方向」とし、角度θが３０度〜１５０度の範囲の場合、重心位置の移動方向を「右方向」とする。また、角度θが−１５０度〜−３０度の範囲の場合、重心位置の移動方向を「左方向」とし、角度θが−１８０度〜−１５０度、及び、１５０度〜１８０度の範囲の場合、重心位置の移動方向を「後方向」とする。そして、算出した重心位置の移動方向が、プレイヤが腰を振った方向として定められる。
【０１０８】
次に、第２の腰振り判定（重心位置による腰振り判定）について、説明する。プレイヤが比較的ゆっくりと腰を振ると、プレイヤが腰を振ったにも拘らず、上記荷重判定の判定結果は常に否定となる。従って、第１の腰振り判定の判定結果は常に否定となる。すなわち、プレイヤが比較的ゆっくりと腰を振ると、荷重値の変化が小さくなる。これは、プレイヤがゆっくりと腰を振ると、上述したような重心位置の変化は急激には起こらず、プレイヤは足を踏ん張らせなくてもバランスを保つことができるためである。例えば、プレイヤがゆっくりと右に腰を振ることに応じて、プレイヤの重心位置（体重）もゆっくりと右方向に移動する。重心位置が右方向に移動すると、プレイヤはその移動に伴ってバランスを保とうとして、右足により体重をかける。重心位置の移動速度が遅い場合、プレイヤは右足にゆっくりと体重を移動させる。すると、上述したように右足を強く踏ん張らせることがないため、荷重コントローラ３６には大きな荷重がかからない。つまり、プレイヤがゆっくりと右に腰を振ると、荷重センサ３６４ａ及び３６４ｂが検出する荷重値は増加するが、その増加分だけ荷重センサ３６４ｃ及び３６４ｄが検出する荷重値は減少する。このため、各荷重センサ３６４ａ〜３６４ｄが検出する荷重値の合計は、殆ど変化しない。
【０１０９】
従って、本実施形態では、第２の腰振り判定において、上記荷重判定の判定結果が否定である場合でも、重心位置が所定の位置にある場合、ゲーム装置１２は、プレイヤが腰を振ったと判定する。具体的には、本実施形態では、まず、検出された重心位置に基づいて、プレイヤによる腰の振り方向が判定される。図１１は、重心位置による振り方向を示した図である。図１１に示すように、ＸＹ座標系（台３６ａ上）には領域１３１と領域１３２と領域１３３と領域１３４とが予め設定される。また、ＸＹ座標系の斜め方向には、領域１４１と領域１４２と領域１４３と領域１３４とが設定される。重心位置が、領域１３１に存在する場合、プレイヤの腰振り方向を「前方向」とし、領域１３２に存在する場合、プレイヤの腰振り方向を「右方向」とし、領域１３３に存在する場合、プレイヤの腰振り方向を「後方向」とし、領域１３４に存在する場合、プレイヤの腰振り方向を「左方向」とする。以下では、上記領域１３１を前方向領域、領域１３２を右方向領域、領域１３３を後方向領域、領域１３４を左方向領域と呼ぶ。
【０１１０】
そして、検出した重心位置の原点Ｏからの移動量が所定の閾値以上の場合、上記のようにして定められた腰振り方向にプレイヤが腰を振ったと判定される。具体的には、重心位置が領域１３１〜領域１３４の何れか１つの領域に存在する場合において、重心の座標値の絶対値が所定の閾値以上の場合、プレイヤは、当該重心位置が存在する領域が示す方向に腰を振ったと判定される。例えば、重心位置が領域１３１に存在する場合において、重心のＹ座標値が所定の閾値（例えば、０．７）以上の場合、プレイヤは、前方向に腰を振ったと判定される。また、重心位置が領域１３２に存在する場合において、重心のＸ座標値が所定の閾値（例えば、０．６）以上の場合、プレイヤは、前方向に腰を振ったと判定される。同様に、重心位置が領域１３３に存在する場合において、重心のＹ座標値が所定の閾値（例えば、−０．７）以下の場合、プレイヤは、後方向に腰を振ったと判定される。また、重心位置が領域１３４に存在する場合において、重心のＸ座標値が所定の閾値（例えば、−０．６）以下の場合、プレイヤは、左方向に腰を振ったと判定される。
【０１１１】
一方、台３６ａには、領域１４１〜領域１４４が設けられる。図１１に示すように、各領域１４１〜１４４は、台３６ａ上の中心Ｏ’から斜め方向に伸びる２本の直線と台３６ａの外縁とによって囲まれる領域であり、予め定められる。検出した重心位置が領域１４１〜領域１４４に存在する場合、プレイヤの腰振り方向は定められず、プレイヤは腰を振っていないと判定される。これは、これらの領域に重心位置が存在する場合、プレイヤの腰振り方向を明確に定められないためである。例えば、領域１３１と領域１３２との間に重心位置が存在する場合、腰振り判定を行わない領域１４１が存在しないと、プレイヤの僅かな動きによる重心位置の変化に応じて、腰振り方向が変化してしまう。すなわち、領域１４１が存在しないと、プレイヤの僅かな動きによって、腰振り方向の判定結果が前方向又は右方向で切り替わってしまう。従って、領域１３１〜領域１３４の境界に、領域１４１〜領域１４４を設けることにより、このような切り替わりを防止することができる。
【０１１２】
なお、プレイヤが腰を振ったと判定されない領域を「無効領域」と呼ぶ。すなわち、無効領域は、上記領域１４１〜領域１４４の領域、又は、Ｘ軸座標値及びＹ軸座標値の絶対値が所定の閾値未満である領域（原点Ｏを中心とした長辺が１．４、短辺が１．２の長方形の領域）である。逆に、領域１３１〜領域１３４において、プレイヤが腰を振ったと判定される領域を「有効領域」と呼ぶ。すなわち、Ｙ軸座標値が所定の閾値（０．７）以上である領域（Ｙ＝０．７の直線よりも上側の領域）と、領域１３１との重複領域を「前方向有効領域」、Ｙ軸座標値が所定の閾値（−０．７）以下である領域（Ｙ＝−０．７の直線よりも下側の領域）と、領域１３３との重複領域を「後方向有効領域」と呼ぶ。同様に、Ｘ軸座標値が所定の閾値（０．６）以上である領域（Ｘ＝０．６の直線よりも右側の領域）と、領域１３２との重複領域を「右方向有効領域」、Ｘ軸座標値が所定の閾値（−０．６）以下である領域（Ｘ＝−０．６の直線よりも左側の領域）と、領域１３４との重複領域を「左方向有効領域」と呼ぶ。
【０１１３】
［ゲーム処理の詳細］
次に、図１２〜図１６を参照してゲーム装置１２において実行されるゲーム処理の詳細について説明する。まず、ゲーム装置１２における処理において用いられる主なデータについて図１２を用いて説明する。図１２は、ゲーム装置１２のメインメモリ（外部メインメモリ４６又は内部メインメモリ４２ｅ）に記憶される主なデータを示す図である。
【０１１４】
図１２に示されるように、ゲーム装置１２のメインメモリのデータ記憶領域５００には、荷重値データ５０２、重心位置データ５０４、振り方向データ５０６、重心移動フラグデータ５０８、荷重増加フラグデータ５１０、及び、前回振り方向データ５１２が記憶される。なお、メインメモリには、図１２に示すデータの他、ゲームに登場する各種オブジェクト（プレイヤオブジェクト１２０や選択オブジェクト１２１〜１２３、問題表示領域１２４を示すオブジェクト）の画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。また、メインメモリのプログラム領域には、ゲーム処理を実行するゲームプログラムが記憶される。また、荷重コントローラ３６からゲーム装置１２に、例えば１／２００秒毎に、操作データ（各荷重センサ３６４ａ〜ｄが検出する荷重値を示すデータ）が送信されるため、ゲーム装置１２（ＣＰＵ４０）は、メインメモリに設けられたバッファ領域にこれらの操作データを一時的に格納する。
【０１１５】
荷重値データ５０２は、荷重コントローラ３６が検出した荷重値を示すデータの集合である。すなわち、荷重コントローラ３６の各荷重センサ３６４ａ〜３６４ｄが検出した荷重値の合計値を示すデータの集合である。具体的には、荷重値データ５０２は、配列であり、配列の各要素には上記合計荷重値を示すデータが時系列に格納される。
【０１１６】
重心位置データ５０４は、各荷重センサ３６４ａ〜３６４ｄの荷重値から上記式１及び２によって算出される重心位置を示すデータの集合である。具体的には、重心位置データ５０４は、配列であり、配列の各要素には重心位置を示すデータが時系列に格納される。
【０１１７】
振り方向データ５０６は、プレイヤが腰を振った方向を示すデータであり、腰の振り方向の判定結果を格納するためのデータである。振り方向データ５０６は、例えば、１から４までの数値で表される。
【０１１８】
重心移動フラグデータ５０８は、重心移動フラグの値を示す。重心移動フラグは、重心の移動が所定の条件を満たしているか否かを示す。
【０１１９】
荷重増加フラグデータ５１０は、荷重増加フラグの値を示す。荷重増加フラグは、荷重コントローラ３６が検出する荷重値が増加傾向であるか否かを示す。
【０１２０】
前回振り方向データ５１２は、前回の腰振り判定において判定されたプレイヤの腰振り方向を示すデータである。本実施形態に係るゲームでは、繰り返し腰振り判定が行われるので、前回振り方向データ５１２には、前回腰振り判定時に判定された腰振り方向を示す値（例えば、１〜４までの値）が記憶される。また、前回振り方向データ５１２には、前回の腰振り方向がクリアされたことを示す値（例えば、０）が記憶される場合もある。
【０１２１】
次に、図１３を参照して、ゲーム装置１２によって実行されるゲーム処理について説明する。図１３は、ゲーム装置１２において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置１２の電源が投入されると、ゲーム装置１２のＣＰＵ４０は、ＲＯＭ／ＲＴＣ４８に記憶されている起動プログラムを実行し、これによって外部メインメモリ４６等の各ユニットが初期化される。次に、光ディスク１８に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ４０によって当該ゲームプログラムの実行が開始される。そして、ＣＰＵ４０は、初期設定を行う。初期設定では、ＣＰＵ４０は、プレイヤに荷重コントローラ３６の上の乗るように促す文字列をモニタ３４に表示し、プレイヤの上記基準体重、及び、重心位置の補正値（上記式１及び式２の初期のＸ座標値及び初期のＹ座標値）を算出する。また、初期設定では、ゲーム空間にプレイヤオブジェクト１２０や選択オブジェクト１２１〜１２３等を配置する。図１３に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図１３では、本発明に直接関連しないゲーム処理については記載を省略する。また、図１３に示すステップＳ１〜ステップＳ１０の処理ループは、１フレーム（例えば１／６０秒。上記フレーム時間）毎に繰り返し実行される。
【０１２２】
まず、ステップＳ１において、ＣＰＵ４０は、既に腰振り判定がなされているか否かを判定する。ここでは、後述するステップＳ２〜ステップＳ８の処理によって既に腰振り判定が成立している否かが判定される。既に腰振り判定が成立している場合、後述するステップＳ９において、腰振り判定後の処理が行われる。すなわち、既に腰振り判定が成立していると、後述するステップＳ９において、プレイヤキャラクタ１２０が腰を振る様子が表示されたり、問題に正解したか否かの判定結果が表示されたりする。そして、ステップＳ９において腰振り判定後の処理が終了すると、ステップＳ１の判定結果は否定となり再びステップＳ２〜ステップＳ８の処理が実行される（新たな腰振り判定が行われる）。具体的には、ステップＳ１において、ＣＰＵ４０は、メインメモリに記憶された腰振り判定フラグ（後述するＳ８）を参照して、腰振り判定フラグがＯＮか否かを判定する。判定結果が否定の場合、腰振り判定を行うため、ＣＰＵ４０は、次にステップＳ２の処理を行う。一方、判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ９の処理を行う。
【０１２３】
ステップＳ２において、ＣＰＵ４０は、荷重コントローラ３６の検出値から荷重値及び重心位置を算出する。具体的には、ＣＰＵ４０は、メインメモリのバッファ領域を参照して、各荷重センサ３６４ａ〜３６４ｄが検出した荷重値の合計値を算出する。次に、ＣＰＵ４０は、算出した合計値（荷重コントローラ３６が検出した荷重値）を荷重値データ５０２として、メインメモリに記憶する。また、ＣＰＵ４０は、各荷重センサ３６４ａ〜３６４ｄが検出した荷重値を、上記式１及び式２に代入することにより、重心位置を算出する。そして、ＣＰＵ４０は、算出した重心位置を重心位置データ５０４として、メインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ３の処理を実行する。
【０１２４】
ステップＳ３において、ＣＰＵ４０は、重心移動の判定処理を行う。ステップＳ３及びステップＳ４の処理は、上記第１の腰振り判定に関する処理である。ステップＳ３では、重心位置の移動が所定の条件を満たすか否かの判定である。ステップＳ３における重心移動の判定処理の詳細を、図１４を用いて説明する。図１４は、重心移動の判定処理（Ｓ３）の詳細を示すフローチャートである。
【０１２５】
まず、ステップＳ１１において、ＣＰＵ４０は、重心移動フラグをＯＦＦに設定する。具体的には、ＣＰＵ４０は、重心移動フラグをＯＦＦに設定して、重心移動フラグデータ５０８として、メインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ１２の処理を実行する。
【０１２６】
ステップＳ１２において、ＣＰＵ４０は、重心位置の移動方向を算出する。具体的には、ＣＰＵ４０は、重心位置データ５０４を参照して、最新の重心位置と前回の重心位置とを取得する。最新の重心位置とは、今回のループ処理におけるステップＳ２で算出された重心位置である。前回の重心位置とは、前回のループ処理におけるステップＳ２で算出された重心位置である。次に、ＣＰＵ４０は、取得した前回の重心位置から最新の重心位置に向かうベクトルＶ（図１０参照）を算出する。そして、ＣＰＵ４０は、算出したベクトルＶとＹ軸正方向の単位ベクトルとがなす角度θを算出する。ＣＰＵ４０は、算出した角度θの値に応じて、重心位置の移動方向を算出する。すなわち、上述したように、ＣＰＵ４０は、角度θの値に応じて「前方向」、「右方向」、「後方向」、及び、「左方向」のうち何れかの方向を決定する。次に、ＣＰＵ４０は、ステップＳ１３の処理を実行する。
【０１２７】
ステップＳ１３において、ＣＰＵ４０は、「振り方向」にステップＳ１２で算出した重心位置の移動方向を設定する。例えば、ＣＰＵ４０は、ステップＳ１２で算出した重心位置の移動方向が「前方向」の場合、振り方向データ５０６に前方向であることを示す値（例えば、１）を設定して、メインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ１４の処理を実行する。
【０１２８】
ステップＳ１４において、ＣＰＵ４０は、重心位置が閾値以上か否かを判定する。ステップＳ１４の処理では、現在の（最新の）重心位置が、原点Ｏから所定以上離れているかを判定する処理である。現在の重心位置が、原点Ｏを中心とする所定の領域に存在する場合、プレイヤが腰を振ったと判定されない。具体的には、ＣＰＵ４０は、重心位置データ５０４を参照して、現在の重心位置を取得する。ＣＰＵ４０は、ステップＳ１２で算出した重心位置の移動方向が「右方向」又は「左方向」の場合、取得した重心のＸ座標値の絶対値が所定の閾値（例えば、０．２）以上であるか否かを判定する。また、ＣＰＵ４０は、ステップＳ１２で算出した重心位置の移動方向が「前方向」又は「後方向」の場合、取得した重心のＹ座標値の絶対値が所定の閾値（例えば、０．４）以上であるか否かを判定する。判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ１５の処理を実行する。一方、判定結果が否定の場合、ＣＰＵ４０は、図１４に示す重心移動の判定処理を終了する。
【０１２９】
ステップＳ１５において、ＣＰＵ４０は、重心位置の移動速度が所定値以上か否かを判定する。具体的には、ＣＰＵ４０は、重心位置データ５０４を参照して、現時点での重心位置の移動速度（スカラー）を算出し、算出した移動速度の大きさが所定値以上か否かを判定する。より具体的には、ＣＰＵ４０は、重心位置データ５０４を参照して、最新の重心位置と前回の重心位置との距離を算出する。次に、ＣＰＵ４０は、算出した距離をフレーム時間（例えば１／６０秒）で除することにより、現時点での重心位置の移動速度を算出する。そして、ＣＰＵ４０は、算出した移動速度の大きさが、所定値以上か否かを判定する。なお、上記所定値は、重心位置の移動方向が縦方向（「前方向」又は「後方向」）である場合と、重心位置の移動方向が横方向（「右方向」又は「左方向」）である場合とで異なる値であってもよい。例えば、重心位置の移動方向が後方向の場合の閾値を最も大きくし、前方向の場合の閾値を最も小さくしてもよい。一般的に、プレイヤは、前方向よりも後方向の方が腰を振りやすい。また、プレイヤは前方向よりも左右方向の方が腰を振りやすい。従って、プレイヤが腰を振りやすい方向の閾値は高く、振りにくい方向の閾値は低く設定してもよい。判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ１６の処理を実行する。一方、判定結果が否定の場合、ＣＰＵ４０は、図１４に示す重心移動の判定処理を終了する。
【０１３０】
ステップＳ１６において、ＣＰＵ４０は、重心移動フラグをＯＮに設定する。具体的には、ＣＰＵ４０は、重心移動フラグをＯＮに設定し、重心移動フラグデータ５０８としてメインメモリに記憶する。次に、ＣＰＵ４０は、図１４に示す重心移動の判定処理を終了する。
【０１３１】
上記のようにステップＳ１４において、重心位置が閾値以上か否かを判定し、ステップＳ１５において、重心位置の移動速度が所定値以上か否かを判定することにより、第１の腰振り判定をより正確に行うことができる。すなわち、例えば、プレイヤが意識的に右に腰を振ると重心位置は右方向に移動し、原点Ｏよりも所定以上右側に位置する。また、プレイヤが意識的に右に腰を振ると重心位置は右方向に移動し、その時の移動速度は所定値以上になる。逆に、プレイヤが意識的に腰を振らず直立状態の場合でも、重心位置は原点Ｏ付近で常に変化する。従って、重心位置及び重心位置の移動速度に閾値を設定することによって、プレイヤによる意識的な腰振り動作をより正確に判定することができる。
【０１３２】
図１３に戻り、ＣＰＵ４０は、次にステップＳ４の処理を実行する。ステップＳ４において、ＣＰＵ４０は、荷重値変化の判定処理を行う。ステップＳ４の処理は、荷重コントローラ３６が検出した荷重値が増加しているか否かを判定する処理である。ステップＳ４における荷重値変化の判定処理の詳細を、図１５を用いて説明する。図１５は、荷重値変化の判定処理（Ｓ４）の詳細を示すフローチャートである。
【０１３３】
ステップＳ２１において、ＣＰＵ４０は、荷重増加フラグをＯＦＦに設定する。具体的には、ＣＰＵ４０は、荷重増加フラグをＯＦＦに設定して、荷重増加フラグデータ５１０としてメインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ２２の処理を実行する。
【０１３４】
ステップＳ２２において、ＣＰＵ４０は、荷重値の増加量が閾値以上か否かを判定する。ステップＳ２２の処理では、荷重コントローラ３６が検出した荷重値が増加傾向であり、かつ、その割合が所定の割合以上であるか否かを判定する処理である。具体的には、ＣＰＵ４０は、荷重値データ５０２を参照して、最新の荷重値と所定フレーム時間前（例えば、４フレーム時間前）の荷重値とを取得する。そして、ＣＰＵ４０は、最新の荷重値から所定フレーム時間前の荷重値を引いた値が、予め定められた閾値以上か否かを判定する。判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ２３の処理を実行する。一方、判定結果が否定の場合、ＣＰＵ４０は、図１５に示す荷重値変化の判定処理を終了する。
【０１３５】
ステップＳ２３において、ＣＰＵ４０は、荷重増加フラグをＯＮに設定する。ステップＳ２３では、ステップＳ２２で荷重値が所定の割合以上で増加していると判定されたため、荷重値の増加傾向を示す荷重増加フラグをＯＮにする。具体的には、ＣＰＵ４０は、荷重増加フラグをＯＮに設定し、荷重増加フラグデータ５１０として、メインメモリに記憶する。次に、ＣＰＵ４０は、図１５に示す荷重値変化の判定処理を終了する。
【０１３６】
図１３に戻り、ＣＰＵ４０は、次にステップＳ５の処理を実行する。ステップＳ５において、ＣＰＵ４０は、重心位置による腰振り判定処理を行う。ステップＳ５の処理は、現在の重心位置のみに基づいて、プレイヤによる腰の振り方向、及び、プレイヤが腰を振ったか否かを判定する処理であり、上記第２の腰振り判定処理である。ステップＳ５における重心位置による腰振り判定処理の詳細を、図１６を用いて説明する。図１６は、重心位置による腰振り判定処理（Ｓ５）の詳細を示すフローチャートである。
【０１３７】
ステップＳ３１において、ＣＰＵ４０は、現在の重心位置が領域１３１〜領域１３４の何れかの領域に存在するか否かを判定する。具体的には、ＣＰＵ４０は、重心位置データ５０４を参照して、最新の重心位置を取得する。そして、ＣＰＵ４０は、取得した重心位置が、図１１に示す領域１３１〜領域１３４の何れかに存在するか否かを判定する。判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ３２の処理を実行する。判定結果が否定の場合、ＣＰＵ４０は、次にステップＳ３６の処理を実行する。
【０１３８】
ステップＳ３２において、ＣＰＵ４０は、重心位置が存在する領域に基づいて腰の振り方向を決定する。具体的には、ＣＰＵ４０は、重心位置データ５０４を参照して、最新の重心位置を取得する。ＣＰＵ４０は、取得した最新の重心位置が図１１に示す領域１３１〜１３４のうちどの領域に存在するかを判定する。例えば、ＣＰＵ４０は、取得した最新の重心位置が領域１３１（前方向領域）に存在する場合、腰の振り方向は「前方向」であると決定する。また、ＣＰＵ４０は、取得した最新の重心位置が領域１３２（右方向領域）に存在する場合、腰の振り方向は「右方向」であると決定する。同様に、ＣＰＵ４０は、取得した最新の重心位置が領域１３３（後方向領域）に存在する場合、腰の振り方向は「後方向」であると決定する。また、ＣＰＵ４０は、取得した最新の重心位置が領域１３４（左方向領域）に存在する場合、腰の振り方向は「左方向」であると決定する。そして、ＣＰＵ４０は、決定した腰の振り方向を振り方向データ５０６として、メインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ３３の処理を実行する。
【０１３９】
ステップＳ３３において、ＣＰＵ４０は、重心位置が閾値以上か否かを判定する。ステップＳ３３の処理は、ステップＳ１４の処理と同様の処理であるが、閾値が異なる。具体的には、ＣＰＵ４０は、重心位置データ５０４を参照して、現在の（最新の）重心位置を取得する。ＣＰＵ４０は、ステップＳ３２で決定した腰の振り方向が横方向（「右方向」又は「左方向」）の場合、取得した重心のＸ座標値の絶対値が所定の閾値（例えば、０．６）以上であるか否かを判定する。また、ＣＰＵ４０は、ステップＳ３２で決定した腰の振り方向が縦方向（「前方向」又は「後方向」）の場合、取得した重心のＹ座標値の絶対値が所定の閾値（例えば、０．７）以上であるか否かを判定する。判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ３４の処理を実行する。一方、判定結果が否定の場合、ＣＰＵ４０は、次にステップＳ３６の処理を実行する。
【０１４０】
ステップＳ３４において、ＣＰＵ４０は、今回の腰振り判定での振り方向が前回の腰振り判定時の振り方向と異なるか否かを判定する。ここでは、連続して同じ方向に腰振り判定がされることを防止するための処理である。例えば、前回の腰振り判定において振り方向が右方向と判定された場合、前回腰振り判定時から今回腰振り判定時までの間、重心位置が右方向領域（領域１３２）に存在している場合は、腰振り判定が成立したと判定されない。すなわち、プレイヤが前回の腰振り動作（選択オブジェクトを選択するために腰を振る動作）で右に腰を振ってから、今回の腰振り判定まで右側に体重を移動させたままにしている場合は、プレイヤは意識的に腰を振っていないため、腰振り判定は不成立と見なす。これにより、プレイヤの意図しない腰振り判定を防止することができる。具体的には、ステップＳ３４において、ＣＰＵ４０は、振り方向データ５０６及び前回振り方向データ５１２を参照して、今回の振り方向が前回の振り方向と異なるか否かを判定する。判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ３５の処理を実行する。判定結果が否定の場合、ＣＰＵ４０は、次にステップＳ３６の処理を実行する。
【０１４１】
ステップＳ３５において、ＣＰＵ４０は、重心位置による腰振り判定が成立したと判定する。具体的には、ＣＰＵ４０は、重心位置による腰振り判定が成立したことを示すデータをメインメモリに記憶する。ステップＳ３５の後、ＣＰＵ４０は、重心位置による腰振り判定処理を終了する。
【０１４２】
一方、ステップＳ３６において、ＣＰＵ４０は、前回振り方向データをクリアする。ここでは、前回の腰振り判定における振り方向を上記４つの方向（前方向、後方向、右方向、左方向）の何れでもない方向に設定する処理である。上述のように、ステップＳ３４では、前回判定時の振り方向が今回の振り方向と異なるか否かが判定され、今回の振り方向が異なる場合のみ、腰振り判定が成立となる（ステップＳ３５）。しかしながら、プレイヤが前回と今回とで意識的に同じ方向に腰を振った場合は、今回の腰振り判定においても腰振り判定を成立させる必要がある。重心位置がステップＳ３３の閾値未満の位置に移動している場合は、プレイヤは、前回の腰振り判定時から今回の腰振り判定時までの間、腰を元の位置に戻していると考えられる。例えば、プレイヤが２回連続で右方向に腰を振る場合、プレイヤは右方向に腰を振って（１回目の腰振り動作）元に戻した後、再び右方向に腰を振る（１回目の腰振り動作）。この場合、１回目の腰振り動作で重心位置は右方向領域（領域１３２）に移動した後、原点Ｏ付近に移動する。さらに、２回目の腰振り動作でも重心位置は右方向領域に移動した後、原点付近に移動する。すなわち、プレイヤが２回連続で同じ方向に腰を振る場合、１回目の腰振り動作から２回目の腰振り動作までの間、重心位置は原点Ｏ付近の位置を通過する。従って、前回の振り方向データをクリアすることにより、ステップＳ３４において、連続して同じ方向にプレイヤが意識的に腰を振ったことを判定することができる。
【０１４３】
具体的には、ステップＳ３６において、ＣＰＵ４０は、上記４つの方向の何れでもない方向を示す値（例えば、０）を前回振り方向データ５１２として、メインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ３７の処理を実行する。
【０１４４】
ステップＳ３７において、ＣＰＵ４０は、重心位置による腰振り判定が不成立であると判定する。具体的には、ＣＰＵ４０は、重心位置による腰振り判定が不成立であることを示すデータをメインメモリに記憶する。ステップＳ３７の後、ＣＰＵ４０は、重心位置による腰振り判定処理を終了する。
【０１４５】
上記のように、ステップＳ３３において、重心位置が閾値以上か否かを判定し、判定結果が肯定の場合のみ、重心位置による腰振り判定が成立する。すなわち、重心位置が、上記有効領域（前方向有効領域、後方向有効領域、右方向有効領域、左方向有効領域）に存在する場合のみ、重心位置による腰振り判定が成立する。一方、重心位置が上記無効領域（原点Ｏを中心とした矩形状の領域）に存在する場合、重心位置による腰振り判定は成立しない。
【０１４６】
このように、無効領域を設けることにより、プレイヤの意識的な腰振り動作をより正確に判定することができる。すなわち、プレイヤが意識的に腰を振ると重心位置は大きく移動するが、プレイヤが意識的に腰を振らず直立状態の場合でも、重心位置は原点Ｏ付近で常に変化する。上記のように、無効領域は、原点Ｏを中心とした矩形状となっているため、原点Ｏ付近に重心位置が存在する場合は、腰振り判定は成立しない。従って、重心位置に閾値を設定することによって、プレイヤによる意識的な腰振り動作をより正確に判定することができる。
【０１４７】
また、ステップＳ３３での重心位置の閾値をステップＳ１４での閾値よりも大きくすることで、より正確にプレイヤの腰振り判定を行うことができる。すなわち、第１の腰振り判定では、荷重値の変化が閾値以上か否かを判定しているが（ステップＳ２２）、第２の腰振り判定では、重心位置のみに基づいて判定を行っている。従って、ステップＳ３３の閾値とステップＳ１４の閾値を同じにして重心位置のみで腰振り判定を行うと、プレイヤが意識的に腰を振っていないにも拘らず、腰を振ったと判定される可能性がある。従って、重心位置による腰振り判定（第２の腰振り判定）では、より閾値を大きくすることでプレイヤによる意識的な腰振り動作を判定する。
【０１４８】
図１３に戻り、ＣＰＵ４０は、ステップＳ５の重心位置による腰振り判定処理の後、次にステップＳ６の処理を実行する。
【０１４９】
ステップＳ６において、ＣＰＵ４０は、ステップＳ５の重心位置による腰振り判定が成立したか否かを判定する。具体的には、ＣＰＵ４０は、メインメモリを参照して、重心位置による腰振り判定が成立したことを示すデータが記憶されているか否かを判定する。判定結果が否定の場合、ＣＰＵ４０は、次にステップＳ７の処理を実行する。判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ８の処理を実行する。
【０１５０】
ステップＳ７において、ＣＰＵ４０は、重心移動フラグがＯＮ、かつ、荷重増加フラグがＯＮであるか否かを判定する。すなわち、ステップＳ７では、ステップＳ５の重心位置による腰振り判定が不成立の場合でも、ステップＳ３及びＳ４において重心の移動と荷重の変化によって腰振り判定が成立したか否かが判定される。具体的には、ＣＰＵ４０は、メインメモリの重心移動フラグデータ５０８及び荷重増加フラグデータ５１０を参照して、これらのフラグが何れもＯＮであるか否かを判定する。判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ８の処理を実行する。判定結果が否定の場合、ＣＰＵ４０は、次にステップＳ９の処理を実行する。
【０１５１】
ステップＳ８において、ＣＰＵ４０は、腰振り判定フラグをＯＮにする。具体的には、ＣＰＵ４０は、メインメモリに記憶された腰振り判定フラグをＯＮにして、再びメインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ９の処理を実行する。
【０１５２】
ステップＳ９において、ＣＰＵ４０は、その他のゲーム処理を実行する。ステップＳ９では、ステップＳ２〜Ｓ８の腰振り判定結果に応じた処理が実行される。例えば、メインメモリに記憶された腰振り判定フラグがＯＮの場合（ステップＳ８で腰振り判定フラグがＯＮにされた場合やステップＳ１でＹｅｓの場合）、ＣＰＵ４０は、腰振り判定後の処理を実行する。具体的には、ＣＰＵ４０は、腰振り判定後の処理として、プレイヤキャラクタ１２０が振り方向データ５０６が示す振り方向に腰を振る様子を画面に表示したり、選択オブジェクト１２１〜１２３の何れかが選択されたことを示す表示を行ったりする。また、ＣＰＵ４０は、腰振り判定後の処理として、プレイヤが問題に正解したか否かを判定し、判定結果に応じた表示を行ったり、スコアを計算したりする。また、ＣＰＵ４０は、腰振り判定後の処理が終了した場合、メインメモリに記憶された腰振り判定フラグをＯＦＦにして、再びメインメモリに記憶する。さらにＣＰＵ４０は、腰振り判定後の処理が終了した場合、振り方向データ５０６に記憶された振り方向を前回振り方向データ５１２として記憶するとともに、各データ（荷重値データ５０２、重心位置データ５０４、及び、振り方向データ５０６）をクリア（初期化）する。一方、腰振り判定フラグがＯＦＦの場合、ＣＰＵ４０は、図７Ａに示すようにプレイヤキャラクタ１２０が静止又は上下方向に僅かに動作している様子や選択オブジェクト１２１〜１２３、背景の画像等を画面に表示する。次に、ＣＰＵ４０は、ステップＳ１０の処理を実行する。
【０１５３】
ステップＳ１０において、ＣＰＵ４０は、ゲーム終了か否かを判定し、肯定の場合、ゲーム処理を終了し、否定の場合、ステップＳ１に戻って、ゲーム処理を繰り返す。例えば、ＣＰＵ４０は、プレイヤによってゲーム処理の終了を示すコントローラ２２のボタン（入力手段２６）が押された場合、ゲーム処理を終了する。以上で、本実施形態に係るゲーム処理は終了する。
【０１５４】
なお、上述した処理において用いられた閾値や条件、あるいは、処理の順番等は、単なる例示に過ぎない。すなわち、上記閾値や条件は、適宜調整されてもよいし、上記処理の順番はどのような順番であってもよい。例えば、ステップＳ６とステップＳ７の順番を入れ替えてもよい。すなわち、ステップＳ５の後にステップＳ７の判定が行われ、判定結果が否定の場合にステップＳ６の判定が行われてもよい。これにより、荷重の増加量が閾値以上であり、かつ、重心が移動している場合、重心の移動方向に腰が振られたと判定され、荷重の増加量が閾値未満である場合は、重心位置による腰振り判定が行われる。すなわち、上記第１の腰振り判定の判定結果が肯定の場合（第１の腰振り判定で腰振り判定された場合）は、プレイヤが腰を振ったと判定し、第１の腰振り判定の判定結果が否定の場合は、第２の腰振り判定がされてもよい。
【０１５５】
以上のように、本実施形態では、所定時間あたりの荷重値の変化が閾値以上の場合（ステップＳ２２でＹｅｓ）、その時点の重心位置の移動方向（ステップＳ１２で算出される移動方向）に基づいて、プレイヤの腰振り動作を判定することができる。また、荷重値の変化が閾値未満であっても、重心位置に基づいて（ステップＳ３１及びステップＳ３３）、プレイヤの腰振り動作を判定することができる。すなわち、所定時間あたりの荷重値の変化が閾値以上の場合、プレイヤは所定の方向に素早く腰を振ったと判定することができる。また、プレイヤが所定の方向にゆっくりと腰を振った場合は、所定時間あたりの荷重値の変化が閾値未満となるが、そのような場合であっても重心位置に基づいてプレイヤが腰を振ったと判定することができる。
【０１５６】
なお、本実施形態では、所定時間あたりの荷重値の変化量が閾値以上の場合に、プレイヤが腰を振ったと判定された。他の実施形態では、荷重コントローラ３６が検出する荷重値が所定の閾値以上の場合、プレイヤが腰を振ったと判定されてもよい。例えば、図９Ｂに示すように、プレイヤの腰振り動作の上記予備動作では、荷重値の増加は比較的小さいが、実際の腰振り動作（Ｗ１２〜Ｗ２０）では、荷重値の増加は比較的大きい。従って、例えば、体重比率が１．２を超えた場合、プレイヤが腰を振ったと判定されてもよい。
【０１５７】
また、本実施形態では、所定時間あたりの荷重値の変化量が閾値以上であるときの重心位置の移動方向と、重心位置と、重心位置の移動速度とに基づいて、プレイヤの腰振り方向が判定された。すなわち、荷重値の変化量が閾値以上であっても、重心位置が閾値以上でない場合や、重心の移動速度が所定値以上でない場合は、プレイヤが腰を振ったと判定されなかった。他の実施形態では、所定時間あたりの荷重値の変化量が閾値以上であるときの重心位置の移動方向のみに基づいて、プレイヤが所定の方向に腰を振ったか否かが判定されてもよい。
【０１５８】
また、本実施形態では、プレイヤの腰振り方向を４つの方向として定めたが、他の実施形態では、任意の方向への腰振り判定を行ってもよい。
【０１５９】
また、本実施形態では、重心の移動速度が所定値以上である場合に、プレイヤが腰を振ったと判定された。他の実施形態では、重心の移動速度が所定値以下である場合に、プレイヤが所定の動作を行ったと判定されてもよい。また、重心の移動速度の変化量が所定の閾値以上（又は以下）である場合に、プレイヤが所定の動作を行ったと判定されてもよい。すなわち、他の実施形態では、重心の移動速度が所定の条件を満たしたか否かを判定し、判定結果が肯定の場合、プレイヤが所定の動作を行ったと判定されてもよい。
【０１６０】
また、本実施形態では、重心の座標値の絶対値が所定の閾値以上である場合に、プレイヤが所定の動作を行ったと判定された。他の実施形態では、重心の座標値の絶対値が所定の閾値未満である場合に、プレイヤが所定の動作を行ったと判定されてもよい。
【０１６１】
また、本実施形態では、荷重値の増加率（所定時間あたりの荷重値の増加量）に基づいてプレイヤの腰振り判定を行った。他の実施形態では、荷重値の減少率に基づいて、プレイヤの動作を判定してもよい。例えば、プレイヤが荷重コントローラ３６の上でジャンプする動作を行う場合、ジャンプするための予備動作として荷重コントローラ３６を蹴る動作を行うと、荷重コントローラ３６が検出する荷重値は上昇する。そして、実際にプレイヤがジャンプすると、荷重値は減少する。このような場合において、所定時間あたりの荷重値の減少量が所定の条件を満たした場合（荷重値の減少率の絶対値が所定値以上の場合）、プレイヤがジャンプしたと判定してもよい。さらに、その時点での重心位置や重心位置の移動方向に基づいて、どの方向にジャンプしたかを判定することができる。例えば、荷重値の減少率が所定の条件を満たした時の重心位置が、原点Ｏ付近である場合は、プレイヤは真上にジャンプしたと判定してもよい。また、例えば、荷重値の減少率が所定の条件を満たした時の重心位置が、原点Ｏよりも右側である場合は、プレイヤは右方向にジャンプしたと判定してもよい。
【０１６２】
また、例えば、プレイヤが荷重コントローラ３６の上でスキーのターンをする場合、当該ターンの動作を上述の方法により、判定することが可能である。例えば、スキーにおいて素早くターンする場合は、スキーヤーはターンする方向に応じて体重を移動させる。この動作を荷重コントローラ３６の上で行うと、荷重コントローラ３６が検出する重心位置は移動する。また、この場合において、荷重コントローラ３６が検出する荷重値は、上述した腰振り動作と同様に、増加したり減少したりする。従って、荷重値の増加率や減少率等が所定の閾値以上となった場合に、プレイヤがターンをしたと判定することができ、さらにその時の重心位置や重心位置の移動方向に基づいて、どの方向にプレイヤがターンしたかを判定することができる。すなわち、プレイヤがスキーのターンを行ったときの荷重値の変化及び重心位置の変化を解析することによって、プレイヤがターンを行ったか否かを判定することができる。
【０１６３】
また、他の実施形態では、プレイヤが所定の動作を行ったときの荷重値の変化のパターンを解析し、検出された荷重値の変化のパターンが予め定められたパターンと一致又は類似するか否かを判定してもよい。また、所定期間における荷重変化の極大値や極小値、あるいはそれらの組み合わせによるパターンが、所定の条件を満たすか否かを判定してもよい。そして、判定結果が肯定である場合の重心位置や重心位置が変化する方向等に基づいて、プレイヤが所定の動作を行ったか否かを判定してもよい。例えば、上述した腰振り動作では、図９Ｂに示すように、荷重値は、腰振り動作を開始後、比較的小さな極大値（Ｗ７）を示した後、極小値（Ｗ１２）を示し、再び増大する。このような荷重値の変化のパターンを検出することによって、プレイヤの動作を判定することが可能である。また、例えば、ジャンプ動作の場合は、荷重値は、非常に大きな極大値を示した後、急激に荷重値が減少し、再び急激に荷重値が増大すると考えられる。このようなパターンを検出した場合は、プレイヤはジャンプ動作をしていると推測され、そのときの重心位置や重心位置の移動方向を検出することにより、プレイヤがどの方向にジャンプしているかを判定することが可能である。
【０１６４】
また、他の実施形態では、プレイヤによる腰振り動作に限らず、様々な動作を判定してもよい。上述のように、プレイヤによるジャンプ動作（プレイヤが台３６ａに両足をつけたままジャンプするような動作を含む）、スキーのターンのように重心を素早く移動させるような動作を判定してもよい。また、例えば、プレイヤによる首振り動作、プレイヤによる腕振り動作、自転車をこぐように両足を交互に曲げたり伸ばしたりする動作等を判定してもよい。すなわち、プレイヤによる比較的素早い動作によって荷重が変化したり、重心位置が変化したりするような様々な動作を判定してもよい。そして、判定する動作に応じて上記処理において用いられた閾値や条件が変更されてもよい。例えば、サッカーのヘディングのようにプレイヤが首や上半身全体を素早く振ると、上述したように荷重値は変化すると考えられる。また、プレイヤが腕を素早く振ることによっても荷重値は変化すると考えられる。このような場合において、荷重値の変化に応じて重心位置は変化するため、判定する動作に応じた判定条件を予め定めることによって、プレイヤによる所定の動作を判定することが可能である。
【０１６５】
また、他の実施形態では、重心位置に基づいて、プレイヤが画面に表示されたキャラクタを移動させるようなゲームにも、適用可能である。すなわち、プレイヤが素早く体重移動させると、上述したように無意識的な予備動作が検出されるため、プレイヤが意図した方向にキャラクタを移動させることができない。しかしながら、上述したように荷重値の変化を検出することにより、予備動作による誤検知を防止することができる。
【０１６６】
以上のように、荷重値の極大値や極小値、荷重値の増加率や減少率が所定の閾値以上（又は以下）か否か、荷重値が所定の閾値以上（又は以下）か否か、荷重値の変化のパターンが所定のパターンと一致又は類似しているか否か等を判定してもよい。すなわち、荷重コントローラ３６が検出する荷重値又は荷重値の時間変化に関する荷重情報（当該荷重情報は、荷重値であってもよいし、荷重の変化率であってもよし、荷重値の変化のパターンであってもよい）が所定の条件を満たしたか否かを判定してもよい。そして、判定結果が肯定であるときの重心情報（重心位置が変化する方向や重心位置）に基づいて、プレイヤの動作を判定してもよい。
【０１６７】
また、本実施形態では、４つの荷重センサ３６４を備えた荷重コントローラ３６を用いて上記処理を行った。他の実施形態では、荷重センサは４つである必要はなく、３つであってもよいし、５つ以上であってもよい。また、４つの荷重センサ３６４は、荷重コントローラ３６の四隅に配置される必要はなく、どのように配置されてもよい。すなわち、荷重センサの数や配置はどのようなものでもよく、荷重センサの幾何学的な配置に固有の補正を行うことによって、重心位置を算出することができる。
【０１６８】
また、本実施形態では、各荷重センサ３６４からの検出値を示すデータがゲーム装置１２に送信されることとした。他の実施形態では、荷重コントローラ３６が、各荷重センサ３６４が検出する荷重の合計値と重心位置とを算出し、算出した合計値と重心位置とをゲーム装置１２に送信してもよい。すなわち、荷重コントローラ３６が算出した合計荷重値と重心位置とを含む信号をゲーム装置１２が受信し、ゲーム装置１２が受信した信号からこれらの情報を取得してもよい。
【０１６９】
また、本発明のゲームプログラムは、光ディスク１８等の外部記憶媒体を通じてゲーム装置１２に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置１２に供給されてもよい。また、携帯型のゲーム装置によって上記プログラムが実行されてもよい。また、ゲームプログラムは、ゲーム装置１２内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体（コンピュータ読み取り可能な記憶媒体）としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状の記憶媒体の他に、不揮発性半導体メモリでもよい。
【０１７０】
また、他の実施形態では、上述した動作の判定プログラムは、ゲーム装置以外の情報処理装置、例えば、所定の動作判定用の専用装置や荷重を測定可能な入力装置を備えるパーソナルコンピュータ等において実行されてもよい。
【０１７１】
また、本実施形態においては、ゲーム装置１２のＣＰＵ４０がゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置１２が備える専用回路によって行われてもよい。
【符号の説明】
【０１７２】
１０  ゲームシステム
１２  ゲーム装置
１８  光ディスク
２２  コントローラ
３４  モニタ
３４ａ  スピーカ
３６  荷重コントローラ
３６４  荷重センサ
４０  ＣＰＵ
４２  システムＬＳＩ
４２ａ  入出力プロセッサ
４２ｂ  ＧＰＵ
４２ｃ  ＤＳＰ
４２ｄ  ＶＲＡＭ
４２ｅ  内部メインメモリ
４４  フラッシュメモリ
４６  外部メインメモリ
４８  ＲＯＭ／ＲＴＣ
５２  無線コントローラモジュール
５４  ディスクドライブ
５６  ＡＶ  ＩＣ
５８  ＡＶコネクタ
６０  拡張コネクタ
７４  加速度センサ
１００  マイコン
１０２  ＡＤコンバータ
１０４  ＤＣ−ＤＣコンバータ
１０６  無線モジュール
１０８  増幅器
１２０  プレイヤオブジェクト
１２１、１２２、１２３  選択オブジェクト
１２４  問題表示領域
【図１】
2011070597.tif 000003
【図２】
2011070597.tif 000004
【図３】
2011070597.tif 000005
【図４】
2011070597.tif 000006
【図５】
2011070597.tif 000007
【図６】
2011070597.tif 000008
【図７Ａ】
2011070597.tif 000009
【図７Ｂ】
2011070597.tif 000010
【図８Ａ】
2011070597.tif 000011
【図８Ｂ】
2011070597.tif 000012
【図９Ａ】
2011070597.tif 000013
【図９Ｂ】
2011070597.tif 000014
【図１０】
2011070597.tif 000015
【図１１】
2011070597.tif 000016
【図１２】
2011070597.tif 000017
【図１３】
2011070597.tif 000018
【図１４】
2011070597.tif 000019
【図１５】
2011070597.tif 000020
【図１６】
2011070597.tif 000021
【手続補正書】
【提出日】平成21年12月1日(2009.12.1)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】変更
【補正の内容】
【００２２】
本発明では、上記重心情報取得手段は、上記入力装置からの信号に基づいて、上記重心位置に関する重心情報を取得してもよい。また、上記情報処理プログラムは、領域判定手段として上記コンピュータをさらに機能させてもよい。領域判定手段は、上記重心位置が上記入力装置に設けられた上記ユーザによって荷重が加えられる入力面の所定の位置に設定された所定の領域に存在するか否かを判定する。そして、上記動作判定手段は、上記荷重判定手段による判定結果が肯定であり、かつ、その時点での上記領域判定手段による判定結果が否定である場合、ユーザが所定の動作を行ったと判定する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１０９
【補正方法】変更
【補正の内容】
【０１０９】
従って、本実施形態では、第２の腰振り判定において、上記荷重判定の判定結果が否定である場合でも、重心位置が所定の位置にある場合、ゲーム装置１２は、プレイヤが腰を振ったと判定する。具体的には、本実施形態では、まず、検出された重心位置に基づいて、プレイヤによる腰の振り方向が判定される。図１１は、重心位置による振り方向を示した図である。図１１に示すように、ＸＹ座標系（台３６ａ上）には領域１３１と領域１３２と領域１３３と領域１３４とが予め設定される。また、ＸＹ座標系の斜め方向には、領域１４１と領域１４２と領域１４３と領域１４４とが設定される。重心位置が、領域１３１に存在する場合、プレイヤの腰振り方向を「前方向」とし、領域１３２に存在する場合、プレイヤの腰振り方向を「右方向」とし、領域１３３に存在する場合、プレイヤの腰振り方向を「後方向」とし、領域１３４に存在する場合、プレイヤの腰振り方向を「左方向」とする。以下では、上記領域１３１を前方向領域、領域１３２を右方向領域、領域１３３を後方向領域、領域１３４を左方向領域と呼ぶ。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１１０
【補正方法】変更
【補正の内容】
【０１１０】
そして、検出した重心位置の原点Ｏからの移動量が所定の閾値以上の場合、上記のようにして定められた腰振り方向にプレイヤが腰を振ったと判定される。具体的には、重心位置が領域１３１〜領域１３４の何れか１つの領域に存在する場合において、重心の座標値の絶対値が所定の閾値以上の場合、プレイヤは、当該重心位置が存在する領域が示す方向に腰を振ったと判定される。例えば、重心位置が領域１３１に存在する場合において、重心のＹ座標値が所定の閾値（例えば、０．７）以上の場合、プレイヤは、前方向に腰を振ったと判定される。また、重心位置が領域１３２に存在する場合において、重心のＸ座標値が所定の閾値（例えば、０．６）以上の場合、プレイヤは、右方向に腰を振ったと判定される。同様に、重心位置が領域１３３に存在する場合において、重心のＹ座標値が所定の閾値（例えば、−０．７）以下の場合、プレイヤは、後方向に腰を振ったと判定される。また、重心位置が領域１３４に存在する場合において、重心のＸ座標値が所定の閾値（例えば、−０．６）以下の場合、プレイヤは、左方向に腰を振ったと判定される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１１２
【補正方法】変更
【補正の内容】
【０１１２】
なお、プレイヤが腰を振ったと判定されない領域を「無効領域」と呼ぶ。すなわち、無効領域は、上記領域１４１〜領域１４４の領域、又は、Ｘ軸座標値及びＹ軸座標値の絶対値が所定の閾値未満である領域（原点Ｏを中心とした長辺が１．４、短辺が１．２の長方形の領域）である。逆に、領域１３１〜領域１３４において、プレイヤが腰を振ったと判定される領域を「有効領域」と呼ぶ。すなわち、Ｙ軸座標値が所定の閾値（０．７）以上である領域（Ｙ＝０．７の直線を含む上側の領域）と、領域１３１との重複領域を「前方向有効領域」、Ｙ軸座標値が所定の閾値（−０．７）以下である領域（Ｙ＝−０．７の直線を含む下側の領域）と、領域１３３との重複領域を「後方向有効領域」と呼ぶ。同様に、Ｘ軸座標値が所定の閾値（０．６）以上である領域（Ｘ＝０．６の直線を含む右側の領域）と、領域１３２との重複領域を「右方向有効領域」、Ｘ軸座標値が所定の閾値（−０．６）以下である領域（Ｘ＝−０．６の直線を含む左側の領域）と、領域１３４との重複領域を「左方向有効領域」と呼ぶ。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１４０
【補正方法】変更
【補正の内容】
【０１４０】
ステップＳ３４において、ＣＰＵ４０は、今回の腰振り判定での振り方向が前回の腰振り判定時の振り方向と異なるか否かを判定する。ここでは、連続して同じ方向に腰振り判定がされることを防止するための処理である。例えば、前回の腰振り判定において振り方向が右方向と判定された場合、前回腰振り判定時から今回腰振り判定時までの間、重心位置が右方向領域（領域１３２）に存在している場合は、腰振り判定が成立したと判定されない。すなわち、プレイヤが前回の腰振り動作（選択オブジェクトを選択するために腰を振る動作）で右に腰を振ってから、今回の腰振り判定まで右側に体重を移動させたままにしている場合は、プレイヤは意識的に腰を振っていないため、腰振り判定は不成立と見なす。これにより、プレイヤの意図しない腰振り判定を防止することができる。具体的には、ステップＳ３４において、ＣＰＵ４０は、振り方向データ５０６及び前回振り方向データ５１２を参照して、今回の振り方向が前回の振り方向と異なるか否かを判定する。判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ３５の処理を実行する。判定結果が否定の場合、ＣＰＵ４０は、次にステップＳ３７の処理を実行する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１４２
【補正方法】変更
【補正の内容】
【０１４２】
一方、ステップＳ３６において、ＣＰＵ４０は、前回振り方向データ５１２をクリアする。ここでは、前回の腰振り判定における振り方向を上記４つの方向（前方向、後方向、右方向、左方向）の何れでもない方向に設定する処理である。上述のように、ステップＳ３４では、前回判定時の振り方向が今回の振り方向と異なるか否かが判定され、今回の振り方向が異なる場合のみ、腰振り判定が成立となる（ステップＳ３５）。しかしながら、プレイヤが前回と今回とで意識的に同じ方向に腰を振った場合は、今回の腰振り判定においても腰振り判定を成立させる必要がある。重心位置がステップＳ３３の閾値未満の位置に移動している場合は、プレイヤは、前回の腰振り判定時から今回の腰振り判定時までの間、腰を元の位置に戻していると考えられる。例えば、プレイヤが２回連続で右方向に腰を振る場合、プレイヤは右方向に腰を振って（１回目の腰振り動作）元に戻した後、再び右方向に腰を振る（２回目の腰振り動作）。この場合、１回目の腰振り動作で重心位置は右方向領域（領域１３２）に移動した後、原点Ｏ付近に移動する。さらに、２回目の腰振り動作でも重心位置は右方向領域に移動した後、原点付近に移動する。すなわち、プレイヤが２回連続で同じ方向に腰を振る場合、１回目の腰振り動作から２回目の腰振り動作までの間、重心位置は原点Ｏ付近の位置を通過する。従って、前回の振り方向データをクリアすることにより、ステップＳ３４において、連続して同じ方向にプレイヤが意識的に腰を振ったことを判定することができる。