(57)【特許請求の範囲】
【請求項１】
操作装置を用いた操作に基づいた情報処理を行う情報処理装置に含まれるコンピュータで実行される情報処理プログラムであって、
前記コンピュータを、
所定の条件に基づき、前記操作装置に対する振り操作が行われているか否かを判定する振り操作判定部と、
前記振り操作が行われていると判定された場合に、前記操作装置に対する当該振り操作の位置移動を示すデータを含む第１の操作データに基づいて、仮想空間においてオブジェクトの第１の移動方向への移動を開始させる移動開始判定部と、
前記振り操作の終了後であると判定された場合に、前記操作装置に対する回転操作または前記操作装置の姿勢を変化させる操作を示すデータを含む第２の操作データに基づいて、前記移動が開始された前記オブジェクトの移動方向を前記第１の移動方向から曲げて移動するように制御する軌道制御部として機能させる、情報処理プログラム。
【請求項２】
前記軌道制御部は、前記第２の操作データに基づいて、前記操作装置の振り操作の終了後であると判定された後に行われた前記操作装置の回転の方向に、前記移動が開始された前記オブジェクトの移動方向を前記第１の移動方向から曲げて移動するように制御する、請求項１に記載の情報処理プログラム。
【請求項３】
前記軌道制御部は、前記操作装置の回転操作を示すデータとして、実空間における重力方向周りの回転操作を示すデータを用いて前記オブジェクトの移動方向を制御する、請求項１または２に記載の情報処理プログラム。
【請求項４】
前記軌道制御部は、前記操作装置の回転操作を示すデータとして、実空間において前記操作装置に対する振り操作において位置移動した方向周りの当該操作装置の回転を示すデータを用いて前記オブジェクトの移動方向を制御する、請求項１または２に記載の情報処理プログラム。
【請求項５】
前記軌道制御部は、前記操作装置の姿勢を変化させる操作を示すデータとして、実空間における重力方向を基準とした傾きを示すデータを用いて前記オブジェクトの移動方向を制御する、請求項１乃至４の何れか１つに記載の情報処理プログラム。
【請求項６】
前記第１の操作データは、前記操作装置に設けられた加速度センサにおける検出結果に基づくものであり、
前記第２の操作データは、前記操作装置に設けられたジャイロセンサまたは加速度センサにおける検出結果に基づくものである、請求項１乃至５の何れか１つに記載の情報処理プログラム。
【請求項７】
前記第１の操作データは、前記操作装置に対する回転操作または前記操作装置の姿勢を変化させる操作を示すデータを含み、
前記移動開始判定部は、前記第１の操作データに含まれる前記操作装置に対する回転操作または前記操作装置の姿勢を変化させる操作を示すデータに基づいて、前記第１の移動方向を決定する、請求項１乃至５の何れか１つに記載の情報処理プログラム。
【請求項８】
前記第１の操作データに含まれる前記操作装置に対する回転操作を示すデータは、前記操作装置に生じている角速度を示すデータであり、
前記移動開始判定部は、
実空間における前記角速度の重力方向周りの成分の大きさが、前記角速度から重力方向周りの成分を除いた大きさよりも大きい場合、前記角速度の重力方向周りの成分を用いて前記第１の移動方向を決定し、
実空間における前記角速度の重力方向周りの成分の大きさが、前記角速度から重力方向周りの成分を除いた大きさ以下の場合は、実空間において前記操作装置が前記位置移動した方向周りの前記角速度の成分を用いて前記第１の移動方向を決定する、請求項７に記載の情報処理プログラム。
【請求項９】
前記移動開始判定部は、前記位置移動した方向周りの前記角速度の成分を用いて前記第１の移動方向を決定する場合、当該方向周りの角速度成分が正であるときと負であるときで、前記操作装置の回転を示すデータの大きさに対する曲がりの程度を変えて前記第１の移動方向を決定する、請求項８に記載の情報処理プログラム。
【請求項１０】
前記第１の移動方向は、前記オブジェクトを含む仮想画像を生成する仮想カメラから見て前後方向であり、
前記軌道制御部は、前記第２の操作データに基づいて、前記仮想カメラから見て上下左右方向に前記第１の移動方向から曲げて前記オブジェクトの移動方向を制御する、請求項１乃至９の何れか１つに記載の情報処理プログラム。
【請求項１１】
前記軌道制御部は、仮想空間において前記オブジェクトが移動開始位置に戻る方向に移動している場合、前記第２の操作データに基づいて前記オブジェクトの移動方向の変更をしない、請求項１乃至１０の何れか１つに記載の情報処理プログラム。
【請求項１２】
前記オブジェクトは、仮想空間におけるプレイヤキャラクタの拳である、請求項１乃至１１の何れか１つに記載の情報処理プログラム。
【請求項１３】
前記情報処理装置は、２つの前記操作装置を用いた操作に基づいた情報処理を行い、
前記移動開始判定部および前記軌道制御部は、前記２つの操作装置それぞれの操作に基づいて、２つの前記オブジェクトそれぞれの移動を開始する処理およびそれぞれの移動方向を曲げる処理を行う、請求項１乃至１２の何れか１つに記載の情報処理プログラム。
【請求項１４】
前記２つの操作装置両方の操作に基づいて、仮想空間において前記オブジェクトを有するプレイヤキャラクタを移動させるプレイヤキャラクタ移動制御部として、さらに前記コンピュータを機能させる、請求項１３に記載の情報処理プログラム。
【請求項１５】
操作装置を用いた操作に基づいた情報処理を行う情報処理装置であって、
所定の条件に基づき、前記操作装置に対する振り操作が行われているか否かを判定する振り操作判定部と、
前記振り操作が行われていると判定された場合に、前記操作装置に対する当該振り操作の位置移動を示すデータを含む第１の操作データに基づいて、仮想空間においてオブジェクトの第１の移動方向への移動を開始させる移動開始判定部と、
前記振り操作の終了後であると判定された場合に、前記操作装置に対する回転操作または前記操作装置の姿勢を変化させる操作を示すデータを含む第２の操作データに基づいて、前記移動が開始された前記オブジェクトの移動方向を前記第１の移動方向から曲げて移動するように制御する軌道制御部とを備える、情報処理装置。
【請求項１６】
操作装置と、当該操作装置を用いた操作に基づいた情報処理を行う情報処理装置とを含む情報処理システムであって、
前記情報処理装置は、
所定の条件に基づき、前記操作装置に対する振り操作が行われているか否かを判定する振り操作判定部と、
前記振り操作が行われていると判定された場合に、前記操作装置に対する当該振り操作の位置移動を示すデータを含む第１の操作データに基づいて、仮想空間においてオブジェクトの第１の移動方向への移動を開始させる移動開始判定部と、
前記振り操作の終了後であると判定された場合に、前記操作装置に対する回転操作または前記操作装置の姿勢を変化させる操作を示すデータを含む第２の操作データに基づいて、前記移動が開始された前記オブジェクトの移動方向を前記第１の移動方向から曲げて移動するように制御する軌道制御部とを備える、情報処理システム。
【請求項１７】
操作装置を用いた操作に基づいた情報処理を行う情報処理方法であって、
所定の条件に基づき、前記操作装置に対する振り操作が行われているか否かを判定する振り操作判定ステップと、
前記振り操作が行われていると判定された場合に、前記操作装置に対する当該振り操作の位置移動を示すデータを含む第１の操作データに基づいて、仮想空間においてオブジェクトの第１の移動方向への移動を開始させる移動開始判定ステップと、
前記振り操作の終了後であると判定された場合に、前記操作装置に対する回転操作または前記操作装置の姿勢を変化させる操作を示すデータを含む第２の操作データに基づいて、前記移動が開始された前記オブジェクトの移動方向を前記第１の移動方向から曲げて移動するように制御する軌道制御ステップとを含む、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の操作装置を用いて操作可能なゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法に関する。
【背景技術】
【０００２】
従来、少なくとも２軸方向の加速度を検出する入力装置を用いたゲーム処理を行うゲーム装置がある（例えば、特許文献１参照）。例えば、上記特許文献１に開示されたゲーム装置は、入力装置に生じる加速度の種類に応じて、仮想空間において仮想オブジェクトを動作させてボクシングを行うゲームを開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−６７８６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、仮想的なボクシングゲームにおいてパンチを繰り出した場合、当該パンチが打ち終わるまで次のパンチを繰り出すための操作判定が行われないことが一般的である。したがって、パンチを繰り出してから打ち終わるまでに所定の時間を要する場合、プレイヤが当該パンチを打ち終わるまで待ちきれないことがあり、結果として次のパンチを繰り出すタイミングを逸することがあり得る。
【０００５】
それ故、本発明の目的は、操作指示可能な状態が断続的に生じるゲームにおいて、操作を容易にすることが可能なゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。なお、特許請求の範囲の記載を解釈する際に、特許請求の範囲の記載によってのみその範囲が解釈されるべきであることが理解され、特許請求の範囲の記載と本欄の記載とが矛盾する場合には、特許請求の範囲の記載が優先する。
【０００７】
本発明のゲーム装置の一構成例は、加速度センサおよびジャイロセンサをそれぞれ備えた第１操作装置および第２操作装置を用いた操作に基づいたゲーム処理を行う。ゲーム装置は、操作データ取得部、振り判定部、オブジェクト移動制御部、およびゲーム処理部を備える。操作データ取得部は、第１操作装置から加速度センサの検出結果に基づいた第１加速度データおよびジャイロセンサの検出結果に基づいた第１角速度データを含む第１操作データを取得し、第２操作装置から加速度センサの検出結果に基づいた第２加速度データおよびジャイロセンサの検出結果に基づいた第２角速度データを含む第２操作データを取得する。振り判定部は、少なくとも第１加速度データに基づいて第１操作装置に対する第１振り入力を判定し、少なくとも第２加速度データに基づいて第２操作装置に対する第２振り入力を判定する。オブジェクト移動制御部は、仮想空間において、第１操作データに基づいて第１オブジェクトの移動を制御し、第２操作データに基づいて第２オブジェクトの移動を制御する。ゲーム処理部は、仮想空間における第１オブジェクトおよび第２オブジェクトに基づいたゲーム処理を行う。オブジェクト移動制御部は、移動開始判定部、移動方向設定部、移動開始部、軌道制御部、および移動終了設定部を含む。移動開始判定部は、第１オブジェクトが移動開始可能な第１移動開始可能状態において第１振り入力があったと判定された場合と、第１振り入力があったと判定された後の所定期間以内に当該第１移動開始可能状態になった場合とに、少なくとも当該第１振り入力に基づいて第１オブジェクトを仮想空間において移動開始させる判定を行い、第２オブジェクトが移動開始可能な第２移動開始可能状態において第２振り入力があったと判定された場合と、第２振り入力があったと判定された後の所定期間以内に当該第２移動開始可能状態になった場合とに、少なくとも当該第２振り入力に基づいて第２オブジェクトを仮想空間において移動開始させる判定を行う。移動方向設定部は、少なくとも第１角速度データに基づいて第１操作装置の姿勢を算出して、当該第１操作装置の姿勢に基づいて仮想空間における第１オブジェクトの移動方向を設定し、少なくとも第２角速度データに基づいて第２操作装置の姿勢を算出して、当該第２操作装置の姿勢に基づいて仮想空間における第２オブジェクトの移動方向を設定する。移動開始部は、移動開始判定部において第１オブジェクトを移動開始させると判定された場合に第１オブジェクトを移動開始させ、移動方向設定部において設定された第１オブジェクトの移動方向へ移動させ、移動開始判定部において第２オブジェクトを移動開始させると判定された場合に第２オブジェクトを移動開始させ、移動方向設定部において設定された第２オブジェクトの移動方向へ移動させる。軌道制御部は、第１オブジェクトの移動開始後における第１操作装置の姿勢変化に応じて、仮想空間における第１オブジェクトの軌道を変化させ、第２オブジェクトの移動開始後における第２操作装置の姿勢変化に応じて、仮想空間における第２オブジェクトの軌道を変化させる。移動終了設定部は、所定条件に基づいて第１オブジェクトの移動を終了した後に当該第１オブジェクトを第１所定位置に配置させて第１移動開始可能状態に設定し、第２オブジェクトの移動を終了した後に当該第２オブジェクトを第２所定位置に配置させて第２移動開始可能状態に設定する。
【０００８】
上記によれば、第１オブジェクトおよび第２オブジェクトは、それぞれ移動中であっても第１操作装置や第２操作装置を用いた操作によって軌道が変化するため、第１移動開始可能状態となるまでの時間や第２移動開始可能状態となるまでに時間を要することが考えられる。しかしながら、第１移動開始可能状態でない場合であっても、第１操作装置の振り入力があってから所定期間以内に第１移動開始可能状態になれば当該振り入力に基づいて第１オブジェクトの動作制御が可能となる。また、第２移動開始可能状態でない場合であっても、第２操作装置の振り入力があってから所定期間以内に第２移動開始可能状態になれば当該振り入力に基づいて第２オブジェクトの動作制御が可能となる。したがって、第１移動開始可能状態および／または第２移動開始可能状態になるまでに時間を要する場合であっても、操作を容易にすることが可能となる。
【０００９】
また、上記移動開始判定部は、第１オブジェクトおよび第２オブジェクトの一方が移動開始した時点から所定期間以内に他方を移動開始させる判定がされた場合、第１オブジェクトおよび第２オブジェクトが組となった所定のアクションを開始させる判定を、さらに行ってもよい。
【００１０】
上記によれば、第１オブジェクトの移動開始タイミングと第２オブジェクトの移動開始タイミングとの関係に基づいて、所定のアクションが行われるため、今までにない操作環境に基づいたゲームが可能となる。
【００１１】
また、上記ゲーム処理部は、衝突処理部を含んでもよい。衝突処理部は、仮想空間において第１オブジェクトおよび／または第２オブジェクトと他のオブジェクトとの衝突判定を行い、当該判定において肯定判定された場合に当該他のオブジェクトに対して所定の処理を行う。衝突処理部は、移動開始判定部において所定のアクションが開始されると判定された場合、仮想空間において第１オブジェクトおよび第２オブジェクトの間に設定される所定領域と他のオブジェクトとの衝突判定を、さらに行ってもよい。
【００１２】
上記によれば、第１オブジェクトおよび第２オブジェクトだけでなく、第１オブジェクトおよび第２オブジェクトの間にも衝突判定領域が設定されるため、戦略性に富んだゲームが可能となる。
【００１３】
また、上記軌道制御部は、所定のアクションが行われている期間においても、第１操作装置の姿勢変化に応じて第１オブジェクトの軌道を変化させ、第２操作装置の姿勢変化に応じて第２オブジェクトの軌道を変化させてもよい。
【００１４】
上記によれば、移動中の第１オブジェクトおよび／または第２オブジェクトの軌道を変化させることによって、第１オブジェクトおよび第２オブジェクトの組の関係も変化するため、さらに戦略性に富んだゲームが可能となる。
【００１５】
また、上記振り判定部は、第１加速度データが示す加速度の大きさが第１閾値を超えたか否かに基づいて第１振り入力を判定し、第２加速度データが示す加速度の大きさが第２閾値を越えたか否かに基づいて第２振り入力を判定してもよい。
【００１６】
上記によれば、第１操作装置および第２操作装置をそれぞれ所定の加速度以上の動きで振り動かすことによって、ゲーム操作が可能となる。
【００１７】
また、上記移動方向設定部は、実空間における重力方向に対する第１操作装置の左右方向の軸の傾きに基づいて、第１操作装置の姿勢を算出し、当該重力方向に対する第２操作装置の左右方向の軸の傾きに基づいて、第２操作装置の姿勢を算出してもよい。
【００１８】
上記によれば、第１操作装置および／または第２操作装置を実空間におけるロール方向に傾けることによって、第１オブジェクトおよび／または第２オブジェクトの移動方向を制御することができる。
【００１９】
また、上記軌道制御部は、第１操作装置の左右方向の軸の前後方向周りの回転角度の変化に基づいて、第１操作装置の姿勢変化を算出し、第２操作装置の左右方向の軸の前後方向周りの回転角度の変化に基づいて、第２操作装置の姿勢変化を算出してもよい。
【００２０】
上記によれば、第１操作装置および／または第２操作装置をロール方向に回転させることによって、移動中の第１オブジェクトおよび／または第２オブジェクトの軌道を制御することができる。
【００２１】
また、上記軌道制御部は、実空間における重力方向に対する第１操作装置の前後方向の軸の回転角度の変化に基づいて、第１操作装置の姿勢変化を算出し、当該重力方向に対する第２操作装置の前後方向の軸の回転角度の変化に基づいて、第２操作装置の姿勢変化を算出してもよい。
【００２２】
上記によれば、第１操作装置および／または第２操作装置を実空間におけるヨー方向に回転させることによって、移動中の第１オブジェクトおよび／または第２オブジェクトの軌道を制御することができる。
【００２３】
また、上記オブジェクト移動制御部は、移動開始位置設定部を、さらに含んでもよい。移動開始位置設定部は、少なくとも第１角速度データに基づいた第１操作装置の姿勢と少なくとも第２角速度データに基づいた第２操作装置の姿勢との両方に基づいてプレイヤオブジェクトを移動させることによって、当該プレイヤキャラクタの位置を基準とした相対的な位置に設定される第１所定位置および第２所定位置を移動させる。
【００２４】
上記によれば、第１操作装置の姿勢および第２操作装置の姿勢の両方に基づいて、第１オブジェクトおよび第２オブジェトの移動開始位置を変化させることができるため、さらにゲーム操作のバリエーションを増やすことができる。
【００２５】
また、本発明は、ゲームプログラム、ゲームシステム、およびゲーム処理方法の形態で実施されてもよい。
【発明の効果】
【００２６】
本発明によれば、オブジェクトの移動開始可能状態になるまでに時間を要する場合であっても、操作を容易にすることが可能となる。
【図面の簡単な説明】
【００２７】
【図１】本実施形態における情報処理システム１の一例において、本体装置２に左コントローラ３および右コントローラ４を装着した状態を示す図
【図２】本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図
【図３】本体装置２の一例を示す六面図
【図４】左コントローラ３の一例を示す六面図
【図５】右コントローラ４の一例を示す六面図
【図６】本実施形態における情報処理システムの他の例の全体構成を示す図
【図７】クレードル５の一例の外観構成を示す図
【図８】本体装置２の内部構成の一例を示すブロック図
【図９】情報処理システム１の内部構成の一例を示すブロック図
【図１０】クレードル５の内部構成の一例を示すブロック図
【図１１】離脱状態において、１人のユーザが左コントローラ３および右コントローラ４の組を把持して情報処理システム１を利用する様子の一例を示す図
【図１２】離脱状態において、１人のユーザが左コントローラ３および右コントローラ４の組を把持して情報処理システム１を利用する様子の一例を示す図
【図１３】左コントローラ３および右コントローラ４を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図
【図１４】左コントローラ３および右コントローラ４を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図
【図１５】左コントローラ３および右コントローラ４を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図
【図１６】本実施形態において本体装置２のＤＲＡＭ８５に設定されるデータ領域の一例を示す図
【図１７】情報処理システム１で実行されるゲーム処理の一例を示すフローチャート
【図１８】図１７におけるステップＳ１４４およびステップＳ１４５において行われるコントローラ振り認識処理の詳細の一例を示すサブルーチン
【図１９】図１７におけるステップＳ１４４およびステップＳ１４５において行われるコントローラ振り認識処理の詳細の一例を示すサブルーチン
【図２０】図１７におけるステップＳ１４６およびステップＳ１４７において行われるオブジェクト軌道変化処理の詳細の一例を示すサブルーチン
【図２１】図１７におけるステップＳ１４６およびステップＳ１４７において行われるオブジェクト軌道変化処理の詳細の一例を示すサブルーチン
【図２２】図１７におけるステップＳ１４６およびステップＳ１４７において行われるオブジェクト軌道変化処理の詳細の一例を示すサブルーチン
【図２３】図１７におけるステップＳ１４８において行われるプレイヤオブジェクト移動処理の詳細の一例を示すサブルーチン
【発明を実施するための形態】
【００２８】
以下、本実施形態の一例に係るゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法について説明する。本実施形態におけるゲームシステムの一例となる情報処理システム１は、本体装置（情報処理装置；本実施形態ではゲーム装置本体として機能する）２と左コントローラ３および右コントローラ４とによって構成される。また、上記情報処理システムの他の態様は、上記構成にクレードル５（図５、図７等参照）を加えて構成されることもある。本実施形態における情報処理システム１は、本体装置２に対して左コントローラ３および右コントローラ４が着脱可能であり、左コントローラ３および右コントローラ４をそれぞれ本体装置２に装着して一体化された装置として利用でき、また、本体装置２と左コントローラ３および右コントローラ４とを別体として利用することもできる（図２参照）。また、情報処理システム１は、本体装置２に画像を表示する態様での利用と、テレビ等の他の表示装置に画像を表示させる態様での利用が可能である。前者の態様において、情報処理システム１は、携帯型装置（例えば、携帯ゲーム機）として利用することができる。また、後者の態様において、情報処理システム１は、据置型装置（例えば、据置型ゲーム機）として利用することができる。
【００２９】
図１は、本実施形態における情報処理システム１の一例において、本体装置２に左コントローラ３および右コントローラ４を装着した状態を示す図である。図１に示すように、情報処理システム１は、本体装置２と、左コントローラ３と、右コントローラ４とを含む。左コントローラ３および右コントローラ４は、それぞれ本体装置２に装着されて一体化されている。本体装置２は、情報処理システム１における各種の処理（例えば、ゲーム処理）を実行する装置である。本体装置２は、ディスプレイ１２を備える。左コントローラ３および右コントローラ４は、ユーザが入力を行うための操作部を備える装置である。
【００３０】
図２は、本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図である。図１および図２に示すように、左コントローラ３および右コントローラ４は、本体装置２に着脱可能である。左コントローラ３は、本体装置２の左側面（図１に示すｘ軸正方向側の側面）に装着することができ、本体装置２の左側面に沿って図１に示すｙ軸方向にスライドさせることによって本体装置２に着脱可能となっている。また、右コントローラ４は、本体装置２の右側面（図１に示すｘ軸負方向側の側面）に装着することができ、本体装置２の右側面に沿って図１に示すｙ軸方向にスライドさせることによって本体装置２に着脱可能となっている。なお、以下において、左コントローラ３および右コントローラ４の総称として「コントローラ」と記載することがある。なお、本実施形態において、１人のユーザが操作する「操作装置」は、１つのコントローラ（例えば、左コントローラ３および右コントローラ４の一方）でも複数のコントローラ（例えば、左コントローラ３および右コントローラ４の両方、またはさらに他のコントローラを含んでもよい）でもよく、当該「操作装置」は、１以上のコントローラによって構成可能となる。以下、本体装置２と左コントローラ３および右コントローラ４との具体的な構成の一例について説明する。
【００３１】
図３は、本体装置２の一例を示す六面図である。図３に示すように、本体装置２は、略板状のハウジング１１を備える。本実施形態において、ハウジング１１の主面（換言すれば、表側の面、すなわち、ディスプレイ１２が設けられる面）は、大略的には矩形形状である。本実施形態においては、ハウジング１１は、横長の形状であるものとする。つまり、本実施形態においては、ハウジング１１の主面の長手方向（すなわち、図１に示すｘ軸方向）を横方向（左右方向とも言う）と呼び、当該主面の短手方向（すなわち、図１に示すｙ軸方向）を縦方向（上下方向とも言う）と呼び、主面に垂直な方向（すなわち、図１に示すｚ軸方向）を奥行方向（前後方向とも言う）と呼ぶこととする。本体装置２は、本体装置２が横長となる向きで利用されることが可能である。また、本体装置２が縦長となる向きで利用されることも可能である。その場合には、ハウジング１１を縦長の形状であるものと見なしてもよい。
【００３２】
なお、ハウジング１１の形状および大きさは、任意である。一例として、ハウジング１１は、携帯可能な大きさであってよい。また、本体装置２単体または本体装置２に左コントローラ３および右コントローラ４が装着された一体型装置は、携帯型装置となってもよい。また、本体装置２または一体型装置が手持ち型の装置となってもよい。また、本体装置２または一体型装置が可搬型装置となってもよい。
【００３３】
図３に示すように、本体装置２は、ハウジング１１の主面に設けられるディスプレイ１２を備える。ディスプレイ１２は、本体装置２が取得または生成した画像（静止画であってもよいし、動画であってもよい）を表示する。本実施形態においては、ディスプレイ１２は、液晶表示装置（ＬＣＤ）とする。ただし、ディスプレイ１２は任意の種類の表示装置であってよい。
【００３４】
また、本体装置２は、ディスプレイ１２の画面上にタッチパネル１３を備える。本実施形態においては、タッチパネル１３は、マルチタッチ入力が可能な方式（例えば、静電容量方式）のものである。ただし、タッチパネル１３は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式（例えば、抵抗膜方式）のものであってもよい。
【００３５】
本体装置２は、ハウジング１１の内部においてスピーカ（すなわち、図８に示すスピーカ８８）を備えている。図３に示すように、ハウジング１１の主面には、スピーカ孔１１ａおよび１１ｂが形成される。そして、スピーカ８８の出力音は、これらのスピーカ孔１１ａおよび１１ｂからそれぞれ出力される。
【００３６】
図３に示すように、本体装置２は、ハウジング１１の左側面において左レール部材１５を備える。左レール部材１５は、左コントローラ３を本体装置２に着脱可能に装着するための部材である。左レール部材１５は、ハウジング１１の左側面において、上下方向に沿って延びるように設けられる。左レール部材１５は、左コントローラ３のスライダ（すなわち、図４に示すスライダ４０）と係合可能な形状を有しており、左レール部材１５とスライダ４０とによってスライド機構が形成される。このスライド機構によって、左コントローラ３を本体装置２に対してスライド可能かつ着脱可能に装着することができる。
【００３７】
また、本体装置２は左側端子１７を備える。左側端子１７は、本体装置２が左コントローラ３と有線通信を行うための端子である。左側端子１７は、左コントローラ３が本体装置２に装着された場合に、左コントローラ３の端子（図５に示す端子４２）と接触する位置に設けられる。左側端子１７の具体的な位置は任意である。本実施形態においては、図３に示すように、左側端子１７は、左レール部材１５の底面に設けられる。また、本実施形態においては、左側端子１７は、左レール部材１５の底面における下側の端部付近に設けられる。
【００３８】
図３に示すように、ハウジング１１の右側面には、左側面に設けられる構成と同様の構成が設けられる。すなわち、本体装置２は、ハウジング１１の右側面において右レール部材１９を備える。右レール部材１９は、ハウジング１１の右側面において、上下方向に沿って延びるように設けられる。右レール部材１９は、右コントローラ４のスライダ（すなわち、図５に示すスライダ６２）と係合可能な形状を有しており、右レール部材１９とスライダ６２とによってスライド機構が形成される。このスライド機構によって、右コントローラ４を本体装置２に対してスライド可能かつ着脱可能に装着することができる。
【００３９】
また、本体装置２は右側端子２１を備える。右側端子２１は、本体装置２が右コントローラ４と有線通信を行うための端子である。右側端子２１は、右コントローラ４が本体装置２に装着された場合に、右コントローラ４の端子（図５に示す端子６４）と接触する位置に設けられる。右側端子２１の具体的な位置は任意である。本実施形態においては、図３に示すように、右側端子２１は、右レール部材１９の底面に設けられる。また、本実施形態においては、右側端子２１は、右レール部材１９の底面における下側の端部付近に設けられる。
【００４０】
図３に示すように、本体装置２は、第１スロット２３を備える。第１スロット２３は、ハウジング１１の上側面に設けられる。第１スロット２３は、第１の種類の記憶媒体を装着可能な形状を有する。第１の種類の記憶媒体は、例えば、情報処理システム１およびそれと同種の情報処理装置に専用の記憶媒体（例えば、専用メモリカード）である。第１の種類の記憶媒体は、例えば、本体装置２で利用されるデータ（例えば、アプリケーションのセーブデータ等）、および／または、本体装置２で実行されるプログラム（例えば、アプリケーションのプログラム等）を記憶するために用いられる。また、本体装置２は、電源ボタン２８を備える。図３に示すように、電源ボタン２８は、ハウジング１１の上側面に設けられる。電源ボタン２８は、本体装置２の電源のオン／オフを切り替えるためのボタンである。
【００４１】
本体装置２は、音声入出力端子（具体的には、イヤホンジャック）２５を備える。すなわち、本体装置２は、音声入出力端子２５にマイクやイヤホンを装着することができる。図３に示すように、音声入出力端子２５は、ハウジング１１の上側面に設けられる。
【００４２】
本体装置２は、音量ボタン２６ａおよび２６ｂを備える。図３に示すように、音量ボタン２６ａおよび２６ｂは、ハウジング１１の上側面に設けられる。音量ボタン２６ａおよび２６ｂは、本体装置２によって出力される音量を調整する指示を行うためのボタンである。すなわち、音量ボタン２６ａは、音量を下げる指示を行うためのボタンであり、音量ボタン２６ｂは、音量を上げる指示を行うためのボタンである。
【００４３】
また、ハウジング１１には、排気孔１１ｃが形成される。図３に示すように、排気孔１１ｃは、ハウジング１１の上側面に形成される。排気孔１１ｃは、ハウジング１１の内部で発生した熱をハウジング１１の外部へ排気する（換言すれば、放出する）ために形成される。すなわち、排気孔１１ｃは、排熱孔であるとも言える。
【００４４】
本体装置２は、下側端子２７を備える。下側端子２７は、本体装置２が、後述するクレードル５と通信を行うための端子である。図３に示すように、下側端子２７は、ハウジング１１の下側面に設けられる。本体装置２がクレードル５に装着された場合、下側端子２７は、クレードル５の端子（図７に示す本体端子７３）に接続される。本実施形態において、下側端子２７は、ＵＳＢコネクタ（より具体的には、メス側コネクタ）である。
【００４５】
また、本体装置２は第２スロット２４を備える。本実施形態においては、第２スロット２４は、ハウジング１１の下側面に設けられる。ただし、他の実施形態においては、第２スロット２４は、第１スロット２３とは同じ面に設けられてもよい。第２スロット２４は、第１の種類とは異なる第２の種類の記憶媒体を装着可能な形状を有する。第２の種類の記憶媒体は、例えば、汎用の記憶媒体であってもよい。例えば、第２の種類の記憶媒体は、ＳＤカードであってもよい。第２の種類の記憶媒体は、例えば、第１の種類の記憶媒体と同様、本体装置２で利用されるデータ（例えば、アプリケーションのセーブデータ等）、および／または、本体装置２で実行されるプログラム（例えば、アプリケーションのプログラム等）を記憶するために用いられる。
【００４６】
また、ハウジング１１には、吸気孔１１ｄが形成される。図３に示すように、吸気孔１１ｄは、ハウジング１１の下側面に形成される。吸気孔１１ｄは、ハウジング１１の外部の空気をハウジング１１の内部へ吸気する（換言すれば、導入する）ために形成される。本実施形態においては、排気孔１１ｃが形成される面の反対側の面に吸気孔１１ｄが形成されるので、ハウジング１１内部の放熱を効率良く行うことができる。
【００４７】
以上に説明した、ハウジング１１に設けられる各構成要素（具体的には、ボタン、スロット、端子等）の形状、数、および設置位置は、任意である。例えば、他の実施形態においては、電源ボタン２８および各スロット２３および２４のうちのいくつかは、ハウジング１１の他の側面あるいは背面に設けられてもよい。また、他の実施形態においては、本体装置２は、上記各構成要素のうちいくつかを備えていない構成であってもよい。
【００４８】
図４は、左コントローラ３の一例を示す六面図である。図４に示すように、左コントローラ３は、ハウジング３１を備える。本実施形態において、ハウジング３１は、略板状である。また、ハウジング３１の主面（換言すれば、表側の面、すなわち、図１に示すｚ軸負方向側の面）は、大略的には矩形形状である。また、本実施形態においては、ハウジング３１は、縦長の形状、すなわち、上下方向（すなわち、図１に示すｙ軸方向）に長い形状である。左コントローラ３は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング３１は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ３は、横長となる向きで把持されることも可能である。左コントローラ３が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。なお、ハウジング３１の形状は任意であり、他の実施形態においては、ハウジング３１は略板状でなくてもよい。また、ハウジング３１は、矩形形状でなくてもよく、例えば半円状の形状等であってもよい。また、ハウジング３１は、縦長の形状でなくてもよい。
【００４９】
ハウジング３１の上下方向の長さは、本体装置２のハウジング１１の上下方向の長さとほぼ同じである。また、ハウジング３１の厚さ（すなわち、前後方向の長さ、換言すれば、図１に示すｚ軸方向の長さ）は、本体装置２のハウジング１１の厚さとほぼ同じである。したがって、左コントローラ３が本体装置２に装着された場合（図１参照）には、ユーザは、本体装置２と左コントローラ３とを一体の装置のような感覚で把持することができる。
【００５０】
また、図４に示すように、ハウジング３１の主面は、左側の角部分が、右側の角部分よりも丸みを帯びた形状になっている。すなわち、ハウジング３１の上側面と左側面との接続部分、および、ハウジング３１の下側面と左側面との接続部分は、その上側面と右側面との接続部分、および、その下側面と右側面との接続部分に比べて、丸くなっている（換言すれば、面取りにおけるＲが大きい）。したがって、左コントローラ３が本体装置２に装着された場合（図１参照）には、一体型装置となった情報処理システム１の左側が丸みを帯びた形状となるので、ユーザにとって持ちやすい形状となる。
【００５１】
左コントローラ３は、アナログスティック３２を備える。図４に示すように、アナログスティック３２が、ハウジング３１の主面に設けられる。アナログスティック３２は、方向を入力することが可能な方向入力部の一例である。アナログスティック３２は、ハウジング３１の主面に平行な全方向（すなわち、上下左右および斜め方向を含む、３６０°の方向）に傾倒可能なスティック部材を有する。ユーザは、スティック部材を傾倒することによって傾倒方向に応じた方向の入力（および、傾倒した角度に応じた大きさの入力）が可能である。なお、方向入力部は、十字キーまたはスライドスティック等であってもよい。また、本実施形態においては、スティック部材を（ハウジング３１に垂直な方向に）押下する入力が可能である。すなわち、アナログスティック３２は、スティック部材の傾倒方向および傾倒量に応じた方向および大きさの入力と、スティック部材に対する押下入力とを行うことが可能な入力部である。
【００５２】
左コントローラ３は、４つの操作ボタン３３〜３６（具体的には、右方向ボタン３３、下方向ボタン３４、上方向ボタン３５、および、左方向ボタン３６）を備える。図４に示すように、これら４つの操作ボタン３３〜３６は、ハウジング３１の主面においてアナログスティック３２の下側に設けられる。なお、本実施形態においては、左コントローラ３の主面に設けられる操作ボタンを４つとするが、操作ボタンの数は任意である。これらの操作ボタン３３〜３６は、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションプログラム）に応じた指示を行うために用いられる。なお、本実施形態においては、各操作ボタン３３〜３６は方向入力を行うために用いられてもよいことから、各操作ボタン３３〜３６を、右方向ボタン３３、下方向ボタン３４、上方向ボタン３５、および、左方向ボタン３６と呼んでいる。ただし、各操作ボタン３３〜３６は、方向入力以外の指示を行うために用いられてもよい。
【００５３】
また、左コントローラ３は−（マイナス）ボタン４７を備える。図４に示すように、−ボタン４７は、ハウジング３１の主面に設けられ、より具体的には、主面における右上領域に設けられる。−ボタン４７は、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションプログラム）に応じた指示を行うために用いられる。−ボタン４７は、例えば、ゲームアプリケーションにおいてセレクトボタン（例えば、選択項目の切り替えに用いられるボタン）として用いられる。
【００５４】
左コントローラ３の主面に設けられる各操作部（具体的には、アナログスティック３２および上記各ボタン３３〜３６、４７）は、左コントローラ３が本体装置２に装着される場合、一体型装置となった情報処理システム１を把持するユーザの例えば左手の親指によって操作される。また、左コントローラ３が本体装置２から外された状態において両手で横向きに把持されて使用される場合、上記各操作部は、左コントローラ３を把持するユーザの例えば左右の手の親指で操作される。具体的には、この場合、アナログスティック３２はユーザの左手の親指で操作され、各操作ボタン３３〜３６はユーザの右手の親指で操作される。
【００５５】
左コントローラ３は、第１Ｌボタン３８を備える。また、左コントローラ３は、ＺＬボタン３９を備える。これらの操作ボタン３８および３９は、上記操作ボタン３３〜３６と同様、本体装置２で実行される各種プログラムに応じた指示を行うために用いられる。図４に示すように、第１Ｌボタン３８は、ハウジング３１の側面のうちの左上部分に設けられる。また、ＺＬボタン３９は、ハウジング３１の側面から裏面にかけての左上部分（厳密には、ハウジング３１を表側から見たときの左上部分）に設けられる。つまり、ＺＬボタン３９は、第１Ｌボタン３８の後側（図１に示すｚ軸正方向側）に設けられる。本実施形態においては、ハウジング３１の左上部分が丸みを帯びた形状であるので、第１Ｌボタン３８およびＺＬボタン３９は、ハウジング３１の当該左上部分の丸みに応じた丸みを帯びた形状を有する。左コントローラ３が本体装置２に装着される場合、第１Ｌボタン３８およびＺＬボタン３９は、一体型装置となった情報処理システム１における左上部分に配置されることになる。
【００５６】
左コントローラ３は、上述のスライダ４０を備えている。図４に示すように、スライダ４０は、ハウジング３１の右側面において、上下方向に延びるように設けられる。スライダ４０は、本体装置２の左レール部材１５（より具体的には、左レール部材１５の溝）と係合可能な形状を有している。したがって、左レール部材１５に係合したスライダ４０は、スライド方向（換言すれば左レール部材１５が延びる方向）に垂直な向きに関しては固定されて外れないようになっている。
【００５７】
また、左コントローラ３は、左コントローラ３が本体装置２と有線通信を行うための端子４２を備える。端子４２は、左コントローラ３が本体装置２に装着された場合に、本体装置２の左側端子１７（図３）と接触する位置に設けられる。端子４２の具体的な位置は任意である。本実施形態においては、図４に示すように、端子４２は、スライダ４０の装着面に設けられる。また、本実施形態においては、端子４２は、スライダ４０の装着面における下側の端部付近に設けられる。
【００５８】
図５は、右コントローラ４の一例を示す六面図である。図５に示すように、右コントローラ４は、ハウジング５１を備える。本実施形態において、ハウジング５１は、略板状である。また、ハウジング５１の主面（換言すれば、表側の面、すなわち、図１に示すｚ軸負方向側の面）は、大略的には矩形形状である。また、本実施形態においては、ハウジング５１は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ４は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング５１は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、右コントローラ４は、横長となる向きで把持されることも可能である。右コントローラ４が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００５９】
右コントローラ４のハウジング５１は、左コントローラ３のハウジング３１と同様、その上下方向の長さは、本体装置２のハウジング１１の上下方向の長さとほぼ同じであり、その厚さは、本体装置２のハウジング１１の厚さとほぼ同じである。したがって、右コントローラ４が本体装置２に装着された場合（図１参照）には、ユーザは、本体装置２と右コントローラ４とを一体の装置のような感覚で把持することができる。
【００６０】
また、図５に示すように、ハウジング５１の主面は、右側の角部分が、左側の角部分よりも丸みを帯びた形状になっている。すなわち、ハウジング５１の上側面と右側面との接続部分、および、ハウジング５１の下側面と右側面との接続部分は、その上側面と左側面との接続部分、および、その下側面と左側面との接続部分に比べて、丸くなっている（換言すれば、面取りにおけるＲが大きい）。したがって、右コントローラ４が本体装置２に装着された場合（図１参照）には、一体型装置となった情報処理システム１の右側が丸みを帯びた形状となるので、ユーザにとって持ちやすい形状となる。
【００６１】
右コントローラ４は、左コントローラ３と同様、方向入力部としてアナログスティック５２を備える。本実施形態においては、アナログスティック５２は、左コントローラ３のアナログスティック３２と同じ構成である。また、右コントローラ４は、左コントローラ３と同様、４つの操作ボタン５３〜５６（具体的には、Ａボタン５３、Ｂボタン５４、Ｘボタン５５、および、Ｙボタン５６）を備える。本実施形態においては、これら４つの操作ボタン５３〜５６は、左コントローラ３の４つの操作ボタン３３〜３６と同じ機構である。図５に示すように、これらアナログスティック５２および各操作ボタン５３〜５６は、ハウジング５１の主面に設けられる。なお、本実施形態においては、右コントローラ４の主面に設けられる操作ボタンを４つとするが、操作ボタンの数は任意である。
【００６２】
ここで、本実施形態においては、右コントローラ４における２種類の操作部（アナログスティックおよび操作ボタン）の位置関係は、左コントローラ３におけるこれら２種類の操作部の位置関係とは反対になっている。すなわち、右コントローラ４においては、アナログスティック５２は各操作ボタン５３〜５６の上方に配置されるのに対して、左コントローラ３においては、アナログスティック３２は各操作ボタン３３〜３６の下方に配置される。このような配置によって、左コントローラ３および右コントローラ４を本体装置２から外して使用する場合に似たような操作感覚で使用することができる。
【００６３】
また、右コントローラ４は、＋（プラス）ボタン５７を備える。図５に示すように、＋ボタン５７は、ハウジング５１の主面に設けられ、より具体的には、主面の左上領域に設けられる。＋ボタン５７は、他の操作ボタン５３〜５６と同様、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションプログラム）に応じた指示を行うために用いられる。＋ボタン５７は、例えば、ゲームアプリケーションにおいてスタートボタン（例えば、ゲーム開始の指示に用いられるボタン）として用いられる。
【００６４】
右コントローラ４は、ホームボタン５８を備える。図５に示すように、ホームボタン５８は、ハウジング５１の主面に設けられ、より具体的には、主面の左下領域に設けられる。ホームボタン５８は、本体装置２のディスプレイ１２に所定のメニュー画面を表示させるためのボタンである。メニュー画面は、例えば、本体装置２において実行可能な１以上のアプリケーションのうちからユーザが指定したアプリケーションを起動することが可能な画面である。メニュー画面は、例えば、本体装置２の起動時に表示されてもよい。本実施形態においては、本体装置２においてアプリケーションが実行されている状態（すなわち、当該アプリケーションの画像がディスプレイ１２に表示されている状態）において、ホームボタン５８が押下されると、所定の操作画面がディスプレイ１２に表示されてもよい（このとき、操作画面に代えてメニュー画面が表示されてもよい）。なお、操作画面は、例えば、アプリケーションを終了してメニュー画面をディスプレイ１２に表示させる指示、および、アプリケーションを再開する指示等を行うことが可能な画面である。
【００６５】
右コントローラ４の主面に設けられる各操作部（具体的には、アナログスティック５２および上記各ボタン５３〜５８）は、右コントローラ４が本体装置２に装着される場合、情報処理システム１を把持するユーザの例えば右手の親指によって操作される。また、右コントローラ４が本体装置２から外された状態において両手で横向きに把持されて使用される場合、上記各操作部は、右コントローラ４を把持するユーザの例えば左右の手の親指で操作される。具体的には、この場合、アナログスティック５２はユーザの左手の親指で操作され、各操作ボタン５３〜５６はユーザの右手の親指で操作される。
【００６６】
右コントローラ４は、第１Ｒボタン６０を備える。また、右コントローラ４は、ＺＲボタン６１を備える。図５に示すように、第１Ｒボタン６０は、ハウジング５１の側面のうちの右上部分に設けられる。また、ＺＲボタン６１は、ハウジング５１の側面から裏面にかけての右上部分（厳密には、ハウジング５１を表側から見たときの右上部分）に設けられる。つまり、ＺＲボタン６１は、第１Ｒボタン６０の後側（図１に示すｚ軸正方向側）に設けられる。本実施形態においては、ハウジング５１の右上部分が丸みを帯びた形状であるので、第１Ｒボタン６０およびＺＲボタン６１は、ハウジング５１の当該右上部分の丸みに応じた丸みを帯びた形状を有する。右コントローラ４が本体装置２に装着される場合、第１Ｒボタン６０およびＺＲボタン６１は、情報処理システム１における右上部分に配置されることになる。
【００６７】
右コントローラ４は、左コントローラ３と同様のスライダ機構を備えている。すなわち、右コントローラ４は、上述のスライダ６２を備えている。図５に示すように、スライダ６２は、ハウジング５１の左側面において、上下方向に延びるように設けられる。スライダ６２は、本体装置２の右レール部材１９（より具体的には、右レール部材１９の溝）と係合可能な形状を有している。したがって、右レール部材１９に係合したスライダ６２は、スライド方向（換言すれば右レール部材１９が延びる方向）に垂直な向きに関しては固定されて外れないようになっている。
【００６８】
また、右コントローラ４は、右コントローラ４が本体装置２と有線通信を行うための端子６４を備える。端子６４は、右コントローラ４が本体装置２に装着された場合に、本体装置２の右側端子２１（図３）と接触する位置に設けられる。端子６４の具体的な位置は任意である。本実施形態においては、図５に示すように、端子６４は、スライダ６２の装着面に設けられる。本実施形態においては、端子６４は、スライダ６２の装着面における下側の端部付近に設けられる。
【００６９】
なお、上記左コントローラ３および右コントローラ４において、ハウジング３１または５１に設けられる各構成要素（具体的には、スライダ、スティック、およびボタン等）の形状、数、および、設置位置は任意である。例えば、他の実施形態においては、左コントローラ３および右コントローラ４は、アナログスティックとは別の種類の方向入力部を備えていてもよい。また、スライダ４０または６２は、本体装置２に設けられるレール部材１５または１９の位置に応じた位置に配置されてよく、例えば、ハウジング３１または５１の主面または裏面に配置されてもよい。また、他の実施形態においては、左コントローラ３および右コントローラ４は、上記各構成要素のうちいくつかを備えていない構成であってもよい。
【００７０】
図６は、本実施形態における情報処理システムの他の例の全体構成を示す図である。図６に示すように、一例として、クレードル５は、左コントローラ３および右コントローラ４を本体装置２から取り外した状態で本体装置２のみを載置することが可能である。また、さらに他の例として、クレードル５は、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置を載置することも可能である。また、クレードル５は、ディスプレイ１２とは別体の外部表示装置の一例である据置型モニタ６（例えば、据置型テレビ）と通信可能である（有線通信であってもよいし、無線通信であってもよい）。詳細は後述するが、上記一体型装置または本体装置２単体をクレードル５に載置した場合、情報処理システムは、本体装置２が取得または生成した画像を据置型モニタ６に表示することができる。また、本実施形態においては、クレードル５は、載置された上記一体型装置または本体装置２単体を充電する機能を有する。また、クレードル５は、ハブ装置（具体的には、ＵＳＢハブ）の機能を有する。
【００７１】
図７は、クレードル５の一例の外観構成を示す図である。クレードル５は、上記一体型装置または本体装置２のみを着脱可能に載置する（装着するとも言える）ことが可能なハウジングを有する。本実施形態においては、図７に示すように、ハウジングは、溝７１ａが形成される第１支持部７１と、略平面状の第２支持部７２とを有する。
【００７２】
図７に示すように、第１支持部７１に形成される溝７１ａは、上記一体型装置の下側部分の形状に応じた形状を有する。具体的には、溝７１ａは、上記一体型装置の下側部分を挿入可能な形状であり、より具体的には、上記本体装置２の下側部分と略一致する形状である。したがって、上記一体型装置の下側部分を溝７１ａに挿入することによって、上記一体型装置をクレードル５に載置することができる。また、第２支持部７２は、その下側部分が溝７１ａに挿入された上記一体型装置の表面（すなわち、ディスプレイ１２が設けられる面）を支持する。この第２支持部７２によって、クレードル５は、上記一体型装置をより安定的に支持することができる。なお、図７に示すハウジングの形状は一例であり、他の実施形態においては、クレードル５のハウジングは、上記本体装置２を載置することが可能な任意の形状であってよい。
【００７３】
図７に示すように、また、クレードル５は、クレードル５が上記一体型装置と通信を行うための本体端子７３を備える。図７に示すように、本体端子７３は、第１支持部７１に形成される溝７１ａの底面に設けられる。より具体的には、本体端子７３は、上記一体型装置がクレードル５に装着される場合に、本体装置２の下側端子２７が接触する位置に設けられる。本実施形態においては、本体端子７３は、ＵＳＢコネクタ（より具体的には、オス側コネクタ）である。なお、本実施形態においては、上記一体型装置を表向きにしても裏向きにしてもクレードル５に装着することができる。したがって、本体装置２の下側端子２７およびクレードル５の本体端子７３は、奥行方向（すなわち、図１に示すｚ軸方向）に関して対称な形状を有し、当該奥行方向に関して２種類の向きのうちどちらの向きで接続されても通信可能である。
【００７４】
図７では図示しないが、クレードル５は、ハウジングの背面に端子（本実施形態においては、複数の端子を有する。具体的には、クレードル５は、図１０に示すモニタ用端子１３２、電源端子１３４、および拡張用端子１３７）を有する。これらの端子の詳細については後述する。
【００７５】
以上に説明した、クレードル５に設けられる各構成要素（具体的には、ハウジング、端子、ボタン等）の形状、数、および、設置位置は任意である。例えば、他の実施形態においては、ハウジングは、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置や本体装置２単体を支持可能な他の形状を有していてもよい。また、ハウジングに設けられる端子のいくつかは、ハウジングの前側の面に設けられてもよい。また、他の実施形態においては、クレードル５は、上記各構成要素のうちいくつかを備えていない構成であってもよい。
【００７６】
図８は、本体装置２の内部構成の一例を示すブロック図である。本体装置２は、図３に示す構成の他、図８に示す各構成要素８１〜９８を備える。これらの構成要素８１〜９８のいくつかは、電子部品として電子回路基板上に実装されてハウジング１１内に収納されてもよい。
【００７７】
本体装置２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）８１を備える。ＣＰＵ８１は、本体装置２において実行される各種の情報処理を実行する情報処理部である。ＣＰＵ８１は、記憶部（具体的には、フラッシュメモリ８４等の内部記憶媒体、あるいは、各スロット２３および２４に装着される外部記憶媒体等）に記憶される情報処理プログラム（例えば、ゲームプログラム）を実行することによって、各種の情報処理を実行する。
【００７８】
本体装置２は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ８４およびＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８５を備える。フラッシュメモリ８４およびＤＲＡＭ８５は、ＣＰＵ８１に接続される。フラッシュメモリ８４は、主に、本体装置２に保存される各種のデータ（プログラムであってもよい）を記憶するために用いられるメモリである。ＤＲＡＭ８５は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【００７９】
本体装置２は、第１スロットインターフェース（以下、「Ｉ／Ｆ」と略記する。）９１を備える。また、本体装置２は、第２スロットＩ／Ｆ９２を備える。第１スロットＩ／Ｆ９１および第２スロットＩ／Ｆ９２は、ＣＰＵ８１に接続される。第１スロットＩ／Ｆ９１は、第１スロット２３に接続され、第１スロット２３に装着された第１の種類の記憶媒体（例えば、ＳＤカード）に対するデータの読み出しおよび書き込みを、ＣＰＵ８１の指示に応じて行う。第２スロットＩ／Ｆ９２は、第２スロット２４に接続され、第２スロット２４に装着された第２の種類の記憶媒体（例えば、専用メモリカード）に対するデータの読み出しおよび書き込みを、ＣＰＵ８１の指示に応じて行う。
【００８０】
ＣＰＵ８１は、フラッシュメモリ８４およびＤＲＡＭ８５、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【００８１】
本体装置２は、ネットワーク通信部８２を備える。ネットワーク通信部８２は、ＣＰＵ８１に接続される。ネットワーク通信部８２は、ネットワークを介して外部の装置と通信（具体的には、無線通信）を行う。本実施形態においては、ネットワーク通信部８２は、第１の通信態様としてＷｉ−Ｆｉの規格に準拠した方式により、無線ＬＡＮに接続して外部装置と通信を行う。また、ネットワーク通信部８２は、第２の通信態様として所定の通信方式（例えば、独自プロトコルによる通信や、赤外線通信）により、同種の他の本体装置２との間で無線通信を行う。なお、上記第２の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置２との間で無線通信可能であり、複数の本体装置２の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【００８２】
本体装置２は、コントローラ通信部８３を備える。コントローラ通信部８３は、ＣＰＵ８１に接続される。コントローラ通信部８３は、左コントローラ３および／または右コントローラ４と無線通信を行う。本体装置２と左コントローラ３および右コントローラ４との通信方式は任意であるが、本実施形態においては、コントローラ通信部８３は、左コントローラ３との間および右コントローラ４との間で、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信を行う。
【００８３】
ＣＰＵ８１は、上述の左側端子１７、右側端子２１、および、下側端子２７に接続される。ＣＰＵ８１は、左コントローラ３と有線通信を行う場合、左側端子１７を介して左コントローラ３へデータを送信するとともに、左側端子１７を介して左コントローラ３から操作データを受信する。また、ＣＰＵ８１は、右コントローラ４と有線通信を行う場合、右側端子２１を介して右コントローラ４へデータを送信するとともに、右側端子２１を介して右コントローラ４から操作データを受信する。また、ＣＰＵ８１は、クレードル５と通信を行う場合、下側端子２７を介してクレードル５へデータを送信する。このように、本実施形態においては、本体装置２は、左コントローラ３および右コントローラ４との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置または本体装置２単体がクレードル５に装着された場合、本体装置２は、クレードル５を介してデータ（例えば、画像データや音声データ）を据置型モニタ６に出力することができる。
【００８４】
ここで、本体装置２は、複数の左コントローラ３と同時に（換言すれば、並行して）通信を行うことができる。また、本体装置２は、複数の右コントローラ４と同時に（換言すれば、並行して）通信を行うことができる。したがって、ユーザは、複数の左コントローラ３および複数の右コントローラ４を用いて本体装置２に対する入力を行うことができる。
【００８５】
本体装置２は、タッチパネル１３の制御を行う回路であるタッチパネルコントローラ８６を備える。タッチパネルコントローラ８６は、タッチパネル１３とＣＰＵ８１との間に接続される。タッチパネルコントローラ８６は、タッチパネル１３からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、ＣＰＵ８１へ出力する。
【００８６】
また、ディスプレイ１２は、ＣＰＵ８１に接続される。ＣＰＵ８１は、（例えば、上記の情報処理の実行によって）生成した画像および／または外部から取得した画像をディスプレイ１２に表示する。
【００８７】
本体装置２は、コーデック回路８７およびスピーカ（具体的には、左スピーカおよび右スピーカ）８８を備える。コーデック回路８７は、スピーカ８８および音声入出力端子２５に接続されるとともに、ＣＰＵ８１に接続される。コーデック回路８７は、スピーカ８８および音声入出力端子２５に対する音声データの入出力を制御する回路である。すなわち、コーデック回路８７は、ＣＰＵ８１から音声データを受け取った場合、当該音声データに対してＤ／Ａ変換を行って得られる音声信号をスピーカ８８または音声入出力端子２５へ出力する。これによって、スピーカ８８あるいは音声入出力端子２５に接続された音声出力部（例えば、イヤホン）から音が出力される。また、コーデック回路８７は、音声入出力端子２５から音声信号を受け取った場合、音声信号に対してＡ／Ｄ変換を行い、所定の形式の音声データをＣＰＵ８１へ出力する。また、音量ボタン２６は、ＣＰＵ８１に接続される。ＣＰＵ８１は、音量ボタン２６に対する入力に基づいて、スピーカ８８または上記音声出力部から出力される音量を制御する。
【００８８】
本体装置２は、電力制御部９７およびバッテリ９８を備える。電力制御部９７は、バッテリ９８およびＣＰＵ８１に接続される。また、図示しないが、電力制御部９７は、本体装置２の各部（具体的には、バッテリ９８の電力の給電を受ける各部、左側端子１７、および右側端子２１）に接続される。電力制御部９７は、ＣＰＵ８１からの指令に基づいて、バッテリ９８から上記各部への電力供給を制御する。また、電力制御部９７は、電源ボタン２８に接続される。電力制御部９７は、電源ボタン２８に対する入力に基づいて、上記各部への電力供給を制御する。すなわち、電力制御部９７は、電源ボタン２８に対して電源をオフする操作が行われた場合、上記各部の全部または一部への電力供給を停止し、電源ボタン２８に対して電源をオンする操作が行われた場合、電力制御部９７は、上記各部の全部または一部への電力供給を開始する。また、電力制御部９７は、電源ボタン２８に対する入力を示す情報（具体的には、電源ボタン２８が押下されているか否かを示す情報）をＣＰＵ８１へ出力する。
【００８９】
また、バッテリ９８は、下側端子２７に接続される。外部の充電装置（例えば、クレードル５）が下側端子２７に接続され、下側端子２７を介して本体装置２に電力が供給される場合、供給された電力がバッテリ９８に充電される。
【００９０】
また、本体装置２は、本体装置２内部の熱を放熱するための冷却ファン９６を備える。冷却ファン９６が動作することによって、ハウジング１１の外部の空気が吸気孔１１ｄから導入されるとともに、ハウジング１１内部の空気が排気孔１１ｃから放出されることで、ハウジング１１内部の熱が放出される。冷却ファン９６は、ＣＰＵ８１に接続され、冷却ファン９６の動作はＣＰＵ８１によって制御される。また、本体装置２は、本体装置２内の温度を検出する温度センサ９５を備える。温度センサ９５は、ＣＰＵ８１に接続され、温度センサ９５の検出結果がＣＰＵ８１へ出力される。ＣＰＵ８１は、温度センサ９５の検出結果に基づいて、冷却ファン９６の動作を制御する。
【００９１】
図９は、情報処理システム１の内部構成の一例を示すブロック図である。なお、情報処理システム１のうちの本体装置２に関する内部構成の詳細については、図８で示しているため図９では省略している。
【００９２】
左コントローラ３は、本体装置２との間で通信を行う通信制御部１０１を備える。図９に示すように、通信制御部１０１は、端子４２を含む各構成要素に接続される。本実施形態においては、通信制御部１０１は、端子４２を介した有線通信と、端子４２を介さない無線通信との両方で本体装置２と通信を行うことが可能である。通信制御部１０１は、左コントローラ３が本体装置２に対して行う通信方法を制御する。すなわち、左コントローラ３が本体装置２に装着されている場合、通信制御部１０１は、端子４２を介して本体装置２と通信を行う。また、左コントローラ３が本体装置２から外されている場合、通信制御部１０１は、本体装置２（具体的には、コントローラ通信部８３）との間で無線通信を行う。コントローラ通信部８３と通信制御部１０１との間の無線通信は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）の規格に従って行われる。
【００９３】
また、左コントローラ３は、例えばフラッシュメモリ等のメモリ１０２を備える。通信制御部１０１は、例えばマイコン（マイクロプロセッサとも言う）で構成され、メモリ１０２に記憶されるファームウェアを実行することによって各種の処理を実行する。
【００９４】
左コントローラ３は、各ボタン１０３（具体的には、ボタン３３〜３９，４３，および４４）を備える。また、左コントローラ３は、アナログスティック（図９では「スティック」と記載する）３２を備える。各ボタン１０３およびアナログスティック３２は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部１０１へ出力する。
【００９５】
左コントローラ３は、加速度センサ１０４を備える。本実施形態においては、加速度センサ１０４は、所定の３軸（例えば、図１１に示すＸＹＺ軸）方向に沿った直線加速度の大きさを検出する。なお、加速度センサ１０４は、１軸方向あるいは２軸方向の加速度を検出するものであってもよい。また、左コントローラ３は、角速度センサ１０５を備える。本実施形態においては、角速度センサ１０５は、所定の３軸（例えば、図１１に示すＸＹＺ軸）回りの角速度を検出する。なお、角速度センサ１０５は、１軸回りあるいは２軸回りの角速度を検出するものであってもよい。加速度センサ１０４および角速度センサ１０５は、それぞれ通信制御部１０１に接続される。そして、加速度センサ１０４および角速度センサ１０５の検出結果は、適宜のタイミングで繰り返し通信制御部１０１へ出力される。
【００９６】
通信制御部１０１は、各入力部（具体的には、各ボタン１０３、アナログスティック３２、各センサ１０４および１０５）から、入力に関する情報（具体的には、操作に関する情報、または、センサによる検出結果）を取得する。通信制御部１０１は、取得した情報（または取得した情報に所定の加工を行った情報）を含む操作データを本体装置２へ送信する。なお、操作データは、所定時間に１回の割合で繰り返し送信される。なお、入力に関する情報が本体装置２へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【００９７】
上記操作データが本体装置２へ送信されることによって、本体装置２は、左コントローラ３に対して行われた入力を得ることができる。すなわち、本体装置２は、各ボタン１０３およびアナログスティック３２に対する操作を、操作データに基づいて判別することができる。また、本体装置２は、左コントローラ３の動きおよび／または姿勢に関する情報を、操作データ（具体的には、加速度センサ１０４および角速度センサ１０５の検出結果）に基づいて算出することができる。
【００９８】
左コントローラ３は、振動によってユーザに通知を行うための振動子１０７を備える。本実施形態においては、振動子１０７は、本体装置２からの指令によって制御される。すなわち、通信制御部１０１は、本体装置２からの上記指令を受け取ると、当該指令に従って振動子１０７を駆動させる。ここで、左コントローラ３は、増幅器１０６を備える。通信制御部１０１は、上記指令を受け取ると、指令に応じた制御信号を増幅器１０６へ出力する。増幅器１０６は、通信制御部１０１からの制御信号を増幅して、振動子１０７を駆動させるための駆動信号を生成して振動子１０７へ与える。これによって振動子１０７が動作する。
【００９９】
左コントローラ３は、電力供給部１０８を備える。本実施形態において、電力供給部１０８は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ３の各部（具体的には、バッテリの電力の給電を受ける各部）に接続される。電力制御回路は、バッテリから上記各部への電力供給を制御する。また、バッテリは、端子４２に接続される。本実施形態においては、左コントローラ３が本体装置２に装着される場合、所定の条件下で、バッテリは、端子４２を介して本体装置２からの給電によって充電される。
【０１００】
図９に示すように、右コントローラ４は、本体装置２との間で通信を行う通信制御部１１１を備える。また、右コントローラ４は、通信制御部１１１に接続されるメモリ１１２を備える。通信制御部１１１は、端子６４を含む各構成要素に接続される。通信制御部１１１およびメモリ１１２は、左コントローラ３の通信制御部１０１およびメモリ１０２と同様の機能を有する。したがって、通信制御部１１１は、端子６４を介した有線通信と、端子６４を介さない無線通信（具体的には、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信）との両方で本体装置２と通信を行うことが可能であり、右コントローラ４が本体装置２に対して行う通信方法を制御する。
【０１０１】
右コントローラ４は、左コントローラ３の各入力部と同様の各入力部（具体的には、各ボタン１１３、アナログスティック５２、加速度センサ１１４、および、角速度センサ１１５）を備える。これらの各入力部については、左コントローラ３の各入力部と同様の機能を有し、同様に動作する。
【０１０２】
また、右コントローラ４は、振動子１１７および増幅器１１６を備える。振動子１１７および増幅器１１６は、左コントローラ３の振動子１０７および増幅器１０６と同様に動作する。すなわち、通信制御部１１１は、本体装置２からの指令に従って、増幅器１１６を用いて振動子１１７を動作させる。
【０１０３】
右コントローラ４は、電力供給部１１８を備える。電力供給部１１８は、左コントローラ３の電力供給部１０８と同様の機能を有し、同様に動作する。すなわち、電力供給部１１８は、バッテリから給電を受ける各部への電力供給を制御する。また、右コントローラ４が本体装置２に装着される場合、所定の条件下で、バッテリは、端子６４を介して本体装置２からの給電によって充電される。
【０１０４】
右コントローラ４は、処理部１２１を備える。処理部１２１は、通信制御部１１１に接続されるとともに、ＮＦＣ通信部１２２に接続される。処理部１２１は、本体装置２からの指令に応じて、ＮＦＣ通信部１２２に対する管理処理を実行する。例えば、処理部１２１は、本体装置２からの指令に応じてＮＦＣ通信部１２２の動作を制御する。また、処理部１２１は、ＮＦＣ通信部１２２の起動を制御したり、通信相手（例えば、ＮＦＣタグ）に対するＮＦＣ通信部１２２の動作（具体的には、読み出しおよび書き込み等）を制御したりする。また、処理部１２１は、通信制御部１１１を介して上記通信相手に送信されるべき情報を本体装置２から受信してＮＦＣ通信部１２２へ渡したり、上記通信相手から受信された情報をＮＦＣ通信部１２２から取得して通信制御部１１１を介して本体装置２へ送信したりする。また、処理部１２１は、本体装置２からの指令に応じて、赤外撮像部１２３に対する管理処理を実行する。例えば、処理部１２１は、赤外撮像部１２３に撮像動作を行わせたり、撮像結果に基づく情報（撮像画像の情報、あるいは、当該情報から算出される情報等）を取得して、通信制御部１１１を介して本体装置２へ送信したりする。
【０１０５】
図１０は、クレードル５の内部構成の一例を示すブロック図である。なお、図１０において、本体装置２に関する内部構成の詳細については、図８で示しているので省略している。
【０１０６】
図１０に示すように、クレードル５は、変換部１３１およびモニタ用端子１３２を備える。変換部１３１は、本体端子７３およびモニタ用端子１３２と接続される。変換部１３１は、本体装置２から受信した画像（映像とも言える）および音声に関する信号の形式を、据置型モニタ６へ出力する形式へと変換する。ここで、本実施形態においては、本体装置２は、ディスプレイポート信号（すなわち、ＤｉｓｐｌａｙＰｏｒｔの規格に従った信号）として画像および音声の信号をクレードル５へ出力する。また、本実施形態においては、クレードル５と据置型モニタ６との間の通信は、ＨＤＭＩ（登録商標）の規格に基づく通信が用いられる。すなわち、モニタ用端子１３２は、ＨＤＭＩ端子であり、クレードル５と据置型モニタ６とがＨＤＭＩケーブルによって接続される。そして、変換部１３１は、本体装置２から本体端子７３を介して受信されるディスプレイポート信号（具体的には、映像および音声を表す信号）を、ＨＤＭＩ信号へ変換する。変換されたＨＤＭＩ信号は、モニタ用端子１３２を介して据置型モニタ６へ出力される。
【０１０７】
クレードル５は、電力制御部１３３および電源端子１３４を備える。電源端子１３４は、図示しない充電装置（例えば、ＡＣアダプタ等）を接続するための端子である。本実施形態においては、電源端子１３４にＡＣアダプタが接続されており、クレードル５には商用電源が供給されているものとする。電力制御部１３３は、クレードル５に対して本体装置２が装着された場合、本体端子７３を介して電源端子１３４からの電力を本体装置２へ供給する。これによって、本体装置２のバッテリ９８が充電される。
【０１０８】
また、クレードル５は、接続処理部１３６および拡張用端子１３７を備える。拡張用端子１３７は、他の装置を接続するための端子である。本実施形態においては、クレードル５は、拡張用端子１３７として、複数（より具体的には３つ）のＵＳＢ端子を備える。接続処理部１３６は、本体端子７３および各拡張用端子１３７に接続される。接続処理部１３６は、ＵＳＢハブとしての機能を有し、例えば、拡張用端子１３７に接続された装置と、本体端子７３に接続された本体装置２との間の通信を管理する（すなわち、ある装置からの信号を他の装置へ適宜分配して送信する）。上記のように、本実施形態においては、情報処理システム１は、クレードル５を介して他の装置との通信を行うことが可能である。なお、接続処理部１３６は、通信速度を変換したり、拡張用端子１３７に接続された装置に対する電力供給を行ったりすることが可能であってもよい。
【０１０９】
以上に説明したように、本実施形態における情報処理システム１については左コントローラ３および右コントローラ４が本体装置２から着脱可能である。また、クレードル５に左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置や本体装置２単体を装着することによって据置型モニタ６に画像（および音声）を出力可能である。以下、左コントローラ３および右コントローラ４を本体装置２から取り外した状態で、クレードル５に本体装置２単体を装着することによって据置型モニタ６に画像（および音声）を出力する利用態様における情報処理システムを用いて説明する。
【０１１０】
上述のように、本実施形態においては、左コントローラ３および右コントローラ４を本体装置２から外した状態（「離脱状態」と呼ぶ）で情報処理システム１を利用することも可能である。離脱状態で情報処理システム１を利用して同じアプリケーション（例えば、ゲームアプリケーション）に対する操作を行う場合の態様としては、１人のユーザが左コントローラ３および右コントローラ４の両方を用いる態様が考えられる。なお、当該利用態様によって複数のユーザが同じアプリケーションを用いて操作する場合は、左コントローラ３および右コントローラ４の組を複数組用意して、それぞれのユーザが当該複数組のうちの１組を用いる態様が考えられる。
【０１１１】
図１１および図１２は、離脱状態において、１人のユーザが左コントローラ３および右コントローラ４の組を把持して情報処理システム１を利用する様子の一例を示す図である。図１１および図１２に示すように、離脱状態において、ユーザは、左コントローラ３を左手で把持し、右コントローラ４を右手で把持して操作を行いながら、据置型モニタ６に表示された画像を見ることができる。
【０１１２】
例えば、本実施例では、ユーザは、縦長の略板状である左コントローラ３の長手方向の下方向（図１に示す下方向（ｙ軸負方向））が鉛直方向になるとともに、本体装置２に装着された際に当該本体装置２と接する側面（スライダ４０が設けられている側面）が前方に向き、かつ、左コントローラ３の主面（アナログスティック３２等が設けられる面）が右に向くように左コントローラ３を左手で把持する。また、ユーザは、縦長の略板状である右コントローラ４の長手方向の下方向（図１に示す上下方向（ｙ軸負方向））が鉛直方向になるとともに、本体装置２に装着された際に当該本体装置２と接する側面（スライダ６２が設けられている側面）が前方に向き、かつ、右コントローラ４の主面（アナログスティック５２等が設けられる面）が左に向くように右コントローラ４を右手で把持する。このように左手で左コントローラ３を把持し右手で右コントローラ４を把持した状態（以下、当該方向に把持された左コントローラ３および右コントローラ４の姿勢を基本姿勢と記載することがある）から、各コントローラを上下左右前後に動かしたり、各コントローラを回転させたり、各コントローラを振り動かしたりすることによって、各コントローラの動きや姿勢に応じてゲームプレイが行われる。
【０１１３】
なお、左コントローラ３に生じる加速度や角速度の方向をわかりやすくするために、上記把持状態における前方向（丸みを帯びた側面から本体装置２と接する側面に向かう方向であり、図１に示すｘ軸負方向）をＸ軸正方向とし、上記把持状態における右方向（背面から主面に向かう方向であり、図１に示すｚ軸負方向）をＹ軸正方向とし、上記把持状態における上方向（長手方向の上に向かう方向であり、図１に示すｙ軸正方向）をＺ軸正方向とする。そして、左コントローラ３の加速度センサ１０４は、上記ＸＹＺ軸方向の加速度をそれぞれ検出可能であり、角速度センサ１０５は、上記ＸＹＺ軸方向周りの角速度をそれぞれ検出可能であるとする。また、右コントローラ４に生じる加速度や角速度の方向をわかりやすくするために、上記把持状態における前方向（丸みを帯びた側面から本体装置２と接する側面に向かう方向であり、図１に示すｘ軸正方向）をＸ軸正方向とし、上記把持状態における右方向（主面から背面に向かう方向であり、図１に示すｚ軸正方向）をＹ軸正方向とし、上記把持状態における上方向（長手方向の上に向かう方向であり、図１に示すｙ軸正方向）をＺ軸正方向とする。そして、右コントローラ４の加速度センサ１１４は、上記ＸＹＺ軸方向の加速度をそれぞれ検出可能であり、角速度センサ１１５は、上記ＸＹＺ軸方向周りの角速度をそれぞれ検出可能であるとする。
【０１１４】
次に、図１３〜図１５は、左コントローラ３および右コントローラ４を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図である。図１３に示すように、本ゲーム例では、プレイヤオブジェクトＰＯと敵オブジェクトＥＯとが対戦するゲーム（例えば、ボクシングゲーム）の画像が据置型モニタ６に表示される。そして、左コントローラ３および右コントローラ４を操作するユーザは、左コントローラ３本体および／または右コントローラ４本体を振り動かしたり、左コントローラ３本体および／または右コントローラ４本体の姿勢を変化させたりすることによって、プレイヤオブジェクトＰＯを操作することができる。例えば、左コントローラ３を振り動かすことによってプレイヤオブジェクトＰＯの左グラブ（左拳）を模した第１オブジェクトＧ１の動作を制御することができ、右コントローラ４を振り動かすことによってプレイヤオブジェクトＰＯの右グラブ（右拳）を模した第２オブジェクトＧ２の動作を制御することができる。具体的には、ユーザが左コントローラ３を把持している左手を用いて左パンチを繰り出すように振る操作を行った場合、敵オブジェクトＥＯが配置されている場所に向かってプレイヤオブジェクトＰＯの左グラブを模した第１オブジェクトＧ１が移動する。また、ユーザが右コントローラ４を把持している右手を用いて右パンチを繰り出すように振る操作を行った場合、敵オブジェクトＥＯが配置されている場所に向かってプレイヤオブジェクトＰＯの右グラブを模した第２オブジェクトＧ２が移動する。
【０１１５】
例えば、左コントローラ３および右コントローラ４の何れも動かしていない状態（図１３に示す状態）から、右コントローラ４を前方（右コントローラ４のＸ軸正方向）に押し出すように振り動かした場合、図１４に示すように右コントローラ４の動きに応じてプレイヤオブジェクトＰＯの第２オブジェクトＧ２が敵オブジェクトＥＯに向かって移動する。これによって、敵オブジェクトＥＯに対してプレイヤオブジェクトＰＯが右パンチを繰り出したようなゲーム画像が表示される。
【０１１６】
ここで、第１オブジェクトＧ１が移動開始する際の移動方向は、左コントローラ３を押し出すように振り動かした際の左コントローラ３の姿勢によって設定される。また、第２オブジェクトＧ２が移動開始する際の移動方向は、右コントローラ４を押し出すように動かした際の右コントローラ４の姿勢によって設定される。例えば、図１４に示したように、右コントローラ４がＸ軸正方向に移動した場合、当該移動における右コントローラ４のロール方向の姿勢に応じて第２オブジェクトＧ２の移動方向が設定される。一例として、本実施例では、上記右コントローラ４が移動している期間において、実空間において重力加速度が作用している方向を基準とした右コントローラ４のＹ軸方向の傾きを算出し、当該Ｙ軸方向の傾きに基づいて第２オブジェクトＧ２の移動方向を算出している。具体的には、右コントローラ４が上記基準姿勢に対して右方向にロール回転した姿勢であることを上記Ｙ軸方向の傾きが示す場合、仮想空間の右方向に向かって第２オブジェクトＧ２が移動する。また、右コントローラ４が上記基準姿勢に対して左方向にロール回転した姿勢であることを上記Ｙ軸方向の傾きが示す場合、仮想空間の左方向に向かって第２オブジェクトＧ２が移動する。そして、それぞれ右方向または左方向に移動方向がずれる角度については、上記Ｙ軸方向の傾き角度に応じてそれぞれ算出される。
【０１１７】
また、本ゲーム例では、仮想空間においてプレイヤオブジェクトＰＯと敵オブジェクトＥＯとの距離が相対的に遠い場合であってもパンチを繰り出すことが可能であり、プレイヤオブジェクトＰＯの腕が伸びることによって、第１オブジェクトＧ１および第２オブジェクトＧ２が相対的に長い距離を移動することができる。そして、第１オブジェクトＧ１または第２オブジェクトＧ２は、他のオブジェクト（例えば、敵オブジェクトＥＯ）と衝突するか所定の距離移動した後に移動を終了し、当該第１オブジェクトＧ１および第２オブジェクトＧ２がそれぞれ移動開始した移動開始位置（例えば、図１３に示すプレイヤオブジェクトＰＯの手元）まで戻る。第１オブジェクトＧ１および第２オブジェクトＧ２が移動開始位置まで戻ることによって、敵オブジェクトＥＯに向かう次の移動が可能となる。言い換えると、次のパンチを出すことができるようになる。したがって、上記移動開始位置から第１オブジェクトＧ１または第２オブジェクトＧ２が移動を開始してから再び当該移動開始位置まで戻るまでの時間が一般的なボクシングゲームより相対的に長くなる。
【０１１８】
本ゲーム例では、このような移動時間を利用して、第１オブジェクトＧ１または第２オブジェクトＧ２が移動中（典型的には、敵オブジェクトＥＯの方向へ移動している期間）であっても、左コントローラ３または右コントローラ４の姿勢や動きに応じて移動する軌道を変化させることができる。例えば、上述した第１オブジェクトＧ１または第２オブジェクトＧ２の移動開始時の左コントローラ３または右コントローラ４の姿勢から左コントローラ３または右コントローラ４がロール方向に回転した場合やヨー方向に回転した場合、当該回転に応じて第１オブジェクトＧ１または第２オブジェクトＧ２の軌道を変化させる。
【０１１９】
一例として、本実施例では、第１オブジェクトＧ１または第２オブジェクトＧ２の移動開始後の左コントローラ３または右コントローラ４のＸ軸周りの回転速度（角速度）を上記ロール方向の回転として、当該Ｘ軸周りの回転速度に基づいて移動中の第１オブジェクトＧ１または第２オブジェクトＧ２の軌道を変化させる。具体的には、第１オブジェクトＧ１が移動中に左コントローラ３がＸ軸を中心として右方向にロール回転した回転速度が得られた場合、仮想空間の右方向に第１オブジェクトＧ１の軌道を変化させ、左コントローラ３がＸ軸を中心として左方向にロール回転した回転速度が得られた場合、仮想空間の左方向に第１オブジェクトＧ１の軌道を変化させる。また、第２オブジェクトＧ２が移動中に右コントローラ４がＸ軸を中心として右方向にロール回転した回転速度が得られた場合、仮想空間の右方向に第２オブジェクトＧ２の軌道を変化させ、右コントローラ４がＸ軸を中心として左方向にロール回転した回転速度が得られた場合、仮想空間の左方向に第２オブジェクトＧ２の軌道を変化させる。
【０１２０】
他の例として、本実施例では、第１オブジェクトＧ１または第２オブジェクトＧ２の移動開始後の実空間の重力方向を基準とする左コントローラ３または右コントローラ４の回転速度（角速度）を上記ヨー方向の回転として、当該重力方向周りの回転速度に基づいて移動中の第１オブジェクトＧ１または第２オブジェクトＧ２の軌道を変化させる。具体的には、第１オブジェクトＧ１が移動中に左コントローラ３が重力方向を中心として右方向にヨー回転した回転速度が得られた場合、仮想空間の右方向に第１オブジェクトＧ１の軌道を変化させ、左コントローラ３が重力方向を中心として左方向にヨー回転した回転速度が得られた場合、仮想空間の左方向に第１オブジェクトＧ１の軌道を変化させる。また、第２オブジェクトＧ２が移動中に右コントローラ４が重力方向を中心として右方向にヨー回転した回転速度が得られた場合、仮想空間の右方向に第２オブジェクトＧ２の軌道を変化させ、右コントローラ４が重力方向を中心として左方向にヨー回転した回転速度が得られた場合、仮想空間の左方向に第２オブジェクトＧ２の軌道を変化させる。
【０１２１】
また、本ゲーム例では、左コントローラ３または右コントローラ４が振り動かされたか否かの判定を、左コントローラ３または右コントローラ４に生じた加速度の大きさを用いて行う。そして、第１オブジェクトＧ１が上記移動開始位置に配置されている状態（以下、第１移動開始可能状態と称する）において左コントローラ３が上記Ｘ軸正方向に振り動かされたと判定された場合、当該移動開始位置から敵オブジェクトＥＯに向かって第１オブジェクトＧ１が移動を開始する。また、第２オブジェクトＧ２が上記移動開始位置に配置されている状態（以下、第２移動開始可能状態と称する）において右コントローラ４が上記Ｘ軸正方向に振り動かされたと判定された場合、当該移動開始位置から敵オブジェクトＥＯに向かって第２オブジェクトＧ２が移動を開始する。しかしながら、本実施例では、上記第１移動開始可能状態でない場合であっても、左コントローラ３が上記Ｘ軸正方向に振り動かされたと判定されてから所定時間以内に上記第１移動開始可能状態になった場合は、当該左コントローラ３の振り操作に応じて上記移動開始位置から敵オブジェクトＥＯに向かって第１オブジェクトＧ１の移動を開始させることができる。また、上記第２移動開始可能状態でない場合であっても、右コントローラ４が上記Ｘ軸正方向に振り動かされたと判定されてから所定時間以内に上記第２移動開始可能状態になった場合は、当該右コントローラ４の振り操作に応じて上記移動開始位置から敵オブジェクトＥＯに向かって第２オブジェクトＧ２の移動を開始させることができる。このように、本実施例では、上記第１移動開始可能状態および／または上記第２移動開始可能状態でない場合であっても、左コントローラ３および／または右コントローラ４を振り動かすことによって第１オブジェクトＧ１および／または第２オブジェクトＧ２を移動開始させる指示を行うことができるため、操作指示可能な状態が断続的に生じるゲームであっても操作を容易にすることが可能となる。つまり、上述したように、上記ゲーム例では、移動開始位置から第１オブジェクトＧ１または第２オブジェクトＧ２が移動を開始してから再び当該移動開始位置まで戻るまでの時間が一般的なボクシングゲームより相対的に長くなるため、上記第１移動開始可能状態や上記第２移動開始可能状態になるのを待ちきれずに左コントローラ３または右コントローラ４を振り動かす操作が先行してしまうことが考えられるが、このような先行操作が行われた場合であっても当該先行操作を無効にせずに救済してゲーム操作に生かすことが可能となる。
【０１２２】
また、本ゲーム例では、図１５に示すように、第１オブジェクトＧ１および第２オブジェクトＧ２を上記移動開始位置から同時に移動開始させることによって、所定のアクションが行われる。例えば、第１オブジェクトＧ１および第２オブジェクトＧ２の一方が移動開始した時点から所定期間以内に他方が移動開始する場合、第１オブジェクトＧ１および第２オブジェクトＧ２が組となった「両手パンチアクション」が開始される。ここで、「両手パンチアクション」は、仮想空間を移動する第１オブジェクトＧ１および第２オブジェクトＧ２の間に衝突領域Ａが形成された様子がゲーム画像で表現され、当該衝突領域Ａが形成された状態で第１オブジェクトＧ１および第２オブジェクトＧ２が敵オブジェクトＥＯに向かって移動する。そして、敵オブジェクトＥＯには移動中の第１オブジェクトＧ１または第２オブジェクトＧ２や衝突領域Ａが衝突した場合に、第１オブジェクトＧ１または第２オブジェクトＧ２が単独で衝突する場合より大きなダメージが敵オブジェクトＥＯに与えられる所定のアクションが行われる。一例として、「両手パンチアクション」では、敵オブジェクトＥＯと衝突した場合に当該敵オブジェクトＥＯを投げ飛ばすアクションが行われたり、当該敵オブジェクトＥＯを動けなくするようなアクションが行われたりしてもよい。なお、「両手パンチアクション」実行中であっても、上述した左コントローラ３および／または右コントローラ４の姿勢や動きに応じて第１オブジェクトＧ１および／または第２オブジェクトＧ２が移動する軌道を変化させることができる。したがって、第１オブジェクトＧ１および／または第２オブジェクトＧ２が移動する軌道を変化させることによって、衝突領域Ａの範囲も変化させることができるため、敵オブジェクトＥＯに対してより戦略的な攻撃も可能となる。
【０１２３】
また、本ゲーム例では、左コントローラ３および右コントローラ４の両方の動きや姿勢に応じて、仮想空間内でプレイヤオブジェクトＰＯを移動させることができる。例えば、左コントローラ３および右コントローラ４の両方が実空間のピッチ方向に回転した場合やロール方向に回転した場合、当該回転した傾きに応じてプレイヤオブジェクトＰＯを移動させる。具体的には、実空間の重力方向を基準とする左コントローラ３のＸ軸方向およびＹ軸方向と右コントローラ４のＸ軸方向およびＹ軸方向の傾きをそれぞれ算出する。そして、上記傾きに基づいて、左コントローラ３および右コントローラ４の両方が前方に傾く姿勢になっていると判定された場合、左コントローラ３および右コントローラ４の両方が当該前方へ傾いている角度（例えば、当該角度の平均値）に応じた移動量でプレイヤオブジェクトＰＯを仮想空間の前方へ移動させる。また、上記傾きに基づいて、左コントローラ３および右コントローラ４の両方が後方に傾く姿勢になっていると判定された場合、左コントローラ３および右コントローラ４の両方が当該後方へ傾いている角度（例えば、当該角度の平均値）に応じた移動量でプレイヤオブジェクトＰＯを仮想空間の後方へ移動させる。また、上記傾きに基づいて、左コントローラ３および右コントローラ４の両方が左に傾く姿勢になっていると判定された場合、左コントローラ３および右コントローラ４の両方が当該左へ傾いている角度（例えば、当該角度の平均値）に応じた移動量でプレイヤオブジェクトＰＯを仮想空間の左へ移動させる。また、上記傾きに基づいて、左コントローラ３および右コントローラ４の両方が右に傾く姿勢になっていると判定された場合、左コントローラ３および右コントローラ４の両方が当該右へ傾いている角度（例えば、当該角度の平均値）に応じた移動量でプレイヤオブジェクトＰＯを仮想空間の右へ移動させる。
【０１２４】
なお、図１３〜図１５では、据置型モニタ６を用いて１人プレイ（例えば、敵オブジェクトＥＯがＣＰＵ８１によって自動制御される）するゲーム例を用いたが、複数のユーザによってプレイしてもよい。例えば、２人のユーザによってゲームプレイされる場合、ユーザがそれぞれ左コントローラ３および右コントローラ４の組を把持して、別のプレイヤオブジェクトを操作する。そして、据置型モニタ６の表示領域を２つに分割して、それぞれの分割表示領域に各ユーザ用の画像（ユーザが操作するプレイヤオブジェクトから他のユーザが操作するプレイヤオブジェクトを見た画像）を表示する。このような操作環境において、ユーザがそれぞれ相手プレイヤオブジェクトにパンチを繰り出すような操作を行うことによって、それぞれのユーザが相手プレイヤオブジェクトと対戦するゲームが可能となる。
【０１２５】
なお、複数のユーザによってゲームプレイされる場合、他の装置（例えば、他の情報処理システム１）との間で通信することによって、当該ゲームプレイに必要なゲームデータを送受信してもよい。例えば、他の装置との間で通信する場合、上述したネットワーク通信部８２を介して、インターネット（広域ネットワーク）に接続された他の装置との間でデータを送受信してもよいし、閉ざされたローカルネットワークエリア内に配置された他の装置との間で直接通信する、いわゆる「ローカル通信」を用いてデータを送受信してもよい。
【０１２６】
次に、図１６〜図２３を参照して、本実施形態において情報処理システム１で実行される具体的な処理の一例について説明する。図１６は、本実施形態において本体装置２のＤＲＡＭ８５に設定されるデータ領域の一例を示す図である。なお、ＤＲＡＭ８５には、図１６に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。
【０１２７】
ＤＲＡＭ８５のプログラム記憶領域には、情報処理システム１で実行される各種プログラムＰａが記憶される。本実施形態においては、各種プログラムＰａは、上述した左コントローラ３および右コントローラ４との間で無線通信するための通信プログラムや、左コントローラ３および／または右コントローラ４から取得したデータに基づいた情報処理（例えば、ゲーム処理）を行うためのアプリケーションプログラム、クレードル５に対する本体装置２の着脱に応じて画像を表示する表示装置を切り替えるプログラム等が記憶される。なお、各種プログラムＰａは、フラッシュメモリ８４に予め記憶されていてもよいし、情報処理システム１に着脱可能な記憶媒体（例えば、第１スロット２３に装着された第１の種類の記憶媒体、第２スロット２４に装着された第２の種類の記憶媒体）から取得されてＤＲＡＭ８５に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてＤＲＡＭ８５に記憶されてもよい。ＣＰＵ８１は、ＤＲＡＭ８５に記憶された各種プログラムＰａを実行する。
【０１２８】
また、ＤＲＡＭ８５のデータ記憶領域には、情報処理システム１において実行される通信処理や情報処理等の処理において用いられる各種のデータが記憶される。本実施形態においては、ＤＲＡＭ８５には、操作データＤａ、姿勢データＤｂ、角速度データＤｃ、加速度データＤｄ、閾値データＤｅ、カーブ値データＤｆ、回転速度データＤｇ、振りフラグデータＤｈ、移動フラグデータＤｉ、アクションフラグデータＤｊ、戻りフラグデータＤｋ、移動開始可能フラグデータＤｌ、プレイヤオブジェクト位置データＤｍ、衝突領域データＤｎ、敵オブジェクト位置データＤｏ、および画像データＤｐ等が記憶される。
【０１２９】
操作データＤａは、左コントローラ３および右コントローラ４からそれぞれ適宜取得した操作データである。上述したように、左コントローラ３および右コントローラ４からそれぞれ送信される操作データには、各入力部（具体的には、各ボタン、アナログスティック、各センサ）からの入力に関する情報（具体的には、操作に関する情報、または、センサによる検出結果）が含まれている。本実施形態では、無線通信によって左コントローラ３および右コントローラ４からそれぞれ所定周期で操作データが送信されており、当該受信した操作データを用いて操作データＤａが適宜更新される。なお、操作データＤａの更新周期は、後述する情報処理システム１で実行される処理の周期である１フレーム毎に更新されてもよいし、上記無線通信によって操作データが送信される周期毎に更新されてもよい。
【０１３０】
姿勢データＤｂは、実空間における重力加速度の方向を基準とした左コントローラ３および右コントローラ４それぞれの姿勢を示すデータである。例えば、姿勢データＤｂは、左コントローラ３および右コントローラ４それぞれに作用している重力加速度の方向を示すデータや、当該重力加速度方向に対するＸＹＺ軸方向を示すデータ等を含んでいる。
【０１３１】
角速度データＤｃは、左コントローラ３および右コントローラ４それぞれに生じている角速度を示すデータである。例えば、角速度データＤｃは、左コントローラ３および右コントローラ４それぞれに生じているＸＹＺ軸周りの角速度を示すデータ等を含んでいる。
【０１３２】
加速度データＤｄは、左コントローラ３および右コントローラ４それぞれに生じている加速度を示すデータである。例えば、加速度データＤｄは、左コントローラ３および右コントローラ４それぞれに生じている重力加速度を除いて、ＸＹＺ軸方向に生じている加速度を示すデータ等を含んでいる。
【０１３３】
閾値データＤｅは、左コントローラ３および右コントローラ４に対してそれぞれ行われた振り動作を判定するための閾値を示すデータである。カーブ値データＤｆは、第１オブジェクトＧ１および第２オブジェクトＧ２それぞれの移動方向や軌道を算出するためのカーブ値Ｃを示すデータである。回転速度データＤｇは、第１オブジェクトＧ１または第２オブジェクトＧ２が移動中における左コントローラ３および右コントローラ４の動き（回転速度Ｖ）を示すデータである。
【０１３４】
振りフラグデータＤｈは、左コントローラ３および右コントローラ４それぞれが振り動かされたと判定された際にオンに設定される振りフラグを示すデータである。移動フラグデータＤｉは、第１オブジェクトＧ１および第２オブジェクトＧ２それぞれが仮想空間内を移動中である場合にオンに設定される移動フラグを示すデータである。アクションフラグデータＤｊは、第１オブジェクトＧ１および第２オブジェクトＧ２が組となったアクションが行われている場合にオンに設定されるアクションフラグを示すデータである。戻りフラグデータＤｋは、第１オブジェクトＧ１および第２オブジェクトＧ２それぞれが移動開始位置に戻る仮想空間内の復路を移動している場合にオンに設定される戻りフラグを示すデータである。移動開始可能フラグデータＤｌは、第１オブジェクトＧ１が第１移動開始可能状態となった場合および第２オブジェクトＧ２が第２移動開始可能状態となった場合にそれぞれオンに設定される移動開始可能フラグを示すデータである。
【０１３５】
プレイヤオブジェクト位置データＤｍは、第１オブジェクトＧ１、第２オブジェクトＧ２、およびプレイヤオブジェクトＰＯの仮想空間における位置および方向（移動方向）をそれぞれ示すデータである。衝突領域データＤｎは、衝突領域Ａの仮想空間における位置、形状、および範囲を示すデータである。敵オブジェクト位置データＤｏは、敵オブジェクトＥＯの仮想空間における位置および方向を示すデータや当該敵オブジェクトＥＯから放たれるオブジェクト（例えば、左グラブ（左拳）および右グラブ（右拳）を模したオブジェクト）の仮想空間における位置および方向を示すデータである。
【０１３６】
画像データＤｐは、ゲームの際に本体装置２のディスプレイ１２や据置型モニタ６の表示画面に画像（例えば、仮想オブジェクトの画像、フィールド画像、背景画像）を表示するためのデータである。
【０１３７】
次に、本実施形態における情報処理（ゲーム処理）の詳細な一例を説明する。図１７は、情報処理システム１で実行されるゲーム処理の一例を示すフローチャートである。図１８〜図１９は、図１７におけるステップＳ１４４およびステップＳ１４５において行われるコントローラ振り認識処理の詳細の一例を示すサブルーチンである。図２０〜図２２は、図１７におけるステップＳ１４６およびステップＳ１４７において行われるオブジェクト軌道変化処理の詳細の一例を示すサブルーチンである。図２３は、図１７におけるステップＳ１４８において行われるプレイヤオブジェクト移動処理の詳細の一例を示すサブルーチンである。本実施形態においては、図１７〜図２３に示す一連の処理は、ＣＰＵ８１が各種プログラムＰａに含まれる通信プログラムや所定のアプリケーションプログラム（ゲームプログラム）を実行することによって行われる。また、図１７〜図２３に示すゲーム処理が開始されるタイミングは任意である。
【０１３８】
なお、図１７〜図２３に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて（または代えて）別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をＣＰＵ８１が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、ＣＰＵ８１以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置２において実行される処理の一部は、本体装置２と通信可能な他の情報処理装置（例えば、本体装置２とネットワークを介して通信可能なサーバ）によって実行されてもよい。すなわち、図１７〜図２３に示す各処理は、本体装置２を含む複数の情報処理装置が協働することによって実行されてもよい。
【０１３９】
図１７において、ＣＰＵ８１は、ゲーム処理における初期設定を行い（ステップＳ１４１）、次のステップに処理を進める。例えば、上記初期設定では、ＣＰＵ８１は、以下に説明する処理を行うためのパラメータを初期化する。また、上記初期設定では、ＣＰＵ８１は、ゲームプレイを行うためのゲームフィールドを設定し、当該ゲームフィールド上のプレイヤオブジェクトＰＯや敵オブジェクトＥＯの初期位置を設定してプレイヤオブジェクト位置データＤｍおよび敵オブジェクト位置データＤｏを更新する。また、ＣＰＵ８１は、第１オブジェクトＧ１および第２オブジェクトＧ２の移動方向をデフォルト値（例えば、正面方向）に初期設定してプレイヤオブジェクト位置データＤｍを更新する。また、ＣＰＵ８１は、移動開始可能フラグデータＤｌが示す移動開始可能フラグをオンに初期設定する。
【０１４０】
次に、ＣＰＵ８１は、左コントローラ３および右コントローラ４から操作データを取得して操作データＤａを更新し（ステップＳ１４２）、次のステップに処理を進める。
【０１４１】
次に、ＣＰＵ８１は、左コントローラ３および右コントローラ４それぞれの姿勢、角速度、加速度を算出し（ステップＳ１４３）、次のステップに処理を進める。例えば、ＣＰＵ８１は、左コントローラ３および右コントローラ４それぞれに生じている加速度を示すデータを操作データＤａから取得し、左コントローラ３および右コントローラ４それぞれに作用している重力加速度の方向を算出して、当該方向を示すデータを用いて姿勢データＤｂを更新する。重力加速度を抽出する方法については任意の方法を用いればよく、例えば左コントローラ３および右コントローラ４それぞれに平均的に生じている加速度成分を算出して当該加速度成分を重力加速度として抽出してもよい。そして、ＣＰＵ８１は、左コントローラ３に対して算出された重力加速度の方向を基準とした左コントローラ３のＸＹＺ軸方向を左コントローラ３の姿勢として算出し、当該姿勢を示すデータを用いて姿勢データＤｂを更新する。また、ＣＰＵ８１は、右コントローラ４に対して算出された重力加速度の方向を基準とした右コントローラ４のＸＹＺ軸方向を右コントローラ４の姿勢として算出し、当該姿勢を示すデータを用いて姿勢データＤｂを更新する。また、ＣＰＵ８１は、左コントローラ３および右コントローラ４それぞれに生じている角速度を示すデータを操作データＤａから取得し、左コントローラ３および右コントローラ４それぞれのＸＹＺ軸周りの角速度を算出して、当該角速度を示すデータを用いて角速度データＤｃを更新する。さらに、ＣＰＵ８１は、左コントローラ３および右コントローラ４それぞれに生じている加速度を示すデータを操作データＤａから取得し、左コントローラ３および右コントローラ４それぞれに生じているＸＹＺ軸方向の加速度から上記重力加速度成分を除去して、当該除去後の加速度を示すデータを用いて加速度データＤｄを更新する。
【０１４２】
なお、左コントローラ３や右コントローラ４の姿勢については、重力加速度を基準としたＸＹＺ軸方向が算出された以降は、ＸＹＺ各軸周りの角速度のみに応じて更新してもよい。しかしながら、左コントローラ３や右コントローラ４の姿勢と重力加速度の方向との関係が誤差の累積によってずれていくことを防止するために、所定周期毎に重力加速度の方向に対するＸＹＺ軸方向を算出して左コントローラ３や右コントローラ４の姿勢を修正してもよい。
【０１４３】
次に、ＣＰＵ８１は、左コントローラ振り認識処理を行い（ステップＳ１４４）、次のステップに処理を進める。以下、図１８〜図１９を参照して、上記ステップＳ１４４において行う左コントローラ振り認識処理について説明する。
【０１４４】
図１８において、ＣＰＵ８１は、左コントローラ３の処理に対して設定されている振りフラグをオフに設定して振りフラグデータＤｈを更新し、次のステップに処理を進める。
【０１４５】
次に、ＣＰＵ８１は、左コントローラ３に対する振り判定を除外するか否かを判定する（ステップＳ１６２）。例えば、ＣＰＵ８１は、左コントローラ３が振り戻されている状態である場合、振り判定を除外する。そして、ＣＰＵ８１は、左コントローラ３の振り判定を除外する場合、ステップＳ１６３に処理を進める。一方、ＣＰＵ８１は、左コントローラ３が振り判定を行う場合、ステップＳ１６４に処理を進める。
【０１４６】
左コントローラ３が振り戻されている状態であると判定する方法の第１の例として、ＣＰＵ８１は、姿勢データＤｂを参照して左コントローラ３のＹ軸周りの角速度を取得し、左コントローラ３が手前側への回転（例えば、Ｚ軸正方向が手前側に向く回転）をしている場合、上記ステップＳ１６２において肯定判定する。左コントローラ３が振り戻されている状態であると判定する方法の第２の例として、ＣＰＵ８１は、姿勢データＤｂを参照して左コントローラ３の姿勢を取得し、当該左コントローラ３が重力加速度の方向に対して後傾している姿勢（例えば、左コントローラ３のＸ軸正方向が実空間に対して水平方向より上を向いている姿勢）でとなっている場合、ＣＰＵ８１は、上記ステップＳ１６２において肯定判定する。左コントローラ３が振り戻されている状態であると判定する方法の第３の例として、ＣＰＵ８１は、加速度データＤｄを参照して左コントローラ３に生じている加速度を取得し、当該左コントローラ３がプレイヤへの方向に移動している（例えば、左コントローラ３に生じている加速度に左コントローラ３のＸ軸負方向成分が含まれている）場合、ＣＰＵ８１は、上記ステップＳ１６２において肯定判定する。
【０１４７】
ステップＳ１６３において、ＣＰＵ８１は、現時点において左コントローラ３に生じている加速度の大きさが左コントローラ３の振り判定をするための閾値より大きい場合、現時点において左コントローラ３に生じている加速度の大きさを当該閾値として設定して閾値データＤｅを更新し、ステップＳ１６４に処理を進める。ここで、後述により明らかとなるが、本実施例では、左コントローラ３に生じている加速度のうち、Ｙ軸方向成分を除いた加速度（以下、ＸＺ加速度と記載する）の大きさが閾値を越えた場合に、左コントローラ３が振り動かされたと判定している。上記ステップＳ１６３では、現時点において左コントローラ３に生じている加速度の大きさ（すなわち、現時点において左コントローラ３に生じている加速度からＹ軸方向成分の加速度を除いた大きさ）が上記閾値より大きい場合に、当該加速度の大きさを上記振り判定で用いる閾値として設定することによって、上記振り判定において否定判定されることになる。つまり、上記ステップＳ１６３は、左コントローラ３が振り戻されている状態となっている場合に実行される処理であり、左コントローラ３がパンチを繰り出す動作の前後で振り戻されているような場合に左コントローラ３がパンチを繰り出すように振られていると誤判定することを防止することができる。
【０１４８】
ステップＳ１６４において、ＣＰＵ８１は、左コントローラ３に生じているＸＺ加速度の大きさが上記閾値より大きいか否かを判定する。そして、ＣＰＵ８１は、左コントローラ３に生じているＸＺ加速度の大きさが上記閾値より大きい場合、ステップＳ１６５に処理を進める。一方、ＣＰＵ８１は、左コントローラ３に生じているＸＺ加速度の大きさが上記閾値以下である場合、ステップＳ１６８に処理を進める。ここで、本実施例では、左コントローラ３がパンチを繰り出すように、すなわち左コントローラ３がＸ軸正方向へ移動するように振り動かされたか否かを判定するために、左コントローラ３に生じている加速度のうち、Ｙ軸方向成分を除いたＸＺ加速度の大きさと所定値（上記ステップＳ１６３や後述するステップＳ１６７またはステップＳ１６８において設定される閾値）とが比較される。したがって、上記ステップＳ１６４においては、ＣＰＵ８１は、加速度データＤｄを参照して左コントローラ３のＸ軸方向およびＺ軸方向それぞれに生じている加速度を取得し、当該加速度を用いて左コントローラ３に生じているＸＺ加速度の大きさを算出する。そして、左コントローラ３が振り戻されている状態ではない場合、ＸＺ加速度の大きさが所定値または当該所定値に近づいた閾値を越えていれば、左コントローラ３がパンチを繰り出すように振られたと判定する。
【０１４９】
ステップＳ１６５において、ＣＰＵ８１は、一時変数Ｂが０であるか否かを判定する。そして、ＣＰＵ８１は、一時変数Ｂが０である場合、ステップＳ１６６に処理を進める。一方、ＣＰＵ８１は、一時変数Ｂが０でない場合、ステップＳ１６７に処理を進める。
【０１５０】
ステップＳ１６６において、ＣＰＵ８１は、左コントローラ３の処理に対して設定されている振りフラグをオンに設定して振りフラグデータＤｈを更新し、一時変数Ｂとして所定フレーム数を設定して、ステップＳ１６７に処理を進める。このように、左コントローラ３の処理に対して設定されている振りフラグは、左コントローラ３がパンチを繰り出すように振られたと判定され、かつ一時変数Ｂが０である場合にオンに設定される。
【０１５１】
ここで、上記ステップＳ１６６において、一時変数Ｂとして設定する所定フレーム数は、左コントローラ３がパンチを繰り出すように振られたと判定された直後に次の振り判定を除外する期間（振りフラグをオンに設定できない期間）を一時的に設定するものであり、本実施例では一例として１２フレームに設定する。例えば、左コントローラ３が振り動かされていると判定された後であっても、左コントローラ３に生じている加速度の上昇が継続することがあり得る。このような場合、上記ステップＳ１６４における振り判定では肯定判定が連続することになるが、このような肯定判定を全て左コントローラ３がパンチを繰り出すように振られたと見なすと意図しているパンチの判定ができなくなる。したがって、本実施例では、左コントローラ３がパンチを繰り出すように振られたと判定された後の所定期間（例えば、１２フレーム）は、当該判定されることを除外している。なお、他の例として、左コントローラ３がパンチを繰り出すように振られたと判定されて振りフラグがオンに設定されてから、左コントローラ３に生じている加速度の上昇（具体的には、ＸＺ加速度の上昇）が継続している期間を、振りフラグが再度オンに設定できない期間として設定してもよい。
【０１５２】
ステップＳ１６７において、ＣＰＵ８１は、左コントローラ３の振り判定をするための閾値として、現時点において左コントローラ３に生じている加速度の大きさを設定して閾値データＤｅを更新し、ステップＳ１６９に処理を進める。
【０１５３】
一方、上記ステップＳ１６４において左コントローラ３に生じているＸＺ加速度の大きさが上記閾値以下であると判定された場合、ＣＰＵ８１は、左コントローラ３の振り判定をするための閾値を予め定められた所定値に近づけて閾値データＤｅを更新し、ステップＳ１６９に処理を進める。一例として、ＣＰＵ８１は、閾値データＤｅが示す閾値を所定量だけ上記所定値に近づけて新たな閾値を設定し、当該閾値を用いて閾値データＤｅを更新する。他の例として、ＣＰＵ８１は、閾値データＤｅが示す閾値を所定割合だけ上記所定値に近づけて新たな閾値を設定し、当該閾値を用いて閾値データＤｅを更新する。このように左コントローラ３の振り判定をするための閾値を予め定められた所定値に近づけることによって、上記ステップＳ１６３やステップＳ１６７が実行されることによって上記閾値が上昇したとしても、所定時間経過後には意図している所定値を用いてコントローラの振り判定を行うことができる。
【０１５４】
ステップＳ１６９において、ＣＰＵ８１は、一時変数Ｂが０より大きいか否かを判定する。そして、ＣＰＵ８１は、一時変数Ｂが０より大きい場合、ステップＳ１７０に処理を進める。一方、ＣＰＵ８１は、一時変数Ｂが０である場合、ステップＳ１７１（図１９参照）に処理を進める。
【０１５５】
ステップＳ１７０において、ＣＰＵ８１は、一時変数Ｂから１減算して新たな一時変数Ｂを設定し、ステップＳ１７１（図１９参照）に処理を進める。
【０１５６】
図１９に進み、ステップＳ１７１において、ＣＰＵ８１は、振りフラグデータＤｈを参照して左コントローラ３の処理に対して設定されている振りフラグがオンに設定されているか否かを判定する。そして、ＣＰＵ８１は、左コントローラ３の処理に対して設定されている振りフラグがオンに設定されている場合、ステップＳ１７２に処理を進める。一方、ＣＰＵ８１は、左コントローラ３の処理に対して設定されている振りフラグがオフに設定されている場合、ステップＳ１７３に処理を進める。
【０１５７】
ステップＳ１７２において、ＣＰＵ８１は、左コントローラ３がパンチを繰り出すように振られたと判定された後の処理フレーム数をカウントするための一時変数Ｓとして所定フレーム数を設定し、ステップＳ１７５に処理を進める。ここで、一時変数Ｓとして設定する所定フレーム数は、左コントローラ３がパンチを繰り出すように振られたと判定されてから所定時間以内に第１移動開始可能状態になった場合に第１オブジェクトＧ１の移動を開始するための処理を行うための当該所定時間に相当するパラメータであり、本実施例では一例として１５フレームに設定する。したがって、上記第１移動開始可能状態でない場合であっても、左コントローラ３がパンチを繰り出すように振られたと判定されてから１５フレーム以内に上記第１移動開始可能状態になった場合は、第１オブジェクトＧ１の移動を開始するための処理が行われることになる。
【０１５８】
一方、上記ステップＳ１７１において、振りフラグがオフに設定されていると判定された場合、ＣＰＵ８１は、一時変数Ｓが０より大きいか否かを判定する。そして、ＣＰＵ８１は、一時変数Ｓが０より大きい場合、ステップＳ１７４に処理を進める。一方、ＣＰＵ８１は、一時変数Ｓが０である場合、ステップＳ１７５に処理を進める。
【０１５９】
ステップＳ１７４において、ＣＰＵ８１は、一時変数Ｓから１減算して新たな一時変数Ｓを設定し、ステップＳ１７５に処理を進める。
【０１６０】
ステップＳ１７５において、ＣＰＵ８１は、一時変数Ｓが０より大きいか否かを判定する。そして、ＣＰＵ８１は、一時変数Ｓが０より大きい場合、ステップＳ１７６に処理を進める。一方、ＣＰＵ８１は、一時変数Ｓが０である場合、当該サブルーチンによる処理を終了する。
【０１６１】
ステップＳ１７６において、ＣＰＵ８１は、移動開始可能フラグデータＤｌを参照して第１オブジェクトＧ１の処理に対して設定されている移動開始可能フラグがオンに設定されているか否かを判定する。そして、ＣＰＵ８１は、第１オブジェクトＧ１の処理に対して設定されている移動開始可能フラグがオンに設定されている場合、ステップＳ１７７に処理を進める。一方、ＣＰＵ８１は、第１オブジェクトＧ１の処理に対して設定されている移動開始可能フラグがオフに設定されている場合、当該サブルーチンを用いた処理を終了する。
【０１６２】
ステップＳ１７７において、ＣＰＵ８１は、第１オブジェクトＧ１の処理に対して設定されている移動フラグをオンに設定して移動フラグデータＤｉを更新し、次のステップに処理を進める。このように、左コントローラ３がパンチを繰り出すように振られたと判定されたときだけではなく、当該判定後であっても所定フレーム数（例えば、１５フレーム）が経過する前に、移動開始可能フラグがオン（すなわち、第１移動開始可能状態）になれば、第１オブジェクトＧ１の処理に対して設定されている移動フラグがオンに設定される。
【０１６３】
次に、ＣＰＵ８１は、第１オブジェクトＧ１の処理に対して設定されている移動開始可能フラグをオフに設定して移動開始可能フラグデータＤｌを更新し、一時変数Ｓを０に設定して（ステップＳ１７８）、次のステップに処理を進める。このように、第１オブジェクトＧ１が仮想空間内を移動することを示す移動フラグがオンに設定された場合、第１移動開始可能状態ではなくなるため第１オブジェクトＧ１の移動開始可能フラグがオフに設定されるとともに、上記所定フレーム数も０に設定される。なお、プレイヤオブジェクトＰＯが敵オブジェクトＥＯに対して攻撃できない状態（例えば、プレイヤオブジェクトＰＯがダメージを受けて一時的にダウンしている状態）である場合、移動開始可能フラグを適宜オフに設定して移動開始可能フラグデータＤｌを設定してもよい。この場合、プレイヤオブジェクトＰＯが上記攻撃できない状態から回復した場合に、移動開始可能フラグがオンに設定される。
【０１６４】
次に、ＣＰＵ８１は、現時点が第２オブジェクトＧ２を移動開始してから所定フレーム数（例えば、４フレーム数）以内か否かを判定する（ステップＳ１７９）。例えば、ＣＰＵ８１は、後述するステップＳ１４５において左コントローラ振り認識処理と同様の処理を右コントローラ４に対しても行っており、現時点が当該ステップＳ１４５において右コントローラ４の処理に対して設定されている移動フラグがオンされてから所定フレーム数以内であれば、上記ステップＳ１７９において肯定判定する。そして、ＣＰＵ８１は、現時点が第２オブジェクトＧ２を移動開始してから所定フレーム数以内である場合、ステップＳ１８０に処理を進める。一方、ＣＰＵ８１は、現時点が第２オブジェクトＧ２を移動開始してから所定フレーム数以内でない場合、当該サブルーチンを用いた処理を終了する。
【０１６５】
ステップＳ１８０において、ＣＰＵ８１は、アクションフラグをオンに設定してアクションフラグデータＤｊを更新し、当該サブルーチンを用いた処理を終了する。このように、第１オブジェクトＧ１および第２オブジェクトＧ２の一方のオブジェクトが移動開始してから所定フレーム数以内に、他方のオブジェクトが移動開始した場合、アクションフラグがオンに設定される。
【０１６６】
図１７に戻り、上記ステップＳ１４４における左コントローラ振り認識処理の後、ＣＰＵ８１は、右コントローラ振り認識処理を行い（ステップＳ１４５）、次のステップに処理を進める。なお、図１８および図１９を用いて説明したコントローラ振り認識処理は、上記ステップＳ１４５の右コントローラ振り認識処理においても用いられるサブルーチンである。すなわち、上記左コントローラ振り認識処理において処理対象としていた左コントローラ３および第１オブジェクトＧ１を右コントローラ４および第２オブジェクトＧ２にすることによって、同じサブルーチンを用いることによって同様の処理が可能となる。したがって、上記ステップＳ１４５の右コントローラ振り認識処理の詳細な説明については省略する。
【０１６７】
次に、ＣＰＵ８１は、第１オブジェクト軌道変化処理を行い（ステップＳ１４６）、次のステップに処理を進める。以下、図２０〜図２２を参照して、上記ステップＳ１４６において行う第１オブジェクト軌道変化処理について説明する。
【０１６８】
図２０において、ＣＰＵ８１は、移動フラグデータＤｉを参照して第１オブジェクトＧ１の処理に対して設定されている移動フラグがオンに設定されているか否かを判定する（ステップＳ１９１）。そして、ＣＰＵ８１は、第１オブジェクトＧ１の処理に対して設定されている移動フラグがオンに設定されている場合、ステップＳ１９２に処理を進める。一方、ＣＰＵ８１は、第１オブジェクトＧ１の処理に対して設定されている移動フラグがオフに設定されている場合、当該サブルーチンを用いた処理を終了する。
【０１６９】
ステップＳ１９２において、ＣＰＵ８１は、一時変数Ｓが所定数以上か否かを判定する。そして、ＣＰＵ８１は、一時変数Ｓが所定数以上である場合、ステップＳ１９３に処理を進める。一方、ＣＰＵ８１は、一時変数Ｓが所定数未満である場合、ステップＳ２１１（図２１参照）に処理を進める。ここで、上記ステップＳ１９２では、左コントローラ３がパンチを繰り出すように振られたと判定されてから当該パンチ操作が終わるまでの期間であるか否かを判定しており、パンチ操作中であると判定される場合とパンチ操作が終わったと判定される場合とによって異なる軌道設定を行っている。したがって、上記ステップＳ１９２で用いる所定数は、上記期間を判別可能なフレーム数に設定すればよく、例えば所定数＝７に設定される。
【０１７０】
ステップＳ１９３において、ＣＰＵ８１は、重力加速度の方向に対する左コントローラ３のＹ軸方向の傾きを算出し、次のステップに処理を進める。例えば、ＣＰＵ８１は、姿勢データＤｂを参照して左コントローラ３の姿勢を取得し、重力加速度の方向に対する当該左コントローラ３のＹ軸方向の傾きを算出する。
【０１７１】
次に、ＣＰＵ８１は、左コントローラ３のＹ軸方向の傾き角度に応じて、第１オブジェクトＧ１のカーブ値Ｃを算出してカーブ値データＤｆを更新し（ステップＳ１９４）、ステップＳ１９５に処理を進める。ここで、第１オブジェクトＧ１のカーブ値Ｃは、第１オブジェクトＧ１の軌道を左右に変化させるための係数であり、例えば−１≦Ｃ≦１となるように設定される。そして、上記ステップＳ１９４では、左コントローラ３のＹ軸方向がＸ軸正方向に向かって右に傾いている場合にカーブ値Ｃを正の値に設定し、当該Ｙ軸方向が水平方向に対して右に４０°傾いている場合にＣ＝１に設定され、当該Ｙ軸方向が水平方向に対して右に４０°以上傾いたとしてもＣが上限値である１に設定される。また、左コントローラ３のＹ軸方向がＸ軸正方向に向かって左に傾いている場合にカーブ値Ｃを負の値に設定し、当該Ｙ軸方向が水平方向に対して左に４０°傾いている場合にＣ＝−１に設定され、当該Ｙ軸方向が水平方向に対して左に４０°以上傾いたとしてもＣが下限値である−１に設定される。
【０１７２】
一方、図２１に示すように、一時変数Ｓが所定数未満である場合、ＣＰＵ８１は、重力加速度方向周りの左コントローラ３の回転速度Ｖを算出し（ステップＳ２１１）、次のステップに処理を進める。例えば、ＣＰＵ８１は、姿勢データＤｂを参照して左コントローラ３に作用している重力加速度の方向を取得する。また、ＣＰＵ８１は、角速度データＤｃを参照して左コントローラ３に生じているＸＹＺ軸周りの角速度を取得する。そして、ＣＰＵ８１は、ＸＹＺ各軸周り角速度および重力加速度の方向を用いて重力加速度方向周りの左コントローラ３の角速度を算出し、当該角速度に応じた左コントローラ３の回転速度Ｖを算出して回転速度データＤｇを更新する。
【０１７３】
次に、ＣＰＵ８１は、左コントローラ３に生じている角速度から上記回転速度Ｖに相当する角速度を除いた成分の大きさより、回転速度Ｖの大きさの方が大きいか否かを判定する（ステップＳ２１２）。そして、ＣＰＵ８１は、回転速度Ｖの大きさの方が大きい場合、ステップＳ２１３に処理を進める。一方、ＣＰＵ８１は、回転速度Ｖの大きさの方が小さいまたは同じである場合、ステップＳ２１６に処理を進める。ここで、上記ステップＳ２１２の処理は、左コントローラ３に生じている角速度がどの方向周りを主体として生じているのか判定するためのものであり、実空間における左コントローラ３の動きが重力加速度周りに回転するヨー方向の動きが主体なのか、他の方向周りに回転する動きが主体なのかを判定している。
【０１７４】
ステップＳ２１３において、ＣＰＵ８１は、重力加速度方向周りの左コントローラ３の角速度に基づいて、左コントローラ３が重力加速度の方向を中心に左ヨー方向に回転しているか否かを判定する。そして、ＣＰＵ８１は、左コントローラ３が重力加速度の方向を中心に左ヨー方向に回転している場合、左コントローラ３の回転速度Ｖを１．１５倍して回転速度データＤｇを更新し（ステップＳ２１５）、ステップＳ２１７に処理を進める。一方、ＣＰＵ８１は、左コントローラ３が重力加速度の方向を中心に左ヨー方向に回転していない場合、そのままステップＳ２１７に処理を進める。一般的に、人間の手首が曲がる方向を考えた場合、ユーザが左手で把持する左コントローラ３を右ヨー方向に回転させる操作と比べて左ヨー方向に回転させる操作がやりにくくなる。上記ステップＳ２１３およびステップＳ２１５の処理は、このような操作の難易を考慮したものであり、やりにくい方向にコントローラを動かす操作であっても、他の操作と同様にオブジェクトを制御することができる。
【０１７５】
なお、当該サブルーチンを第２オブジェクトＧ２の軌道変化処理を行うために用いる場合、上記ステップＳ２１３では右コントローラ４が重力加速度の方向を中心に右ヨー方向に回転しているか否かを判定する。そして、右コントローラ４が重力加速度の方向を中心に右ヨー方向に回転している場合、右コントローラ４の回転速度Ｖを１．１５倍して回転速度データＤｇを更新することになる。
【０１７６】
一方、回転速度Ｖに相当する角速度の方が小さいまたは同じである場合、ＣＰＵ８１は、左コントローラ３のＸ軸方向周りの角速度に応じて回転速度Ｖを算出し（ステップＳ２１６）、ステップＳ２１７に処理を進める。例えば、ＣＰＵ８１は、角速度データＤｃを参照して左コントローラ３のＸ軸方向周りの角速度を取得し、当該角速度に応じた左コントローラ３の回転速度Ｖを算出して回転速度データＤｇを更新する。
【０１７７】
ステップＳ２１７において、ＣＰＵ８１は、第１オブジェクトＧ１のカーブ値Ｃに左コントローラ３の回転速度Ｖを加算して新たなカーブ値Ｃを算出して、次のステップに処理を進める。例えば、ＣＰＵ８１は、カーブ値データＤｆおよび回転速度データＤｇを参照して第１オブジェクトＧ１のカーブ値Ｃおよび左コントローラ３の回転速度Ｖを取得し、カーブ値Ｃに回転速度Ｖを加算することによって得られる第１オブジェクトＧ１の新たなカーブ値Ｃを用いて、カーブ値データＤｆを更新する。
【０１７８】
次に、ＣＰＵ８１は、第１オブジェクトＧ１のカーブ値Ｃが所定の上限値Ｃｍａｘ（例えば、Ｃｍａｘ＝１）を超えているか否かを判定する（ステップＳ２１８）。そして、ＣＰＵ８１は、第１オブジェクトＧ１のカーブ値Ｃが上限値Ｃｍａｘを超えている場合、第１オブジェクトＧ１のカーブ値Ｃとして上限値Ｃｍａｘを設定してカーブ値データＤｆを更新し（ステップＳ２１９）、ステップＳ２２０に処理を進める。一方、ＣＰＵ８１は、第１オブジェクトＧ１のカーブ値Ｃが上限値Ｃｍａｘを超えていない場合、そのままステップＳ２２０に処理を進める。
【０１７９】
ステップＳ２２０において、ＣＰＵ８１は、第１オブジェクトＧ１のカーブ値Ｃが所定の下限値Ｃｍｉｎ（例えば、Ｃｍｉｎ＝−１）より小さいか否かを判定する。そして、ＣＰＵ８１は、第１オブジェクトＧ１のカーブ値Ｃが下限値Ｃｍｉｎより小さい場合、第１オブジェクトＧ１のカーブ値Ｃとして下限値Ｃｍｉｎを設定してカーブ値データＤｆを更新し（ステップＳ２２１）、ステップＳ１９５（図２０参照）に処理を進める。一方、ＣＰＵ８１は、第１オブジェクトＧ１のカーブ値Ｃが下限値Ｃｍｉｎ以上である場合、そのままステップＳ１９５に処理を進める。
【０１８０】
図２０に戻り、ステップＳ１９５において、ＣＰＵ８１は、第１オブジェクトＧ１のカーブ値Ｃを用いて第１オブジェクトＧ１の移動方向を算出し、次のステップに処理を進める。例えば、ＣＰＵ８１は、カーブ値データＤｆを参照して第１オブジェクトＧ１のカーブ値Ｃを取得し、プレイヤオブジェクト位置データＤｍを参照して第１オブジェクトＧ１の移動方向を取得する。そして、ＣＰＵ８１は、取得した第１オブジェクトＧ１のカーブ値Ｃが正の値の場合、取得した第１オブジェクトＧ１の移動方向をカーブ値の大きさに応じて右に変更し、当該変更後の第１オブジェクトＧ１の移動方向を用いてプレイヤオブジェクト位置データＤｍを更新する。また、ＣＰＵ８１は、取得した第１オブジェクトＧ１のカーブ値Ｃが負の値の場合、取得した第１オブジェクトＧ１の移動方向をカーブ値の大きさに応じて左に変更し、当該変更後の第１オブジェクトＧ１の移動方向を用いてプレイヤオブジェクト位置データＤｍを更新する。
【０１８１】
なお、第１オブジェクトＧ１が移動開始位置に戻る仮想空間内の復路を移動している場合、第１オブジェクトＧ１のカーブ値Ｃによって移動方向を変更することなく、現在の第１オブジェクトＧ１の位置から移動開始位置に戻る方向に移動方向を固定して設定してもよい。第１オブジェクトＧ１が復路を移動しているか否かについては、後述する戻りフラグがオンに設定されているか否かによって判別することができる。
【０１８２】
次に、ＣＰＵ８１は、第１オブジェクトＧ１の移動方向に基づいて、第１オブジェクトＧ１を移動させ（ステップＳ１９６）、次のステップに処理を進める。例えば、ＣＰＵ８１は、プレイヤオブジェクト位置データＤｍを参照して第１オブジェクトＧ１の位置および移動方向を取得し、当該第１オブジェクトＧ１の位置から当該移動方向に基づいて第１オブジェクトＧ１を移動させ、当該移動後の第１オブジェクトＧ１の位置を用いてプレイヤオブジェクト位置データＤｍを更新する。
【０１８３】
次に、ＣＰＵ８１は、アクションフラグデータＤｊを参照して、アクションフラグがオンに設定されているか否かを判定する（ステップＳ１９７）。そして、ＣＰＵ８１は、アクションフラグがオンに設定されている場合、ステップＳ１９８に処理を進める。一方、ＣＰＵ８１は、アクションフラグがオフに設定されている場合、ステップＳ２３１（図２２参照）に処理を進める。
【０１８４】
ステップＳ１９８において、ＣＰＵ８１は、第１オブジェクトＧ１と第２オブジェクトＧ２との間に衝突領域Ａを設定し、ステップＳ２３１（図２２参照）に処理を進める。例えば、ＣＰＵ８１は、プレイヤオブジェクト位置データＤｍを参照して第１オブジェクトＧ１の位置および第２オブジェクトＧ２の位置を取得し、当該位置に基づいて衝突領域Ａの仮想空間における位置、形状、および範囲を設定して、衝突領域データＤｎを更新する。このようにアクションフラグがオンに設定された状態で第１オブジェクトＧ１（および第２オブジェクトＧ２）の移動方向および移動後の位置が設定される場合は、当該第１オブジェクトＧ１と第２オブジェクトＧ２との間に衝突領域Ａを設定される。
【０１８５】
図２２に進み、ＣＰＵ８１は、衝突判定処理を行い（ステップＳ２３１）、次のステップに処理を進める。例えば、ＣＰＵ８１は、プレイヤオブジェクト位置データＤｍ、衝突領域データＤｎ、および敵オブジェクト位置データＤｏを参照して、第１オブジェクトＧ１および衝突領域Ａと、仮想空間における他のオブジェクト（例えば、敵オブジェクトＥＯ）とにおける、仮想空間における衝突を判定する。
【０１８６】
次に、ＣＰＵ８１は、第１オブジェクトＧ１および衝突領域Ａの少なくとも１つと他のオブジェクトとが、仮想空間において衝突したか否かを判定する（ステップＳ２３２）。そして、ＣＰＵ８１は、第１オブジェクトＧ１および衝突領域Ａの少なくとも１つと他のオブジェクトとが衝突した場合、ステップＳ２３３に処理を進める。一方、ＣＰＵ８１は、第１オブジェクトＧ１および衝突領域Ａの何れも他のオブジェクトと衝突していない場合、ステップＳ２３５に処理を進める。
【０１８７】
ステップＳ２３３において、ＣＰＵ８１は、他のオブジェクトに対する衝突アクション処理を行い、次のステップに処理を進める。例えば、ＣＰＵ８１は、第１オブジェクトＧ１と敵オブジェクトＥＯとが衝突した場合、当該衝突に応じたダメージを敵オブジェクトＥＯに与えるとともに、当該ダメージに応じた所定のアクションを設定する。また、ＣＰＵ８１は、衝突領域Ａと敵オブジェクトＥＯとが衝突した場合、当該衝突に応じたダメージを敵オブジェクトＥＯに与えるとともに、第１オブジェクトＧ１および第２オブジェクトＧ２が組となった「両手パンチアクション」を設定する。
【０１８８】
なお、本実施例では、第１オブジェクトＧ１が敵オブジェクトＥＯに向かって移動している期間だけでなく、第１オブジェクトＧ１がプレイヤオブジェクトＰＯに向かって戻る期間においても、当該第１オブジェクトＧ１が他のオブジェクトと衝突した場合に衝突アクション処理が行われる。しかしながら、第１オブジェクトＧ１が敵オブジェクトＥＯに向かって移動している期間に限って他のオブジェクトに対する衝突アクション処理を行う場合は、第１オブジェクトＧ１がプレイヤオブジェクトＰＯに向かって戻る期間（戻りフラグがオンとなった状態）においては、上記ステップＳ２３２において第１オブジェクトＧ１と他のオブジェクトとが衝突していないと常に判定して当該衝突アクション処理を行わなくてもかまわない。
【０１８９】
次に、ＣＰＵ８１は、アクションフラグをオフに設定してアクションフラグデータＤｊを更新するとともに、衝突領域データＤｎを衝突領域なし（例えば、Ｎｕｌｌ）に設定して、ステップＳ２３５に処理を進める。このように、第１オブジェクトＧ１、第２オブジェクトＧ２、または衝突領域Ａのいずれかが他のオブジェクトと衝突するアクションが設定された場合、アクションフラグがオフに設定されるとともに、衝突領域に関する設定データが消去される。
【０１９０】
ステップＳ２３５において、ＣＰＵ８１は、戻りフラグデータＤｋを参照して第１オブジェクトＧ１の処理に対して設定されている戻りフラグがオンに設定されているか否かを判定する。そして、ＣＰＵ８１は、第１オブジェクトＧ１の処理に対して設定されている戻りフラグがオフに設定されている場合、ステップＳ２３６に処理を進める。一方、ＣＰＵ８１は、第１オブジェクトＧ１の処理に対して設定されている戻りフラグがオンに設定されている場合、ステップＳ２３９に処理を進める。
【０１９１】
ステップＳ２３６において、ＣＰＵ８１は、第１オブジェクトＧ１が移動開始位置に戻る仮想空間内の復路を移動する動作を行うか否かを判定する。例えば、ＣＰＵ８１は、第１オブジェクトＧ１が移動開始位置から所定距離離れた位置に到達した場合、第１オブジェクトＧ１が敵オブジェクトＥＯの位置を通過した後に所定時間経過した場合、第１オブジェクトＧ１または衝突領域Ａが他のオブジェクトに衝突した後に所定時間経過した場合等の条件を満たす場合、第１オブジェクトＧ１が復路を移動する動作を行うと判定する。そして、ＣＰＵ８１は、第１オブジェクトＧ１が復路を移動する動作を行う場合、ステップＳ２３７に処理を進める。一方、ＣＰＵ８１は、第１オブジェクトＧ１が復路を移動する動作を行なわない場合、当該サブルーチンによる処理を終了する。
【０１９２】
ステップＳ２３７において、ＣＰＵ８１は、第１オブジェクトＧ１の処理に対して設定されている戻りフラグをオンに設定して戻りフラグデータＤｋを更新し、次のステップに処理を進める。このように、第１オブジェクトＧ１が復路を移動する動作が設定された場合、第１オブジェクトＧ１の処理に対して設定されている戻りフラグがオンに設定される。
【０１９３】
次に、ＣＰＵ８１は、第１オブジェクトＧ１の移動方向として、移動開始位置に向かう方向を設定して（ステップＳ２３８）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ８１は、プレイヤオブジェクト位置データＤｍを参照して第１オブジェクトＧ１の現在位置から移動開始位置へ向かう方向を第１オブジェクトＧ１の移動方向として算出し、当該移動方向を用いてプレイヤオブジェクト位置データＤｍを更新する。なお、上記ステップＳ２３８において設定する第１オブジェクトＧ１の移動方向は、第１オブジェクトＧ１が連結されているオブジェクト（例えば、プレイヤオブジェクトＰＯの伸びた腕オブジェクト）に沿った方向に設定してもよいし、第１オブジェクトＧ１が移動開始位置から移動した際の軌道を逆に戻るように設定してもよい。
【０１９４】
一方、戻りフラグがオンに設定されている場合、ＣＰＵ８１は、第１オブジェクトＧ１が移動開始位置まで戻ったか否かを判定する（ステップＳ２３９）。例えば、ＣＰＵ８１は、プレイヤオブジェクト位置データＤｍを参照して、第１オブジェクトＧ１の位置が移動開始位置に設定されている場合、上記ステップＳ２３９において肯定判定する。そして、ＣＰＵ８１は、第１オブジェクトＧ１が移動開始位置まで戻った場合、ステップＳ２４０に処理を進める。一方、ＣＰＵ８１は、第１オブジェクトＧ１が移動開始位置まで戻っていない場合、当該サブルーチンによる処理を終了する。
【０１９５】
ステップＳ２４０において、ＣＰＵ８１は、第１オブジェクトＧ１の処理に対して設定されている移動開始可能フラグをオンに設定して移動開始可能フラグデータＤｌを更新し、次のステップに処理を進める。このように、第１オブジェクトＧ１が仮想空間内を再度移動可能な状態となった場合、第１移動開始可能状態となるため第１オブジェクトＧ１の移動開始可能フラグがオンに設定される。なお、上記ステップＳ２４０では、第１オブジェクトＧ１が移動開始位置まで戻った場合に即時に第１オブジェクトＧ１の移動開始可能フラグをオンに設定して第１移動開始可能状態としているが、他のタイミングで第１移動開始可能状態を開始してもよい。例えば、第１オブジェクトＧ１が移動開始位置まで戻ってから所定時間（例えば、８フレーム数）経過したタイミングで第１移動開始可能状態が開始されてもよい。
【０１９６】
次に、ＣＰＵ８１は、第１オブジェクトＧ１の処理に対して設定されている移動フラグおよび戻りフラグをオフに設定し、アクションフラグをオフに設定し、衝突領域や第１オブジェクトＧ１の移動方向に関するデータをデフォルト値に設定して（ステップＳ２４１）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ８１は、第１オブジェクトＧ１の処理に対して設定されている移動フラグおよび戻りフラグをそれぞれオフに設定して、移動フラグデータＤｉおよび戻りフラグデータＤｋをそれぞれ更新する。また、ＣＰＵ８１は、アクションフラグをオフに設定して、アクションフラグデータＤｊを更新する。また、ＣＰＵ８１は、衝突領域に関する設定データを衝突領域なし（例えば、Ｎｕｌｌ）に設定して、衝突領域データＤｎを更新する。また、ＣＰＵ８１は、第１オブジェクトＧ１の移動方向をデフォルト値（例えば、正面方向）に設定して、プレイヤオブジェクト位置データＤｍを更新する。
【０１９７】
図１７に戻り、上記ステップＳ１４６における第１オブジェクト軌道変化処理の後、ＣＰＵ８１は、第２オブジェクト軌道変化処理を行い（ステップＳ１４７）、次のステップに処理を進める。なお、図２０〜図２２を用いて説明したオブジェクト軌道変化処理は、上記ステップＳ１４７の第２オブジェクト軌道変化処理においても用いられるサブルーチンである。すなわち、上記第１オブジェクト軌道変化処理において処理対象としていた左コントローラ３および第１オブジェクトＧ１を右コントローラ４および第２オブジェクトＧ２にすることによって、同じサブルーチンを用いることによって同様の処理が可能となる。したがって、上記ステップＳ１４７の第２オブジェクト軌道変化処理の詳細な説明については省略する。
【０１９８】
次に、ＣＰＵ８１は、プレイヤオブジェクト移動処理を行い（ステップＳ１４８）、次のステップに処理を進める。以下、図２３を参照して、上記ステップＳ１４８において行うプレイヤオブジェクト移動処理について説明する。
【０１９９】
図２３において、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるピッチ方向に対する傾きが同じ方向であるか否かを判定する（ステップＳ２５１）。例えば、ＣＰＵ８１は、姿勢データＤｂを参照して左コントローラ３のＸ軸正方向と右コントローラ４のＸ軸正方向とが実空間の水平方向に対してともに仰角方向にある、またはともに俯角方向にある場合、上記ステップＳ２５１において肯定判定する。そして、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるピッチ方向に対する傾きが同じ方向である場合、ステップＳ２５２に処理を進める。一方、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるピッチ方向に対する傾きが同じ方向にない場合、ステップＳ２５３に処理を進める。
【０２００】
ステップＳ２５２において、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるピッチ方向に対する傾き角度の平均値Ｐを算出し、ステップＳ２５４に処理を進める。例えば、ＣＰＵ８１は、姿勢データＤｂを参照して、左コントローラ３のＸ軸正方向と実空間の水平方向との差角と右コントローラ４のＸ軸正方向と実空間の水平方向との差角とを算出し、当該差角の平均値Ｐを算出する。例えば、上記差角は、Ｘ軸正方向が俯角方向である場合に正の値となり、Ｘ軸正方向が仰角方向である場合に負の値となるように算出する。
【０２０１】
一方、上記ステップ２５１において左コントローラ３および右コントローラ４の実空間におけるピッチ方向に対する傾きが同じ方向にないと判定された場合、ＣＰＵ８１は、平均値Ｐを０に設定し（ステップＳ２５３）、ステップＳ２５４に処理を進める。
【０２０２】
ステップＳ２５４において、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるロール方向に対する傾きが同じ方向であるか否かを判定する。例えば、ＣＰＵ８１は、姿勢データＤｂを参照して左コントローラ３のＹ軸正方向と右コントローラ４のＹ軸正方向とが実空間の水平方向に対してともに仰角方向にある、またはともに俯角方向にある場合、上記ステップＳ２５４において肯定判定する。そして、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるロール方向に対する傾きが同じ方向である場合、ステップＳ２５５に処理を進める。一方、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるロール方向に対する傾きが同じ方向にない場合、ステップＳ２５６に処理を進める。
【０２０３】
ステップＳ２５５において、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるロール方向に対する傾き角度の平均値Ｒを算出し、ステップＳ２５７に処理を進める。例えば、ＣＰＵ８１は、姿勢データＤｂを参照して、左コントローラ３のＹ軸正方向と実空間の水平方向との差角と右コントローラ４のＹ軸正方向と実空間の水平方向との差角とを算出し、当該差角の平均値Ｒを算出する。例えば、上記差角は、Ｙ軸正方向が俯角方向である場合に正の値となり、Ｙ軸正方向が仰角方向である場合に負の値となるように算出する。
【０２０４】
一方、上記ステップ２５４において左コントローラ３および右コントローラ４の実空間におけるロール方向に対する傾きが同じ方向にないと判定された場合、ＣＰＵ８１は、平均値Ｒを０に設定し（ステップＳ２５６）、ステップＳ２５７に処理を進める。
【０２０５】
ステップＳ２５７において、ＣＰＵ８１は、平均値Ｐに応じた前後移動量と平均値Ｒに応じた左右移動量とを合成して移動量Ｍを算出し、次のステップに処理を進める。例えば、ＣＰＵ８１は、平均値Ｐが正の値である場合に仮想空間における前方へ移動し、平均値Ｐが負の値である場合に仮想空間における後方へ移動する前後移動量を、当該平均値Ｐの値に応じて算出する。また、ＣＰＵ８１は、平均値Ｒが正の値である場合に仮想空間における右へ移動し、平均値Ｒが負の値である場合に仮想空間における左へ移動する左右移動量を、当該平均値Ｒの値に応じて算出する。そして、上記前後移動量および上記左右移動量を合成することによって、仮想空間に対する移動量Ｍを算出する。
【０２０６】
次に、ＣＰＵ８１は、移動フラグの設定状況に応じて移動量Ｍをスケーリングし（ステップＳ２５８）、次のステップに処理を進める。例えば、ＣＰＵ８１は、移動フラグデータＤｉを参照して第１オブジェクトＧ１および第２オブジェクトＧ２の処理に対してそれぞれ設定されている移動フラグが両方オフに設定されている場合、移動量Ｍはそのままの値とする。また、ＣＰＵ８１は第１オブジェクトＧ１および第２オブジェクトＧ２の処理に対してそれぞれ設定されている移動フラグの一方のみオンに設定されている場合、移動量Ｍを所定倍率によって縮小（例えば、０．９倍して縮小）する。また、ＣＰＵ８１は第１オブジェクトＧ１および第２オブジェクトＧ２の処理に対してそれぞれ設定されている移動フラグの両方がオンに設定されている場合、移動量Ｍを０に設定する。
【０２０７】
次に、ＣＰＵ８１は、上記ステップＳ２５８においてスケーリングされた移動量Ｍに応じて、プレイヤオブジェクトＰＯを仮想空間において移動させ（ステップＳ２５９）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ８１は、プレイヤオブジェクト位置データＤｍが示す仮想空間におけるプレイヤオブジェクトＰＯの位置を移動量Ｍに応じて移動させ、移動後のプレイヤオブジェクトＰＯの位置を用いてプレイヤオブジェクト位置データＤｍを更新する。
【０２０８】
図１７に戻り、上記ステップＳ１４８におけるプレイヤオブジェクト移動処理の後、ＣＰＵ８１は、表示制御処理を行い（ステップＳ１４９）、次のステップに処理を進める。例えば、ＣＰＵ８１は、プレイヤオブジェクト位置データＤｍ、および敵オブジェクト位置データＤｏを用いて、ゲームフィールド上にプレイヤオブジェクトＰＯ、第１オブジェクトＧ１、第２オブジェクトＧ２、敵オブジェクトＥＯを配置する。また、ＣＰＵ８１は、アクションフラグデータＤｊが示すアクションフラグがオンに設定されており、衝突領域データＤｎに衝突領域Ａに関する設定データが設定されている場合は、第１オブジェクトＧ１および第２オブジェクトＧ２の間に衝突領域Ａに対応するオブジェクトを配置する。さらに、ＣＰＵ８１は、上記ステップＳ２３３において衝突アクションが設定されている場合は、当該設定内容に応じて各仮想オブジェクトを動作させる。そして、ＣＰＵ８１は、所定の位置（例えば、プレイヤオブジェクトＰＯの背後）に配置された仮想カメラからゲームフィールドを見た仮想空間画像を生成し、当該仮想空間画像を表示装置（例えば、据置型モニタ６）の表示画面に表示する処理を行う。
【０２０９】
次に、ＣＰＵ８１は、ゲームを終了するか否かを判定する（ステップＳ１５０）。上記ステップＳ１５０においてゲームを終了する条件としては、例えば、上記ゲームの結果が確定したことや、ユーザがゲームを終了する操作を行ったこと等がある。ＣＰＵ８１は、ゲームを終了しない場合に上記ステップＳ１４２に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。以降、ステップＳ１４２〜ステップＳ１５０の一連の処理は、ステップＳ１５０でゲームを終了すると判定されるまで繰り返し実行される。
【０２１０】
このように、本実施例においては、第１オブジェクトＧ１が移動開始可能となる第１移動開始可能状態や第２オブジェクトＧ２が移動開始可能となる第２移動開始可能状態が断続的に到来し、第１移動開始可能状態となった場合に左コントローラ３を振ることによって第１オブジェクトＧ１の動作制御が可能となり、第２移動開始可能状態となった場合に右コントローラ４を振ることによって第２オブジェクトＧ２の動作制御が可能となる。しかしながら、本実施例では、第１移動開始可能状態でない場合であっても、左コントローラ３が振り動かされてから所定期間以内に第１移動開始可能状態になれば当該左コントローラ３の振り判定結果に基づいて第１オブジェクトＧ１の動作制御が可能となる。また、第２移動開始可能状態でない場合であっても、右コントローラ４が振り動かされてから所定期間以内に第２移動開始可能状態になれば当該右コントローラ４の振り判定結果に基づいて第２オブジェクトＧ２の動作制御が可能となる。したがって、上述したように第１移動開始可能状態および／または第２移動開始可能状態が断続的に到来するゲームであっても、操作を容易にすることが可能となる。
【０２１１】
なお、上述したゲーム例では、第１オブジェクトＧ１および第２オブジェクトＧ２は、それぞれ移動中であっても左コントローラ３や右コントローラ４を用いた操作によって軌道が変化するため、結果的に第１移動開始可能状態が終了してから次の第１移動開始可能状態となるまでの時間や第２移動開始可能状態が終了してから次の第２移動開始可能状態となるまでの時間が長いものであることが前提となっている。このように、次の移動が開始可能となるまでの時間が長くなるゲームにおいては、先行して移動開始する操作（振り操作）を受け付けるゲーム仕様が効果的となるが、他の仕様によって次の移動が開始可能となるまでの時間が長くなるゲームであってもよいことは言うまでない。例えば、上述したゲーム例では、プレイヤオブジェクトＰＯの腕が伸びることによって移動中の動きを制御可能にしているが、プレイヤオブジェクトの他の五体（例えば、脚）が伸びるゲームやプレイヤオブジェクトが所持している物体（鞭オブジェクト、蛇腹オブジェクト等）が伸びるゲームに本発明を適用してもよい。また、プレイヤオブジェクトが遠隔操作可能なオブジェクト（例えば、ラジコン、ロボット、ロケットパンチ等）を移動中に操作し、再びプレイヤオブジェクトの手元に帰った場合に次の移動が可能となるゲームに本発明を適用してもよい。
【０２１２】
また、移動中にさらなる軌道変化が制御できないゲームであっても、本発明を適用することができる。一例として、敵を射撃したり砲撃したりするゲームにおいて、次の弾を充填するための時間が長いために次の射撃や砲撃が可能となるまでの時間が長くなるゲームであってもよい。この場合、射撃や砲撃が可能となる所定時間前に射撃操作や砲撃操作が先行した場合に当該射撃操作や砲撃操作によって次の弾が発射されることになる。他の例として、一旦放ったオブジェクト（鳥、ブーメラン、ボーリングの球等）が戻ってくるゲームに本発明を適用してもよい。
【０２１３】
また、上述した「両手パンチアクション」は、第１オブジェクトＧ１および第２オブジェクトＧ２が組となって所定のアクションを行う例として記載したが、単に第１オブジェクトＧ１および第２オブジェクトＧ２が組となって移動するものであってもよい。この場合、ゲーム画像として表現される第１オブジェクトＧ１および第２オブジェクトＧ２の移動形態は、単に第１オブジェクトＧ１および第２オブジェクトＧ２が組となって移動するものとなるが、第１オブジェクトＧ１および第２オブジェクトＧ２の少なくとも一方が敵オブジェクトＥＯと衝突した場合に、単独で衝突する場合と比べて与えるダメージが大きくてもよい。
【０２１４】
また、上述したゲーム例では、左コントローラ３や右コントローラ４を用いた操作に応じて、第１オブジェクトＧ１および第２オブジェクトＧ２における仮想空間の左右方向の位置が制御可能な例を用いたが、第１オブジェクトＧ１および第２オブジェクトＧ２における仮想空間の上下方向の位置および／または前後方向の位置が制御可能に構成されてもよい。この場合、左コントローラ３および／または右コントローラ４の実空間における上下方向の動作および／またはピッチ方向の姿勢に応じて、第１オブジェクトＧ１および／または第２オブジェクトＧ２における仮想空間の上下方向の位置が制御可能に構成されてもよい。また、左コントローラ３および／または右コントローラ４の実空間における前後方向の動作および／またはピッチ方向の姿勢に応じて、第１オブジェクトＧ１および／または第２オブジェクトＧ２における仮想空間の前後方向の位置が制御可能に構成されてもよい。また、左コントローラ３や右コントローラ４を用いた操作に応じて、第１オブジェクトＧ１および第２オブジェクトＧ２における仮想空間における姿勢が制御可能に構成されてもよい。この場合、左コントローラ３および／または右コントローラ４の実空間におけるロール方向の姿勢に応じて、第１オブジェクトＧ１および／または第２オブジェクトＧ２における仮想空間のロール方向に対する姿勢が制御可能に構成されてもよい。また、左コントローラ３および／または右コントローラ４の実空間におけるピッチ方向の姿勢に応じて、第１オブジェクトＧ１および／または第２オブジェクトＧ２における仮想空間のピッチ方向に対する姿勢が制御可能に構成されてもよい。また、左コントローラ３および／または右コントローラ４の実空間におけるヨー方向の姿勢に応じて、第１オブジェクトＧ１および／または第２オブジェクトＧ２における仮想空間のヨー方向に対する姿勢が制御可能に構成されてもよい。
【０２１５】
また、上述した実施例において、左コントローラ３や右コントローラ４の動きや姿勢を検出する方法については、単なる一例であって、他の方法や他のデータを用いて左コントローラ３や右コントローラ４の動きや姿勢を検出してもよい。また、上述した実施例では、左コントローラ３や右コントローラ４を用いた操作に応じたゲーム画像を据置型モニタ６に表示しているが、本体装置２のディスプレイ１２に表示してもよい。また、第１オブジェクトＧ１および／または第２オブジェクトＧ２の動作を制御するためのコントローラは、左コントローラ３および右コントローラ４のセットだけでなく、他のコントローラが組み合わせられたり、他のコントローラ同士が組み合わせられたりしてもよい。
【０２１６】
また、他の実施形態においては、本体装置２は、据置型モニタ６と直接通信可能であってもよい。例えば、本体装置２と据置型モニタ６とが直接有線通信または直接無線通信を行うことが可能であってもよい。この場合、本体装置２は、本体装置２と据置型モニタ６とが直接通信可能か否かに基づいて画像の表示先を決定してもよい。
【０２１７】
また、付加装置（例えば、クレードル）は、本体装置２を着脱可能な任意の付加装置であってよい。付加装置は、本実施形態のように、本体装置２に対する充電を行う機能を有していてもよいし、有していなくてもよい。
【０２１８】
また、情報処理システム１は、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器（ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話、パーソナルコンピュータ、カメラ、タブレット等）等であってもよい。
【０２１９】
また、上述した説明では情報処理（ゲーム処理）を情報処理システム１でそれぞれ行う例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、情報処理システム１がさらに他の装置（例えば、別のサーバ、他の画像表示装置、他のゲーム装置、他の携帯端末）と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理（ゲーム処理）は、少なくとも１つの情報処理装置により構成される情報処理システムに含まれる１つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、情報処理システム１のＣＰＵ８１が所定のプログラムを実行することによって情報処理を行うことが可能であるが、情報処理システム１が備える専用回路によって上記処理の一部または全部が行われてもよい。
【０２２０】
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置（据置型のゲーム装置）と携帯型の情報処理装置（携帯型のゲーム装置）との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
【０２２１】
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
【０２２２】
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じて情報処理システム１に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【０２２３】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書（定義を含めて）が優先する。
【産業上の利用可能性】
【０２２４】
以上のように、本発明は、操作指示可能な状態が断続的に生じるゲーム等において、操作を容易にすることが可能なゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法等として利用することができる。
【符号の説明】
【０２２５】
１…情報処理システム
２…本体装置
３…左コントローラ
４…右コントローラ
５…クレードル
６…据置型モニタ
１１…ハウジング
１２…ディスプレイ
２７…下側端子
４２，６４…端子
７３…本体端子
８１…ＣＰＵ
８２…ネットワーク通信部
８３…コントローラ通信部
８５…ＤＲＡＭ
【図１】
0006693911.tif 000002
【図２】
0006693911.tif 000003
【図３】
0006693911.tif 000004
【図４】
0006693911.tif 000005
【図５】
0006693911.tif 000006
【図６】
0006693911.tif 000007
【図７】
0006693911.tif 000008
【図８】
0006693911.tif 000009
【図９】
0006693911.tif 000010
【図１０】
0006693911.tif 000011
【図１１】
0006693911.tif 000012
【図１２】
0006693911.tif 000013
【図１３】
0006693911.tif 000014
【図１４】
0006693911.tif 000015
【図１５】
0006693911.tif 000016
【図１６】
0006693911.tif 000017
【図１７】
0006693911.tif 000018
【図１８】
0006693911.tif 000019
【図１９】
0006693911.tif 000020
【図２０】
0006693911.tif 000021
【図２１】
0006693911.tif 000022
【図２２】
0006693911.tif 000023
【図２３】
0006693911.tif 000024