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