(57)【要約】【課題】角速度センサから取得される角速度データに基づいて実行されるゲームにおいて、ゲームの難易度を設定可能とすること。【解決手段】ステップＳ２５において、ＣＰＵ１０は、プレイヤがシュート操作を行ったときの入力装置８のＺ軸周りの角速度に基づいて、ひねり量Ｒを計算する。ステップＳ２９において、ＣＰＵ１０は、外部メインメモリ１２に記憶されている難易度の値に基づいて、成功下限ひねり量Ｒｍｉｎおよび成功上限ひねり量Ｒｍａｘを決定する。成功下限ひねり量Ｒｍｉｎおよび成功上限ひねり量Ｒｍａｘは、シュートを成功させるためのひねり量Ｒの成功範囲の下限および上限をそれぞれ示す変数である。その結果、難易度がより高くなるほど、ひねり量Ｒの成功範囲がより狭くなる。【選択図】図１６
2010252861.tif 000002
【特許請求の範囲】
【請求項１】
コントローラに設けられた角速度センサから取得される角速度データを含む操作データに基づいてゲーム処理を行うゲーム装置であって、
前記角速度データに基づいたゲームを実行するとともに、当該角速度データの値に基づいてゲームの成否を判定するゲーム処理手段と、
ゲームの難易度を設定する難易度設定手段と、
前記難易度設定手段によって設定された難易度に基づいて、前記ゲーム処理手段において成功と判定される角速度データの成功範囲を変更する難易度制御手段と、を備えるゲーム装置。
【請求項２】
前記難易度制御手段は、前記難易度設定手段によって設定される難易度がより高いほど、前記成功範囲をより狭くする、請求項１記載のゲーム装置。
【請求項３】
コントローラに設けられた角速度センサから取得される角速度データを含む操作データに基づいてゲーム処理を行うゲーム装置であって、
前記角速度データに基づいて仮想ゲーム空間における所定のオブジェクトを移動させるゲームを実行するゲーム処理手段と、
ゲームの難易度を設定する難易度設定手段と、
前記難易度設定手段によって設定された難易度に基づいて、前記ゲーム処理手段における前記オブジェクトの移動を補正する難易度制御手段と、を備えるゲーム装置。
【請求項４】
前記難易度制御手段は、前記ゲーム処理手段で利用される前記オブジェクトの移動制御パラメータを、ゲームにおいて要求される当該移動制御パラメータの目標値または目標範囲に近づけるように補正する、請求項３記載のゲーム装置。
【請求項５】
前記難易度制御手段は、前記難易度設定手段によって設定される難易度がより高いほど、前記移動制御パラメータを補正する度合いをより低くする、請求項３記載のゲーム装置。
【請求項６】
前記ゲーム処理手段は、前記角速度データが所定の条件を満たしたタイミングで、前記角速度データに基づいた前記オブジェクトの移動の制御を行う、請求項３記載のゲーム装置。
【請求項７】
前記ゲーム処理手段は、前記角速度データが示す角速度の大きさが極大となり、かつ当該角速度の極大値が所定の閾値より大きいときに、前記オブジェクトの移動を制御する、請求項６記載のゲーム装置。
【請求項８】
前記角速度センサから取得される角速度データを逐次記憶する角速度記憶手段をさらに備え、
前記ゲーム処理手段は、前記角速度データが示す角速度の大きさが極大となり、かつ当該角速度の極大値が所定の閾値より大きいときに、当該角速度が極大となる前の所定期間における角速度データを前記角速度記憶手段から読み出して当該角速度データに基づいて前記オブジェクトの移動方向を決定し、
前記難易度制御手段は、前記ゲーム処理手段によって決定される前記オブジェクトの移動方向を、前記難易度設定手段によって設定された難易度に応じた度合いで、ゲームにおいて要求される当該オブジェクトの目標移動方向に近づけるように補正する、請求項７記載のゲーム装置。
【請求項９】
前記ゲーム処理手段は、前記角速度データが示す角速度の大きさが極大となり、かつ当該角速度の極大値が所定の閾値より大きいときに、当該極大値に基づいて前記オブジェクトの移動速度および／または到達距離を決定し、
前記難易度制御手段は、前記ゲーム処理手段によって決定される前記オブジェクトの移動速度および／または到達距離を、前記難易度設定手段によって設定された難易度に応じた度合いで、ゲームにおいて要求される当該オブジェクトの目標移動速度および／または目標到達距離に近づけるように補正する、請求項７記載のゲーム装置。
【請求項１０】
前記難易度設定手段は、ゲームにおいて要求される当該オブジェクトの目標到達距離に応じてゲームの難易度を変化させる、請求項９記載のゲーム装置。
【請求項１１】
前記ゲーム処理手段は、前記角速度データに基づいたゲームを複数回実行し、当該複数回のゲームのそれぞれについてゲームの成否を判定し、
前記難易度設定手段は、各回のゲームの成否に応じて次の回のゲームの基準難易度を決定するとともに、ゲームにおいて要求される当該オブジェクトの目標到達距離に応じた難易度オフセットを前記基準難易度に加算することによって、次の回のゲームの難易度を決定する、請求項１０記載のゲーム装置。
【請求項１２】
前記ゲーム処理手段は、前記角速度データが示す角速度の大きさが極大となり、かつ当該加速度の極大値が所定の閾値より大きいときに、当該時点において前記角速度センサから取得される角速度データに基づいて検出される前記コントローラの姿勢に基づいて前記オブジェクトの移動方向を設定し、
前記難易度制御手段は、前記ゲーム処理手段によって決定される前記オブジェクトの移動方向を、前記難易度設定手段によって設定された難易度に応じた度合いで、ゲームにおいて要求される当該オブジェクトの目標移動方向に近づけるように補正する、請求項７記載のゲーム装置。
【請求項１３】
前記ゲーム処理手段は、前記角速度データに基づいたゲームを複数回実行し、当該複数回のゲームのそれぞれについてゲームの成否を判定し、
前記難易度設定手段は、或る回のゲームの結果が成功であると判定された場合に、当該回のゲームの難易度よりも上がるように、次の回のゲームの難易度を設定する、請求項１、３、８、９および１２のいずれかに記載のゲーム装置。
【請求項１４】
前記ゲーム処理手段は、前記角速度データに基づいたゲームを複数回実行し、当該複数回のゲームのそれぞれについてゲームの成否を判定し、
前記難易度設定手段は、或る回のゲームの結果が失敗であると判定された場合に、当該回のゲームの難易度よりも下がるように、次の回のゲームの難易度を設定する、請求項１、３、８、９、１２および１３のいずれかに記載のゲーム装置。
【請求項１５】
前記ゲーム処理手段は、第１のプレイヤによって操作される第１のコントローラに設けられた第１の角速度センサから取得される第１の角速度データと、第２のプレイヤによって操作される第２のコントローラに設けられた第２の角速度センサから取得される第２の角速度データに基づいて、第１のプレイヤと第２のプレイヤが対戦するゲームを実行し、当該第１の角速度データおよび第２の角速度データの値に基づいて、第１のプレイヤによる第１のゲーム操作の成否と第２のプレイヤによる第２のゲーム操作の成否をそれぞれ判定し、
前記難易度設定手段は、第１のゲーム操作の難易度と第２のゲーム操作の難易度を個別に設定し、
前記難易度制御手段は、前記難易度設定手段によって設定された第１のゲーム操作の難易度に基づいて、前記ゲーム処理手段において第１のゲーム操作が成功したと判定される第１の角速度データの成功範囲を変更し、前記難易度設定手段によって設定された第２のゲーム操作の難易度に基づいて、前記ゲーム処理手段において第２のゲーム操作が成功したと判定される第２の角速度データの成功範囲を変更する、請求項１、３、８、９、１２のいずれかに記載のゲーム装置。
【請求項１６】
前記難易度設定手段は、或る回の第１のゲーム操作の成否に応じて次の回の第１のゲーム操作の難易度を設定し、或る回の第２のゲーム操作の成否に応じて次の回の第２のゲーム操作の難易度を設定する、請求項１５記載のゲーム装置。
【請求項１７】
コントローラに設けられた角速度センサから取得される角速度データを含む操作データに基づいてゲーム処理を行うゲーム装置のコンピュータを、
前記角速度データに基づいたゲームを実行するとともに、当該角速度データの値に基づいてゲームの成否を判定するゲーム処理手段、
ゲームの難易度を設定する難易度設定手段、および、
前記難易度設定手段によって設定された難易度に基づいて、前記ゲーム処理手段において成功と判定される角速度データの成功範囲を変更する難易度制御手段として機能させるためのゲームプログラム。
【請求項１８】
前記難易度制御手段は、前記難易度設定手段によって設定される難易度がより高いほど、前記成功範囲をより狭くする、請求項１７記載のゲームプログラム。
【請求項１９】
コントローラに設けられた角速度センサから取得される角速度データを含む操作データに基づいてゲーム処理を行うゲーム装置のコンピュータを、
前記角速度データに基づいて仮想ゲーム空間における所定のオブジェクトを移動させるゲームを実行するゲーム処理手段、
ゲームの難易度を設定する難易度設定手段、および、
前記難易度設定手段によって設定された難易度に基づいて、前記ゲーム処理手段における前記オブジェクトの移動を補正する難易度制御手段として機能させるためのゲームプログラム。
【請求項２０】
前記難易度制御手段は、前記ゲーム処理手段で利用される前記オブジェクトの移動制御パラメータを、ゲームにおいて要求される当該移動制御パラメータの目標値または目標範囲に近づけるように補正する、請求項１９記載のゲームプログラム。
【請求項２１】
前記難易度制御手段は、前記難易度設定手段によって設定される難易度がより高いほど、前記移動制御パラメータを補正する度合いをより低くする、請求項１９記載のゲームプログラム。
【請求項２２】
前記ゲーム処理手段は、前記角速度データが所定の条件を満たしたタイミングで、前記角速度データに基づいた前記オブジェクトの移動の制御を行う、請求項１９記載のゲームプログラム。
【請求項２３】
前記ゲーム処理手段は、前記角速度データが示す角速度の大きさが極大となり、かつ当該角速度の極大値が所定の閾値より大きいときに、前記オブジェクトの移動を制御する、請求項２２記載のゲームプログラム。
【請求項２４】
前記ゲームプログラムは、前記角速度センサから取得される角速度データを逐次記憶する角速度記憶手段として前記コンピュータをさらに機能させ、
前記ゲーム処理手段は、前記角速度データが示す角速度の大きさが極大となり、かつ当該角速度の極大値が所定の閾値より大きいときに、当該角速度が極大となる前の所定期間における角速度データを前記角速度記憶手段から読み出して当該角速度データに基づいて前記オブジェクトの移動方向を決定し、
前記難易度制御手段は、前記ゲーム処理手段によって決定される前記オブジェクトの移動方向を、前記難易度設定手段によって設定された難易度に応じた度合いで、ゲームにおいて要求される当該オブジェクトの目標移動方向に近づけるように補正する、請求項２３記載のゲームプログラム。
【請求項２５】
前記ゲーム処理手段は、前記角速度データが示す角速度の大きさが極大となり、かつ当該角速度の極大値が所定の閾値より大きいときに、当該極大値に基づいて前記オブジェクトの移動速度および／または到達距離を決定し、
前記難易度制御手段は、前記ゲーム処理手段によって決定される前記オブジェクトの移動速度および／または到達距離を、前記難易度設定手段によって設定された難易度に応じた度合いで、ゲームにおいて要求される当該オブジェクトの目標移動速度および／または目標到達距離に近づけるように補正する、請求項２３記載のゲームプログラム。
【請求項２６】
前記難易度設定手段は、ゲームにおいて要求される当該オブジェクトの目標到達距離に応じてゲームの難易度を変化させる、請求項２５記載のゲームプログラム。
【請求項２７】
前記ゲーム処理手段は、前記角速度データに基づいたゲームを複数回実行し、当該複数回のゲームのそれぞれについてゲームの成否を判定し、
前記難易度設定手段は、各回のゲームの成否に応じて次の回のゲームの基準難易度を決定するとともに、ゲームにおいて要求される当該オブジェクトの目標到達距離に応じた難易度オフセットを前記基準難易度に加算することによって、次の回のゲームの難易度を決定する、請求項２６記載のゲームプログラム。
【請求項２８】
前記ゲーム処理手段は、前記角速度データが示す角速度の大きさが極大となり、かつ当該加速度の極大値が所定の閾値より大きいときに、当該時点において前記角速度センサから取得される角速度データに基づいて検出される前記コントローラの姿勢に基づいて前記オブジェクトの移動方向を設定し、
前記難易度制御手段は、前記ゲーム処理手段によって決定される前記オブジェクトの移動方向を、前記難易度設定手段によって設定された難易度に応じた度合いで、ゲームにおいて要求される当該オブジェクトの目標移動方向に近づけるように補正する、請求項２３記載のゲームプログラム。
【請求項２９】
前記ゲーム処理手段は、前記角速度データに基づいたゲームを複数回実行し、当該複数回のゲームのそれぞれについてゲームの成否を判定し、
前記難易度設定手段は、或る回のゲームの結果が成功であると判定された場合に、当該回のゲームの難易度よりも上がるように、次の回のゲームの難易度を設定する、請求項１７、１９、２４、２５および２８のいずれかに記載のゲームプログラム。
【請求項３０】
前記ゲーム処理手段は、前記角速度データに基づいたゲームを複数回実行し、当該複数回のゲームのそれぞれについてゲームの成否を判定し、
前記難易度設定手段は、或る回のゲームの結果が失敗であると判定された場合に、当該回のゲームの難易度よりも下がるように、次の回のゲームの難易度を設定する、請求項１７、１９、２４、２５、２８および２９のいずれかに記載のゲームプログラム。
【請求項３１】
前記ゲーム処理手段は、第１のプレイヤによって操作される第１のコントローラに設けられた第１の角速度センサから取得される第１の角速度データと、第２のプレイヤによって操作される第２のコントローラに設けられた第２の角速度センサから取得される第２の角速度データに基づいて、第１のプレイヤと第２のプレイヤが対戦するゲームを実行し、当該第１の角速度データおよび第２の角速度データの値に基づいて、第１のプレイヤによる第１のゲーム操作の成否と第２のプレイヤによる第２のゲーム操作の成否をそれぞれ判定し、
前記難易度設定手段は、第１のゲーム操作の難易度と第２のゲーム操作の難易度を個別に設定し、
前記難易度制御手段は、前記難易度設定手段によって設定された第１のゲーム操作の難易度に基づいて、前記ゲーム処理手段において第１のゲーム操作が成功したと判定される第１の角速度データの成功範囲を変更し、前記難易度設定手段によって設定された第２のゲーム操作の難易度に基づいて、前記ゲーム処理手段において第２のゲーム操作が成功したと判定される第２の角速度データの成功範囲を変更する、請求項１７、１９、２４、２５、２８のいずれかに記載のゲームプログラム。
【請求項３２】
前記難易度設定手段は、或る回の第１のゲーム操作の成否に応じて次の回の第１のゲーム操作の難易度を設定し、或る回の第２のゲーム操作の成否に応じて次の回の第２のゲーム操作の難易度を設定する、請求項３１記載のゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム装置及びゲームプログラムに関し、より特定的には、コントローラに設けられた角速度センサから取得される角速度データを含む操作データに基づいてゲーム処理を行うゲーム装置及びゲームプログラムに関する。
【背景技術】
【０００２】
従来、コントローラに設けられたジャイロセンサから取得される角速度を含む操作データに基づいてゲーム処理を行うゲーム装置が存在する。例えば、特許文献１に開示されているゲーム装置では、コントローラに設けられた多軸ジャイロセンサから取得される角速度などの情報に基づいて、仮想ゲーム空間におけるキャラクターの刀の動きが制御される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−３０８７５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１に記載のゲーム装置では、角速度センサから取得される角速度データに基づいて実行されるゲームにおいて、ゲームの難易度を設定することは考えられておらず、ゲームが単調になるという問題がある。
【０００５】
それゆえに本発明の目的は、角速度センサから取得される角速度データに基づいて実行されるゲームにおいて、ゲームの難易度を調整することのできるゲーム装置及びゲームプログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号、図番号及び補足説明は、本発明の理解を助けるために、後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【０００７】
本発明のゲーム装置は、コントローラ（８）に設けられた角速度センサ（５５、５６）から取得される角速度データを含む操作データ（６２）に基づいてゲーム処理を行うゲーム装置（３）であって、ゲーム処理手段（１０）と、難易度設定手段（１０）と、難易度制御手段（１０）とを備える。
上記ゲーム処理手段は、上記角速度データに基づいたゲームを実行する（図９〜図１３）とともに、当該角速度データの値に基づいてゲームの成否を判定する（Ｓ２２、図２１、Ｓ２４、図２２、Ｓ３０、図２５、図２６）。
上記難易度設定手段は、ゲームの難易度を設定する（Ｓ３２）。
上記難易度制御手段は、上記難易度設定手段によって設定された難易度に基づいて、上記ゲーム処理手段において成功と判定される角速度データの成功範囲を変更する（Ｓ２９、図２３〜図２６）。
【０００８】
なお、上記難易度制御手段は、上記難易度設定手段によって設定される難易度がより高いほど、上記成功範囲をより狭くしてもよい。
【０００９】
本発明の他のゲーム装置は、コントローラ（８）に設けられた角速度センサ（５５、５６）から取得される角速度データを含む操作データ（６２）に基づいてゲーム処理を行うゲーム装置（３）であって、ゲーム処理手段（１０）と、難易度設定手段（１０）と、難易度制御手段（１０）とを備える。
上記ゲーム処理手段は、上記角速度データに基づいて仮想ゲーム空間における所定のオブジェクト（ボール）を移動させるゲームを実行する（図９〜図１３）。
上記難易度設定手段は、ゲームの難易度を設定する（Ｓ３２）。
上記難易度制御手段は、上記難易度設定手段によって設定された難易度に基づいて、上記ゲーム処理手段における上記オブジェクトの移動を補正する（Ｓ２２、図２１、Ｓ２４、図２２、Ｓ３０、図２５、図２６）。
【００１０】
なお、上記難易度制御手段は、上記ゲーム処理手段で利用される上記オブジェクトの移動制御パラメータ（方位角φ）を、ゲームにおいて要求される当該移動制御パラメータの目標値（０）または目標範囲（φ１〜φ２）に近づけるように補正してもよい（図２５、図２６）。
【００１１】
また、上記難易度制御手段は、上記難易度設定手段によって設定される難易度がより高いほど、上記移動制御パラメータを補正する度合いをより低くしてもよい。
【００１２】
また、上記ゲーム処理手段は、上記角速度データが所定の条件を満たしたタイミングで、上記角速度データに基づいた上記オブジェクトの移動の制御を行ってもよい。
【００１３】
また、上記ゲーム処理手段は、上記角速度データが示す角速度の大きさ（Ｐ）が極大となり、かつ当該角速度の極大値が所定の閾値（投球閾値）より大きいときに、上記オブジェクトの移動を制御してもよい（Ｓ２１）。
【００１４】
また、上記ゲーム装置は、上記角速度センサから取得される角速度データを逐次記憶する角速度記憶手段（１２）をさらに備え、上記ゲーム処理手段は、上記角速度データが示す角速度の大きさ（Ｐ）が極大となり、かつ当該角速度の極大値が所定の閾値（投球閾値）より大きいときに、当該角速度が極大となる前の所定期間における角速度データを上記角速度記憶手段から読み出して当該角速度データに基づいて上記オブジェクトの移動方向（方位角φ）を決定し、上記難易度制御手段は、上記ゲーム処理手段によって決定される上記オブジェクトの移動方向（方位角φ）を、上記難易度設定手段によって設定された難易度に応じた度合いで、ゲームにおいて要求される当該オブジェクトの目標移動方向（０）に近づけるように補正してもよい。
【００１５】
また、上記ゲーム処理手段は、上記角速度データが示す角速度の大きさ（Ｐ）が極大となり、かつ当該角速度の極大値が所定の閾値（投球閾値）より大きいときに、当該極大値に基づいて上記オブジェクトの移動速度（初速度Ｖ）および／または到達距離を決定し、上記難易度制御手段は、上記ゲーム処理手段によって決定される上記オブジェクトの移動速度および／または到達距離を、上記難易度設定手段によって設定された難易度に応じた度合いで、ゲームにおいて要求される当該オブジェクトの目標移動速度および／または目標到達距離に近づけるように補正してもよい。
【００１６】
また、上記難易度設定手段は、ゲームにおいて要求される当該オブジェクトの目標到達距離（プレイヤキャラクタとリングの間の距離）に応じてゲームの難易度を変化させてもよい（図３０）。
【００１７】
また、上記ゲーム処理手段は、上記角速度データに基づいたゲームを複数回実行し（Ｓ１７）、当該複数回のゲームのそれぞれについてゲームの成否を判定し、上記難易度設定手段は、各回のゲームの成否に応じて次の回のゲームの基準難易度を決定する（Ｓ３２）とともに、ゲームにおいて要求される当該オブジェクトの目標到達距離に応じた難易度オフセット（図３０）を上記基準難易度に加算することによって、次の回のゲームの難易度を決定してもよい。
【００１８】
また、上記ゲーム処理手段は、上記角速度データが示す角速度の大きさ（Ｐ）が極大となり、かつ当該加速度の極大値が所定の閾値（投球閾値）より大きいときに、当該時点において上記角速度センサから取得される角速度データに基づいて検出される上記コントローラの姿勢に基づいて上記オブジェクトの移動方向（仰角θ）を設定し（Ｓ２２）、上記難易度制御手段は、上記ゲーム処理手段によって決定される上記オブジェクトの移動方向（仰角θ）を、上記難易度設定手段によって設定された難易度に応じた度合いで、ゲームにおいて要求される当該オブジェクトの目標移動方向に近づけるように補正してもよい。
【００１９】
また、上記ゲーム処理手段は、上記角速度データに基づいたゲームを複数回実行し（Ｓ１７）、当該複数回のゲームのそれぞれについてゲームの成否を判定し、上記難易度設定手段は、或る回のゲームの結果が成功であると判定された場合に、当該回のゲームの難易度よりも上がるように、次の回のゲームの難易度を設定してもよい（図２７〜図２９）。
【００２０】
また、上記ゲーム処理手段は、上記角速度データに基づいたゲームを複数回実行し（Ｓ１７）、当該複数回のゲームのそれぞれについてゲームの成否を判定し、上記難易度設定手段は、或る回のゲームの結果が失敗であると判定された場合に、当該回のゲームの難易度よりも下がるように、次の回のゲームの難易度を設定してもよい（図２７〜図２９）。
【００２１】
また、上記ゲーム処理手段は、第１のプレイヤによって操作される第１のコントローラに設けられた第１の角速度センサから取得される第１の角速度データと、第２のプレイヤによって操作される第２のコントローラに設けられた第２の角速度センサから取得される第２の角速度データに基づいて、第１のプレイヤと第２のプレイヤが対戦するゲームを実行し、当該第１の角速度データおよび第２の角速度データの値に基づいて、第１のプレイヤによる第１のゲーム操作の成否と第２のプレイヤによる第２のゲーム操作の成否をそれぞれ判定し、上記難易度設定手段は、第１のゲーム操作の難易度と第２のゲーム操作の難易度を個別に設定し、上記難易度制御手段は、上記難易度設定手段によって設定された第１のゲーム操作の難易度に基づいて、上記ゲーム処理手段において第１のゲーム操作が成功したと判定される第１の角速度データの成功範囲を変更し、上記難易度設定手段によって設定された第２のゲーム操作の難易度に基づいて、上記ゲーム処理手段において第２のゲーム操作が成功したと判定される第２の角速度データの成功範囲を変更してもよい。
【００２２】
また、上記難易度設定手段は、或る回の第１のゲーム操作の成否に応じて次の回の第１のゲーム操作の難易度を設定し、或る回の第２のゲーム操作の成否に応じて次の回の第２のゲーム操作の難易度を設定してもよい。
【００２３】
本発明のゲームプログラムは、コントローラ（８）に設けられた角速度センサ（５５、５６）から取得される角速度データを含む操作データ（６２）に基づいてゲーム処理を行うゲーム装置（３）のコンピュータ（１０）を、ゲーム処理手段、難易度設定手段および難易度制御手段として機能させるためのゲームプログラムである。
上記ゲーム処理手段は、上記角速度データに基づいたゲームを実行する（図９〜図１３）とともに、当該角速度データの値に基づいてゲームの成否を判定する。
上記難易度設定手段は、ゲームの難易度を設定する（Ｓ３２）。
上記難易度制御手段は、上記難易度設定手段によって設定された難易度に基づいて、上記ゲーム処理手段において成功と判定される角速度データの成功範囲を変更する（Ｓ２９、図２３〜図２６）。
【００２４】
本発明の他のゲームプログラムは、コントローラ（８）に設けられた角速度センサ（５５、５６）から取得される角速度データを含む操作データ（６２）に基づいてゲーム処理を行うゲーム装置（３）のコンピュータ（１０）を、ゲーム処理手段、難易度設定手段および難易度制御手段として機能させるためのゲームプログラムである。
上記ゲーム処理手段は、上記角速度データに基づいて仮想ゲーム空間における所定のオブジェクト（ボール）を移動させるゲームを実行する（図９〜図１３）。
上記難易度設定手段は、ゲームの難易度を設定する（Ｓ３２）。
上記難易度制御手段は、上記難易度設定手段によって設定された難易度に基づいて、上記ゲーム処理手段における上記オブジェクトの移動を補正する（Ｓ２２、図２１、Ｓ２４、図２２、Ｓ３０、図２５、図２６）。
【発明の効果】
【００２５】
本発明によれば、角速度センサから取得される角速度データに基づいて実行されるゲームにおいて、ゲームの難易度を設定することのできるゲーム装置及びゲームプログラムを提供することができる。
【図面の簡単な説明】
【００２６】
【図１】ゲームシステムの外観図
【図２】ゲーム装置の機能ブロック図
【図３】入力装置の外観構成を示す斜視図
【図４】コントローラの外観構成を示す斜視図
【図５】コントローラの内部構造を示す図
【図６】コントローラの内部構造を示す図
【図７】入力装置の構成を示すブロック図
【図８】入力装置８を用いてゲーム操作するときの状態を概説する図
【図９】テレビ２の画面に表示されるゲーム画像の一例
【図１０】テレビ２の画面に表示されるゲーム画像の一例
【図１１】テレビ２の画面に表示されるゲーム画像の一例
【図１２】テレビ２の画面に表示されるゲーム画像の一例
【図１３】テレビ２の画面に表示されるゲーム画像の一例
【図１４】外部メインメモリ１２のメモリマップの一例
【図１５】ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャート
【図１６】図１５におけるシュート処理（ステップＳ１６）の詳細を示すフローチャート
【図１７】シュート操作時のプレイヤの腕の動きを示す図
【図１８】シュート操作時の振り強さＰの変化を示す図
【図１９】振り強さＰの極大値の検出方法およびシュートタイミングの決定方法を説明するための図
【図２０】仮想３次元ゲーム空間における投球方向を示す図
【図２１】投球方向の仰角θの決定方法を示す図
【図２２】ボールの初速度の決定方法を示す図
【図２３】難易度に応じた成功下限ひねり量Ｒｍｉｎの決定方法を示す図
【図２４】難易度に応じた成功上限ひねり量Ｒｍａｘの決定方法を示す図
【図２５】難易度が５であるときの投球方向の方位角φの決定方法を示す図
【図２６】難易度が１５であるときの投球方向の方位角φの決定方法を示す図
【図２７】シュートの成否に基づく難易度の更新方法の第１の例
【図２８】シュートの成否に基づく難易度の更新方法の第２の例
【図２９】シュートの成否に基づく難易度の更新方法の第３の例
【図３０】プレイヤキャラクタとリングの間の距離と難易度オフセットの関係を示す図
【発明を実施するための形態】
【００２７】
［ゲームシステムの全体構成］
図１を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置及びゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、入力装置８、及びマーカ部６を含む。本システムは、入力装置８を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００２８】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００２９】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒ及び６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００３０】
入力装置８は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与えるものである。本実施形態では、入力装置８はコントローラ５とジャイロセンサユニット７とを含む。詳細は後述するが、入力装置８は、コントローラ５に対してジャイロセンサユニット７が着脱可能に接続されている構成である。コントローラ５とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。
【００３１】
［ゲーム装置３の内部構成］
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、及びＡＶ−ＩＣ１５等を有する。
【００３２】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４及びＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅ又は外部メインメモリ１２に読み出したデータを書き込む。
【００３３】
また、システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、及び内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００３４】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００３５】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００３６】
上述のように生成された画像データ及び音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００３７】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、及びメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００３８】
入出力プロセッサ１１ａは、無線通信モジュール１８及びアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８及びアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２及び無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データ又は途中データ）が記憶されてもよい。
【００３９】
また、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３及び無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅ又は外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００４０】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０及びメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００４１】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、及びイジェクトボタン２６が設けられる。電源ボタン２４及びリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００４２】
［入力装置８の構成］
次に、図３〜図６を参照して、入力装置８について説明する。図３は、入力装置８の外観構成を示す斜視図である。図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００４３】
図３及び図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ５に設けられたボタンを押下すること、及び、コントローラ５自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【００４４】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、及び電源ボタン３２ｈが設けられる。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆ及び電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、プレイヤがホームボタン３２ｆ又は電源ボタン３２ｈを誤って押下することを防止することができる。
【００４５】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、ジャイロセンサユニット７や他のコントローラ）を接続するために利用される。また、ハウジング３１の後面におけるコネクタ３３の両側には、上記他の機器が容易に離脱することを防止するために係止穴３３ａが設けられている。
【００４６】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のメインコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ５の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００４７】
また、コントローラ５は撮像情報演算部３５（図７）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒ及び６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００４８】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４９（図５）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００４９】
次に、図５及び図６を参照して、コントローラ５の内部構造について説明する。図５及び図６は、コントローラ５の内部構造を示す図である。なお、図５は、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６は、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６に示す斜視図は、図５に示す基板３０を裏面から見た斜視図となっている。
【００５０】
図５において、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、及びスピーカ４９等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ軸方向）に関してコントローラ５の中心よりも前方に配置されている。また、無線モジュール４４（図７）及びアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００５１】
一方、図６において、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、及び画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００５２】
さらに、基板３０の下主面上には、上記マイコン４２及びバイブレータ４８が設けられている。バイブレータ４８は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４８が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４８は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４８がコントローラ５の中心よりも端側に配置することによって、バイブレータ４８の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５及び図６に示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４９に音声信号を出力するアンプ等を備えている。
【００５３】
また、ジャイロセンサユニット７は、３軸回りの角速度を検知するジャイロセンサ（図７に示すジャイロセンサ５５及び５６）を有する。ジャイロセンサユニット７は、コントローラ５のコネクタ３３に着脱可能に装着される。ジャイロセンサユニット７の前端（図３に示すＺ軸正方向側の端部）には、コネクタ３３に接続可能なプラグ（図７に示すプラグ５３）が設けられる。さらに、プラグ５３の両側にはフック（図示せず）が設けられる。ジャイロセンサユニット７がコントローラ５に対して装着される状態では、プラグ５３がコネクタ３３に接続されるとともに、上記フックがコントローラ５の係止穴３３ａに係止する。これによって、コントローラ５とジャイロセンサユニット７とがしっかりと固定される。また、ジャイロセンサユニット７は側面（図３に示すＸ軸方向の面）にボタン５１を有している。ボタン５１は、それを押下すれば上記フックの係止穴３３ａに対する係止状態を解除することができるように構成されている。したがって、ボタン５１を押下しながらプラグ５３をコネクタ３３から抜くことによって、ジャイロセンサユニット７をコントローラ５から離脱することができる。
【００５４】
また、ジャイロセンサユニット７の後端には、上記コネクタ３３と同形状のコネクタが設けられる。したがって、コントローラ５（のコネクタ３３）に対して装着可能な他の機器は、ジャイロセンサユニット７のコネクタに対しても装着可能である。なお、図３においては、当該コネクタに対してカバー５２が着脱可能に装着されている。
【００５５】
なお、図３〜図６に示したコントローラ５及びジャイロセンサユニット７の形状や、各操作ボタンの形状、加速度センサやバイブレータの数及び設置位置等は単なる一例に過ぎず、他の形状、数、及び設置位置であってもよい。また、本実施形態では、撮像手段による撮像方向はＺ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【００５６】
図７は、入力装置８（コントローラ５及びジャイロセンサユニット７）の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、コネクタ３３、撮像情報演算部３５、通信部３６、及び加速度センサ３７を備えている。コントローラ５は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置３へ送信するものである。
【００５７】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００５８】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００５９】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、及び画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、テレビ２の表示画面近傍に配置されるマーカ部６のマーカ６Ｒ及び６Ｌは、テレビ２の前方に向かって赤外光を出力する赤外ＬＥＤで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、マーカ６Ｒ及び６Ｌの画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ６Ｒ及び６Ｌ）の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（傾斜角度）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００６０】
なお、他の実施形態においては、コントローラ５は画像処理回路４１を備えていない構成であってもよく、撮像画像自体がコントローラ５からゲーム装置３へ送信されてもよい。このとき、ゲーム装置３は、画像処理回路４１と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【００６１】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、３軸又は２軸の加速度センサは、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）又はＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能である種類のものでもよい。なお、加速度センサ３７は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００６２】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）及び前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置８（コントローラ５）を基準に設定されるＸＹＺ座標系（コントローラ座標系）における３次元のベクトル（ａｘ，ａｙ，ａｚ）として表される。以下では、加速度センサ３７によって検出される３軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【００６３】
加速度センサ３７が検出した加速度を示すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（傾斜角度）や動きに対応して変化するので、ゲーム装置３は加速度データを用いてコントローラ５の向きや動きを算出することができる。本実施形態では、ゲーム装置３は、加速度データ及び後述する角速度データに基づいて入力装置８（コントローラ５）の姿勢を判断する。入力装置８の姿勢は、例えば、入力装置８が存在する空間の所定位置を基準としたｘｙｚ座標系の座標値によって表される。ここでは、図１に示されるように、ｘｙｚ座標系は、入力装置８がマーカ部６の正面に位置することを前提とし、入力装置８の位置からマーカ部６を向く方向をｚ軸正方向とし、鉛直上向き（重力方向の逆方向）をｙ軸正方向とし、入力装置８の位置からマーカ部６を見た場合の左方向をｘ軸正方向とした座標系であるとする。また、ここでは、入力装置８（コントローラ５）を基準としたＸ軸、Ｙ軸、Ｚ軸が、それぞれｘ軸、ｙ軸、ｚ軸の向きと一致するときの入力装置８の姿勢を基準姿勢と呼ぶことにする。入力装置８の姿勢は、基準姿勢からＺ軸方向を基準としてロール方向（Ｚ軸周り）、ピッチ方向（Ｘ軸周り）、ヨー方向（Ｙ軸周り）にそれぞれ入力装置８を回転させた場合のｘｙｚ座標系における姿勢である。当該姿勢は、後述する回転行列Ｍによって表現される。
【００６４】
加速度センサ３７が検出した加速度（加速度ベクトル）を示すデータ（加速度データ）は、通信部３６へ出力される。
【００６５】
なお、加速度センサ３７から出力される加速度の信号に基づいて、ゲーム装置３のプロセッサ（例えばＣＰＵ１０）又はコントローラ５のプロセッサ（例えばマイコン４２）等のコンピュータが処理を行うことによって、コントローラ５に関するさらなる情報を推測又は算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ３７を搭載するコントローラ５が静止状態であることを前提としてコンピュータ側の処理が実行される場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合）、コントローラ５が現実に静止状態であれば、検出された加速度に基づいてコントローラ５の姿勢が重力方向に対して傾いているか否か又はどの程度傾いているかを知ることができる。具体的には、加速度センサ３７の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かによって、コントローラ５が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ３７の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ５がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ３７からの出力に基づいてコントローラ５の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ５の傾斜方向を算出するようにしてもよい。このように、加速度センサ３７をプロセッサと組み合わせて用いることによって、コントローラ５の傾斜角度又は姿勢を判定することができる。
【００６６】
一方、コントローラ５が動的な状態（コントローラ５が動かされている状態）であることを前提とする場合には、加速度センサ３７は重力加速度に加えてコントローラ５の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ５の動き方向を知ることができる。また、コントローラ５が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ５の傾きを知ることが可能である。なお、他の実施例では、加速度センサ３７は、内蔵の加速度検出手段で検出された加速度信号をマイコン４２に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置又は他の種類の専用の処理装置を備えていてもよい。組込み式又は専用の処理装置は、例えば、加速度センサ３７が静的な加速度（例えば、重力加速度）を検出するために用いられる場合、加速度信号を傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００６７】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、及びアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。また、マイコン４２はコネクタ３３に接続されている。ジャイロセンサユニット７から送信されてくるデータは、コネクタ３３を介してマイコン４２に入力される。以下、ジャイロセンサユニット７の構成について説明する。
【００６８】
ジャイロセンサユニット７は、プラグ５３、マイコン５４、２軸ジャイロセンサ５５、及び１軸ジャイロセンサ５６を備えている。上述のように、ジャイロセンサユニット７は、３軸（本実施形態では、ＸＹＺ軸）周りの角速度を検出し、検出した角速度を示すデータ（角速度データ）をコントローラ５へ送信する。
【００６９】
２軸ジャイロセンサ５５は、Ｘ軸周りの角速度及びＹ軸周りの（単位時間あたりの）角速度を検出する。また、１軸ジャイロセンサ５６は、Ｚ軸周りの（単位時間あたりの）角速度を検出する。なお、本明細書では、コントローラ５の撮像方向（Ｚ軸正方向）を基準として、Ｚ軸周り、Ｘ軸周り、Ｙ軸周りの回転方向を、それぞれ、ロール方向、ピッチ方向、ヨー方向と呼ぶ。すなわち、２軸ジャイロセンサ５５は、ピッチ方向（Ｘ軸周りの回転方向）及びヨー方向（Ｙ軸周りの回転方向）の角速度を検出し、１軸ジャイロセンサ５６は、ロール方向（Ｚ軸周りの回転方向）の角速度を検出する。
【００７０】
なお、本実施形態では、３軸回りの角速度を検出するために、２軸ジャイロセンサ５５と１軸ジャイロセンサ５６とを用いる構成としたが、他の実施形態においては、３軸回りの角速度を検出することができればよく、用いるジャイロセンサの数及び組み合わせはどのようなものであってもよい。
【００７１】
また、本実施形態では、各ジャイロセンサ５５及び５６が角速度を検出する３つの軸は、加速度センサ３７が加速度を検出する３つの軸（ＸＹＺ軸）と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ５５及び５６が角速度を検出する３つの軸と、加速度センサ３７が加速度を検出する３つの軸とは一致しなくてもよい。
【００７２】
ジャイロセンサ５５及び５６で検出された角速度を示すデータは、マイコン５４に出力される。したがって、マイコン５４には、ＸＹＺ軸の３軸回りの角度速度を示すデータが入力されることになる。マイコン５４は、上記３軸回りの角速度を示すデータを角速度データとしてプラグ５３を介してコントローラ５へ送信する。なお、マイコン５４からコントローラ５への送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【００７３】
コントローラ５の説明に戻り、操作部３２、撮像情報演算部３５、及び加速度センサ３７からマイコン４２へ出力されたデータ、ならびに、ジャイロセンサユニット７からマイコン４２へ送信されてきたデータは、一時的にメモリ４３に格納される。これらのデータは、上記操作データとしてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３の無線コントローラモジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ５から送信される。微弱電波信号はゲーム装置３側の無線コントローラモジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部３６から無線コントローラモジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で各操作データをゲーム装置３の無線コントローラモジュール１９へ出力する。
【００７４】
上記コントローラ５を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ５を任意の傾斜角度に傾ける操作を行うことができる。その他、上記コントローラ５によれば、プレイヤは、コントローラ５によって画面上の任意の位置を指示する操作、及び、コントローラ５自体を動かす操作を行うこともできる。
【００７５】
［ゲーム処理の概要］
次に、図８〜図１３を参照して、上記ゲームシステム１において実行されるバスケットボールゲームの概要について説明する。本実施形態において実行されるバスケットボールゲームでは、仮想ゲーム空間に存在するプレイヤキャラクタがプレイヤによる操作に応じてバスケットボールのシュートを所定回数繰り返し、そのシュートの成否に応じてプレイヤに得点が与えられる。プレイヤは、図８に示されるような振り操作を行うことにより、プレイヤキャラクタにボールをシュートさせることができる。
【００７６】
図９は、ゲーム開始直後にテレビ２の画面に表示されるゲーム画像の一例を示している。当該ゲーム画像は、仮想ゲーム空間を所定の視点（仮想カメラ）から見たシーンを示しており、当該ゲーム画像には、仮想ゲーム空間に配置されたプレイヤキャラクタ、ボール、リング等が表示されている。また、当該ゲーム画像には、プレイヤの得点も表示されている。
【００７７】
テレビ２に図９のようなゲーム画像が表示されているときに、プレイヤが入力装置８を下に向けた状態（すなわち、コントローラ５の前端をコントローラ５の後端よりも低くした状態）でコントローラ５のＢボタン３２ｉを押すと、図１０に示すように、プレイヤキャラクタがボールを掴む。その後、プレイヤがジャンプ操作を行う（すなわち、入力装置８を上に振り上げる）と、プレイヤキャラクタは、図１１に示すようにボールを頭の上に構えた状態で真上にジャンプする。
【００７８】
プレイヤキャラクタがジャンプした後、プレイヤがシュート操作を行う（すなわち、入力装置８を図８に示すように前方に振る）と、図１２に示すように、プレイヤキャラクタがリングに向けてボールを投げる。このときのボールの投球方向や初速度は、プレイヤによる入力装置８の振り方（すなわち、入力装置８を振る強さ、入力装置８を振るタイミング、入力装置８を振ったときの入力装置８の姿勢、入力装置８を振るときのプレイヤの手首のひねり具合）に応じて変化する。投球されたボールがリングの中央を通過するようなボールの移動方向、移動速度および到達距離が、それぞれ、ボールの目標移動方向、目標移動速度および目標到達距離となる。入力装置８が理想的な振り方、もしくはそれに近い振り方で振られた場合にはシュートが成功して得点が加点され、そうでない場合にはシュートは失敗に終わり、得点は加算されない。
【００７９】
シュートが終了した後、プレイヤが再び入力装置８の前端を下に向けた状態でコントローラ５のＢボタン３２ｉを押すと、プレイヤキャラクタは新たなボールを掴む。そして、上記と同様にして、プレイヤの操作に応じてプレイヤキャラクタは再びシュートを行う。このようにして、プレイヤの操作に応じて、プレイヤキャラクタが仮想ゲーム空間において同一の位置からシュートを５回行う。５回分のシュートが終了すると、プレイヤキャラクタは移動し、別の位置からさらにシュートを５回行う。このように、プレイヤキャラクタは、５本のシュートを１セットとして、各セットが終了するごとに場所を移動し、５セット（すなわち２５本のシュート）が終了すると、ゲームの結果（プレイヤが獲得した合計得点）が表示され、ゲームが終了する。
【００８０】
上記のように、本実施形態では、ジャンプ操作およびシュート操作を行う際にプレイヤはコントローラ５上のボタンを操作する必要が無く、入力装置８を把持している腕をあたかも自分がシュートするかのように振ることでプレイヤキャラクタにジャンプおよびシュートさせることができるので、非常に直感的なゲーム操作が可能である。また、特にシュート操作の際にコントローラ５上のボタンの操作を必要としないため、プレイヤは入力装置８を５本の指でしっかりと把持した状態で振ることができる。
【００８１】
［ゲーム処理の詳細］
次に、ゲーム装置３において実行されるゲーム処理の詳細について説明する。まず、ゲーム装置３におけるゲーム処理において用いられる主なデータについて図１４を用いて説明する。図１４は、ゲーム装置３の外部メインメモリ１２（ただし内部メインメモリ１１ｅであってもよい）のメモリマップである。図１４に示すように、外部メインメモリ１２は、ゲームプログラム格納領域６１、操作データ格納領域６２、姿勢データ格納領域６３、難易度格納領域６４、振り強さ格納領域６５、ひねり量格納領域６６、および得点格納領域６７として利用される。
【００８２】
ゲームプログラム格納領域６１には、上記のようなバスケットボールゲームを実現するためのゲームプログラムが格納される。このゲームプログラムは、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれて外部メインメモリ１２のゲームプログラム格納領域６１に記憶される。なお、他の実施形態では、ゲームプログラムは、光ディスク以外の任意のコンピュータ読み取り可能な記憶媒体（たとえば、ゲームカートリッジや磁気ディスク等）を通じてゲーム装置３に供給されて、外部メインメモリ１２に記憶されてもよい。また、さらに他の実施形態では、ゲームプログラムは、ゲーム装置３に内蔵されている不揮発性の記憶装置（例えばフラッシュメモリ１７）から読み出されて、外部メインメモリ１２に記憶されてもよい。さらに他の実施形態では、ゲームプログラムは、他のコンピュータシステム（ゲーム装置やゲームプログラム配信サーバ装置）から無線または有線の通信回線を通じてゲーム装置３に供給されて、外部メインメモリ１２に記憶されてもよい。
【００８３】
操作データ格納領域６２には、コントローラ５からゲーム装置３へ送信されてくる操作データが記憶される。上述したように、コントローラ５からゲーム装置３へは２００分の１秒の周期で操作データが送信されるので、操作データ格納領域６２に記憶される操作データは、２００分の１秒の周期で更新される。ここで、本実施形態においては、２００分の１秒の周期で送信される各回の操作データを１サンプルとして、外部メインメモリ１２には、最新の操作データ（すなわち、ゲーム装置３が最後に取得した操作データ）に加えて、過去に取得した所定数の操作データが記憶される。
【００８４】
操作データには、ボタンデータ、角速度データ、加速度データ、及びマーカ座標データが含まれる。ボタンデータは、コントローラ５上の各ボタンが押されたか否かを示すデータである。角速度データは、ジャイロセンサユニット７のジャイロセンサ５５及び５６によって検出された角速度を示すデータの集合である。すなわち、角速度データは、図３に示すＸＹＺ座標系における各軸回りの角速度であり、現在及び過去に検出された各軸周りの角速度の集合である。また、加速度データは、現在及び過去に加速度センサ３７によって検出された加速度（加速度ベクトル）を示すデータの集合である。マーカ座標データは、撮像情報演算部３５の画像処理回路４１によって算出される座標、すなわち上記マーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための２次元座標系で表現される。
【００８５】
姿勢データ格納領域６３には、姿勢データが記憶される。姿勢データは、入力装置８（コントローラ５）の姿勢に関するデータの集合であって、回転行列データ、ロール成分回転データ、ピッチ成分回転データ、ヨー成分回転データ、ピッチ姿勢データ、及びヨー姿勢データを含む。
【００８６】
回転行列データは、基準姿勢（上述したＸＹＺ軸がｘｙｚ軸と一致する場合の姿勢）から現在の入力装置８（コントローラ５）の姿勢への回転を表すデータであり、当該回転は、回転行列Ｍで表される。また、回転行列Ｍは、入力装置８のＸＹＺ軸方向を示すそれぞれの単位ベクトルをｘｙｚ座標系で表して並べたものでもある。回転行列データは、操作データと同様、最新の回転行列Ｍに加えて、所定サンプルの回転行列Ｍを示すデータの集合である。回転行列Ｍは、以下の式（１）に示す３×３の行列で表現される。
【００８７】
【数１】
2010252861.tif 000003
【００８８】
ロール成分回転データは、Ｚ軸周りの入力装置８の回転を表すデータであり、ロール成分回転行列Ｍｒで表される。ピッチ成分回転データは、Ｘ軸周りの入力装置８の回転を表すデータであり、ピッチ成分回転行列Ｍｐで表される。さらに、ヨー成分回転データは、Ｙ軸周りの入力装置８の回転を表すデータであり、ヨー成分回転行列Ｍｙで表される。ロール成分回転行列Ｍｒ、ピッチ成分回転行列Ｍｐ、及びヨー成分回転行列Ｍｙは、それぞれ以下の式（２）〜式（４）に示す３×３の行列で表現される。
【００８９】
【数２】
2010252861.tif 000004
【００９０】
ここで、ロール方向（Ｚ軸周り）、ピッチ方向（Ｘ軸周り）、ヨー方向（Ｙ軸周り）の回転角をそれぞれθｒ、θｐ、θｙとした。角度θｒ、θｐ、θｙは、角速度データに基づいて求められる。すなわち、角度θｒは、基準姿勢からのＺ軸周りの回転角であり、当該回転角は、上述したように、Ｚ軸周りの角速度の積分を算出することにより求められる。角度θｐ及びθｙも同様に、それぞれＸ軸周り、Ｙ軸周りの角速度の積分を算出することにより、求められる。なお、ジャイロセンサの出力には一般的にドリフト等による誤差が含まれる可能性があるので、角速度を積分するだけでなく、加速度データに基づいて姿勢を補正することができる。具体的には、入力装置８が静止しているときや、等速運動をしているときは、加速度データが示す加速度が重力であるので、その方向から入力装置８の姿勢を算出し、角速度によって算出された姿勢を加速度から算出された姿勢に近づける補正を行う。その際、加速度の大きさが重力の大きさに近いほど補正の度合いを高くするようにすれば、動いている場合等、加速度から姿勢を算出できない場合の姿勢をあまり反映させないようにすることができる。さらに、マーカ座標データに基づいて補正を行うことも可能である。すなわち、２つのマーカ座標を結ぶ方向によって、入力装置のロール方向の姿勢を算出することが可能であるし、マーカ座標の位置をヨーおよび／またはピッチ方向の姿勢に関連付けることも可能であるので、角速度によって算出された姿勢や加速度によって補正された姿勢を、マーカ座標に基づいて算出された姿勢に所定割合で近づけることで補正を行うことが可能である。
【００９１】
上記回転行列Ｍは、Ｚ軸を基準としたロール方向、ピッチ方向、ヨー方向の回転を表す回転行列の積である。すなわち、回転行列Ｍは、上記式（２）〜式（４）で表される各成分の回転行列の積である。本実施形態では、角速度データが更新されるタイミング（２００分の１秒の周期）で、回転行列Ｍ（回転行列データ）が算出され、外部メインメモリ１２に保存されるものとする。
【００９２】
ピッチ姿勢データは、入力装置８のｘｙｚ座標系におけるピッチ方向の姿勢を示すデータの集合であり、当該ピッチ方向の姿勢は、上記回転行列Ｍにより求められる。ここで、ｘｙｚ座標系におけるピッチ方向の姿勢とは、物体座標系（ＸＹＺ座標系）で入力装置８を回転させた後の空間固定座標系（ｘｙｚ座標系）から見たｘ軸周りの回転を表す姿勢である。
【００９３】
ヨー姿勢データは、入力装置８のｘｙｚ座標系におけるヨー方向の姿勢を示すデータの集合であり、当該ヨー方向の姿勢は、上記回転行列Ｍにより求められる。ここで、ｘｙｚ座標系におけるヨー方向の姿勢とは、物体座標系（ＸＹＺ座標系）で入力装置８を回転させた後の空間固定座標系（ｘｙｚ座標系）から見たｙ軸周りの回転を表す姿勢である。
【００９４】
難易度格納領域６４には、ゲームの難易度を示す値が記憶される。本実施形態では、難易度の値は０〜２５の範囲の実数値を取り得るものとする。
【００９５】
振り強さ格納領域６５には、最新の振り強さＰ０と、１サンプル前の振り強さＰ１と、２サンプル前の振り強さＰ２が記憶される。最新の振り強さＰ０は、最新の角速度データに基づいて計算された振り強さＰである。１サンプル前の振り強さＰ１は、１サンプル前の角速度データ（すなわち、最新の角速度データの１つ前に取得された角速度データ）に基づいて計算された振り強さＰである。同様に、２サンプル前の振り強さＰ２とは、２サンプル前の角速度データ（すなわち、最新の角速度データの２つ前に取得された角速度データ）に基づいて計算された振り強さＰである。振り強さＰの計算方法については後述する。
【００９６】
ひねり量格納領域６６には、１投目のひねり量Ｒ１、２投目のひねり量Ｒ２、３投目のひねり量Ｒ３、および４投目のひねり量Ｒ４が記憶される。１投目のひねり量Ｒ１は、上記バスケットボールゲームにおいてプレイヤキャラクタが放つ全２５本のシュートの内、最初のシュートを打つ際に角速度データに基づいて計算されたひねり量Ｒである。２投目のひねり量Ｒ２は、上記バスケットボールゲームにおいてプレイヤキャラクタが放つ全２５本のシュートの内、２投目のシュートを打つ際に角速度データに基づいて計算されたひねり量Ｒである。同様に、３投目のひねり量Ｒ３は、３投目のシュートを打つ際に角速度データに基づいて計算されたひねり量Ｒであり、４投目のひねり量Ｒ４は、４投目のシュートを打つ際に角速度データに基づいて計算されたひねり量Ｒである。ひねり量Ｒの計算方法については後述する。
【００９７】
得点格納領域６７には、プレイヤが獲得した得点を示す値が記憶される。
【００９８】
なお、外部メインメモリ１２には、上記のようなゲームプログラムおよび各種データの他にも、ゲームに登場する各種オブジェクト（プレイヤキャラクタ、ボール等）の画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
【００９９】
なお、上記のようなゲームプログラムおよび各種データは、外部メインメモリ１２ではなく、内部メインメモリ１１ｅに記憶されてもよい。
【０１００】
また、上述したような各種データの全てが外部メインメモリ１２に記憶されている必要はなく、少なくともゲーム処理において必要となるデータさえ外部メインメモリ１２に記憶されていればよい。例えば、ゲーム処理においてヨー姿勢データを利用しない場合には、外部メインメモリ１２にヨー姿勢データを記憶しないようにしてもよい。
【０１０１】
次に、図１５〜図１６のフローチャートを参照して、前述のゲームプログラムに基いてゲーム装置３のＣＰＵ１０によって実行されるゲーム処理の流れを説明する。
【０１０２】
ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによって外部メインメモリ１２等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムが外部メインメモリ１２に読み込まれ、ＣＰＵ１０によって当該ゲームプログラム６１の実行が開始される。図１５に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、図１５および図１６のフローチャートでは、説明を簡単にするために、コントローラ５から操作データを周期的に取得して外部メインメモリ１２に格納する処理や、当該取得した操作データに基づいて入力装置８の姿勢を表す回転行列等を算出して外部メインメモリ１２に格納する処理は省略している。また、図１５および図１６のフローチャートでは、当業者にとって周知の技術であるプレイヤキャラクタのモーション制御処理やゲーム画像生成処理についても省略している。
【０１０３】
ステップＳ１０において、ＣＰＵ１０は、初期化処理を行う。この初期化処理には、外部メインメモリ１２に記憶されている各種データを初期値にセットする処理等が含まれる。例えば、難易度は初期値「１」にセットされ、得点は初期値「０」にセットされる。
【０１０４】
ステップＳ１１において、ＣＰＵ１０は、コントローラ５の姿勢が下向き（すなわち、コントローラ５の前端がコントローラ５の後端よりも低い状態）か否かを判断する。この判断は、例えば、回転行列ＭのＺｙ成分が負である場合には、コントローラ５のＺ軸がｘｙｚ空間内の下方向を向いていることになるので、コントローラ５の姿勢が下向きと判定することができる。また、外部メインメモリ１２に格納されているピッチ姿勢データに基づいて行うこともできる。ステップＳ１１において、コントローラ５の姿勢が下向きであると判断された場合には、処理はステップＳ１２に進み、そうでない場合には、コントローラ５の姿勢が下向きであると判断されるまでステップＳ１１を繰り返す。
【０１０５】
ステップＳ１２において、ＣＰＵ１０は、コントローラ５のＢボタン３２ｉがプレイヤによって押されたか否かを操作データ格納領域６２のボタンデータに基づいて判断する。そして、Ｂボタン３２ｉが押されたと判断された場合には処理はステップＳ１３に進み、そうでない場合には、処理はステップＳ１１に戻る。
【０１０６】
ステップＳ１３において、ＣＰＵ１０は、仮想ゲーム空間においてプレイヤキャラクタがボールを掴むように、プレイヤキャラクタのモーションを制御する。
【０１０７】
ステップＳ１４において、ＣＰＵ１０は、プレイヤによるジャンプ操作が行われたかどうかを判断する。本実施形態では、プレイヤが入力装置８を上に振り上げたかどうかを、現在のＺ軸方向の加速度と、現在のＸ軸周りの角速度と、現在のＹ軸周りの角速度と、現在の入力装置８のｘｙｚ座標系におけるピッチ方向の姿勢とから総合的に判断し、プレイヤが入力装置８を頭上に振り上げたと判断される場合に、ジャンプ操作が行われたと判断する。そして、ジャンプ操作が行われたと判断された場合には処理はステップＳ１５に進み、そうでない場合には、ジャンプ開始条件を満たしたと判断されるまでステップＳ１４を繰り返す。
【０１０８】
ステップＳ１５において、ＣＰＵ１０は、仮想ゲーム空間においてプレイヤキャラクタがジャンプを開始するように、プレイヤキャラクタのモーションを制御する。
【０１０９】
ステップＳ１６において、ＣＰＵ１０は、シュート処理を行う。このシュート処理は、プレイヤキャラクタにボールをシュートさせるための処理である。シュート処理の詳細については図１６のフローチャートを参照して後述する。ステップＳ１６のシュート処理が終了すると、処理はステップＳ１７に進む。
【０１１０】
ステップＳ１７において、ＣＰＵ１０は、規定回数（本実施形態では２５回）のシュートが終了したかどうかを判断する。そして、規定回数のシュートが終了した場合には処理はステップＳ１８に進み、そうでない場合には処理はステップＳ１１に戻る。
【０１１１】
ステップＳ１８において、ＣＰＵ１０は、プレイヤが獲得した得点等を示す結果画像を生成して、テレビ２の画面に表示し、ゲーム処理を終了する。
【０１１２】
次に、図１６のフローチャートを参照して、図１５のステップＳ１６のシュート処理について詳細に説明する。
【０１１３】
シュート処理が開始されると、ステップＳ２０において、ＣＰＵ１０は、最新の角速度データに基づいて振り強さＰを計算し、その値を外部メインメモリ１２に「最新の振り強さＰ０」として格納する。このとき、ステップＳ２０の直前まで「最新の振り強さＰ０」として外部メインメモリ１２に記憶されていた値については、「１サンプル前の振り強さＰ１」として外部メインメモリ１２に記憶され、同様に、ステップＳ２０の直前まで「１サンプル前の振り強さＰ１」として外部メインメモリ１２に記憶されていた値については、「２サンプル前の振り強さＰ２」として外部メインメモリ１２に記憶される。
【０１１４】
振り強さＰとは、プレイヤが入力装置８を振る強さを示す指標であって、本実施形態では、一例として、Ｘ軸周りの角速度とＹ軸周りの角速度に基づいて計算される。具体的には、Ｘ軸周りの角速度をＲｘとし、Ｙ軸周りの角速度をＲｙとすると、振り強さＰは、√（Ｒｘ＾２＋Ｒｙ＾２）として計算される。このようにして計算される振り強さＰは、入力装置８を回転させたときの角速度のＸ軸周り及び／又はＹ軸周りの大きさを表している。プレイヤが、バスケットボールにおけるシュート動作のように、入力装置８を把持している腕を図１７に示す位置Ａから位置Ｂおよび位置Ｃを経て位置Ｄまで振った場合、その過程において、振り強さＰの値は図１８に示した曲線のように変化する。なお、図１８の例では、プレイヤの腕が位置Ｂにあるときに振り強さＰが極大となっているが、振り強さＰの極大点は、プレイヤによる入力装置８の振り方によって変化する。なお、図１７では、プレイヤは、入力装置８を振ったときに入力装置８がＸ軸周りに回転するような持ち方で入力装置８を把持しているが、本実施形態では上記のように、Ｘ軸周りの角速度とＹ軸周りの角速度の両方を加味して振り強さＰが計算されるので、プレイヤがどのような持ち方で入力装置８を把持していても、プレイヤが入力装置８を振る強さを振り強さＰとして適切に検出することができる。
【０１１５】
ステップＳ２１において、ＣＰＵ１０は、振り強さＰの極大値が投球閾値以上かどうかを判断する。本実施形態では、振り強さＰが極大点に達したかどうかは、外部メインメモリ１２に記憶されている「最新の振り強さＰ０」、「１サンプル前の振り強さＰ１」、および「２サンプル前の振り強さＰ２」に基づいて判断される。具体的には、「１サンプル前の振り強さＰ１」の値が「２サンプル前の振り強さＰ２」の値よりも大きく、なおかつ「最新の振り強さＰ０」の値が「１サンプル前の振り強さＰ１」の値以下である場合に、振り強さＰが極大点に達したと判断し、そのときの「１サンプル前の振り強さＰ１」の値が極大値として求まる（ただし、極大値を厳密に求める必要が無い場合には、そのときの「最新の振り強さＰ０」の値を極大値として扱ってもよい）。例えば、振り強さＰが図１９に示すように変化した場合、図１９の点Ｐ１の大きさが、振り強さＰの極大値として求まる。なお、振り強さＰが極大点に達したかどうかを判断するだけでは、プレイヤがシュート操作を行ったかどうかを正確に判断することはできない。なぜなら、プレイヤが入力装置８を振っていない状態でも振り強さＰの値は常時わずかに変動し、そのような場合であっても小さい値で極大点ができるからである。そこで本実施形態では、振り強さＰの極大値が所定の投球閾値（図１８参照）以上である場合に、プレイヤによるシュート操作が行われたと判断する。なお、振り強さＰの極大値が所定の投球閾値“よりも大きい”場合に、プレイヤによるシュート操作が行われたと判断しても、実質的に同じ判断が可能である。ステップＳ２１において、振り強さＰの極大値が投球閾値以上であると判断された場合には処理はステップＳ２２に進み、そうでない場合には処理はステップＳ２０に戻る。なお、以下の説明では、振り強さＰが投球閾値以上であって且つ極大となった時点（ただし、ここで言う「時点」とは、振り強さＰが極大となった“瞬間”を厳密に指すものではない）のことを、単に「投球時」と呼ぶことがある。
【０１１６】
ステップＳ２２において、ＣＰＵ１０は、投球時のコントローラ５の姿勢に基づいて、仮想ゲーム空間におけるボールの投球方向の仰角θを決定する。仮想ゲーム空間におけるボールの投球方向とは、図２０に示すように、プレイヤキャラクタがボールをシュートするときのボールの射出方向のことである。投球方向の仰角θは、投球方向と仮想ゲーム空間における水平面とがなす角度を表している。
【０１１７】
本実施形態では、投球時のコントローラ５のピッチ方向の姿勢に基づいて、投球方向の仰角θを決定する。コントローラ５のピッチ方向の姿勢は、外部メインメモリ１２に記憶されているピッチ姿勢データにより表される。ＣＰＵ１０は、例えば図２１に示すように、コントローラ５のピッチ方向の姿勢と投球方向の仰角θとの対応関係を定義した関数またはテーブルを用いて、仰角θを決定する。なお、図２１の例では、コントローラ５のピッチ方向の姿勢と仰角θとの対応関係が直線（すなわち一次関数）で示されているが、任意の曲線であっても構わない。これは、後述する他の図面（すなわち図２２〜図２６、図３０）についても同様である。本実施形態では、例えばプレイヤが図１７に示すように腕を振る場合、振り強さＰが極大点に到達するタイミングが早くなるほど仰角θはより大きくなり、振り強さＰが極大点に到達するタイミングが遅くなるほど仰角θはより小さくなる。なお、仰角θが大きすぎたり小さすぎたりすると、仮想ゲーム空間においてボールがリングに到達しない。具体的には、仰角θが、図２１に示す成功下限仰角θ１よりも小さい場合や、成功上限仰角θ２よりも大きい場合には、ボールがリングに到達不可能となる。したがって、シュートを成功させるためには、投球時のコントローラ５のピッチ方向の姿勢が、図２１に示す成功範囲に収まっている必要がある。すなわち、シュートを成功させるためには、プレイヤは、投球時のコントローラ５のピッチ方向の姿勢が、図２１に示す成功範囲内にある間に、振り強さＰを極大点に到達させる必要がある。
【０１１８】
ステップＳ２３において、ＣＰＵ１０は、ステップＳ２２において決定された仰角θに基づいて、成功下限初速度Ｖ１および成功上限初速度Ｖ２を計算する。成功下限初速度Ｖ１とは、プレイヤキャラクタが、リングに向かってステップＳ２２において決定された仰角θの方向にボールを投球したと仮定（なお、左右方向に関してはリングに向かって真っ直ぐに投球したと仮定）したときに、シュートが成功するためのボールの初速度Ｖの下限値である。言い換えると、ボールの初速度Ｖが成功下限初速度Ｖ１を下回っている場合には、ボールはリングに到達せず、シュートは失敗する。また、成功上限初速度Ｖ２とは、プレイヤキャラクタが、リングに向かってステップＳ２２において決定された仰角θの方向にボールを投球したときに、シュートが成功するためのボールの初速度Ｖの上限値である。言い換えると、ボールの初速度Ｖが成功上限初速度Ｖ２を上回っている場合には、ボールはリングを越えてしまい、シュートは失敗する。
【０１１９】
ステップＳ２４において、ＣＰＵ１０は、振り強さＰの極大値（すなわち、投球時の振り強さＰ）に基づいて、ボールの初速度Ｖを決定する。ＣＰＵ１０は、例えば図２２に示すように、振り強さＰの極大値とボールの初速度Ｖとの対応関係を定義した関数またはテーブルを用いて、初速度Ｖを決定する。本実施形態では、図２２に示すように、振り強さＰの極大値に一定の成功範囲が定められており、振り強さＰの極大値が当該成功範囲の下限（成功下限極大値）に一致する場合には、ボールの初速度Ｖは、成功下限初速度Ｖ１と同じ値となり、振り強さＰの極大値が当該成功範囲の上限（成功上限極大値）に一致する場合には、ボールの初速度Ｖは、成功上限初速度Ｖ２と同じ値となる。振り強さＰの極大値が成功下限極大値を下回る場合には、ボールの初速度Ｖは成功下限初速度Ｖ１よりも小さくなり、ボールはリングに到達せず、シュートは失敗する。同様に、振り強さＰの極大値が成功範囲の上限を上回る場合には、ボールの初速度Ｖは成功上限初速度Ｖ２よりも大きくなり、ボールはリングを越えてしまい、シュートは失敗する。また、振り強さＰの極大値が予め定められた成功範囲に収まっている場合には、ボールの初速度Ｖは、成功下限初速度Ｖ１から成功上限初速度Ｖ２までの範囲内の値に決定される。
【０１２０】
ステップＳ２５において、ＣＰＵ１０は、投球時のＺ軸周りの角速度に基づいて、ひねり量Ｒを計算する。本実施形態では、ＣＰＵ１０は、外部メインメモリ１２に記憶されている角速度データから、直近の数サンプル分のＺ軸周りの角速度の平均値を、ひねり量Ｒとして計算する。なお、他の実施形態では、最新のＺ軸周りの角速度を、ひねり量Ｒとして利用してもよい。
【０１２１】
ステップＳ２６において、ＣＰＵ１０は、今回のシュートが、バスケットボールゲームが開始されてから５投目以降かどうかを判断し、今回のシュートが５投目以降である場合には処理はステップＳ２７に進み、そうでない場合（すなわち、今回のシュートが１投目〜４投目のいずれかである場合）には処理はステップＳ２８に進む。
【０１２２】
ステップＳ２７において、ＣＰＵ１０は、外部メインメモリ１２に記憶されている「１投目のひねり量Ｒ１」〜「４投目のひねり量Ｒ４」に基づいて、今回のひねり量Ｒ（すなわち、直前のステップＳ２５で計算したひねり量Ｒ）を補正する。ステップＳ２７におけるひねり量Ｒの補正方法については後述する。
【０１２３】
ステップＳ２８において、ＣＰＵ１０は、今回のひねり量Ｒ（すなわち、直前のステップＳ２５で計算したひねり量Ｒ）の値を、「１投目のひねり量Ｒ１」〜「４投目のひねり量Ｒ４」のいずれかとして、外部メインメモリ１２に記憶する。例えば、今回のシュートが１投目である場合には、今回のひねり量Ｒを「１投目のひねり量Ｒ１」として記憶する。同様に、今回のシュートが２投目である場合には、今回のひねり量Ｒを「２投目のひねり量Ｒ１」として記憶する。
【０１２４】
ステップＳ２９において、ＣＰＵ１０は、外部メインメモリ１２に記憶されている「難易度」の値に基づいて、成功下限ひねり量Ｒｍｉｎおよび成功上限ひねり量Ｒｍａｘを決定する。成功下限ひねり量Ｒｍｉｎおよび成功上限ひねり量Ｒｍａｘは、シュートを成功させるためのひねり量Ｒの成功範囲の下限および上限をそれぞれ示す変数であり、それらの値は難易度に応じて可変である。本実施形態では、成功下限ひねり量Ｒｍｉｎは負の値であり、成功上限ひねり量Ｒｍａｘは正の値である。ＣＰＵ１０は、例えば図２３に示すように、難易度と成功下限ひねり量Ｒｍｉｎとの対応関係を定義した関数またはテーブルを用いて、成功下限ひねり量Ｒｍｉｎを決定する。また、ＣＰＵ１０は、例えば図２４に示すように、難易度と成功上限ひねり量Ｒｍａｘとの対応関係を定義した関数またはテーブルを用いて、成功上限ひねり量Ｒｍａｘを決定する。その結果、本実施形態では、難易度がより高くなるほど、ひねり量Ｒの成功範囲がより狭くなる。
【０１２５】
ステップＳ３０において、ＣＰＵ１０は、ステップＳ２７において補正された後のひねり量Ｒ（ただし、今回のシュートが１投目〜４投目である場合には、ステップＳ２５において計算されたひねり量Ｒ）に基づいて、仮想ゲーム空間におけるボールの投球方向の方位角φを決定する。図２０に示すように、投球方向の方位角φは、仮想ゲーム空間においてプレイヤキャラクタから見たリングの方向を表す水平ベクトルを前方ベクトルとしたときに、当該前方ベクトルと水平面に投影した投球方向とがなす角度を表している。
【０１２６】
ＣＰＵ１０は、例えば図２５に示すように、ひねり量Ｒと投球方向の方位角φとの対応関係を定義した関数またはテーブルを用いて、方位角φを決定する。本実施形態では、ひねり量Ｒの目標値は「０」であり、ひねり量Ｒが「０」のときに方位角φは「０」となる。すなわち、投球時にコントローラ５がＺ軸周りに全く回転していなければ、ボールはリングの中心から左右方向にずれることなく、リングの中心に向かって真っ直ぐに放たれる。一方、投球時にコントローラ５がＺ軸周りに回転していれば、その角速度に応じて方位角φの絶対値が大きくなり、ボールがリングの中心から左右方向にずれた方向に放たれる。なお、方位角φが大きすぎたり小さすぎたりすると、仮想ゲーム空間においてボールの軌道がリングから外れる。具体的には、方位角φが図２５に示す成功下限方位角φ１よりも小さい場合には、ボールの軌道がリングの左側に外れ、方位角φが図２５に示す成功上限方位角φ２よりも大きい場合には、ボールの軌道がリングの右側に外れる。したがって、シュートを成功させるためには、ひねり量Ｒが図２５に示す成功範囲（すなわち目標範囲）に収まっている必要がある。
【０１２７】
なお、ひねり量Ｒの成功範囲の下限（すなわち、成功下限ひねり量Ｒｍｉｎ）および上限（すなわち、成功上限ひねり量Ｒｍａｘ）は、ステップＳ２９において難易度に基づいて決定されたものである。したがって、現在の難易度に応じて、ひねり量Ｒの成功範囲は変化する。図２５は、難易度が「５」であるときのひねり量Ｒと方位角φの関係を示しており、図２６は、難易度が「２０」であるときのひねり量Ｒと方位角φの関係を示している。図２５および図２６から明らかなように、難易度が高いほど、ひねり量Ｒの成功範囲が狭くなる。すなわち、難易度が高いほど、シュートを成功させるためにより高精度のシュート操作がプレイヤに要求されることになる。逆に、難易度が低いほど、ひねり量Ｒの成功範囲が広がるので、同じフォームでシュート操作を行ったとしても、難易度が低いほどボールの軌道がリングの中央に大きく近づくように投球方向の方位角φが補正される。
【０１２８】
ステップＳ３１において、ＣＰＵ１０は、仮想ゲーム空間においてプレイヤキャラクタがシュートするように、プレイヤキャラクタのモーションを制御する。そして、ＣＰＵ１０は、ステップＳ２２で決定された投球方向の仰角θ、ステップＳ２４で決定された初速度Ｖ、およびステップＳ３０で決定された投球方向の方位角φに基づいて、ボールの移動制御を行う。
【０１２９】
ステップＳ３２において、ＣＰＵ１０は、シュートの成否に応じて、外部メインメモリ１２に記憶されている難易度と得点を更新する。具体的には、投球時のコントローラ５のピッチ方向の姿勢が図２１に示す成功範囲に収まっており、かつ振り強さＰの極大値が図２２に示す成功範囲に収まっており、かつ投球時のひねり量Ｒが図２５に示す成功範囲に収まっている場合（この場合、プレイヤキャラクタが放ったボールは結果的にリングを通過する）には、ＣＰＵ１０はシュートが成功したと判断し、そうでない場合には、ＣＰＵ１０はシュートが失敗したと判断する。
【０１３０】
上記のステップＳ３２において、難易度は基本的に、シュートが成功したときには増加され、シュートが失敗したときには減少される。ただし、難易度の更新方法としては種々のバリエーションが考えられる。以下、ステップＳ３２における難易度の更新方法のバリエーションを説明する。
【０１３１】
図２７は、シュートが成功した場合には現在の難易度に所定値（図２７の例では「１」）を加算し、シュートが成功した場合には現在の難易度から所定値（図２７の例では「１」）を減算する例である。このようにすることで、プレイヤの熟練度に応じて難易度が適応的に設定されるので、プレイヤにとって、ゲームが易しすぎたり難しすぎたりすることがなくなる。
【０１３２】
図２８は、シュートが成功した場合には現在の難易度に所定値（図２８の例では「１」）を加算し、シュートが失敗した場合には難易度を初期値（図２８の例では「１」）にリセットする例である。このようにすることで、シュートに失敗したときに難易度が初期値に戻るので、シュートが連続して失敗する可能性が低くなり、プレイヤにとって快適なゲームプレイが可能となる。
【０１３３】
図２９は、シュートが成功した場合には現在の難易度に所定値（図２７の例では「１」）を加算し、シュートが成功した場合には現在の難易度から所定値（図２７の例では「１」）を減算するとともに、シュートの成否に関わらず、１セット（図２９の例では５本分のシュート）が終了する毎に難易度を初期値（図２８の例では「１」）にリセットする例である。通常、プレイヤが前回のシュート操作から時間間隔をあまり空けずに次のシュート操作を行う場合には比較的高精度のシュート操作が可能であるが、前回のシュート操作から或る程度の時間間隔をおいてから次のシュート操作を行う場合にはシュート操作の精度が落ちる傾向にある。そこで、図２９の例のように、１セットが終了する毎に難易度を初期値にリセットすることで、例えば各セット間のプレイヤキャラクタの移動演出などによって各セット間の時間間隔が大きく空く場合でも、各セットにおける最初のシュートが外れる可能性が低くなり、プレイヤにとって快適なゲームプレイが可能となる。
【０１３４】
なお、本実施形態では、上記のようにシュートの成否に応じて難易度を更新しているが、シュートの成否だけでなく、さらに他の条件も加味して難易度を決定するようにしてもよい。例えば、プレイヤが所望の位置にプレイヤキャラクタを移動させてシュートを行わせることができるようなバスケットボールゲームにおいて、上記のようにシュートの成否に応じて更新される難易度を「基本難易度」として外部メインメモリ１２に記憶しておき、ステップＳ２９において成功上限ひねり度Ｒｍａｘおよび成功下限ひねり度Ｒｍｉｎを決定する際には、基本難易度に対して、プレイヤキャラクタとリングの間の距離に応じた難易度オフセットを加算したものを用いて、成功上限ひねり度Ｒｍａｘおよび成功下限ひねり度Ｒｍｉｎを決定するようにしてもよい。この場合、ＣＰＵ１０は、例えば図３０のような関数またはテーブルを用いて難易度オフセットを決定することができる。
【０１３５】
上記のステップＳ３２が終了すると、シュート処理は終了する。
【０１３６】
次に、図１６のステップＳ２７におけるひねり量Ｒの補正方法について説明する。
【０１３７】
本実施形態では、１投目〜４投目のシュートを行った際のひねり量Ｒを、外部メインメモリ１２にそれぞれ「１投目のひねり量Ｒ１」〜「４投目のひねり量Ｒ４」として記憶しておき、５投目以降のシュート処理時には、これらの「１投目のひねり量Ｒ１」〜「４投目のひねり量Ｒ４」を利用して、今回のひねり量Ｒ（すなわち、直前のステップＳ２５において計算されたひねり量Ｒ）を補正する。より具体的には、「１投目のひねり量Ｒ１」〜「４投目のひねり量Ｒ４」の平均値を算出し、当該算出された平均値を今回のひねり量Ｒから減算する。
【０１３８】
なお、本実施形態では、ゲームにおいて要求されるひねり量Ｒの目標値は「０」であるため、ひねり量Ｒは、投球時のＺ軸回りの角速度と目標角速度との間のずれを表している。したがって、「１投目のひねり量Ｒ１」〜「４投目のひねり量Ｒ４」の平均値は、１投目〜４投目のシュートにおいて、投球時のＺ軸回りの角速度が目標角速度から平均してどれだけずれていたかを表している。つまり、「１投目のひねり量Ｒ１」〜「４投目のひねり量Ｒ４」の平均値を計算することによって、シュート操作時のプレイヤの癖を知ることができる（すなわち、投球時のＺ軸回りの角速度が目標角速度からどれだけずれる傾向にあるかを知ることができる）。すなわち、本実施形態では、シュート操作に応じて検出されるひねり量Ｒがゲームにおいて要求されるひねり量Ｒの目標値（本実施形態では「０」）に対してどのようにずれる傾向にあるかを示す指標（以下、ずれ傾向値と呼ぶ）として、「１投目のひねり量Ｒ１」〜「４投目のひねり量Ｒ４」の平均値を利用している。ただし、ずれ傾向値の計算方法は、これに限定されない。
【０１３９】
上記のようにずれ傾向値に基づいてひねり量Ｒを補正することで、５投目以降のシュートの際に、プレイヤ毎に固有のシュート操作の癖（すなわち、シュート操作を行う際の腕や手首の動きの癖）を相殺することができる。従来のボタンスイッチの操作などでは、プレイヤ毎に固有の癖が問題になることは無いが、本実施形態のように入力装置８の角速度を利用するゲームでは、プレイヤの腕や手首の動きの癖が大きく影響するため、プレイヤ毎に有利不利が生じてしまう。たとえば、安定した投球動作を繰り返すことができるプレイヤであっても、投球の検出タイミング付近において必ずひねりが発生するような癖を持っているだけで、シュートを成功させることが困難になってしまう。そこで、本実施形態では、１投目〜４投目のシュート操作の際のひねり量Ｒからプレイヤの癖（すなわち、シュート操作を行ったときのひねり量Ｒの傾向）を検出し、５投目以降のシュート操作の際には、当該検出したプレイヤの癖を相殺するようにひねり量Ｒを補正する。これにより、プレイヤに固有の癖が原因で１投目〜４投目のシュートが失敗したとしても、プレイヤが常に一定のフォームでシュート操作を行ってさえいれば、５投目以降のボールの投球方向の方位角φは目標値である「０」になり、シュートが成功することになる。
【０１４０】
なお、本実施形態では、バスケットボールゲームにおいて全２５本のシュートを行う際に、１投目〜４投目のシュート操作に基づいてプレイヤの癖（すなわちずれ傾向値）を検出しているが、いずれの投球回のシュート操作に基づいてプレイヤの癖を検出するかは任意である。例えば、１投目のシュートから前回のシュートまでのシュート操作に基づいてプレイヤの癖を検出するようにしてもよい。
【０１４１】
また、本実施形態では、５投目以降のシュートの際に、ひねり量Ｒを補正しているが、５投目よりも前のシュート（例えば３投目のシュート）の際にも、それ以前の投球回のシュート操作（例えば１投目および２投目のシュート操作）に基づいてプレイヤの癖を検出して、ひねり量Ｒを補正するようにしてもよい。
【０１４２】
また、本実施形態では、「１投目のひねり量Ｒ１」〜「４投目のひねり量Ｒ４」の平均値を算出し、今回のひねり量Ｒから当該算出された平均値を減算しているが、単純な平均値の代わりに、加重平均値や、最頻値や、中央値など、用途に応じて任意の代表値を利用してもよい。平均を算出する回数は５回に限らず、他の回数であってもよいし、常に最新の所定回数の平均を用いるようにしてもよい。
【０１４３】
また、本実施形態では、ひねり量Ｒに関してのみプレイヤの癖を相殺するように補正を行っているが、角速度データに基づいて決定される任意のパラメータに関して、プレイヤの癖を相殺するように補正を行ってもよい。例えば、１投目〜４投目のシュートの際に検出された「振り強さＰの極大値」に基づいて、振り強さＰの極大値が理想値（例えば、図２２の成功範囲の中央値）に対してどのようにずれる傾向にあるかを示すずれ傾向値を計算し、５投目以降のシュートの際に当該ずれ傾向値を用いて「振り強さＰの極大値」を補正するようにしてもよい。ステップＳ２２で用いられる「投球時のコントローラのピッチ方向の姿勢」についても同様である。
【０１４４】
以上のように、本実施形態によれば、プレイヤが入力装置８を振ってシュート操作を行ったときのボールの投球方向の方位角φの成功範囲を、難易度に応じて変更することができるので、ゲームが単調になりすぎることがない。なお、本実施形態では難易度に応じて方位角φの成功範囲を変化させているが、他の実施形態では、難易度に応じて仰角θの成功範囲または初速度Ｖの成功範囲を変化させてもよい。
【０１４５】
また、本実施形態によれば、シュートの成否に応じて難易度を変化させることができるので、プレイヤにとってゲームが簡単すぎたり難しすぎたりすることがない。なお、本実施形態ではシュートの成否に応じて難易度を変化させているが、他の実施形態では、角速度を利用した任意のゲーム操作の成否に応じて難易度を変化させてもよい。
【０１４６】
また、本実施形態によれば、プレイヤがバスケットボールゲームをプレイしている最中にプレイヤのシュート操作の癖を学習して、入力装置８のＺ軸回りの角速度を補正するので、プレイヤ毎に固有の癖を相殺することができる。なお、本実施形態では入力装置８のＺ軸回りの角速度を補正しているが、他の実施形態では、入力装置８のＸ軸回りの角速度またはＹ軸回りの角速度を補正してもよい。
【０１４７】
なお、本実施形態ではゲーム装置３においてバスケットボールゲームを実行する場合について説明したが、本発明はバスケットボール以外のゲームにも適用できることは言うまでもない。
【０１４８】
例えば、プレイヤが入力装置８を振ることによって、仮想ゲーム空間におけるプレイヤキャラクタがゴルフクラブをスイングしてゴルフボールを飛ばすようなゴルフゲームにおいて、ゴルフボールがフェアウェイで止まったかラフで止まったかによって、各回のスイングの成否を判定し、その判定結果に応じて次回のスイング操作の難易度（すなわちプレイヤによるスイング操作の際に要求される入力装置８の角速度の成功範囲）を変更するようにしてもよい。
【０１４９】
また例えば、上記のようなゴルフゲームにおいて、全１８ホールのゴルフコースを回るときに、例えば第１ホールにおけるプレイヤのスイング操作に基づいてプレイヤのスイング操作の癖を学習し、第２ホール以降におけるプレイヤのスイング操作の際に、当該プレイヤの癖が相殺されるように、プレイヤによるスイング操作の際に検出される入力装置８の角速度を補正するようにしてもよい。
【０１５０】
なお、本実施形態のバスケットボールゲームは、一人のプレイヤによってプレイされるものであったが、他の実施形態では、複数のプレイヤが対戦プレイするゲームにおいて、プレイヤ毎に難易度を個別に設定および更新するものであってもよい。例えば、第１プレイヤおよび第２プレイヤの２人のプレイヤが、バスケットボールゲームにおいて互いに異なるチームを操作して対戦プレイを行う場合、第１プレイヤによるシュート操作の成否に応じて第１プレイヤ用の難易度を更新し、第２プレイヤによるシュート操作の成否に応じて第２プレイヤ用の難易度を更新してもよい。これにより、熟練度の異なるプレイヤ同士で対戦プレイする場合でも、プレイヤ毎に、各の熟練度に応じた適切な難易度が設定されるため、一方的なゲーム展開になることを効果的に回避することができる。
【０１５１】
なお、本実施形態では、振り強さＰが極大となり、かつその値が投球閾値より大きい場合に、プレイヤキャラクタにシュートを行わせているが、プレイヤキャラクタにシュートを行わせるタイミングはこれに限定されない。
【０１５２】
また、本実施形態では、難易度の初期値を「１」としているが、難易度の初期値は他の値（例えば「５」）であってもよい。
【０１５３】
また、本実施形態では、プレイヤによるシュート操作に基づいて、ボールの初速度および投球方向を決定しているが、本発明はこれに限定されず、ボール以外の任意のオブジェクトを、プレイヤによって操作される入力装置（コントローラ）の所定軸回りの角速度に基づいて移動制御しても構わない。
【０１５４】
また、本実施形態では、ジャイロセンサ５５及び５６によって３軸方向の角速度を検出したが、１軸又は２軸方向の角速度を検出することによっても本発明を実現することができる。
【０１５５】
また、本実施形態では、入力装置８とゲーム装置３とが無線通信によって接続された態様を用いたが、入力装置８とゲーム装置３とがケーブルを介して電気的に接続されてもかまわない。
【０１５６】
また、本実施形態においては、ゲーム装置３のＣＰＵ１０がゲームプログラムを実行することによって、上述したフローチャートによる処理が行われたが、他の実施形態においては、上記処理の一部又は全部は、ゲーム装置３が備える専用回路によって行われてもよい。
【符号の説明】
【０１５７】
１    ゲームシステム
２    テレビ
３    ゲーム装置
４    光ディスク
５    コントローラ
６    マーカ部
７    ジャイロセンサユニット
８    入力装置
１０    ＣＰＵ
１１ｃ    ＧＰＵ
１１ｅ    内部メインメモリ
１２    外部メインメモリ
３２ｉ    Ｂボタン
３７    加速度センサ
５５、５６    ジャイロセンサ
６３    角速度データ
６４    加速度データ
【図１】
2010252861.tif 000005
【図２】
2010252861.tif 000006
【図３】
2010252861.tif 000007
【図４】
2010252861.tif 000008
【図５】
2010252861.tif 000009
【図６】
2010252861.tif 000010
【図７】
2010252861.tif 000011
【図８】
2010252861.tif 000012
【図９】
2010252861.tif 000013
【図１０】
2010252861.tif 000014
【図１１】
2010252861.tif 000015
【図１２】
2010252861.tif 000016
【図１３】
2010252861.tif 000017
【図１４】
2010252861.tif 000018
【図１５】
2010252861.tif 000019
【図１６】
2010252861.tif 000020
【図１７】
2010252861.tif 000021
【図１８】
2010252861.tif 000022
【図１９】
2010252861.tif 000023
【図２０】
2010252861.tif 000024
【図２１】
2010252861.tif 000025
【図２２】
2010252861.tif 000026
【図２３】
2010252861.tif 000027
【図２４】
2010252861.tif 000028
【図２５】
2010252861.tif 000029
【図２６】
2010252861.tif 000030
【図２７】
2010252861.tif 000031
【図２８】
2010252861.tif 000032
【図２９】
2010252861.tif 000033
【図３０】
2010252861.tif 000034