(57)【特許請求の範囲】
【請求項１】
操作装置に対する操作に基づいて３次元の仮想空間内の位置を算出する位置算出システムであって、
前記操作装置の姿勢と、前記操作装置に設けられた所定の入力面に対する入力位置とに基づいて前記仮想空間内の位置を算出し、
前記仮想空間内の位置として、前記仮想空間内において前記操作装置の姿勢に応じて決められる面における位置を前記入力位置に基づいて算出し、
前記操作装置の姿勢に対応して姿勢が制御される第１オブジェクトを前記仮想空間に配置するオブジェクト配置部と、
前記操作装置とは異なる所定の表示装置に表示するための画像として、前記第１オブジェクトを含む前記仮想空間を表す画像を生成する画像生成部とを備える、位置算出システム。
【請求項２】
前記操作装置と情報処理装置とを含み、
前記操作装置は、
前記入力面に対する入力位置を検出する位置検出部と、
前記姿勢を算出するためのデータを出力するセンサ部と、
前記位置検出部および前記センサ部から出力されるデータを前記情報処理装置へ送信するデータ送信部を備え、
前記情報処理装置は、
前記センサ部が出力するデータに基づいて、前記操作装置の姿勢を算出する姿勢算出部と、
前記姿勢と前記入力位置とに基づいて前記仮想空間内の位置を算出する位置算出部とを備える、請求項１に記載の位置算出システム。
【請求項３】
前記センサ部は慣性センサを含む、請求項２に記載の位置算出システム。
【請求項４】
前記操作装置は、前記仮想空間を表す画像が表示される表示部をさらに備える、請求項２または請求項３に記載の位置算出システム。
【請求項５】
前記位置検出部は、前記表示部の画面上に設けられるタッチパネルである、請求項４に記載の位置算出システム。
【請求項６】
前記操作装置の姿勢に応じて前記面の姿勢が変化するように前記面を設定する面設定部をさらに備える、請求項１に記載の位置算出システム。
【請求項７】
前記操作装置は、
前記面の領域を含む仮想空間を表す画像を表示する表示部と、
前記表示部の画面上に設けられるタッチパネルとを備え、
前記位置算出部は、前記タッチパネルに対する入力位置と、当該入力位置に基づいて算出される面上の位置とが画面上において一致するように、当該位置を算出する、請求項１または請求項６に記載の位置算出システム。
【請求項８】
前記入力位置に基づく前記仮想空間内の位置を入力として所定の処理を実行する処理実行部を備える、請求項１から請求項７のいずれか１項に記載の位置算出システム。
【請求項９】
前記処理実行部は、前記仮想空間に設定される複数の領域から、前記入力位置に基づく前記仮想空間内の位置を含む領域を特定し、特定された領域に対応する音を所定の音声出力部に出力させる、請求項８に記載の位置算出システム。
【請求項１０】
前記複数の領域は、略円弧状に配置され、
前記操作装置の姿勢の変化に応じて前記複数の領域上を移動するように前記仮想空間において面を設定し、
前記面上の位置を前記入力位置に基づいて算出する、請求項９に記載の位置算出システム。
【請求項１１】
前記処理実行部は、前記入力位置に基づく前記仮想空間内の位置として所定の第２オブジェクトの位置が算出された場合に所定の処理を実行する、請求項８から請求項１０に記載の位置算出システム。
【請求項１２】
前記画像生成部は、
前記操作装置が備える表示装置に表示するための画像として、前記操作装置の姿勢に応じて範囲が変化するように前記第２オブジェクトの一部の範囲を表す画像を生成する第１生成部と、
前記所定の表示装置に表示するための画像として、前記第２オブジェクトのうちの前記一部の範囲よりも広い範囲を表す画像を生成する第２生成部とを含む、請求項１１に記載の位置算出システム。
【請求項１３】
前記操作装置は、仮想空間に配置される鍵盤を表示する表示部を備え、
前記入力位置に基づく前記仮想空間内の位置として前記鍵盤の位置が算出された場合、当該位置に対応する鍵盤に応じた音を所定の音声出力部に出力させる、請求項１から請求項３のいずれか１項に記載の位置算出システム。
【請求項１４】
操作装置に対する操作に基づいて３次元の仮想空間内の位置を算出する位置算出方法であって、
前記操作装置の姿勢と、前記操作装置に設けられた所定の入力面に対する入力位置とに基づいて前記仮想空間内の位置を算出し、
前記仮想空間内の位置として、前記仮想空間内において前記操作装置の姿勢に応じて決められる面における位置を前記入力位置に基づいて算出し、
前記操作装置の姿勢に対応して姿勢が制御される第１オブジェクトを前記仮想空間に配置するオブジェクト配置ステップと、
前記操作装置とは異なる所定の表示装置に表示するための画像として、前記第１オブジェクトを含む前記仮想空間を表す画像を生成する画像生成ステップとを備える、位置算出方法。
【請求項１５】
前記位置算出方法は、前記操作装置と情報処理装置とを含むシステムにおいて実行され、
前記操作装置は、
前記入力面に対する入力位置を検出する位置検出ステップと、
前記入力位置のデータと、前記姿勢を算出するためのデータとを前記情報処理装置へ送信するデータ送信ステップとを実行し、
前記情報処理装置は、
前記姿勢を算出するためのデータに基づいて、前記操作装置の姿勢を算出する姿勢算出ステップと、
前記姿勢と前記入力位置とに基づいて前記仮想空間内の位置を算出する位置算出ステップとを実行する、請求項１４に記載の位置算出方法。
【請求項１６】
前記仮想空間を表す画像を前記操作装置が備える表示部に表示する表示ステップをさらに備える、請求項１４または請求項１５に記載の位置算出方法。
【請求項１７】
前記操作装置の姿勢に応じて前記面の姿勢が変化するように前記面を設定する面設定ステップをさらに備える、請求項１４に記載の位置算出方法。
【請求項１８】
前記操作装置は、
前記面の領域を含む仮想空間を表す画像を表示する表示部と、
前記表示部の画面上に設けられるタッチパネルとを備え、
前記位置算出ステップにおいては、前記タッチパネルに対する入力位置と、当該入力位置に基づいて算出される面上の位置とが画面上において一致するように、当該位置が算出される、請求項１４または請求項１７に記載の位置算出方法。
【請求項１９】
前記入力位置に基づく前記仮想空間内の位置を入力として所定の処理を実行する処理実行ステップを備える、請求項１４から請求項１８のいずれか１項に記載の位置算出方法。
【請求項２０】
前記処理実行ステップにおいては、前記仮想空間に設定される複数の領域から、前記入力位置に基づく前記仮想空間内の位置を含む領域が特定され、特定された領域に対応する音が所定の音声出力部に出力される、請求項１９に記載の位置算出方法。
【請求項２１】
前記複数の領域は、略円弧状に配置され、
前記操作装置の姿勢の変化に応じて前記複数の領域上を移動するように前記仮想空間において面を設定し、
前記面上の位置を前記入力位置に基づいて算出する、請求項２０に記載の位置算出方法。
【請求項２２】
前記処理実行ステップにおいては、前記入力位置に基づく前記仮想空間内の位置として所定の第２オブジェクトの位置が算出された場合に所定の処理が実行される、請求項１９から請求項２１に記載の位置算出方法。
【請求項２３】
前記画像生成ステップは、
前記操作装置が備える表示装置に表示するための画像として、前記操作装置の姿勢に応じて範囲が変化するように前記第２オブジェクトの一部の範囲を表す画像を生成する第１生成ステップと、
前記所定の表示装置に表示するための画像として、前記第２オブジェクトのうちの前記一部の範囲よりも広い範囲を表す画像を生成する第２生成ステップとを含む、請求項２２に記載の位置算出方法。
【請求項２４】
仮想空間に配置される鍵盤を前記操作装置が備える表示部に表示し、
前記入力位置に基づく前記仮想空間内の位置として前記鍵盤の位置が算出された場合、当該位置に対応する鍵盤に応じた音を所定の音声出力部に出力させる、請求項１４または請求項１５に記載の位置算出方法。
【請求項２５】
操作装置に対する操作に基づいて３次元の仮想空間内の位置を算出する位置算出装置であって、
前記操作装置の姿勢と、前記操作装置に設けられた所定の入力面に対する入力位置とに基づいて前記仮想空間内の位置を算出し、
前記仮想空間内の位置として、前記仮想空間内において前記操作装置の姿勢に応じて決められる面における位置を前記入力位置に基づいて算出し、
前記操作装置の姿勢に対応して姿勢が制御される第１オブジェクトを前記仮想空間に配置するオブジェクト配置部と、
前記操作装置とは異なる所定の表示装置に表示するための画像として、前記第１オブジェクトを含む前記仮想空間を表す画像を生成する画像生成部とを備える、位置算出装置。
【請求項２６】
前記操作装置が備える表示部に表示させる画像として、前記仮想空間に配置される鍵盤を表す画像を生成し、
前記入力位置に基づく前記仮想空間内の位置として前記鍵盤の位置が算出された場合、所定の音声出力部に出力させる音声として、当該位置に対応する鍵盤に応じた音を生成する、請求項２５に記載の位置算出装置。
【請求項２７】
操作装置に対する操作に基づいて３次元の仮想空間内の位置を算出する位置算出装置のコンピュータに実行させるための位置算出プログラムであって、
前記操作装置の姿勢と、前記操作装置に設けられた所定の入力面に対する入力位置とに基づいて前記仮想空間内の位置を算出する位置算出手段として前記コンピュータを機能させ、
前記位置算出手段は、前記仮想空間内の位置として、前記仮想空間内において前記操作装置の姿勢に応じて決められる面における位置を前記入力位置に基づいて算出し、
前記操作装置の姿勢に対応して姿勢が制御される第１オブジェクトを前記仮想空間に配置するオブジェクト配置手段と、
前記操作装置とは異なる所定の表示装置に表示するための画像として、前記第１オブジェクトを含む前記仮想空間を表す画像を生成する画像生成手段として前記コンピュータを機能させる、位置算出プログラム。
【請求項２８】
前記画像生成手段は、前記操作装置が備える表示部に表示させる画像として、前記仮想空間に配置される鍵盤を表す画像をさらに生成し、
前記入力位置に基づく前記仮想空間内の位置として前記鍵盤の位置が算出された場合、所定の音声出力部に出力させる音声として、当該位置に対応する鍵盤に応じた音を生成する音声生成手段として前記コンピュータをさらに機能させる、請求項２７に記載の位置算出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、操作装置に対する操作に基づいて３次元の位置を算出する位置算出システム、位置算出装置、位置算出プログラム、および位置算出方法に関する。
【背景技術】
【０００２】
従来、タッチパネルやタッチパッド等の入力装置を用いて画面上の任意の位置に対して入力を行う技術がある。例えば、特許文献１には、タッチパネルを備えるゲーム装置において、タッチパネルに対する入力によって描かれた軌跡に基づいて、ゲーム空間内のキャラクタの移動を制御する技術が記載されている。これによれば、プレイヤは、２次元平面におけるゲーム空間内の位置を自由に指定してゲーム操作を行うことができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３７７０４９９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の技術においては、タッチパネル等の入力装置を用いることによって２次元平面における位置を指定することは可能であったが、３次元空間における位置を指定することは難しかった。例えば上記特許文献１に記載の技術では、ゲーム空間が２次元平面である場合にはゲーム空間内の任意の位置を指定することが可能であるが、３次元のゲーム空間の場合にはゲーム空間内の位置を適切に指定することができない。
【０００５】
それ故、本発明の目的は、３次元空間における位置を容易に指定することができる位置算出システム等を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の（１）〜（１５）の構成を採用した。
【０００７】
（１）
本発明の一例は、操作装置に対する操作に基づいて３次元の仮想空間内の位置を算出する位置算出システムである。位置算出システムは、操作装置の姿勢と、操作装置に設けられた所定の入力面に対する入力位置とに基づいて仮想空間内の位置を算出する。
【０００８】
上記「位置算出システム」は、後述する実施形態においては、操作装置である端末装置と、情報処理装置であるゲーム装置という複数の装置で実現されるものに限らず、１つの装置によって実現されてもよい。例えば、操作装置と情報処理装置との機能を果たす携帯型の情報処理装置によって位置算出システムが実現されてもよい。
【０００９】
上記（１）の構成によれば、操作装置の姿勢を変化させる操作と、操作装置の入力面に対して位置を入力する操作とによって、３次元空間における位置を指定することができる。つまり、上記（１）の構成によれば、ユーザは、操作装置を用いて３次元空間における位置を容易に指定することができる。
【００１０】
（２）
位置算出システムは、操作装置と情報処理装置とを含んでいてもよい。
操作装置は、位置検出部と、センサ部と、データ送信部を備える。位置検出部は、入力面に対する入力位置を検出する。センサ部は、姿勢を算出するためのデータを出力する。データ送信部は、位置検出部およびセンサ部から出力されるデータを情報処理装置へ送信する。
情報処理装置は、姿勢算出部と、位置算出部とを備える。姿勢算出部は、センサ部が出力するデータに基づいて、操作装置の姿勢を算出する。位置算出部は、姿勢と入力位置とに基づいて仮想空間内の位置を算出する。
【００１１】
上記「操作装置」は、後述する実施形態における端末装置７の他、位置検出部とセンサ部とを備え、データを情報処理装置へ送信する機能を有していればどのような装置であってもよい。
上記「情報処理装置」は、上記の各部における処理を実行する装置であればどのようなものであってもよい。上記情報処理装置は、ゲーム専用の情報処理装置であってもよいし、一般的なパーソナルコンピュータのような多用途の情報処理装置であってもよい。
上記「位置検出部」は、後述する実施形態におけるタッチパネルの他、タッチパッドであってもよい。つまり、操作装置は表示画面を備えていなくてもよい。
上記「センサ部」は、加速度センサあるいはジャイロセンサ等の慣性センサの他、後述する磁気センサ等、その検出結果に基づいて姿勢を算出することが可能な任意のセンサを含む概念である。
【００１２】
上記（２）の構成によれば、操作装置からのデータが情報処理装置において受信され、情報処理装置が当該データに基づいて３次元位置を算出する。これによれば、操作装置は位置の算出処理を実行する機能を有しなくてもよいので、操作装置の構成を簡易化することができ、操作装置の省サイズ化、軽量化を図ることができる。
【００１３】
（３）
センサ部は慣性センサを含んでいてもよい。
【００１４】
上記（３）の構成によれば、加速度センサあるいはジャイロセンサといった慣性センサの出力を用いることによって、操作装置の姿勢を容易に算出（推測）することができる。
【００１５】
（４）
操作装置は、仮想空間を表す画像が表示される表示部をさらに備えていてもよい。
【００１６】
上記（４）の構成によれば、仮想空間を表す画像が操作装置に表示されるので、ユーザは、仮想空間の様子を手元の操作装置で確認することができる。
【００１７】
（５）
位置検出部は、表示部の画面上に設けられるタッチパネルであってもよい。
【００１８】
上記（５）の構成によれば、操作装置の画面上にタッチパネルが設けられるので、プレイヤは、当該画面上をタッチする操作によって３次元位置を指示することができる。したがって、３次元位置を指示するためのタッチ入力操作がより容易になる。
【００１９】
（６）
位置算出システムは、仮想空間内の位置として、仮想空間内において操作装置の姿勢に応じて決められる面上の位置を入力位置に基づいて算出する位置算出部を備えていてもよい。
【００２０】
上記「面」は、平面であってもよいし、曲面であってもよいし、操作装置の姿勢に応じて形状を変化させるものであってもよい。また、「面」は、表示装置に表示されなくてもよい。つまり、「面」は、仮想空間においてオブジェクトとして配置されなくてもよいし、透明なオブジェクトとして配置されてもよい。
【００２１】
上記（６）の構成によれば、ユーザは、操作装置の入力面に対する入力によって、仮想空間内の面上の位置を指定することができ、また、この面は操作装置の姿勢に応じて変化する。したがって、ユーザは、操作装置の姿勢を変化させつつ、入力面上の位置を指定することで、３次元の仮想空間における位置を容易に指定することができる。上記（６）の構成によれば、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、３次元空間における位置を容易に指定することができる。
【００２２】
（７）
位置算出システムは、操作装置の姿勢に応じて面の姿勢が変化するように面を設定する面設定部をさらに備えていてもよい。
【００２３】
上記（７）の構成によれば、ユーザは、操作装置の姿勢を変化させる操作によって面の姿勢を変化させることができる。これによれば、操作装置を傾ける操作によって仮想空間内の面を実際に傾けているかのような操作感覚をユーザに与えることができ、より直感的でわかりやすい操作を提供することができる。
【００２４】
（８）
操作装置は、表示部と、タッチパネルとを備えていてもよい。表示部は、面の領域を含む仮想空間を表す画像を表示する。タッチパネルは、表示部の画面上に設けられる。このとき、位置算出部は、タッチパネルに対する入力位置と、当該入力位置に基づいて算出される面上の位置とが画面上において一致するように、当該位置を算出する。
【００２５】
上記（８）の構成によれば、ユーザは、表示部の画面上の位置を指定（タッチ）することで、その位置に対応する仮想空間内の位置を指定することができる。これによって、ユーザは、より直感的で分かりやすい操作によって３次元空間における位置を指定することができる。
【００２６】
（９）
位置算出システムは、入力位置に基づく仮想空間内の位置を入力として所定の処理を実行する処理実行部を備えていてもよい。
【００２７】
上記（９）の構成によれば、位置算出システムは、ユーザによって入力された３次元の位置を入力として各種の処理を実行することができる。
【００２８】
（１０）
処理実行部は、仮想空間に設定される複数の領域から、入力位置に基づく仮想空間内の位置を含む領域を特定し、特定された領域に対応する音を所定の音声出力部に出力させてもよい。
【００２９】
上記「所定の音声出力部」は、位置算出システムに含まれる装置とは別の装置に設けられていてもよい。つまり、位置算出システムは所定の音声出力部を含む構成であってもよいし、含まない構成であってもよい。例えば、所定の情報処理装置が処理実行部を備えており、情報処理装置に接続されるテレビのスピーカが「所定の音声出力部」として用いられてもよい。また、操作装置に設けられるスピーカが「所定の音声出力部」として用いられてもよい。
【００３０】
上記（１０）の構成によれば、ユーザは、操作装置を用いて仮想空間内の３次元位置を指定する操作によって音を出力することができる。これによって、例えば、仮想空間に配置された各領域を指定することによって仮想の楽器を演奏するような操作をユーザに提供することができる。
【００３１】
（１１）
複数の領域は、略円弧状に配置されてもよい。このとき、位置算出システムは、面設定部と、位置算出部とを備える。面設定部は、操作装置の姿勢の変化に応じて複数の領域上を移動するように仮想空間において面を設定する。位置算出部は、面上の位置を入力位置に基づいて算出する。
【００３２】
上記（１１）の構成によれば、ユーザは、操作装置を回転させる（姿勢を変化させる）操作によって、略円弧状に配置される複数の領域上において面を回転移動させることができる。これによれば、操作装置の動きと面の動きとが共に回転運動となり、両者の動きが対応するので、操作装置の操作がプレイヤにとってより直感的で分かりやすいものとなる。
【００３３】
（１２）
位置算出システムは、オブジェクト設定部と、画像生成部とを備えていてもよい。オブジェクト設定部は、所定のオブジェクトを仮想空間に設定する。画像生成部は、所定の表示装置に表示するための画像として、所定のオブジェクトを含む仮想空間を表す画像を生成する。このとき、処理実行部は、入力位置に基づく仮想空間内の位置として所定のオブジェクトの位置が算出された場合に所定の処理を実行する。
【００３４】
上記（１２）の構成によれば、ユーザは、操作装置を用いて仮想空間内の３次元位置を指定する操作によって、仮想空間内のオブジェクトに対して入力を行う操作を行うことができる。また、操作対象となるオブジェクトが表示装置に表示されるので、ユーザはオブジェクトに対する操作を容易に行うことができる。
【００３５】
（１３）
画像生成部は、第１生成部と、第２生成部とを含んでいてもよい。第１生成部は、操作装置が備える表示装置に表示するための画像として、操作装置の姿勢に応じて範囲が変化するようにオブジェクトの一部の範囲を表す画像を生成する。第２生成部は、操作装置が備える表示装置とは別の表示装置に表示するための画像として、オブジェクトのうちの一部の範囲よりも広い範囲を表す画像を生成する。
【００３６】
上記（１３）の構成によれば、操作装置には相対的に拡大された画像が表示されるので入力の操作が行いやすくなる。さらに、別の表示装置には相対的に広範囲の画像が表示されるので、ユーザは操作装置における表示範囲の周囲の状況を知ることもできる。このように、上記（１３）の構成によれば、操作性の良い入力システムを提供することができる。
【００３７】
（１４）
位置算出システムは、オブジェクト配置部と、画像生成部とを備えていてもよい。オブジェクト配置部は、操作装置の姿勢に対応して姿勢が制御されるオブジェクトを仮想空間に配置する。画像生成部は、所定の表示装置に表示するための画像として、オブジェクトを含む仮想空間を表す画像を生成する。
【００３８】
上記（１４）の構成によれば、操作装置の姿勢に対応して姿勢が変化するオブジェクトが表示装置に表示されるので、操作装置の姿勢を画面上で確認することができ、操作装置に対する操作をより容易に行うことができる。
【００３９】
（１５）
操作装置は、仮想空間に配置される鍵盤を表示する表示部を備えていてもよい。このとき、位置算出システムは、入力位置に基づく仮想空間内の位置として鍵盤の位置が算出された場合、当該位置に対応する鍵盤に応じた音を所定の音声出力部に出力させる。
【００４０】
上記（１５）の構成によれば、仮想空間に配置される鍵盤を操作装置を用いて指定する操作によって、音声出力部から音が出力される。これによれば、ユーザは、操作装置を用いて、仮想空間に配置される鍵盤楽器を演奏する操作を行うことができる。
【００４１】
なお、本発明の別の一例は、上記（１）〜（１５）の位置算出システムに含まれる情報処理装置、あるいは、当該位置算出システムと同機能の情報処理装置（位置算出装置）であってもよい。また、上記情報処理装置における各部と同等の手段としてコンピュータを機能させる情報処理プログラム（位置算出プログラム）であってもよい。さらに、本発明の別の一例は、上記の位置算出システムまたは情報処理装置において行われる位置算出方法の形態であってもよい。
【発明の効果】
【００４２】
本発明によれば、操作装置の姿勢を変化させる操作と、操作装置の入力面に対して位置を入力する操作とによって、３次元空間における位置を指定することができるので、ユーザは、操作装置を用いて３次元空間における位置を容易に指定することができる。
【図面の簡単な説明】
【００４３】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の内部構成を示すブロック図
【図３】コントローラ５の外観構成を示す斜視図
【図４】コントローラ５の外観構成を示す斜視図
【図５】コントローラ５の内部構造を示す図
【図６】コントローラ５の内部構造を示す図
【図７】コントローラ５の構成を示すブロック図
【図８】端末装置７の外観構成を示す図
【図９】端末装置７の外観構成を示す図
【図１０】ユーザが端末装置７を横向きで把持した様子を示す図
【図１１】端末装置７の内部構成を示すブロック図
【図１２】本実施形態における位置算出方法の説明図
【図１３】図１２に示す状態から端末装置７の姿勢を変化させた様子を示す図
【図１４】第１のゲーム例においてゲーム操作が行われる場合におけるテレビ２および端末装置７を示す図
【図１５】仮想空間において鍵盤オブジェクト９１を上方から見た図
【図１６】端末装置７に表示される画像の一例を示す図
【図１７】ゲーム処理において用いられる各種データを示す図
【図１８】ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャート
【図１９】図１８に示すゲーム制御処理（ステップＳ３）の詳細な流れを示すフローチャート
【図２０】本ゲーム例においてゲーム操作が行われる場合におけるテレビ２および端末装置７を示す図
【図２１】図２０に示す状態から端末装置７を傾けた場合におけるテレビ２および端末装置７を示す図
【図２２】図２１に示す状態から端末装置７を傾けた場合におけるテレビ２および端末装置７を示す図
【図２３】図２１に示す状態から図形を回転させた場合におけるテレビ２および端末装置７を示す図
【図２４】ゲーム処理において用いられる各種データを示す図
【図２５】第２のゲーム例におけるゲーム制御処理（ステップＳ３）の詳細な流れを示すフローチャート
【図２６】タッチパネル５２の入力面上の入力位置に基づいて指定位置を算出する方法を説明するための図
【図２７】面２０１と端末用仮想カメラ２０５との位置関係を示す図
【図２８】図２５に示す図形移動処理（ステップＳ２３）の詳細な流れを示すフローチャート
【図２９】上記第２のゲーム例の変形例におけるゲーム制御処理の流れを示すフローチャート
【図３０】本変形例における面２０１の移動を示す図
【図３１】他の実施形態における面２０１の移動を示す図
【図３２】他の実施形態における面２０１の移動を示す図
【図３３】見本と同じになるように図形を描くゲームにおいて、テレビ２に表示されるゲーム画像を示す図
【図３４】３次元の仮想空間内に配置されたオブジェクト（コイン）２２５を端末装置に対する操作によって指定するゲームにおいて、テレビ２に表示されるゲーム画像を示す図
【図３５】プレイヤが描いた図形に基づいてオブジェクトが生成されるゲームにおいて、テレビ２に表示されるゲーム画像を示す図
【図３６】プレイヤが描いた図形に基づいてオブジェクトが生成されるゲームにおいて、テレビ２に表示されるゲーム画像を示す図
【図３７】第３のゲーム例におけるテレビ２の画面とハンドヘルドデバイス９とを示す図
【図３８】ハンドヘルドデバイス９の姿勢と制御面３０２の姿勢との関係を示す図
【図３９】ハンドヘルドデバイス９のタッチパネル５２に線が描かれる様子を示す図
【図４０】図３９に示す線がタッチパネル５２に描かれた場合に制御面３０２上において算出される制御位置および制御方向を示す図
【図４１】ゲーム処理において用いられる各種データを示す図
【図４２】ゲーム制御処理の詳細な流れを示すフローチャート
【図４３】第４のゲーム例におけるテレビ２の画面とハンドヘルドデバイス９とを示す図
【図４４】ゲーム空間における仮想カメラと制御面とを示す図
【図４５】第４のゲーム例におけるゲーム制御処理の詳細な流れを示すフローチャート
【図４６】制御面３３５の位置および姿勢が変化する様子を示す図
【発明を実施するための形態】
【００４４】
［１．ゲームシステムの全体構成］
以下、図面を参照して、本発明の一実施形態に係るゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。図１において、ゲームシステム１は、テレビジョン受像器等に代表される据置型のディスプレイ装置（以下、「テレビ」と記載する）２、据置型のゲーム装置３、光ディスク４、コントローラ５、マーカ装置６、および、端末装置７を含む。ゲームシステム１は、コントローラ５および端末装置７を用いたゲーム操作に基づいてゲーム装置３においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をテレビ２および／または端末装置７に表示するものである。
【００４５】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるための情報処理プログラム（典型的にはゲームプログラム）が記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されている情報処理プログラムを読み出して実行することによってゲーム処理を実行する。
【００４６】
ゲーム装置３には、テレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理によって得られるゲーム画像を表示する。テレビ２はスピーカ２ａ（図２）を有しており、スピーカ２ａは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、ゲーム装置３と据置型の表示装置とは一体となっていてもよい。また、ゲーム装置３とテレビ２との通信は無線通信であってもよい。
【００４７】
テレビ２の画面の周辺（図１では画面の上側）には、マーカ装置６が設置される。詳細は後述するが、ユーザ（プレイヤ）はコントローラ５を動かすゲーム操作を行うことができ、マーカ装置６は、コントローラ５の動きや位置や姿勢等をゲーム装置３が算出するために用いられる。マーカ装置６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）であり、テレビ２の前方に向かって赤外光を出力する。マーカ装置６は有線で（無線であってもよい）ゲーム装置３に接続されており、ゲーム装置３はマーカ装置６が備える各赤外ＬＥＤの点灯を制御することが可能である。なお、マーカ装置６は可搬型であり、ユーザはマーカ装置６を自由な位置に設置することができる。図１ではマーカ装置６がテレビ２の上に設置された態様を表しているが、マーカ装置６を設置する位置および向きは任意である。
【００４８】
コントローラ５は、自機に対して行われた操作の内容を表す操作データをゲーム装置３に与えるものである。コントローラ５とゲーム装置３とは無線通信によって通信可能である。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。また、図１では、ゲームシステム１に含まれるコントローラ５は１つとするが、ゲームシステム１は複数のコントローラ５を含んでいてもよい。つまり、ゲーム装置３は複数のコントローラと通信可能であり、所定台数のコントローラを同時に使用することによって複数人でゲームをプレイすることが可能である。コントローラ５の詳細な構成については後述する。
【００４９】
端末装置７は、可搬型であり、ユーザが把持可能な程度の大きさである。ユーザは端末装置７を手に持って動かしたり、あるいは、端末装置７を自由な位置に配置したりして使用することが可能である。詳細な構成は後述するが、端末装置７は、表示手段であるＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）５１、および、入力手段（後述するタッチパネル５２やジャイロセンサ７４等）を備える。端末装置７とゲーム装置３とは無線（有線であってもよい）によって通信可能である。端末装置７は、ゲーム装置３で生成された画像（例えばゲーム画像）のデータをゲーム装置３から受信し、画像をＬＣＤ５１に表示する。なお、本実施形態では表示装置としてＬＣＤを用いているが、端末装置７は、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置等、他の任意の表示装置を有していてもよい。また、端末装置７は、自機に対して行われた操作の内容を表す操作データをゲーム装置３に送信する。
【００５０】
［２．ゲーム装置３の内部構成］
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の内部構成を示すブロック図である。ゲーム装置３は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００５１】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００５２】
システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００５３】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。なお、本実施形態においては、ゲーム装置３は、テレビ２に表示する画像（ゲーム画像）と、端末装置７に表示する画像（ゲーム画像）との両方を生成する。以下では、テレビ２に表示される画像を「テレビ用画像」と呼び、端末装置７に表示される画像を「端末用画像」と呼ぶことがある。
【００５４】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。なお、本実施形態においては、音声（ゲーム音声）についてもゲーム画像と同様、テレビ２のスピーカから出力する音声と、端末装置７のスピーカから出力する音声との両方が生成される。以下では、テレビ２から出力される音声を「テレビ用音声」と呼び、端末装置７から出力される音声を「端末用音声」と呼ぶことがある。
【００５５】
上記のようにゲーム装置３において生成される画像および音声のうちで、テレビ２において出力される画像および音声のデータは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２へ出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａへ出力する。これによって、テレビ２に画像が表示されるとともにスピーカ２ａから音が出力される。なお、ゲーム装置３とテレビ２との接続は、どのような方式で行われてもよいが、ゲーム装置３は、テレビ２を制御する制御指令を有線または無線でテレビ２へ送信するようにしてもよい。例えばＨＤＭＩ（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）規格に則ったＨＤＭＩケーブルが用いられてもよい。ＨＤＭＩ規格では、ＣＥＣ（Ｃｏｎｓｕｍｅｒ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｃｏｎｔｒｏｌ）と呼ばれる機能によって、接続相手の機器を制御することが可能である。したがって、ＨＤＭＩケーブルが用いられる場合のように、ゲーム装置３がテレビ２に対する制御が可能である場合には、ゲーム装置３は、適宜のタイミングでテレビ２の電源をオンにしたり、テレビ２の入力を切り替えたりすることができる。
【００５６】
また、ゲーム装置３において生成される画像および音声のうちで、端末装置７において出力される画像および音声のデータは、入出力プロセッサ１１ａ等によって端末装置７へ送信される。入出力プロセッサ１１ａ等による端末装置７へのデータの送信については後述する。
【００５７】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、ネットワーク通信モジュール１８、コントローラ通信モジュール１９、拡張コネクタ２０、メモリカード用コネクタ２１、コーデックＬＳＩ２７に接続される。また、ネットワーク通信モジュール１８にはアンテナ２２が接続される。コントローラ通信モジュール１９にはアンテナ２３が接続される。コーデックＬＳＩ２７は端末通信モジュール２８に接続され、端末通信モジュール２８にはアンテナ２９が接続される。
【００５８】
ゲーム装置３は、インターネット等のネットワークに接続して外部の情報処理装置（例えば他のゲーム装置や、各種サーバ等）と通信を行うことが可能である。すなわち、入出力プロセッサ１１ａは、ネットワーク通信モジュール１８およびアンテナ２２を介してインターネット等のネットワークに接続可能であり、ネットワークに接続される他の情報処理装置と通信を行うことができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、ネットワーク通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、外部情報処理装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２およびネットワーク通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と外部情報処理装置との間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。また、フラッシュメモリ１７にはゲームプログラムが記憶されてもよい。
【００５９】
また、ゲーム装置３は、コントローラ５からの操作データを受信することが可能である。すなわち、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３およびコントローラ通信モジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００６０】
また、ゲーム装置３は、端末装置７との間で画像や音声等のデータを送受信することが可能である。入出力プロセッサ１１ａは、端末装置７へゲーム画像（端末用画像）を送信する場合、ＧＰＵ１１ｂが生成したゲーム画像のデータをコーデックＬＳＩ２７へ出力する。コーデックＬＳＩ２７は、入出力プロセッサ１１ａからの画像データに対して所定の圧縮処理を行う。端末通信モジュール２８は、端末装置７との間で無線通信を行う。したがって、コーデックＬＳＩ２７によって圧縮された画像データは、端末通信モジュール２８によってアンテナ２９を介して端末装置７へ送信される。なお、本実施形態では、ゲーム装置３から端末装置７へ送信される画像データはゲームに用いるものであり、ゲームにおいては表示される画像に遅延が生じるとゲームの操作性に悪影響が出る。そのため、ゲーム装置３から端末装置７への画像データの送信に関しては、できるだけ遅延が生じないようにすることが好ましい。したがって、本実施形態では、コーデックＬＳＩ２７は、例えばＨ．２６４規格といった高効率の圧縮技術を用いて画像データを圧縮する。なお、それ以外の圧縮技術を用いてもよいし、通信速度が十分である場合には無圧縮で画像データを送信する構成であってもよい。また、端末通信モジュール２８は、例えばＷｉ−Ｆｉの認証を受けた通信モジュールであり、例えばＩＥＥＥ８０２．１１ｎ規格で採用されるＭＩＭＯ（Ｍｕｌｔｉｐｌｅ  Ｉｎｐｕｔ  Ｍｕｌｔｉｐｌｅ  Ｏｕｔｐｕｔ）の技術を用いて端末装置７との間の無線通信を高速に行うようにしてもよいし、他の通信方式を用いてもよい。
【００６１】
また、ゲーム装置３は、画像データの他、音声データを端末装置７へ送信する。すなわち、入出力プロセッサ１１ａは、ＤＳＰ１１ｃが生成した音声データを、コーデックＬＳＩ２７を介して端末通信モジュール２８へ出力する。コーデックＬＳＩ２７は、音声データに対しても画像データと同様に圧縮処理を行う。音声データに対する圧縮の方式は、どのような方式であってもよいが、圧縮率が高く、音声の劣化が少ない方式が好ましい。また、他の実施形態においては、音声データは圧縮されずに送信されてもよい。端末通信モジュール２８は、圧縮された画像データおよび音声データを、アンテナ２９を介して端末装置７へ送信する。
【００６２】
さらに、ゲーム装置３は、上記画像データおよび音声データの他に、必要に応じて各種の制御データを端末装置７へ送信する。制御データは、端末装置７が備える構成要素に対する制御指示を表すデータであり、例えばマーカ部（図１１に示すマーカ部５５）の点灯を制御する指示や、カメラ（図１１に示すカメラ５６）の撮像を制御する指示等を表す。入出力プロセッサ１１ａは、ＣＰＵ１０の指示に応じて制御データを端末装置７へ送信する。なお、この制御データに関して、本実施形態ではコーデックＬＳＩ２７はデータの圧縮処理を行わないが、他の実施形態においては圧縮処理を行うようにしてもよい。なお、ゲーム装置３から端末装置７へ送信される上述のデータは、必要に応じて暗号化がされていてもよいし、されていなくともよい。
【００６３】
また、ゲーム装置３は、端末装置７から各種データを受信可能である。詳細は後述するが、本実施形態では、端末装置７は、操作データ、画像データ、および音声データを送信する。端末装置７から送信される各データはアンテナ２９を介して端末通信モジュール２８によって受信される。ここで、端末装置７からの画像データおよび音声データは、ゲーム装置３から端末装置７への画像データおよび音声データと同様の圧縮処理が施されている。したがって、これら画像データおよび音声データについては、端末通信モジュール２８からコーデックＬＳＩ２７に送られ、コーデックＬＳＩ２７によって伸張処理が施されて入出力プロセッサ１１ａへ出力される。一方、端末装置７からの操作データに関しては、画像や音声に比べてデータ量が少ないので、圧縮処理が施されていなくともよい。また、必要に応じて暗号化がされていてもよいし、されていなくともよい。したがって、操作データは、端末通信モジュール２８で受信された後、コーデックＬＳＩ２７を介して入出力プロセッサ１１ａへ出力される。入出力プロセッサ１１ａは、端末装置７から受信したデータを、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００６４】
また、ゲーム装置３は、他の機器や外部記憶媒体に接続することが可能である。すなわち、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタである。拡張コネクタ２０に対しては、外部記憶媒体のようなメディアを接続したり、他のコントローラ等の周辺機器を接続したり、有線の通信用コネクタを接続することによってネットワーク通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００６５】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、図示しないＡＣアダプタによって外部の電源からゲーム装置３の各構成要素に対して電力が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００６６】
なお、他の実施形態においては、ゲーム装置３が備える各構成要素のうちでいくつかの構成要素は、ゲーム装置３とは別体の拡張機器として構成されてもよい。このとき、拡張機器は、例えば上記拡張コネクタ２０を介してゲーム装置３と接続されるようにしてもよい。具体的には、拡張機器は、例えば上記コーデックＬＳＩ２７、端末通信モジュール２８およびアンテナ２９の各構成要素を備えており、拡張コネクタ２０に対して着脱可能であってもよい。これによれば、上記各構成要素を備えていないゲーム装置に対して上記拡張機器を接続することによって、当該ゲーム装置を端末装置７と通信可能な構成とすることができる。
【００６７】
［３．コントローラ５の構成］
次に、図３〜図７を参照して、コントローラ５について説明する。図３は、コントローラ５の外観構成を示す斜視図である。図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００６８】
図３および図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。ユーザは、コントローラ５に設けられたボタンを押下すること、および、コントローラ５自体を動かしてその位置や姿勢（傾き）を変えることによってゲーム操作を行うことができる。
【００６９】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。本明細書では、これらのボタン３２ａ〜３２ｈが設けられるハウジング３１の上面を「ボタン面」と呼ぶことがある。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行する情報処理プログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、ユーザがホームボタン３２ｆまたは電源ボタン３２ｈを誤って押下することを防止することができる。
【００７０】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、他のセンサユニットやコントローラ）を接続するために利用される。また、ハウジング３１の後面におけるコネクタ３３の両側には、上記他の機器が容易に離脱することを防止するために係止穴３３ａが設けられている。
【００７１】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をユーザに通知したり、コントローラ５の電池残量をユーザに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００７２】
また、コントローラ５は撮像情報演算部３５（図６）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００７３】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４７（図５）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００７４】
次に、図５および図６を参照して、コントローラ５の内部構造について説明する。図５および図６は、コントローラ５の内部構造を示す図である。なお、図５は、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６は、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６に示す斜視図は、図５に示す基板３０を裏面から見た斜視図となっている。
【００７５】
図５において、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、およびスピーカ４７等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ軸方向）に関してコントローラ５の中心よりも前方に配置されている。また、無線モジュール４４（図６）およびアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００７６】
一方、図６において、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００７７】
さらに、基板３０の下主面上には、上記マイコン４２およびバイブレータ４６が設けられている。バイブレータ４６は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４６が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４６は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４６がコントローラ５の中心よりも端側に配置することによって、バイブレータ４６の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５および図６に示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４７に音声信号を出力するアンプ等を備えている。
【００７８】
なお、図３〜図６に示したコントローラ５の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。また、本実施形態では、撮像手段による撮像方向はＺ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【００７９】
図７は、コントローラ５の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、撮像情報演算部３５、通信部３６、加速度センサ３７、およびジャイロセンサ４８を備えている。コントローラ５は、自機に対して行われた操作内容を表すデータを操作データとしてゲーム装置３へ送信するものである。なお、以下では、コントローラ５が送信する操作データを「コントローラ操作データ」と呼び、端末装置７が送信する操作データを「端末操作データ」と呼ぶことがある。
【００８０】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を表す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００８１】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００８２】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、撮像対象となる端末装置７のマーカ部５５およびマーカ装置６は、赤外光を出力するマーカで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、撮像対象（マーカ部５５および／またはマーカ装置６）の画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（傾斜角度）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００８３】
なお、他の実施形態においては、コントローラ５は画像処理回路４１を備えていない構成であってもよく、撮像画像自体がコントローラ５からゲーム装置３へ送信されてもよい。このとき、ゲーム装置３は、画像処理回路４１と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【００８４】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。なお、加速度センサ３７は、例えば静電容量式のＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍ）型加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００８５】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ５を基準に設定されるＸＹＺ座標系（コントローラ座標系）における３次元のベクトルとして表される。
【００８６】
加速度センサ３７が検出した加速度を表すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（傾斜角度）や移動に対応して変化するので、ゲーム装置３は取得された加速度データを用いてコントローラ５の向きや移動を算出することができる。本実施形態では、ゲーム装置３は、取得された加速度データに基づいてコントローラ５の姿勢や傾斜角度等を算出する。
【００８７】
なお、加速度センサ３７（後述する加速度センサ７３についても同様）から出力される加速度の信号に基づいて、ゲーム装置３のプロセッサ（例えばＣＰＵ１０）またはコントローラ５のプロセッサ（例えばマイコン４２）等のコンピュータが処理を行うことによって、コントローラ５に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ３７を搭載するコントローラ５が静止状態であることを前提としてコンピュータ側の処理が実行される場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合）、コントローラ５が現実に静止状態であれば、検出された加速度に基づいてコントローラ５の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ３７の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かによって、コントローラ５が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ３７の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ５がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ３７からの出力に基づいてコントローラ５の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ５の傾斜方向を算出するようにしてもよい。このように、加速度センサ３７をプロセッサと組み合わせて用いることによって、コントローラ５の傾斜角度または姿勢を判定することができる。
【００８８】
一方、コントローラ５が動的な状態（コントローラ５が動かされている状態）であることを前提とする場合には、加速度センサ３７は重力加速度に加えてコントローラ５の移動に応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ５の移動方向を知ることができる。また、コントローラ５が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの移動に応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ５の傾きを知ることが可能である。なお、他の実施例では、加速度センサ３７は、内蔵の加速度検出手段で検出された加速度信号をマイコン４２へ出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ３７が静的な加速度（例えば、重力加速度）を検出するために用いられる場合、加速度信号を傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００８９】
ジャイロセンサ４８は、３軸（本実施形態では、ＸＹＺ軸）回りの角速度を検出する。本明細書では、コントローラ５の撮像方向（Ｚ軸正方向）を基準として、Ｘ軸回りの回転方向をピッチ方向、Ｙ軸回りの回転方向をヨー方向、Ｚ軸回りの回転方向をロール方向と呼ぶ。ジャイロセンサ４８は、３軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。例えば、ジャイロセンサ４８は、３軸ジャイロセンサであってもよいし、２軸ジャイロセンサと１軸ジャイロセンサとを組み合わせて３軸周りの角速度を検出するものであってもよい。ジャイロセンサ４８で検出された角速度を表すデータは、通信部３６へ出力される。また、ジャイロセンサ４８は１軸または２軸回りの角速度を検出するものであってもよい。
【００９０】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。
【００９１】
操作部３２、撮像情報演算部３５、加速度センサ３７、およびジャイロセンサ４８からマイコン４２へ出力されたデータは、一時的にメモリ４３に格納される。これらのデータは、操作データ（コントローラ操作データ）としてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３のコントローラ通信モジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ５から送信される。微弱電波信号はゲーム装置３側のコントローラ通信モジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、コントローラ５から取得した操作データを用いてゲーム処理を行う。なお、通信部３６からコントローラ通信モジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で操作データをゲーム装置３のコントローラ通信モジュール１９へ出力する。
【００９２】
以上のように、コントローラ５は、自機に対する操作を表す操作データとして、マーカ座標データ、加速度データ、角速度データ、および操作ボタンデータを送信可能である。また、ゲーム装置３は、上記操作データをゲーム入力として用いてゲーム処理を実行する。したがって、上記コントローラ５を用いることによって、ユーザは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ５自体を動かすゲーム操作を行うことができる。例えば、コントローラ５を任意の姿勢に傾ける操作、コントローラ５によって画面上の任意の位置を指示する操作、および、コントローラ５自体を動かす操作等を行うことが可能となる。
【００９３】
また、本実施形態において、コントローラ５は、ゲーム画像を表示する表示手段を有しないが、例えば電池残量を表す画像等を表示するための表示手段を有していてもよい。
【００９４】
［４．端末装置７の構成］
次に、図８〜図１１を参照して、端末装置７の構成について説明する。図８は、端末装置７の外観構成を示す平面図である。図８における（ａ）図は端末装置７の正面図であり、（ｂ）図は上面図であり、（ｃ）図は右側面図であり、（ｄ）図は下面図である。図９は、端末装置７の背面図である。また、図１０は、ユーザが端末装置７を横向きで把持した様子を示す図である。
【００９５】
図８に示されるように、端末装置７は、大略的には横長の長方形の板状形状であるハウジング５０を備える。すなわち、端末装置７は、タブレット型の情報処理装置であるということもできる。なお、ハウジング５０は全体として板状形状であれば、曲面を有していてもよいし、一部に突起等を有していてもよい。ハウジング５０は、ユーザが把持することができる程度の大きさである。したがって、ユーザは、端末装置７を持って動かしたり、端末装置７の配置位置を変更したりすることができる。端末装置７の縦（ｚ軸方向）の長さは、１００〜１５０［ｍｍ］が好ましく、本実施形態では、１３３．５［ｍｍ］である。端末装置７の横（ｘ軸方向）の長さは、２００〜２５０［ｍｍ］が好ましく、本実施形態では、２２８．２６［ｍｍ］である。端末装置７の厚さ（ｙ軸方向の長さ）は、板状の部分で１５〜３０［ｍｍ］程度、最厚部まで含めて３０〜５０［ｍｍ］程度が好ましく、本実施形態では、２３．６（最厚部は４０．２６）［ｍｍ］である。また、端末装置７の重量は、４００〜６００［ｇ］程度であって、本実施形態においては、５３０［ｇ］である。詳細は後述するが、端末装置７は、上記のような比較的大型の端末装置（操作装置）であっても、ユーザが持ちやすく操作しやすい構成となっている。
【００９６】
端末装置７は、ハウジング５０の表面（表側）にＬＣＤ５１を有する。なお、ＬＣＤ５１の画面の大きさは５インチ以上であることが好ましく、ここでは６．２インチである。本実施形態の端末装置７は、持ちやすく操作しやすい構成によって、大きなＬＣＤを設けても操作がしやすいものとなっている。なお、別の実施形態においては、より小さいＬＣＤ５１を設け、端末装置７の大きさを比較的小さいものとするようにしてもよい。ＬＣＤ５１は、ハウジング５０の表面の中央付近に設けられる。したがって、ユーザは、図１０に示すようにＬＣＤ５１の両側部分のハウジング５０を持つことによって、ＬＣＤ５１の画面を見ながら端末装置７を持って動かすことができる。なお、図１０ではユーザがＬＣＤ５１の左右両側の部分のハウジング５０を持つことで端末装置７を横持ちで（横に長い向きにして）持つ例を示しているが、端末装置７を縦持ちで（縦に長い向きにして）持つことも可能である。
【００９７】
図８の（ａ）図に示すように、端末装置７は、操作手段として、ＬＣＤ５１の画面上にタッチパネル５２を有する。本実施形態では、タッチパネル５２は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。また、タッチパネル５２はシングルタッチ方式でもよいし、マルチタッチ方式であってもよい。本実施形態では、タッチパネル５２として、ＬＣＤ５１の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル５２の解像度とＬＣＤ５１の解像度が一致している必要はない。タッチパネル５２に対する入力は通常タッチペン６０を用いて行われるが、タッチペン６０に限らずユーザの指でタッチパネル５２に対する入力をすることも可能である。なお、ハウジング５０には、タッチパネル５２に対する操作を行うために用いられるタッチペン６０を収納する収納穴６０ａが設けられている（図８（ｂ）参照）。なお、ここでは、タッチペン６０が落ちないように、収納穴６０ａはハウジング５０の上面に設けられるが、側面や下面に設けられてもよい。このように、端末装置７はタッチパネル５２を備えるので、ユーザは、端末装置７を動かしながらタッチパネル５２を操作することができる。つまりユーザは、ＬＣＤ５１の画面を動かしつつ、その画面に対して直接（タッチパネル５２によって）入力を行うことができる。
【００９８】
図８に示すように、端末装置７は、操作手段（操作部）として、２つのアナログスティック５３Ａおよび５３Ｂと、複数のボタン（キー）５４Ａ〜５４Ｍとを備えている。各アナログスティック５３Ａおよび５３Ｂは、方向を指示することが可能なデバイスである。各アナログスティック５３Ａおよび５３Ｂは、ユーザの指で操作される可動部材（スティック部）がハウジング５０の表面に対して任意の方向（上下左右および斜め方向の任意の角度）にスライドすることができるように構成されている。すなわち、スライドパッドと呼ばれることもある方向入力デバイスである。なお、各アナログスティック５３Ａおよび５３Ｂの可動部材は、ハウジング５０の表面に対して任意の方向に傾倒する種類のものでもよい。本実施形態では、可動部材がスライドする種類のアナログスティックを用いるので、ユーザは親指を大きく動かさなくても各アナログスティック５３Ａおよび５３Ｂを操作することができ、ハウジング５０をよりしっかりと把持した状態で操作を行うことができる。なお、各アナログスティック５３Ａおよび５３Ｂとして、可動部材が傾倒する種類のものを用いる場合には、入力の程度（傾きの程度）がユーザにとってわかりやすく、詳細な操作をより容易に行うことができる。
【００９９】
また、左アナログスティック５３ＡはＬＣＤ５１の画面の左側に、右アナログスティック５３ＢはＬＣＤ５１の画面の右側にそれぞれ設けられる。したがって、ユーザは、左右いずれの手でもアナログスティックを用いて方向を指示する入力を行うことができる。また、図１０に示すように、各アナログスティック５３Ａおよび５３Ｂは、ユーザが端末装置７の左右部分（ＬＣＤ５１の左右両側の部分）を把持した状態で操作可能な位置に設けられるので、ユーザは、端末装置７を持って動かす場合においても各アナログスティック５３Ａおよび５３Ｂを容易に操作することができる。
【０１００】
各ボタン５４Ａ〜５４Ｌは、所定の入力を行うための操作手段（操作部）であり、押下可能なキーである。以下に示すように、各ボタン５４Ａ〜５４Ｌは、ユーザが端末装置７の左右部分を把持した状態で操作可能な位置に設けられる（図１０参照）。したがって、ユーザは、端末装置７を持って動かす場合においてもこれらの操作手段を容易に操作することができる。
【０１０１】
図８の（ａ）図に示すように、ハウジング５０の表面には、各操作ボタン５４Ａ〜５４Ｌのうち、十字ボタン（方向入力ボタン）５４Ａと、ボタン５４Ｂ〜５４Ｈおよび５４Ｍとが設けられる。つまり、これらのボタン５４Ａ〜５４Ｈおよび５４Ｍは、ユーザの親指で操作可能な位置に配置されている（図１０参照）。
【０１０２】
十字ボタン５４Ａは、ＬＣＤ５１の左側であって、左アナログスティック５３Ａの下側に設けられる。つまり、十字ボタン５４Ａはユーザの左手で操作可能な位置に配置されている。十字ボタン５４Ａは、十字の形状を有しており、少なくとも上下左右の方向を指示することが可能なボタンである。
【０１０３】
また、ボタン５４Ｂ〜５４Ｄは、ＬＣＤ５１の下側に設けられる。これら３つのボタン５４Ｂ〜５４Ｄは、左右両方の手で操作可能な位置に配置されている。また、端末装置７は、端末装置７の電源をオン／オフするための電源ボタン５４Ｍを有している。電源ボタン５４Ｍの操作により、ゲーム装置３の電源を遠隔でオン／オフすることも可能である。電源ボタン５４Ｍは、ボタン５４Ｂ〜５４Ｄと同様、ＬＣＤ５１の下側に設けられる。電源ボタン５４Ｍは、ボタン５４Ｂ〜５４Ｄの右側に設けられる。したがって、電源ボタン５４Ｍは、右手で操作可能な（操作しやすい）位置に配置されている。また、４つのボタン５４Ｅ〜５４Ｈは、ＬＣＤ５１の右側であって、右アナログスティック５３Ｂの下側に設けられる。つまり、４つのボタン５４Ｅ〜５４Ｈはユーザの右手で操作可能な位置に配置されている。さらに、４つのボタン５４Ｅ〜５４Ｈは、（４つのボタン５４Ｅ〜５４Ｈの中心位置に対して）上下左右の位置関係となるように配置されている。したがって、端末装置７は、ユーザに上下左右の方向を指示させるためのボタンとして４つのボタン５４Ｅ〜５４Ｈを機能させることも可能である。
【０１０４】
なお、本実施形態においては、各アナログスティック５３Ａおよび５３Ｂは、十字ボタン５４Ａおよび各ボタン５４Ｅ〜５４Ｈよりも上側に配置される。ここで、各アナログスティック５３Ａおよび５３Ｂは、十字ボタン５４Ａおよび各ボタン５４Ｅ〜５４Ｈよりも厚さ方向（ｙ軸方向）に関して突出している。そのため、仮にアナログスティック５３Ａと十字ボタン５４Ａとの配置を逆にした場合には、ユーザが十字ボタン５４Ａを親指で操作する際にアナログスティック５３Ａに親指が当たってしまい、操作を誤ってしまうおそれがある。なお、アナログスティック５３Ｂと各ボタン５４Ｅ〜５４Ｈとの配置を逆にする場合も同様の問題が生じる。これに対して、本実施形態では、各アナログスティック５３Ａおよび５３Ｂを十字ボタン５４Ａおよび各ボタン５４Ｅ〜５４Ｈよりも上側に配置するので、ユーザがアナログスティック５３Ａおよび５３Ｂを操作する際に十字ボタン５４Ａおよび各ボタン５４Ｅ〜５４Ｈに指が当たってしまう可能性は上記の場合に比べて低くなる。このように、本実施形態においては、誤操作の可能性を低減することができ、端末装置７の操作性を向上することができる。ただし、別の実施形態においては、必要に応じてアナログスティック５３Ａが十字ボタン５４Ａと逆の配置であってもよいし、アナログスティック５３Ｂが各ボタン５４Ｅ〜５４Ｈと逆の配置であってもよい。
【０１０５】
ここで、本実施形態では、いくつかの操作部（各アナログスティック５３Ａおよび５３Ｂ、十字ボタン５４Ａ、ならびに、３つのボタン５４Ｅ〜５４Ｇ）は、表示部（ＬＣＤ５１）の左右両側において、ハウジング５０における上下方向（ｙ軸方向）の中心よりも上側に設けられる。これらの操作部を操作する場合、ユーザは、端末装置７における上下方向の中心よりも上側を主に把持する。ここで、ユーザがハウジング５０の下側を把持する場合には、（端末装置７が本実施形態のように比較的大きなサイズである場合には特に）把持される端末装置７が不安定になり、ユーザは端末装置７を持ちにくくなる。これに対して、本実施形態では、上記操作部を操作する場合、ユーザは、端末装置７における上下方向の中心よりも上側を主に把持することになり、また、手のひらでハウジング５０を横から支えることができる。したがって、ユーザは、安定した状態でハウジング５０を把持することができ、端末装置７が持ちやすくなるので、上記操作部も操作しやすくなる。なお、他の実施形態においては、ハウジング５０の中央よりも上側において表示部の左右にそれぞれ少なくとも１つずつ操作部が設けられてもよい。例えば、各アナログスティック５３Ａおよび５３Ｂのみがハウジング５０の中央よりも上側に設けられてもよい。また例えば、十字ボタン５４Ａが左アナログスティック５３Ａよりも上側に設けられ、４つのボタン５４Ｅ〜５４Ｈが右アナログスティック５３Ｂよりも上側に設けられる場合には、十字ボタン５４Ａおよび４つのボタン５４Ｅ〜５４Ｈがハウジング５０の中央よりも上側に設けられても良い。
【０１０６】
また、本実施形態では、ハウジング５０の裏側（ＬＣＤ５１が設けられる表面の反対側）には、突起部（庇部５９）が設けられる（図８（ｃ）および図９参照）。図８（ｃ）に示すように、庇部５９は、略板状のハウジング５０の裏面から突起して設けられる、山状の部材である。突起部は、ハウジング５０の裏面を把持するユーザの指に掛止可能な高さ（厚さ）を有する。突起部の高さは、１０〜２５［ｍｍ］であることが好ましく、本実施形態では１６．６６［ｍｍ］である。また、突起部の下面は、突起部がユーザの指に掛かりやすいように、ハウジング５０の裏面に対して４５°以上（より好ましくは６０°以上）の傾斜を有することが好ましい。図８（ｃ）に示すように、突起部の下面は、上面よりも傾斜角度が大きくなるように形成されてもよい。図１０に示すように、ユーザは、指を庇部５９に掛けて（指の上に庇部５９を乗せて）把持することによって、端末装置７が比較的大きなサイズであっても、疲れることなく安定した状態で端末装置７を把持することができる。すなわち、庇部５９は、指でハウジング５０を支えるための支持部材であるということができ、また、指掛部ということもできる。
【０１０７】
また、庇部５９は、ハウジング５０の上下方向に関しては中央よりも上側に設けられる。庇部５９は、ハウジング５０の表面に設けられる操作部（各アナログスティック５３Ａおよび５３Ｂ）の概ね反対側の位置に設けられる。つまり、突起部は、表示部の左右にそれぞれ設けられる操作部の反対側の位置を含む領域に設けられる。したがって、上記操作部を操作する場合、ユーザは、中指あるいは薬指で庇部５９を支えるようにして端末装置７を把持することができる（図１０参照）。これによって、端末装置７がより持ちやすくなり、上記操作部もより操作しやすくなる。また、本実施形態では、突起部は、（突起した部分が）左右に延びる庇状の形状を有するので、ユーザは、中指あるいは薬指を突起部の下面に沿わせて端末装置７を把持することができ、端末装置７がより持ちやすくなる。なお、庇部５９は、（突起した部分が）左右方向に延びるように形成されればよく、図９に示すような水平方向に延びる形状に限られない。他の実施形態においては、庇部５９は水平方向から若干傾いた方向に延びていてもよい。例えば、庇部５９は、左右両端から中央に向かうにつれて上に（または下に）傾斜するように設けられてもよい。
【０１０８】
なお、本実施形態においては、後述する係止穴を庇部５９に設けることが理由で、ハウジングの裏面に形成される突起部として、庇状の形状をした庇部５９を採用するが、突起部はどのような形状であってもよい。例えば、他の実施形態においては、ハウジング５０の裏側において、２つの突起部が左右両側に設けられる（左右方向の中央には突起部が設けられない）構成であってもよい（図２９参照）。また、他の実施形態においては、突起部の断面形状（ｘ軸方向に垂直な断面における形状）は、ユーザの指で端末装置７をよりしっかりと支えることができるように（突起部が指によりしっかりと掛かるように）、鈎型（下面が凹んだ形状）であってもよい。
【０１０９】
なお、突起部（庇部５９）の上下方向に関する幅は、いくらであってもよい。例えば、突起部は、ハウジング５０の上辺まで形成されてもよい。すなわち、突起部の上面がハウジング５０の上側の側面と同じ位置に形成されてもよい。このとき、ハウジング５０は、下側が薄く、上側が厚い２段の構成となる。このように、ハウジング５０は、裏面における左右両側に、下方を向く面（突起部の下面）が形成されることが好ましい。これによって、ユーザは、当該面に指を当てることで楽に操作装置を把持することができる。なお、上記「下方を向く面」は、ハウジング５０の裏面におけるどの位置に形成されてもよいが、ハウジング５０の中央よりも上側に位置することが好ましい。
【０１１０】
また、図８の（ａ）図、（ｂ）図、および（ｃ）図に示すように、第１Ｌボタン５４Ｉおよび第１Ｒボタン５４Ｊは、ハウジング５０の上側の面における左右の両側にそれぞれ設けられる。本実施形態では、第１Ｌボタン５４Ｉおよび第１Ｒボタン５４Ｊは、ハウジング５０の斜め上部分（左上部分および右上部分）に設けられる。具体的には、第１Ｌボタン５４Ｉは、板状のハウジング５０における上側の側面の左端に設けられ、左上側の側面から露出している（換言すれば上側および左側の両方の側面から露出している）。また、第１Ｒボタン５４Ｊは、ハウジング５０における上側の側面の右端に設けられ、右上側の側面から露出している（換言すれば上側および右側の両方の側面から露出している）。このように、第１Ｌボタン５４Ｉは、ユーザの左手人差し指で操作可能な位置に配置され、第１Ｒボタン５４Ｊは、ユーザの右手人差し指で操作可能な位置に配置される（図１０参照）。なお、他の実施形態においては、ハウジング５０の上側の面における左右にそれぞれ設けられる操作部は、左右の端部に設けられる必要はなく、端部以外の位置に設けられてもよい。また、ハウジング５０の左右の側面に操作部がそれぞれ設けられてもよい。
【０１１１】
また、図８の（ｃ）図および図９に示すように、第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌは、上記突起部（庇部５９）に配置される。第２Ｌボタン５４Ｋは、庇部５９の左端付近に設けられる。第２Ｒボタン５４Ｌは、庇部５９の右端付近に設けられる。つまり、第２Ｌボタン５４Ｋは、ハウジング５０の裏面の左側（表面側から見たときの左側）のやや上方に設けられ、第２Ｒボタン５４Ｌは、ハウジング５０の裏面の右側（表面側から見たときの右側）のやや上方に設けられる。換言すれば、第２Ｌボタン５４Ｋは、表面に設けられる左アナログスティック５３Ａの（概ね）反対側の位置に設けられ、第２Ｒボタン５４Ｌは、表面に設けられる右アナログスティック５３Ｂの（概ね）反対側の位置に設けられる。このように、第２Ｌボタン５４Ｋは、ユーザの左手中指（または人差し指）で操作可能な位置に配置され、第２Ｒボタン５４Ｌは、ユーザの右手中指（または人差し指）で操作可能な位置に配置される（図１０参照）。また、第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌは、図８の（ｃ）図に示すように、上記庇部５９の上面に設けられる。そのため、第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌは、上方（斜め上方）を向くボタン面を有する。ユーザが端末装置７を把持した場合には中指または人差し指は上下方向に動くと考えられるので、ボタン面を上方に向けることで、ユーザは第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌを押下しやすくなる。
【０１１２】
上記のように、本実施形態においては、ハウジング５０の中央よりも上側において表示部（ＬＣＤ５１）の左右に操作部（アナログスティック５３Ａおよび５３Ｂ）がそれぞれ設けられ、さらに、ハウジング５０の裏側において当該操作部の反対側の位置に別の操作部（第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌ）がそれぞれ設けられる。これによれば、上記操作部と別の操作部とがハウジング５０の表側と裏側との互いに対向する位置に配置されるので、ユーザは、これらの操作部を操作する際にハウジング５０を表側と裏側から挟むように把持することができる。また、これらの操作部を操作する際にユーザは、ハウジング５０における上下方向の中心よりも上側を把持するので、端末装置７を上側で把持できるとともに、手のひらで端末装置７を支えることができる（図１０参照）。以上によって、ユーザは、少なくとも４つの操作部を操作することができる状態で、ハウジング５０を安定的に把持することができ、ユーザが容易に把持することが可能で、かつ操作性の良い操作装置（端末装置７）を提供することができる。
【０１１３】
以上のように、本実施形態においては、突起部（庇部５９）の下面に指を当てた状態で端末装置７を把持することによって、ユーザは楽に端末装置７を把持することができる。また、突起部の上面に第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌが設けられるので、ユーザは上記の状態でこれらのボタンを容易に操作することができる。ユーザは、例えば次のような持ち方で端末装置７を容易に把持することができる。
【０１１４】
すなわち、ユーザは、図１０に示すように、薬指を庇部５９の下面（図１０に示す一点鎖線）に当てて（薬指で庇部５９を支えるように）端末装置７を把持することも可能である。このとき、ユーザは、４つのボタン（第１Ｌボタン５４Ｉ、第１Ｒボタン５４Ｊ、第２Ｌボタン５４Ｋ、および第２Ｒボタン５４Ｌ）を人差し指および中指で操作することができる。例えば、要求されるゲーム操作が、使用するボタンが多く、比較的複雑である場合には、図１０に示すように把持することで、多くのボタンを容易に操作することができる。なお、各アナログスティック５３Ａおよび５３Ｂは十字ボタン５４Ａおよびボタン５４Ｅ〜５４Ｈの上側に設けられるので、比較的複雑な操作が要求される場合にユーザは親指でアナログスティック５３Ａおよび５３Ｂを操作することができ、好都合である。また、図１０においては、ユーザは、ハウジング５０の表面に親指を、ハウジング５０の上面に人差し指を、ハウジング５０の裏面における庇部５９の上面に中指を、庇部５９の下面に薬指を、ハウジング５０の裏面に小指を当てて端末装置７を把持する。このように、ユーザは、ハウジング５０を四方から包み込むようにして端末装置７をしっかりと把持することができる。
【０１１５】
また、ユーザは、中指を庇部５９の下面に当てて端末装置７を把持することも可能である。このとき、ユーザは、２つのボタン（第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌ）を人差し指で容易に操作することができる。例えば、要求されるゲーム操作が、使用するボタンが少なく、比較的単純である場合には、中指を庇部５９の下面に当てて端末装置７を把持してもよい。このとき、ユーザは、２本の指（薬指および小指）でハウジング５０の下側を把持することができるので、しっかりと端末装置７を把持することができる。
【０１１６】
なお、本実施形態においては、庇部５９の下面が、各アナログスティック５３Ａおよび５３Ｂと、十字ボタン５４Ａおよび４つのボタン５４Ｅ〜５４Ｈとの間に位置するように（各アナログスティック５３Ａおよび５３Ｂよりも下方で、かつ、十字ボタン５４Ａおよび４つのボタン５４Ｅ〜５４Ｈよりも上方に位置するように）設けられる。したがって、薬指を庇部５９に当てて端末装置７を把持する場合（図１０）には、各アナログスティック５３Ａおよび５３Ｂを親指で操作しやすくなり、中指を庇部５９に当てて端末装置７を把持する場合には、十字ボタン５４Ａおよび４つのボタン５４Ｅ〜５４Ｈを親指で操作しやすくなっている。つまり、上記２種類の場合のいずれにおいても、ユーザは、端末装置７をしっかりと把持した状態で方向入力操作を行うことができる。
【０１１７】
また、上述のように、ユーザは端末装置７を縦持ちで把持することも可能である。すなわち、ユーザは端末装置７の上辺または下辺を一方の手で把持することで端末装置７を縦向きで把持することが可能である。このように、ユーザは端末装置７を片手で把持することが可能であるので、例えば、一方の手で端末装置７を把持しながら他方の手でタッチパネル５２に対する入力を行うといった操作を行うことも可能である。
【０１１８】
また、端末装置７の上辺を把持する場合、ユーザは親指以外の指を庇部５９の下面に当てることで、端末装置７をしっかりと把持することができる。特に、本実施形態においては、庇部５９が左右に延びて形成されているので、ユーザは端末装置７の上辺におけるどこの位置で把持しても、親指以外の指を庇部５９に当てることができ、端末装置７をしっかりと把持することができる。すなわち、端末装置７を縦持ちで使う場合には、庇部５９は取っ手として使うことができる。一方、端末装置７の下辺を片手で把持する場合、ユーザは、その手でボタン５４Ｂ〜５４Ｄを操作することができる。したがって、例えば片手でタッチパネル５２に対する入力を行いつつ、端末装置７を把持する手でボタン５４Ｂ〜５４Ｄに対する操作を行うことができ、より多くの操作を行うことができる。
【０１１９】
なお、本実施形態における端末装置７に関しては、突起部（庇部５９）が裏面に設けられるので、ＬＣＤ５１の画面（ハウジング５０の表面）が上を向いた状態で端末装置７を載置させる場合、画面がやや傾いた状態となる。これによって、端末装置７を載置した状態において画面がより見やすくなる。また、端末装置７を載置した状態においてタッチパネル５２に対する入力操作が行いやすくなる。また、他の実施形態においては、上記庇部５９と同程度の高さを有する追加の突起部がハウジング５０の裏面に形成されてもよい。これによれば、ＬＣＤ５１の画面が上を向いた状態では、各突起部が床面に接することで、画面が水平になるように端末装置７を載置することができる。また、追加の突起部を着脱可能な（または折り畳み可能な）ものにしてもよい。これによれば、画面がやや傾いた状態と、画面が水平になる状態との両方で端末装置を載置することができる。すなわち、端末装置７を置いて使う場合には、庇部５９は、脚部として使うことができる。
【０１２０】
各ボタン５４Ａ〜５４Ｌには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン５４Ａおよびボタン５４Ｅ〜５４Ｈは方向指示操作や選択操作等に用いられてもよいし、各ボタン５４Ｂ〜５４Ｅは決定操作やキャンセル操作等に用いられてもよい。また、端末装置７は、ＬＣＤ５１の画面表示をオン／オフするためのボタンや、ゲーム装置３との接続設定（ペアリング）を行うためのボタンを有していてもよい。
【０１２１】
図８の（ａ）図に示すように、端末装置７は、マーカ５５Ａおよびマーカ５５Ｂからなるマーカ部５５をハウジング５０の表面に備えている。マーカ部５５は、ＬＣＤ５１の上側に設けられる。各マーカ５５Ａおよびマーカ５５Ｂは、マーカ装置６の各マーカ６Ｒおよび６Ｌと同様、１以上の赤外ＬＥＤで構成される。マーカ５５Ａおよび５５Ｂを構成する赤外ＬＥＤは、赤外光を透過する窓部の内側に配置される。マーカ部５５は、上述のマーカ装置６と同様、コントローラ５の動き等をゲーム装置３が算出するために用いられる。また、ゲーム装置３はマーカ部５５が備える各赤外ＬＥＤの点灯を制御することが可能である。
【０１２２】
端末装置７は、撮像手段であるカメラ５６を備えている。カメラ５６は、所定の解像度を有する撮像素子（例えば、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等）と、レンズとを含む。図８に示すように、本実施形態では、カメラ５６はハウジング５０の表面に設けられる。したがって、カメラ５６は、端末装置７を持っているユーザの顔を撮像することができ、例えばＬＣＤ５１を見ながらゲームを行っている時のユーザを撮像することができる。本実施形態においては、カメラ５６は、２つのマーカ５５Ａおよび５５Ｂの間に配置される。
【０１２３】
なお、端末装置７は、音声入力手段であるマイク７９を備えている。ハウジング５０の表面には、マイクロフォン用孔５０ｃが設けられる。マイク７９はこのマイクロフォン用孔５０ｃの奥のハウジング５０内部に設けられる。マイク７９は、ユーザの音声等、端末装置７の周囲の音を検出する。
【０１２４】
端末装置７は、音声出力手段であるスピーカ７７を備えている。図８の（ｄ）図に示すように、ハウジング５０の表面の下側にはスピーカ孔５７が設けられる。スピーカ７７の出力音はこのスピーカ孔５７から出力される。本実施形態では、端末装置７は２つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔５７が設けられる。なお、端末装置７は、スピーカ７７の音量を調節するためのつまみ６４を備える。また、端末装置７は、イヤホン等の音声出力部を接続するための音声出力端子６２を備える。ここでは、ハウジングの下側の側面に付加装置が接続されることを考慮して、上記音声出力端子６２およびつまみ６４はハウジング５０の上画の側面に設けられるが、左右の側面や下側の側面に設けられてもよい。
【０１２５】
また、ハウジング５０には、赤外線通信モジュール８２からの赤外線信号を端末装置７の外部に出射するための窓６３が設けられる。ここでは、ＬＣＤ５１の両側を把持した場合にユーザの前方へ赤外線信号が発射されるように、窓６３はハウジング５０の上側の側面に設けられる。ただし、他の実施形態においては、窓６３は、例えばハウジング５０の裏面等、どの位置に設けられてもよい。
【０１２６】
また、端末装置７は、他の装置を端末装置７に接続するための拡張コネクタ５８を備えている。拡張コネクタ５８は、端末装置７に接続される他の装置との間でデータ（情報）を送受信するための通信端子である。本実施形態においては、図８の（ｄ）図に示すように、拡張コネクタ５８は、ハウジング５０の下側側面に設けられる。なお、拡張コネクタ５８に接続される他の付加装置はどのようなものであってもよく、例えば、特定のゲームに用いるコントローラ（銃型のコントローラ等）やキーボード等の入力装置であってもよい。付加装置を接続する必要がなければ、拡張コネクタ５８は設けられていなくともよい。拡張コネクタ５８には、付加装置に電力を供給する端子や、充電のための端子が含まれていてもよい。
【０１２７】
また、端末装置７は、拡張コネクタ５８とは別に、付加装置から電力を取得するための充電端子６６を有する。図示しない充電スタンドに充電端子６６が接続された場合、充電スタンドから端末装置７へ電力が供給される。本実施形態では、充電端子６６はハウジング５０の下側側面に設けられる。したがって、端末装置７と付加装置とが接続される際には、拡張コネクタ５８を介して情報を送受信することに加えて、一方から他方への電力供給を行うことも可能である。このように、拡張コネクタ５８の周囲（左右両側）に充電端子６６を設けることによって、端末装置７と付加装置とが接続される際に、情報の送受信とともに、電力供給を行うことも可能である。また、端末装置７は充電コネクタを有し、ハウジング５０は充電コネクタを保護するためのカバー部６１を有する。充電コネクタは、後述する充電器８６に接続可能であり、充電器に充電コネクタが接続された場合、充電器８６から端末装置７へ電力が供給される。本実施形態では、ハウジングの下側の側面に付加装置が接続されることを考慮して、充電コネクタ（カバー部６１）はハウジング５０の上画の側面に設けられるが、左右の側面や下側の側面に設けられてもよい。
【０１２８】
図８（ｄ）および図９に示すように、突起部（庇部５９）の下面には、付加装置が有する爪部が係止可能な係止穴５９ａおよび５９ｂが設けられる。係止穴５９ａおよび５９ｂは、端末装置７に他の付加装置を接続する際に用いられる。すなわち、付加装置は係止穴５９ａおよび５９ｂに係止可能な爪部を有し、端末装置７に付加装置を接続する場合には、爪部が係止穴５９ａおよび５９ｂに係止することによって端末装置７と付加装置とが固定される。また、係止穴５９ａおよび５９ｂの内部に、さらにネジ穴を設けてもよく、付加装置をネジで強固に固定するようにしてもよい。なお、ここでは、端末装置７の裏面に設けられる突起部は、庇状の形状を有する庇部５９である。すなわち、庇部５９は左右方向に延びて設けられる。図９に示すように、係止穴５９ａおよび５９ｂは、庇部５９の下面の（左右方向に関して）中央付近に設けられる。なお、庇部５９の下面に設けられる係止穴５９ａおよび５９ｂの個数はいくつであってもよいが、１つである場合には庇部５９の中央に設けられることが好ましく、複数である場合には左右対称に配置されることが好ましい。これによれば、左右のバランスを均等に保って付加装置を安定的に接続することができる。また、係止穴が中央付近に設けられる場合には、左右の両端に設けられる場合に比べて、付加装置のサイズを小さくすることができる。以上のように、庇部５９は、付加装置の係止部材として使うことができる。
【０１２９】
また、本実施形態においては、図８（ｄ）に示すように、ハウジング５０の下面に係止穴５０ａおよび５０ｂが設けられる。したがって、端末装置７に付加装置を接続する場合には、４つの爪部が４つの各係止穴にそれぞれ係止することによって端末装置７と付加装置とが固定される。これによって、付加装置を端末装置７により強固に接続することができる。なお、係止穴５０ａおよび５０ｂの内部にもネジ穴を設け、付加装置をネジ止めするようにしてもよい。ネジ止めの位置は、どこであってもよいが、例えば、ハウジング５０の背面に当接する付加装置の支持部と、庇部５９とがネジ止めされてもよい。また、他の実施形態においては、ハウジングに設けられる係止穴は、どのような配置であってもよい。
【０１３０】
また、端末装置７は、ハウジング５０に対して着脱可能な電池蓋６７を有している。電池蓋６７の内側には電池（図１１に示す電池８５）が配置される。本実施形態においては、電池蓋６７はハウジング５０の裏側に設けられ、突起部（庇部５９）の下側に設けられる。
【０１３１】
また、端末装置７のハウジング５０には、ストラップの紐を結びつけるための孔６５ａおよび６５ｂが設けられる。図８（ｄ）に示すように、本実施形態においては、孔６５ａおよび６５ｂはハウジング５０の下面に設けられる。また、本実施形態においては、２つの孔６５ａおよび６５ｂがハウジング５０の左右両側にそれぞれ１つずつ設けられる。すなわち、孔６５ａがハウジング５０の下面の中央より左側に設けられ、孔６５ｂがハウジング５０の下面の中央より右側に設けられる。ユーザは、孔６５ａおよび６５ｂのいずれかにストラップを結びつけ、ストラップを自身の手首に結びつけてもよい。これによって、万一ユーザが端末装置７を落としたり、端末装置７が手から離れたりした場合でも、端末装置７が落下したり他の物に衝突したりすることを防止することができる。なお、本実施形態においては、左右両側にそれぞれ孔が設けられるので、ユーザは、どちらの手にもストラップを結びつけることができ、便利である。
【０１３２】
なお、図８〜図１１に示した端末装置７に関して、各操作ボタンやハウジング５０の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
【０１３３】
次に、図１１を参照して、端末装置７の内部構成について説明する。図１１は、端末装置７の内部構成を示すブロック図である。図１１に示すように、端末装置７は、図８に示した構成の他、タッチパネルコントローラ７１、磁気センサ７２、加速度センサ７３、ジャイロセンサ７４、ユーザインタフェースコントローラ（ＵＩコントローラ）７５、コーデックＬＳＩ７６、スピーカ７７、サウンドＩＣ７８、マイク７９、無線モジュール８０、アンテナ８１、赤外線通信モジュール８２、フラッシュメモリ８３、電源ＩＣ８４、および電池８５を備える。これらの電子部品は、電子回路基板上に実装されてハウジング５０内に収納される。
【０１３４】
ＵＩコントローラ７５は、各種の入出力部に対するデータの入出力を制御するための回路である。ＵＩコントローラ７５は、タッチパネルコントローラ７１、アナログスティック５３（アナログスティック５３Ａおよび５３Ｂ）、操作ボタン５４（各操作ボタン５４Ａ〜５４Ｌ）、マーカ部５５、磁気センサ７２、加速度センサ７３、およびジャイロセンサ７４に接続される。また、ＵＩコントローラ７５は、コーデックＬＳＩ７６と拡張コネクタ５８に接続される。また、ＵＩコントローラ７５には電源ＩＣ８４が接続され、ＵＩコントローラ７５を介して各部に電力が供給される。電源ＩＣ８４には内蔵の電池８５が接続され、電力が供給される。また、電源ＩＣ８４には、外部電源から電力を取得可能な充電器８６またはケーブルを充電コネクタを介して接続することが可能であり、端末装置７は、当該充電器８６またはケーブルを用いて外部電源からの電力供給と充電を行うことができる。なお、端末装置７は、図示しない充電機能を有するクレイドルに端末装置７を装着することで充電を行うことも可能である。すなわち、図示しないが、電源ＩＣ８４には、外部電源から電力を取得可能なクレイドルを充電端子６６を介して接続することが可能であり、端末装置７は、クレイドルを用いて外部電源からの電力供給と充電を行うことができる。
【０１３５】
タッチパネルコントローラ７１は、タッチパネル５２に接続され、タッチパネル５２の制御を行う回路である。タッチパネルコントローラ７１は、タッチパネル５２からの信号に基づいて所定の形式の入力位置データを生成してＵＩコントローラ７５へ出力する。入力位置データは、タッチパネル５２の入力面において入力が行われた位置の座標を表す。なお、タッチパネルコントローラ７１は、タッチパネル５２からの信号の読み込み、および、入力位置データの生成を所定時間に１回の割合で行う。また、ＵＩコントローラ７５からタッチパネルコントローラ７１へは、タッチパネル５２に対する各種の制御指示が出力される。
【０１３６】
アナログスティック５３は、ユーザの指で操作されるスティック部がスライドした（または傾倒した）方向および量を表すスティックデータをＵＩコントローラ７５へ出力する。また、操作ボタン５４は、各操作ボタン５４Ａ〜５４Ｌに対する入力状況（押下されたか否か）を表す操作ボタンデータをＵＩコントローラ７５へ出力する。
【０１３７】
磁気センサ７２は、磁界の大きさおよび方向を検知することで方位を検出する。検出された方位を示す方位データは、ＵＩコントローラ７５へ出力される。また、ＵＩコントローラ７５から磁気センサ７２へは、磁気センサ７２に対する制御指示が出力される。磁気センサ７２に関しては、ＭＩ（磁気インピーダンス）素子、フラックスゲートセンサ、ホール素子、ＧＭＲ（巨大磁気抵抗）素子、ＴＭＲ（トンネル磁気抵抗）素子、あるいはＡＭＲ（異方性磁気抵抗）素子等を用いたセンサがあるが、方位を検出することができればどのようなものが用いられてもよい。なお、厳密には、地磁気以外に磁界が発生している場所においては、得られた方位データは方位を示さないことになるが、そのような場合であっても、端末装置７が動いた場合には方位データが変化するため、端末装置７の姿勢の変化を算出することができる。
【０１３８】
加速度センサ７３は、ハウジング５０の内部に設けられ、３軸（図８の（ａ）図に示すｘｙｚ軸）方向に沿った直線加速度の大きさを検出する。具体的には、加速度センサ７３は、ハウジング５０の長辺方向をｘ軸、ハウジング５０の表面に対して垂直な方向をｙ軸、ハウジング５０の短辺方向をｚ軸として、各軸の直線加速度の大きさを検出する。検出された加速度を表す加速度データはＵＩコントローラ７５へ出力される。また、ＵＩコントローラ７５から加速度センサ７３へは、加速度センサ７３に対する制御指示が出力される。加速度センサ７３は、本実施形態では例えば静電容量式のＭＥＭＳ型加速度センサであるとするが、他の実施形態においては他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ７３は１軸または２軸方向を検出する加速度センサであってもよい。
【０１３９】
ジャイロセンサ７４は、ハウジング５０の内部に設けられ、上記ｘ軸、ｙ軸およびｚ軸の３軸周りの角速度を検出する。検出された角速度を表す角速度データは、ＵＩコントローラ７５へ出力される。また、ＵＩコントローラ７５からジャイロセンサ７４へは、ジャイロセンサ７４に対する制御指示が出力される。なお、３軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ７４はジャイロセンサ４８と同様、２軸ジャイロセンサと１軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ７４は１軸または２軸方向を検出するジャイロセンサであってもよい。
【０１４０】
ＵＩコントローラ７５は、上記の各構成要素から受け取った入力位置データ、スティックデータ、操作ボタンデータ、方位データ、加速度データ、および角速度データを含む操作データをコーデックＬＳＩ７６へ出力する。なお、拡張コネクタ５８を介して端末装置７に他の装置が接続される場合には、当該他の装置に対する操作を表すデータが上記操作データにさらに含まれていてもよい。
【０１４１】
コーデックＬＳＩ７６は、ゲーム装置３へ送信するデータに対する圧縮処理、および、ゲーム装置３から送信されたデータに対する伸張処理を行う回路である。コーデックＬＳＩ７６には、ＬＣＤ５１、カメラ５６、サウンドＩＣ７８、無線モジュール８０、フラッシュメモリ８３、および赤外線通信モジュール８２が接続される。また、コーデックＬＳＩ７６はＣＰＵ８７と内部メモリ８８を含む。端末装置７はゲーム処理自体を行なわない構成であるが、端末装置７の管理や通信のための最小限のプログラムを実行する必要がある。電源投入時にフラッシュメモリ８３に格納されたプログラムを内部メモリ８８に読み出してＣＰＵ８７が実行することで、端末装置７が起動する。また、内部メモリ８８の一部の領域はＬＣＤ５１のためのＶＲＡＭとして使用される。
【０１４２】
カメラ５６は、ゲーム装置３からの指示に従って画像を撮像し、撮像した画像データをコーデックＬＳＩ７６へ出力する。また、コーデックＬＳＩ７６からカメラ５６へは、画像の撮像指示等、カメラ５６に対する制御指示が出力される。なお、カメラ５６は動画の撮影も可能である。すなわち、カメラ５６は、繰り返し撮像を行って画像データをコーデックＬＳＩ７６へ繰り返し出力することも可能である。
【０１４３】
サウンドＩＣ７８は、スピーカ７７およびマイク７９に接続され、スピーカ７７およびマイク７９への音声データの入出力を制御する回路である。すなわち、コーデックＬＳＩ７６から音声データを受け取った場合、サウンドＩＣ７８は当該音声データに対してＤ／Ａ変換を行って得られる音声信号をスピーカ７７へ出力し、スピーカ７７から音を出力させる。また、マイク７９は、端末装置７に伝わる音（ユーザの音声等）を検知して、当該音を示す音声信号をサウンドＩＣ７８へ出力する。サウンドＩＣ７８は、マイク７９からの音声信号に対してＡ／Ｄ変換を行い、所定の形式の音声データをコーデックＬＳＩ７６へ出力する。
【０１４４】
赤外線通信モジュール８２は、赤外線信号を発光し、他の装置との間で赤外線通信を行う。ここでは、赤外線通信モジュール８２は、例えばＩｒＤＡの規格に従った赤外線通信を行う機能と、テレビ２を制御するための赤外線信号（制御信号）を出力する機能とを備える。
【０１４５】
コーデックＬＳＩ７６は、カメラ５６からの画像データ、マイク７９からの音声データ、および、ＵＩコントローラ７５からの操作データを、端末操作データとして無線モジュール８０を介してゲーム装置３へ送信する。本実施形態では、コーデックＬＳＩ７６は、画像データおよび音声データに対して、コーデックＬＳＩ２７と同様の圧縮処理を行う。上記端末操作データ、ならびに、圧縮された画像データおよび音声データは、送信データとして無線モジュール８０へ出力される。無線モジュール８０にはアンテナ８１が接続されており、無線モジュール８０はアンテナ８１を介してゲーム装置３へ上記送信データを送信する。無線モジュール８０は、ゲーム装置３の端末通信モジュール２８と同様の機能を有している。すなわち、無線モジュール８０は、例えばＩＥＥＥ８０２．１１ｎの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。送信されるデータは必要に応じて暗号化されていてもよいし、されていなくともよい。
【０１４６】
以上のように、端末装置７からゲーム装置３へ送信される送信データには、操作データ（端末操作データ）、画像データ、および音声データが含まれる。なお、拡張コネクタ５８を介して端末装置７に他の装置が接続される場合には、当該他の装置から受け取ったデータが上記送信データにさらに含まれていてもよい。コーデックＬＳＩ７６は、赤外線通信モジュール８２による赤外線通信によって受信したデータを、必要に応じて上記送信データに含めてゲーム装置３へ送信してもよい。
【０１４７】
また、上述のように、ゲーム装置３から端末装置７へは、圧縮された画像データおよび音声データが送信される。これらのデータはアンテナ８１（受信部）で受信され、無線モジュール８０を介してコーデックＬＳＩ７６に送られる。コーデックＬＳＩ７６は、受信された画像データおよび音声データを伸張する。伸張された画像データはＬＣＤ５１へ出力され、画像がＬＣＤ５１に表示される。つまり、コーデックＬＳＩ７６（ＣＰＵ８７）は、受信された画像データを表示部に表示させる。また、伸張された音声データはサウンドＩＣ７８へ出力され、サウンドＩＣ７８はスピーカ７７から音を出力させる。
【０１４８】
また、ゲーム装置３から受信されるデータに制御データが含まれる場合、コーデックＬＳＩ７６およびＵＩコントローラ７５は、制御データに従った制御指示を各部に行う。上述のように、制御データは、端末装置７が備える各構成要素（本実施形態では、カメラ５６、タッチパネルコントローラ７１、マーカ部５５、各センサ６２〜６４、および赤外線通信モジュール８２）に対する制御指示を表すデータである。本実施形態では、制御データが表す制御指示としては、上記各構成要素を動作させたり、動作を休止（停止）させたりする指示が考えられる。すなわち、ゲームで使用しない構成要素については電力消費を抑えるために休止させてもよく、その場合、端末装置７からゲーム装置３へ送信される送信データには、休止した構成要素からのデータが含まれないようにする。なお、マーカ部５５は赤外ＬＥＤであるので、制御は単に電力の供給のＯＮ／ＯＦＦでよい。
【０１４９】
また、ゲーム装置３は、上記赤外線通信モジュール８２の出力を制御することによって、テレビ２の動作を制御することが可能である。すなわち、ゲーム装置３は、テレビ２を制御するための制御指令に対応する赤外線信号を赤外線通信モジュール８２に出力させるための指示（上記制御データ）を端末装置７へ出力する。この指示に応じて、コーデックＬＳＩ７６は、上記制御指令に対応する赤外線信号を赤外線通信モジュール８２に出力させる。ここで、テレビ２は赤外線信号を受光可能な赤外線受光部を備えている。赤外線通信モジュール８２から出力された赤外線信号が赤外線受光部によって受光されることで、テレビ２は当該赤外線信号に応じた動作を行う。なお、ゲーム装置３からの上記指示は、赤外線信号のパターンを示すものであってもよいし、端末装置７が赤外線信号のパターンを記憶している場合には、当該パターンを示す指示であってもよい。
【０１５０】
以上のように、端末装置７は、タッチパネル５２、アナログスティック５３、および操作ボタン５４といった操作手段を備えるが、他の実施形態においては、これらの操作手段に代えて、または、これらの操作手段とともに、他の操作手段を備える構成であってもよい。
【０１５１】
また、端末装置７は、端末装置７の動き（位置や姿勢、あるいは、位置や姿勢の変化を含む）を算出するためのセンサとして、磁気センサ７２、加速度センサ７３、およびジャイロセンサ７４を備えるが、他の実施形態においては、これらのセンサのうち１つまたは２つのみを備える構成であってもよい。また、他の実施形態においては、これらのセンサに代えて、または、これらのセンサとともに、他のセンサを備える構成であってもよい。
【０１５２】
また、端末装置７は、カメラ５６およびマイク７９を備える構成であるが、他の実施形態においては、カメラ５６およびマイク７９を備えていなくてもよく、また、いずれか一方のみを備えていてもよい。
【０１５３】
また、端末装置７は、端末装置７とコントローラ５との位置関係（コントローラ５から見た端末装置７の位置および／または姿勢等）を算出するための構成としてマーカ部５５を備える構成であるが、他の実施形態ではマーカ部５５を備えていない構成としてもよい。また、他の実施形態では、端末装置７は、上記位置関係を算出するための構成として他の手段を備えていてもよい。例えば、他の実施形態においては、コントローラ５がマーカ部を備え、端末装置７が撮像素子を備える構成としてもよい。さらにこの場合、マーカ装置６は赤外ＬＥＤに代えて、撮像素子を備える構成としてもよい。
【０１５４】
［５．３次元空間における位置算出方法］
次に、本実施形態において行われる、３次元の仮想空間における位置の算出方法について説明する。本実施形態においては、ゲームシステム１は、操作装置である端末装置７に対する操作に基づいて３次元の仮想空間内の位置を算出する。なお、ゲームシステム１はコントローラ５を含まない構成であってもよい。ゲームシステム１は、端末装置７の姿勢と、端末装置７に設けられた所定の入力面（タッチパネル５２）に対する入力位置とに基づいて仮想空間内の位置を算出する。これによれば、ユーザ（プレイヤ）は、端末装置７の姿勢を変化させる操作と、端末装置７の入力面に対する入力操作とによって、３次元空間における位置を容易に指定することができる。以下、位置算出方法の概要を説明する。
【０１５５】
図１２は、本実施形態における位置算出方法の説明図である。また、図１３は、図１２に示す状態から端末装置７の姿勢を変化させた様子を示す図である。図１２および図１３に示すように、本実施形態においては、操作装置として、可搬型の端末装置７が用いられる。詳細は後述するが、ゲームシステム１は端末装置７の姿勢を算出（推測）することが可能である。また、端末装置７は、所定の入力面に対して位置を入力可能な入力装置としてタッチパネル５２を備える。したがって、端末装置７に対してユーザは、姿勢を変化させる操作と、端末装置７の入力面に対する入力操作とを行うことが可能である。
【０１５６】
図１２および図１３において、仮想空間には、面Ｓが配置される。この面Ｓ（面Ｓの位置および／または姿勢）は、図１２および図１３に示すように、端末装置７の姿勢に応じて決められる。つまり、端末装置７の姿勢を変化させる操作によって、面Ｓの位置および／または姿勢が変化する。端末装置７の姿勢に基づく面Ｓの決定方法はどのような方法であってもよいが、本実施形態においては、端末装置７の姿勢に応じて（少なくとも）面Ｓの姿勢が変化するように面Ｓが設定される。
【０１５７】
また、図１２および図１３に示すように、タッチパネル５２の入力面に対する入力（タッチ入力）が行われた場合、入力位置Ｐに基づいて上記面Ｓ上の位置Ｑが算出される。以下では、この位置Ｑを「指定位置」と呼ぶ。入力位置Ｐに基づく指定位置Ｑの算出方法はどのような方法であってもよいが、例えば、入力面と面Ｓとを対応させ、入力位置Ｐに対応する面Ｓ上の位置が指定位置Ｑとして算出されてもよい。
【０１５８】
以上のように、ゲームシステム１は、仮想空間内の位置として、仮想空間内において端末装置７の姿勢に応じて決められる面Ｓ上の位置を入力位置に基づいて算出する。ここで、図１２に示す状態においては、ユーザは、タッチ入力によって３次元仮想空間における面Ｓ上の領域を指定することができる。一方、図１３に示す状態においては、面Ｓの姿勢が図１２とは異なるので、ユーザは、タッチ入力によって、図１２に示す面Ｓの領域とは異なる領域を指定することができる。このように、本実施形態においては、ユーザは、端末装置７の姿勢を変化させる操作によって面Ｓの姿勢を変化させるとともに、タッチ入力によって面Ｓ上の位置を指定することによって、３次元空間における位置を指定することができる。さらに、本実施形態においては、端末装置７の姿勢によって面Ｓの姿勢が変化し、入力面上における入力位置によって面Ｓ上の位置が変化する。これによって、ユーザは、直感的な操作によって面Ｓの姿勢および入力位置を指定することができ、３次元空間を容易に指定することができる。
【０１５９】
さらに、詳細は後述するが、本実施形態においては、端末装置７の表示部（ＬＣＤ５１）には、タッチパネル５２に対する入力位置と、当該入力位置に基づいて算出される面Ｓ上の指定位置Ｑとが画面上において一致するように、指定位置が算出される（後述するステップＳ１６，Ｓ２５およびＳ２６，Ｓ６４，ならびにＳ８６）。つまり、ユーザは、表示部の画面上の位置を指定（タッチ）することで、その位置に対応する仮想空間内の位置を指定することができる。これによって、ユーザは、より直感的で分かりやすい操作によって３次元空間における位置を指定することができる。
【０１６０】
なお、本実施形態においては、ゲームシステム１（ゲーム装置３）は、上記のように算出される指定位置を入力として所定の処理（ゲーム処理）を実行する。この所定の処理はどのような処理であってもよく、例えば、指定位置はゲーム入力としてどのように用いられてもよい。以下、指定位置を用いたゲーム処理の例として、第１〜第４のゲーム例について説明する。
【０１６１】
［６．第１のゲーム例]
以下、図１４〜図１９を参照して、本実施形態のゲームシステム１において実行される第１のゲーム例について説明する。第１のゲーム例では、プレイヤ（ユーザ）は、３次元の仮想空間（ゲーム空間）に配置された鍵盤に対する入力を端末装置７によって行う。すなわち、プレイヤが端末装置７を用いて仮想空間における鍵盤の位置を指定すると、指定された鍵盤に応じた音が出力される。なお、本ゲーム例においては、端末装置７が操作装置として用いられる。そのため、コントローラ５は用いられなくてもよく、ゲームシステム１はコントローラ５を含まない構成であってもよい。
【０１６２】
図１４は、第１のゲーム例においてゲーム操作が行われる場合におけるテレビ２および端末装置７を示す図である。図１４に示すように、テレビ２には、鍵盤オブジェクト９１および端末オブジェクト９２を含む仮想空間の画像が表示される。また、端末装置７（ＬＣＤ５１）には、鍵盤オブジェクト９１の一部が表示される。本ゲーム例においては、鍵盤オブジェクト９１の各鍵盤は円弧状に配置される。また、テレビ２には円弧状の鍵盤オブジェクト９１を、円弧の内側（円弧の中心が位置する側）から見た画像が表示される。これによって、ユーザは、円弧状の鍵盤オブジェクト９１の中心に立っている感覚で操作を行うことができる。また、鍵盤毎に異なる音程の音が対応付けられており、鍵盤が指定された場合、指定された鍵盤に対応する音が出力される。
【０１６３】
また、端末オブジェクト９２は、端末装置７の姿勢に応じて制御される。本ゲーム例においては、端末オブジェクト９２は、端末装置７（端末オブジェクト９２）の画面と垂直な軸（図８に示すｙ軸）回りの回転に関して、端末装置７の姿勢と端末オブジェクト９２の姿勢とが一致するように制御される。また、端末オブジェクト９２は、端末装置７の姿勢に応じて、円弧状に配置される鍵盤オブジェクト９１の上方を回転しながら移動するように制御される（図１４に示す矢印参照）。したがって、プレイヤは、端末装置７を左右に傾ける操作（図１４に示す矢印参照）によって、端末オブジェクト９２を左右に回転しながら移動させることができる。なお、本ゲーム例では、テレビ２に表示される端末オブジェクト９２の画面９３にも端末用画像と同様の画像が描画される（図１４参照）が、画面９３には何も表示されなくてもよい。
【０１６４】
なお、上記のように本ゲーム例においては、鍵盤オブジェクト９１の各鍵盤を円弧状に配置し、端末装置７の回転に応じて端末オブジェクト９２を円弧状の軌跡で移動させる。これによって、端末装置７の動きと端末オブジェクト９２の動きとを対応させることができる。また、各鍵盤の円弧状の配置と端末オブジェクト９２の円弧状の移動軌跡とから、プレイヤは、特別な説明が無くても端末装置７の操作方法を把握（推測）することができる。そのため、本ゲーム例においては、端末装置７の操作をプレイヤにとってより直感的で分かりやすいものにすることができる。
【０１６５】
図１５は、仮想空間において鍵盤オブジェクト９１を上方から見た図である。図１５に示すように、本ゲーム例においては、面９４は、鍵盤オブジェクト９１の面上に設定される。なお、図１５においては面９４を点線で示しているが、本ゲーム例においては、面９４は実際には表示装置（テレビ２および端末装置７）には表示されない。つまり、面９４は必ずしも表示される必要はなく、仮想空間にオブジェクトとして配置されなくてもよいし、透明なオブジェクトとして扱われてもよい。
【０１６６】
面９４は、端末オブジェクト９２の位置および向きに基づいて設定される。すなわち、面９４の位置は、端末オブジェクト９２の下方（真下）の位置に設定され、面９４の姿勢は、面９４に垂直な軸回りの回転方向の姿勢に関して、端末オブジェクト９２の姿勢と一致する姿勢に設定される。したがって、端末オブジェクト９２が鍵盤オブジェクト９１の上方を円弧状の軌跡で移動することに応じて、面９４は鍵盤オブジェクト９１の一部を含むように鍵盤オブジェクト９１上を回転しながら移動する（図１５に示す矢印参照）。
【０１６７】
以上より、本ゲーム例では、端末装置７の姿勢に応じて端末オブジェクト９２の位置および姿勢が決定され、端末オブジェクト９２の位置および姿勢に応じて面９４の位置および姿勢が決定される。つまり、端末装置７の姿勢に応じて面９４の位置および姿勢が決定される。したがって、端末装置７を左右に傾ける操作によって、面９４が鍵盤オブジェクト９１上を左右に回転しながら移動する（図１５に示す矢印参照）ことになる。
【０１６８】
図１６は、端末装置７に表示される画像の一例を示す図である。図１６に示すように、端末装置７には、鍵盤オブジェクト９１の一部を表す画像が表示される。具体的には、鍵盤オブジェクト９１のうちの、面９４内の領域が端末装置７に表示される。したがって、鍵盤オブジェクト９１のうちで端末装置７に表示される領域は、端末装置７の姿勢に応じて変化することとなる。具体的には、端末装置７を左右に傾ける操作によって、鍵盤オブジェクト９１の表示領域が左右に円弧状にスクロールする。なお、本ゲーム例においては、テレビ２には円弧状の鍵盤オブジェクト９１が表示され、端末装置７を円弧状の軌跡で移動させる操作によって、端末装置７に表示される鍵盤オブジェクト９１の一部が円弧状にスクロールする。したがって、ユーザは円弧状の鍵盤オブジェクト９１があたかも存在するかのような感覚で、端末装置７を用いて鍵盤オブジェクト９１に対する位置指定操作を行うことができる。
【０１６９】
なお、本ゲーム例では、ユーザが白鍵と黒鍵の並びから各鍵盤に対応する音を識別できるように、端末装置７に一度に表示される鍵盤は１オクターブ分の鍵盤となっている。なお、端末装置７は比較的大型の画面を有しているので、１オクターブ分の鍵盤が表示される場合でも、各鍵盤はユーザが指で押しやすい幅で表示される。
【０１７０】
ここで、プレイヤは、端末装置７に表示される鍵盤オブジェクト９１に対してタッチ入力を行うことで、音を出力することができる。すなわち、ゲーム装置３は、端末装置７のタッチパネル５２に対してタッチ入力が行われた場合、入力位置に対応する（ＬＣＤ５１の画面上において入力位置に表示されている）指定位置にある鍵盤を特定し、特定された鍵盤に対応する音を出力する。なお、音を出力するスピーカは、テレビ２のスピーカ２ａでもよいし、端末装置７のスピーカ７７でもよいし、両方のスピーカ２ａおよび７７でもよい。
【０１７１】
以上のように、本ゲーム例においては、端末装置７の姿勢が変化することに応じて端末オブジェクト９２および面９４が移動し、端末装置７に表示される鍵盤オブジェクト９１の領域が変化する。その結果、プレイヤが端末装置７を用いて指定可能な鍵盤が変化する。したがって、プレイヤは、端末装置７の姿勢を変化させる操作と、タッチ入力の操作とによって、３次元の仮想空間内における鍵盤オブジェクト９１の位置を容易に指定することができる。また、本ゲーム例においては、鍵盤オブジェクト９１の全体を端末装置７に表示せずに、鍵盤オブジェクト９１の全体をプレイヤが指定することができる。したがって、端末装置７において鍵盤オブジェクト９１を大きく表示することができるので、タッチ入力が行いやすく操作が容易になる。
【０１７２】
（第１のゲーム例におけるゲーム処理）
次に、第１のゲーム例においてゲームシステム１で実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図１７は、ゲーム処理において用いられる各種データを示す図である。図１７において、ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図１７に示すように、ゲーム装置３のメインメモリには、ゲームプログラム１００、端末操作データ１０１、および処理用データ１０８が記憶される。なお、メインメモリには、図１７に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームに使用される音声データ等、ゲームに必要なデータが記憶される。
【０１７３】
ゲームプログラム１００は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム１００は、光ディスク４に代えて、フラッシュメモリ１７やゲーム装置３の外部装置から（例えばインターネットを介して）取得されてもよい。また、ゲームプログラム１００に含まれる一部（例えば、コントローラ５および／または端末装置７の姿勢を算出するためのプログラム）については、ゲーム装置３内に予め記憶されていてもよい。
【０１７４】
端末操作データ１０１は、端末装置７に対するプレイヤの操作を表すデータである。端末操作データ１０１は、端末装置７から送信されてゲーム装置３において取得され、メインメモリに記憶される。端末操作データ１０１は、操作ボタンデータ１０２、スティックデータ１０３、入力位置データ１０４、角速度データ１０５、加速度データ１０６、および方位データ１０７を含む。端末操作データ１０１は、図１７に示す各データの他、カメラ５６によって撮像された画像のデータや、マイク７９によって検出された音声データを含んでいてもよい。なお、メインメモリには、最新の（最後に取得された）ものから順に所定個数の端末操作データが記憶されてもよい。
【０１７５】
操作ボタンデータ１０２は、端末装置７に設けられる各操作ボタン５４Ａ〜５４Ｌに対する入力状態を表すデータである。具体的には、操作ボタンデータ１０２は、各操作ボタン５４Ａ〜５４Ｌが押下されているか否かを表す。
【０１７６】
スティックデータ１０３は、アナログスティック５３（アナログスティック５３Ａおよび５３Ｂ）のスティック部がスライドした（または傾倒した）方向および量を表すデータである。上記方向および量は、例えば２次元座標や２次元ベクトルとして表されてもよい。
【０１７７】
入力位置データ１０４は、タッチパネル５２の入力面において入力が行われた位置（入力位置）を表すデータである。本実施形態では、入力位置データ１０４は、上記入力面上の位置を表すための２次元座標系の座標値を表す。なお、タッチパネル５２がマルチタッチ方式である場合には、入力位置データ１０４は複数の入力位置を表すこともある。
【０１７８】
角速度データ１０５は、ジャイロセンサ７４によって検出された角速度を表すデータである。本実施形態では、角速度データ１０５は、図８に示すｘｙｚの３軸回りのそれぞれの角速度を表すものであるが、他の実施形態においては、任意の１軸以上の軸回り角速度を表すものであればよい。
【０１７９】
加速度データ１０６は、加速度センサ７３によって検出された加速度（加速度ベクトル）を表すデータである。本実施形態では、加速度データ１０６は、図８に示すｘｙｚの３軸の方向に関する加速度を各成分とする３次元の加速度を表すものであるが、他の実施形態においては、任意の１以上の方向に関する加速度を表すものであればよい。
【０１８０】
方位データ１０７は、磁気センサ７２によって検出された方位を表すデータである。本実施形態では、方位データ１０７は、端末装置７を基準として所定の方位（例えば北）の向きを表す。なお、地磁気以外の磁界が発生している場合においては、方位データ１０７は厳密には絶対的な方位（北等）を示さないことになる。ただし、その場所における磁界の方向に対する端末装置７の相対的な方向が方位データ１０７によって示されるので、そのような場合であっても方位データ１０７に基づいて端末装置７の姿勢または姿勢の変化を算出することが可能である。
【０１８１】
なお、端末操作データ１０１は、端末装置７に対する操作を表すものであればよく、上記各データ９２〜９７のいずれか１つのみを含むものであってもよい。また、端末装置７が他の入力手段（例えば、タッチパッドや、コントローラ５の撮像手段等）を有する場合には、端末操作データ１０１は、当該他の入力手段に対する操作を表すデータを含んでいてもよい。なお、本実施形態のように端末装置７自体の動きをゲーム操作として用いる場合には、端末操作データ１０１は、加速度データ１０６、角速度データ１０５、または方位データ１０７のように、端末装置７自体の動きに応じて値が変化するデータを含むことが好ましい。
【０１８２】
また、本実施形態においては、端末操作データ１０１の他、カメラ画像データおよび／またはマイク音データが端末装置７からゲーム装置３へ送信されてもよい。カメラ画像データは、端末装置７のカメラ５６によって撮像された画像（カメラ画像）を表すデータである。マイク音データは、端末装置７のマイク７９によって検出された音声（マイク音）を表すデータである。なお、これらカメラ画像データおよびマイク音データは、コーデックＬＳＩ７６によって圧縮されてゲーム装置３へ送信され、ゲーム装置３においてコーデックＬＳＩ２７によって伸張されてメインメモリに記憶されてもよい。
【０１８３】
また、本実施形態ではコントローラ５が操作装置として用いられないので図示しないが、メインメモリには、コントローラ５に対するプレイヤの操作を表すコントローラ操作データが記憶されてもよい。
【０１８４】
処理用データ１０８は、後述するゲーム処理（図１８）において用いられるデータである。処理用データ１０８は、端末姿勢データ１０９、端末オブジェクトデータ１１０、面データ１１１、端末カメラデータ１１２、および、指定位置データ１１３を含む。なお、図１７に示すデータの他、処理用データ１０８は、ゲームに登場する各種オブジェクトに設定される各種パラメータを表すデータ等、ゲーム処理において用いられる各種データを含む。
【０１８５】
端末姿勢データ１０９は、端末装置７の姿勢を表すデータである。端末装置７の姿勢は、例えば、所定の基準姿勢から現在の端末装置７の姿勢への回転を表す回転行列によって表現されてもよいし、３次のベクトルまたは３つの角度によって表現されてもよい。また、本実施形態においては、端末装置７の姿勢として３次元空間における姿勢が用いられるが、他の実施形態においては、２次元平面における姿勢が用いられてもよい。本実施形態では、端末姿勢データ１０９は、上記端末操作データ１０１に含まれる角速度データ１０５および加速度データ１０６に基づいて算出される。端末姿勢データ１０９の算出方法についてはステップＳ１１で後述する。
【０１８６】
端末オブジェクトデータ１１０は、仮想空間に配置される端末オブジェクト９２の位置および姿勢を表すデータである。端末オブジェクト９２の位置は、仮想空間内の位置を表すための座標系（仮想空間座標系）における位置を示す３次元の座標値によって表される。また、本ゲーム例においては、端末オブジェクト９２は、端末オブジェクト９２の画面９３に垂直な軸回りの回転方向のみ姿勢を変化させ、他の回転方向には姿勢を変化させない。そのため、端末オブジェクト９２の姿勢は、１つのベクトル（例えば、端末オブジェクト９２の画面に平行で、端末オブジェクト９２を基準とした所定方向を向くベクトル）によって表現される。また、端末オブジェクト９２の姿勢は、上記座標系における回転行列またはベクトルによって表現されてもよい。
【０１８７】
面データ１１１は、仮想空間に設定される面９４の位置および姿勢を表すデータである。面９４の位置は、上記仮想空間座標系における位置を示す３次元の座標値によって表される。また、本ゲーム例においては、面９４は、面９４に垂直な軸回りの回転方向のみ姿勢を変化させ、他の回転方向には姿勢を変化させない。そのため、面９４の姿勢は、上記端末オブジェクト９２の姿勢と同様、１つのベクトル（例えば、端末オブジェクト９２の画面に平行で、端末オブジェクト９２を基準とした所定方向を向くベクトル）によって表現されてもよい。また、面９４の姿勢は、上記座標系における回転行列またはベクトルによって表現されてもよい。
【０１８８】
端末カメラデータ１１２は、端末用画像を生成するために用いられる仮想カメラ（端末用仮想カメラ）の位置および姿勢を表すデータである。本実施形態においては、端末用仮想カメラの位置および姿勢は、面データ１１１に基づいて算出される。
【０１８９】
指定位置データ１１３は、上記指定位置を表すデータである。指定位置は、上記仮想空間座標系における位置を示す３次元の座標値によって表される。詳細は後述するが、指定位置は、上記入力位置データ１０４と面データ１１１とに基づいて算出される。
【０１９０】
次に、ゲーム装置３において実行されるゲーム処理の詳細を、図１８および図１９を用いて説明する。図１８は、ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１８に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、ゲーム装置３においては、電源投入後にゲームプログラムがすぐに実行される構成であってもよいし、電源投入後にまず所定のメニュー画面を表示する内蔵プログラムが実行され、その後例えばプレイヤによるメニュー画面に対する選択操作によってゲームの開始が指示されたことに応じてゲームプログラムが実行される構成であってもよい。
【０１９１】
なお、以下で説明するフローチャート（第１〜第４のゲーム例を含む）における各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、上記フローチャートの各ステップの処理をＣＰＵ１０が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、ＣＰＵ１０以外のプロセッサや専用回路が実行するようにしてもよい。
【０１９２】
まずステップＳ１において、ＣＰＵ１０は初期処理を実行する。初期処理は、仮想空間を構築し、仮想空間に登場する各オブジェクトを初期位置に配置したり、ゲーム処理で用いる各種パラメータの初期値を設定したりする処理である。なお、第１のゲーム例においては、端末オブジェクト９２、面９４、および端末用仮想カメラの３つのオブジェクトが所定の位置および所定の姿勢で仮想空間内に配置される。すなわち、上記３つのオブジェクトの初期位置および初期姿勢を表すデータが、それぞれ端末オブジェクトデータ１１０、面データ１１１、および端末カメラデータ１１２としてメインメモリに記憶される。また、テレビ用画像を生成するために用いられる仮想カメラ（テレビ用仮想カメラ）が所定の位置および姿勢で設定される。なお、テレビ用仮想カメラは、鍵盤オブジェクト９１および端末オブジェクト９２が視野範囲に含まれるような、予め定められた位置および姿勢に設定される。ステップＳ１の次にステップＳ２の処理が実行される。以降、ステップＳ２〜Ｓ８の一連の処理からなる処理ループが所定時間（１フレーム時間。例えば１／６０秒）に１回の割合で繰り返し実行される。
【０１９３】
ステップＳ２において、ＣＰＵ１０は、端末装置７から送信されてくる端末操作データを取得する。端末装置７は、端末操作データをゲーム装置３へ繰り返し送信するので、ゲーム装置３は端末操作データを逐次受信する。ゲーム装置３においては、端末通信モジュール２８が端末操作データを逐次受信し、入出力プロセッサ１１ａが端末操作データをメインメモリに逐次記憶する。ＣＰＵ１０は、必要に応じて適宜のタイミングで端末操作データ１０１をメインメモリから読み出す。ステップＳ２の次にステップＳ３の処理が実行される。
【０１９４】
ステップＳ３において、ＣＰＵ１０はゲーム制御処理を実行する。ゲーム制御処理は、プレイヤによる操作に従って、各種のオブジェクト動作を制御したり、各種のゲームパラメータを算出したりしてゲームを進行させる処理である。以下、図１９を参照して、ゲーム制御処理の詳細について説明する。
【０１９５】
図１９は、図１８に示すゲーム制御処理（ステップＳ３）の詳細な流れを示すフローチャートである。ゲーム制御処理においてはまずステップＳ１１において、ＣＰＵ１０は端末装置７の姿勢を算出する。端末装置７の姿勢は、端末操作データが表す、姿勢を算出するための物理量に基づいて算出される。なお、本実施形態においては、姿勢を算出するための物理量として、角速度データ１０５が表す角速度と、加速度データ１０６が表す加速度が用いられる。以下、姿勢算出処理の詳細について説明する。
【０１９６】
姿勢算出処理においては、まず、ＣＰＵ１０は、角速度データ１０５に基づいて端末装置７の姿勢を算出する。角速度に基づく姿勢を算出する方法はどのような方法であってもよいが、当該姿勢は、前回の姿勢（前回の処理ループにおけるステップＳ１１で算出された姿勢）と、今回の角速度（今回の処理ループにおけるステップＳ２で取得された角速度）とを用いて算出される。具体的には、ＣＰＵ１０は、前回の姿勢を今回の角速度で単位時間分だけ回転させることによって姿勢を算出する。なお、前回の姿勢は、メインメモリに記憶されている端末姿勢データ１０９により表され、今回の角速度は、メインメモリに記憶されている角速度データ１０５により表される。したがって、ＣＰＵ１０は、端末姿勢データ１０９および角速度データ１０５をメインメモリから読み出して、端末装置７の姿勢を算出する。以上のようにして算出された姿勢を表すデータはメインメモリに記憶される。
【０１９７】
なお、角速度から姿勢を算出する場合、初期姿勢を定めておくのがよい。つまり、端末装置７の姿勢を角速度から算出する場合には、ＣＰＵ１０は、最初に端末装置７の初期姿勢を設定しておく。端末装置７の初期姿勢は、加速度データ１０６に基づいて算出されてもよいし、端末装置７を特定の姿勢にした状態でプレイヤに所定の操作を行わせることで、所定の操作が行われた時点における特定の姿勢を初期姿勢として設定するようにしてもよい。なお、空間における所定方向を基準とした絶対的な姿勢として端末装置７の姿勢を算出する場合には上記初期姿勢を算出することが良いが、例えばゲーム開始時点における端末装置７の姿勢を基準とした相対的な姿勢として端末装置７の姿勢を算出する場合には、上記初期姿勢は算出されなくても良い。
【０１９８】
角速度に基づいて姿勢を算出すると次に、ＣＰＵ１０は、算出された姿勢を、端末装置７の加速度に基づいて補正する。ここで、端末装置７がほぼ静止している状態では、端末装置７に対して加えられる加速度は重力加速度に相当する。つまり、この状態では、加速度データ１０６が表す加速度ベクトルは、端末装置７における重力方向を表す。したがって、ＣＰＵ１０は、角速度に基づいて算出された姿勢の下方向（重力方向）を、加速度ベクトルの表す重力方向へ近づける補正を行う。すなわち、上記下方向が加速度ベクトルの表す重力方向へ所定の割合で近づくように、上記姿勢を回転させる。これによって、角速度に基づく姿勢を、加速度に基づく重力方向を考慮した姿勢となるように補正することができる。なお、上記所定の割合は、予め定められた固定値であってもよいし、検出される加速度等に応じて設定されてもよい。例えば、ＣＰＵ１０は、検出される加速度の大きさが重力加速度の大きさに近い場合には、上記姿勢の下方向を加速度ベクトルの表す重力方向へ近づける割合を大きくし、検出される加速度の大きさが重力加速度の大きさから離れている場合には、当該割合を小さくするようにしてもよい。
【０１９９】
具体的には、ＣＰＵ１０は、角速度に基づいて算出された姿勢を表すデータと、加速度データ１０６とをメインメモリから読み出し、上記の補正を行う。そして、補正が行われた後の姿勢を表すデータを端末姿勢データ１０９としてメインメモリに記憶する。以上のステップＳ１１の次にステップＳ１２の処理が実行される。
【０２００】
また、本実施形態においては、ＣＰＵ１０は、慣性センサ（加速度センサ７３およびジャイロセンサ７４）の検出結果に基づいて端末装置７の姿勢を算出した。ここで、他の実施形態においては、端末装置７の姿勢の算出方法はどのような方法であってもよい（後述する他のゲーム例でも同様）。例えば、他の実施形態においては、端末装置７が他のセンサ部（例えば磁気センサ７２やカメラ５６）を有している場合には、当該他のセンサ部の検出結果を用いてコントローラ５の姿勢が算出されてもよい。すなわち、ＣＰＵ１０は、磁気センサ７２によって検出される方位データ１０７から、端末装置７を基準とした所定の方位（すなわち、所定の方位を基準とした端末装置７の姿勢）を知ることができる。したがって、他の実施形態においては、ＣＰＵ１０は、角速度データ１０５および加速度データ１０６に加えて、上記方位データ１０７をさらに用いて端末装置７の姿勢を算出してもよい。方位データ１０７を用いて端末装置７の姿勢を算出する場合には、実空間における所定方向を基準とした絶対的な姿勢を算出することができるので、端末装置７の姿勢をより正確に算出することができる。なお、方位データ１０７に関して、地磁気以外の磁界が発生している場所においては、方位データは厳密には絶対的な方位（北等）を示さないことになるが、その場所における磁界の方向に対する端末装置７の相対的な方向が示されるので、そのような場合であっても端末装置７の姿勢を算出することが可能である。また、他の実施形態においては、上記３つのデータのうち１つまたは２つに基づいて姿勢を算出するようにしてもよい。また、例えば、ゲームシステム１が端末装置７を撮像するカメラを備えている場合には、ゲーム装置３は当該カメラで端末装置７を撮像した撮像結果を取得し、撮像結果を用いて端末装置７の姿勢を算出するようにしてもよい。
【０２０１】
ステップＳ１２において、ＣＰＵ１０は、端末装置７の姿勢に基づいて端末オブジェクト９２を仮想空間に配置する。端末オブジェクト９２は、端末装置７の姿勢に基づいて制御されればどのように制御されてもよい。本ゲーム例においては、端末オブジェクト９２は、端末装置７の姿勢に対応して位置および姿勢が制御される。
【０２０２】
本ゲーム例においては、端末オブジェクト９２の姿勢は、画面に垂直な軸回りの回転方向に関する姿勢が端末装置７の姿勢に応じて変化し、他の回転方向に関する姿勢は変化しない（固定される）。つまり、端末オブジェクト９２の姿勢は、上記の軸と垂直な姿勢から変化しない。画面に垂直な軸回りの回転方向に関して、端末装置７が所定の基準姿勢となる場合、端末オブジェクト９２の姿勢は、テレビ２に表示される仮想空間の正面方向（奥行き方向）を向く姿勢となる。また、画面に垂直な軸回りの回転方向に関して、端末装置７が所定の基準姿勢から回転した場合、端末オブジェクト９２の姿勢は、回転方向に応じた方向に、回転量に応じた量だけ変化する。つまり、端末オブジェクト９２の姿勢は、端末装置７の姿勢と対応するように変化する。なお、上記の基準姿勢は、どのように設定されてもよいが、例えば、ゲーム開始時における端末装置７の姿勢であってもよいし、予め定められた姿勢であってもよい。
【０２０３】
また、本ゲーム例においては、画面に垂直な軸回りの回転方向に関する端末装置７の姿勢に基づいて端末オブジェクト９２の姿勢が決定される。したがって、ＣＰＵ１０は、例えば端末装置７の正面方向（端末装置７の画面に平行であって、画面の上方向。図８に示すｚ軸方向）を向くベクトルに基づいて端末オブジェクト９２の姿勢を算出することができる。つまり、端末オブジェクト９２の正面方向が上記ベクトルの向きに応じた向きとなるように端末オブジェクト９２の姿勢が算出されてもよい。なお、端末装置７の正面方向が鉛直方向を向く場合には、上記ベクトルに代えて、ＣＰＵ１０は、端末装置７の奥行き方向（端末装置７の画面に垂直であって、画面の手前側から奥側への方向。図８に示すｙ軸負方向）を向くベクトルに基づいて端末オブジェクト９２の姿勢を算出するようにしてもよい。これによれば、プレイヤが端末装置７の画面を立てた状態（鉛直にした状態）で端末装置７を使用する場合でも、端末装置７の姿勢を変化させる操作に応じて端末オブジェクト９２を制御することができる。
【０２０４】
また、端末オブジェクト９２の位置は、上記のようにして算出される端末オブジェクト９２の姿勢に応じた位置となるように決定される。具体的には、端末装置７の姿勢が上記基準姿勢となる場合、端末オブジェクト９２は、鍵盤オブジェクト９１の円弧における中央の上方に配置される。また、画面に垂直な軸回りの回転方向に関して、端末装置７が所定の基準姿勢から（画面上方から見て）右回りに回転した場合、端末オブジェクト９２は、回転量に応じた移動量だけ鍵盤オブジェクト９１の円弧上を右方向に移動する。一方、端末装置７が所定の基準姿勢から（画面上方から見て）左回りに回転した場合、端末オブジェクト９２は、回転量に応じた移動量だけ鍵盤オブジェクト９１の円弧上を左方向に移動する。
【０２０５】
ステップＳ１２における具体的な処理としては、ＣＰＵ１０は、端末姿勢データ１０９をメインメモリから読み出し、端末装置７の姿勢に基づいて端末オブジェクト９２の位置および姿勢を算出する。そして、算出された位置および姿勢を表すデータを端末オブジェクトデータ１１０としてメインメモリに記憶する。ステップＳ１２の次にステップＳ１３の処理が実行される。
【０２０６】
以上のように、本ゲーム例においては、ゲーム装置３は、端末装置７の姿勢に対応して姿勢（ここでは、姿勢および位置）が制御されるオブジェクト（端末オブジェクト９２）を仮想空間に配置する（ステップＳ１２）。そして、ゲーム装置３は、所定の表示装置（テレビ２）に表示するための画像として、上記オブジェクトを含む仮想空間を表す画像を生成する（後述するステップＳ４）。これによって、プレイヤは、端末装置７の姿勢を画面上で確認することができ、ひいては、当該姿勢に対応して変化する面９４の姿勢を容易に確認することができる。
【０２０７】
ステップＳ１３において、ＣＰＵ１０は、端末装置７の姿勢に応じた面９４を設定する。面９４は、端末装置７の姿勢に応じて変化するように設定されればどのように設定されてもよい。本ゲーム例においては、面９４は、端末装置７の姿勢に応じて変化する端末オブジェクト９２の位置および姿勢に基づいて設定される。具体的には、面９４の位置は、鍵盤オブジェクト９１上の領域であって、端末オブジェクト９２の下方（真下）の位置に設定される。上述のように、端末オブジェクト９２は、端末装置７の姿勢の変化に応じて鍵盤オブジェクト９１の上方を円弧状に移動するので、面９４は、端末装置７の姿勢の変化に応じて、鍵盤オブジェクト９１の各鍵盤の領域上を移動するように設定される。また、面９４の姿勢は、鍵盤オブジェクト９１と平行で、かつ、面９４に垂直な軸回りの回転方向の姿勢に関して、端末オブジェクト９２の姿勢と一致するように設定される。つまり、本ゲーム例においては、面９４の姿勢は、端末装置７の姿勢に応じて、端末装置７の姿勢に対応するように設定される。
【０２０８】
ステップＳ１３の具体的な処理としては、ＣＰＵ１０は、端末オブジェクトデータ１１０をメインメモリから読み出し、端末オブジェクト９２の位置および姿勢に基づいて面９４の位置および姿勢を算出する。そして、算出された位置および姿勢を表すデータを面データ１１１としてメインメモリに記憶する。ステップＳ１３の次にステップＳ１４の処理が実行される。
【０２０９】
ステップＳ１４において、ＣＰＵ１０は、端末用仮想カメラを設定する。端末用仮想カメラは、面９４の位置および姿勢に基づいて設定されればよく、本ゲーム例においては、上記面９４の領域を視野範囲に含む位置に設定される。すなわち、端末用仮想カメラは、視野範囲の外縁と面９４の外縁とが一致するように設定される。具体的には、ＣＰＵ１０は、面データ１１１をメインメモリから読み出し、面９４の位置および姿勢に基づいて端末用仮想カメラの位置および姿勢を算出する。そして、算出された位置および姿勢を表すデータを端末カメラデータ１１２としてメインメモリに記憶する。ステップＳ１４の次にステップＳ１５の処理が実行される。
【０２１０】
ステップＳ１５において、ＣＰＵ１０は、タッチパネル５２に対する入力（タッチ入力）があったか否かを判定する。具体的には、メインメモリに記憶されている最新の入力位置データ１０４を読み出して参照し、入力位置データ１０４が入力位置の座標値を表すか、それとも、入力が無いことを表すかを判定する。ステップＳ１５の判定結果が肯定である場合、ステップＳ１６の処理が実行される。一方、ステップＳ１５の判定結果が否定である場合、ＣＰＵ１０はゲーム制御処理を終了する。
【０２１１】
ステップＳ１６において、ＣＰＵ１０は、面９４上における指定位置を算出する。指定位置は、面９４上の位置であって、入力位置に応じた位置として算出される。指定位置の具体的な算出方法はどのような方法であってもよい。本ゲーム例においては、指定位置は、タッチパネル５２の入力面の四辺に対する入力位置の位置関係と、面９４の四辺に対する指定位置の位置関係とが同じになるように算出される。また、本ゲーム例においては、ＣＰＵ１０は、タッチパネル５２に対する入力位置と、当該入力位置に基づいて算出される指定位置とがＬＣＤ５１の画面上において一致するように、指定位置を算出する。これによれば、プレイヤが画面上においてタッチした位置が指定位置となるので、プレイヤは仮想空間内の位置をより指定しやすくなる。なお、本ゲーム例においては、タッチパネル５２の入力面の形状（縦横比）と面９４の形状（縦横比）とを等しくし、また、タッチパネル５２の入力面と面９４とをＬＣＤ５１の画面上において一致させている。これによって、上記のように指定位置を算出することによって、ＬＣＤ５１の画面上において入力位置と制御位置とを一致させることができる。
【０２１２】
ステップＳ１６の具体的な処理としては、ＣＰＵ１０は、まず、メインメモリに記憶されている最新の入力位置データ１０４を読み出し、入力位置の座標を、面９４上の位置を示す２次元座標系の２次元座標に変換する。次に、ＣＰＵ１０は、変換によって得られた２次元座標を、３次元の仮想空間の位置を示す上記仮想空間座標系の３次元座標に変換する。この３次元座標は、上記２次元座標と、面９４の位置および姿勢（あるいは、面９４を表す平面の式）とを用いて算出することができる。したがって、ＣＰＵ１０は、面データ１１１をメインメモリから読み出し、上記２次元座標と面データ１１１とに基づいて上記３次元座標を算出する。そして、算出された３次元座標を表すデータを指定位置データ１１３としてメインメモリに記憶する。以上のステップＳ１６の次にステップＳ１７の処理が実行される。
【０２１３】
ステップＳ１７において、ＣＰＵ１０は、指定位置を入力として所定の処理を実行する。第１のゲーム例では、所定の処理は、指定位置にある鍵盤に対応する音を出力する処理である。具体的には、ＣＰＵ１０は、指定位置データ１１３をメインメモリから読み出し、鍵盤オブジェクト９１を構成する各鍵盤から、指定位置によって指定された（指定位置を含む）鍵盤を特定する。そして、特定された鍵盤に対応する音を特定する。なお、メインメモリには、鍵盤とその鍵盤が特定された場合に出力すべき音との対応を示す対応付けデータが記憶されており、ＣＰＵ１０は当該対応付けデータを参照して音を特定する。さらに、ＣＰＵ１０は、特定した音をＤＳＰ１１ｃに生成させる。このように、本ゲーム例においては、ＣＰＵ１０は、仮想空間に設定される複数の領域（鍵盤の領域）から、指定位置を含む領域を特定し、特定された領域に対応する音を出力させる。ステップＳ１７の後、ＣＰＵ１０は、ゲーム制御処理を終了する。
【０２１４】
以上のゲーム制御処理によれば、端末装置７の姿勢の変化に応じて仮想空間内において面９４が移動する（ステップＳ１３）とともに、端末用仮想カメラが移動する（ステップＳ１４）。その結果、端末装置７に表示される鍵盤オブジェクト９１の領域が変化する（後述するステップＳ５およびＳ７）。つまり、プレイヤがタッチパネル５２を用いて指定可能な鍵盤が変化する。したがって、プレイヤは、端末装置７の姿勢を変化させる操作と、タッチ入力の操作とによって、仮想空間内における鍵盤オブジェクト９１の所望の位置を容易に指定することができる。
【０２１５】
なお、本ゲーム例においては、仮想空間に設定される複数の領域（各鍵盤の領域）は、円弧状に（円弧上に）配置され、ＣＰＵ１０は、端末装置７の姿勢の変化に応じて複数の領域上を移動するように面９４を設定する（ステップＳ１３）。そして、ＣＰＵ１０は、面９４上の指定位置を入力位置に基づいて算出する（ステップＳ１６）。したがって、本ゲーム例においては、プレイヤは、端末装置７を回転させる（姿勢を変化させる）操作によって、略円弧状に配置される複数の領域上において面９４を回転移動させることができる。これによれば、端末装置７の動きと面９４の動きとが共に回転運動となり、両者の動きが対応するので、端末装置７の操作がプレイヤにとってより直感的で分かりやすいものとなる。さらに、プレイヤは、各鍵盤の円弧状の配置から端末装置７の操作方法を把握（推測）することができるので、この理由によっても、端末装置７の操作がプレイヤにとってより直感的で分かりやすいものとなる。なお、他の実施形態においては、各鍵盤が直線上に配置されてもよく、このとき、端末装置７の姿勢の変化に応じて当該直線上を移動するように面９４が設定されてもよい。
【０２１６】
また、本ゲーム例においては、ゲームシステム１は、加速度センサ７３およびジャイロセンサ７４を用いて端末装置７の動きを算出しているので、平行移動に関しては精度良く端末装置７の動きを算出することができないおそれがある。精度良く端末装置７の動きを算出するためには、端末装置７が回転移動（姿勢の変化）を行い、それを検出する方が好ましい。ここで、本ゲーム例においては、上記のように各鍵盤の円弧状の配置から、端末装置７を回転移動させる操作をプレイヤに推測させて実行させることができ、その結果、ゲーム装置３は精度良く端末装置７の動きを算出することができる。
【０２１７】
図１８の説明に戻り、ステップＳ３のゲーム制御処理の次にステップＳ４の処理が実行される。ステップＳ４においては、テレビ用画像が生成される。すなわち、ＣＰＵ１０およびＧＰＵ１１ｂは、ステップＳ３のゲーム制御処理の結果を表すデータ（ゲーム空間における面９４やオブジェクトのデータ等）をメインメモリから読み出し、また、ゲーム画像を生成するために必要なデータをＶＲＡＭ１１ｄから読み出し、テレビ用画像を生成する。本ゲーム例では、テレビ用仮想カメラは、鍵盤オブジェクト９１の全体および端末オブジェクト９２を視野範囲に含むように設定される。したがって、鍵盤オブジェクト９１および端末オブジェクト９２を含む仮想空間内の領域を表すテレビ用画像が生成される（図１４参照）。生成されたテレビ用画像はＶＲＡＭ１１ｄに記憶される。上記ステップＳ４の次にステップＳ５の処理が実行される。
【０２１８】
なお、本ゲーム例においては、テレビ用仮想カメラは固定して設定されたが、他の実施形態においては、テレビ用仮想カメラは移動可能に制御されてもよい。また、テレビ用仮想カメラの撮影範囲は、鍵盤オブジェクト９１のうち、端末用仮想カメラによる撮影範囲よりも広い範囲となるように設定されることが好ましいが、鍵盤オブジェクト９１の全体を含まなくてもよい。例えば、他の実施形態においては、ＣＰＵ１０は、鍵盤オブジェクト９１の一部と端末オブジェクト９２とを視野範囲に含むようにテレビ用仮想カメラを設定し、端末オブジェクト９２の移動に応じてテレビ用仮想カメラを移動させるようにしてもよい。
【０２１９】
ステップＳ５においては、端末用画像が上記ゲーム制御処理に基づいて生成される。すなわち、ＣＰＵ１０およびＧＰＵ１１ｂは、ステップＳ３のゲーム制御処理の結果を表すデータをメインメモリから読み出し、また、ゲーム画像を生成するために必要なデータをＶＲＡＭ１１ｄから読み出し、端末用画像を生成する。本実施形態では、仮想空間において面９４が設定される領域を表す画像が端末用画像として生成される。具体的には、タッチパネル５２の入力面と面９４とがＬＣＤ５１の画面上で一致するように端末用画像が生成される。これによって、面９４の領域内における鍵盤オブジェクト９１を表す画像が端末装置７に表示される（図１６参照）。生成された端末用画像はＶＲＡＭ１１ｄに記憶される。上記ステップＳ５の次にステップＳ６の処理が実行される。
【０２２０】
以上のように、本ゲーム例においては、ゲーム装置３は、所定のオブジェクト（鍵盤オブジェクト９１）を仮想空間に設定し、表示装置（テレビ２および端末装置７のＬＣＤ５１）に表示するための画像として、当該オブジェクトを含む仮想空間を表す画像を生成する。また、ゲーム装置３は、上記指定位置として上記所定のオブジェクトの位置が算出された場合に所定の処理を実行する（上記ステップＳ１５）。したがって、本ゲーム例においては、プレイヤは、端末装置７を用いて仮想空間内の３次元位置を指定する操作によって、仮想空間内のオブジェクトに対して入力を行う操作を行うことができる。
【０２２１】
さらに、本ゲーム例においては、ゲーム装置３は、端末装置７に表示するための画像として、端末装置７の姿勢に応じて範囲が変化するように上記オブジェクト（鍵盤オブジェクト９１）の一部の範囲を表す画像を生成する（ステップＳ４）。また、ゲーム装置３は、テレビ２に表示するための画像として、上記オブジェクトのうちの上記一部の範囲よりも広い範囲を表す画像を生成する（ステップＳ５）。これによれば、端末装置７には相対的に拡大された画像が表示されるので、タッチ入力の操作が行いやすくなるとともに、テレビ２には相対的に広範囲の画像が表示されるので、プレイヤは端末装置７における表示範囲の周囲の状況をも知ることができる。プレイヤはテレビ２の画像を見ることによって、例えば、オブジェクトの全体に対する端末装置７における表示範囲の位置関係を把握することができる。
【０２２２】
ステップＳ６において、ＣＰＵ１０は、テレビ２へゲーム画像を出力する。具体的には、ＣＰＵ１０は、ＶＲＡＭ１１ｄに記憶されたテレビ用画像のデータをＡＶ−ＩＣ１５へ送る。これに応じて、ＡＶ−ＩＣ１５はテレビ用画像のデータを、ＡＶコネクタ１６を介してテレビ２へ出力する。これによって、テレビ用画像がテレビ２に表示される。また、上記ステップＳ１７において生成された音声がテレビ２へ出力される場合には、ＣＰＵ１０は、ステップＳ１７で生成された音声のデータをＡＶ−ＩＣ１５へ送る。これに応じて、ＡＶ−ＩＣ１５は音声のデータをＡＶコネクタ１６を介してテレビ２へ出力する。これによって、テレビ用ゲーム音声がスピーカ２ａから出力される。ステップＳ６の次にステップＳ７の処理が実行される。
【０２２３】
ステップＳ７において、ＣＰＵ１０は、端末装置７へゲーム画像を出力（送信）する。具体的には、ＶＲＡＭ１１ｄに記憶された端末用画像の画像データは、ＣＰＵ１０によってコーデックＬＳＩ２７に送られ、コーデックＬＳＩ２７によって所定の圧縮処理が行われる。圧縮処理が施された画像のデータは、端末通信モジュール２８によってアンテナ２９を介して端末装置７へ送信される。端末装置７は、ゲーム装置３から送信されてくる画像のデータを無線モジュール８０によって受信し、受信された画像データに対してコーデックＬＳＩ７６によって所定の伸張処理が行われる。伸張処理が行われた画像データはＬＣＤ５１に出力される。これによって、端末用画像がＬＣＤ５１に表示される。また、上記ステップＳ１７において生成された音声が端末装置７へ出力される場合には、生成された音声データは、ＣＰＵ１０によってコーデックＬＳＩ２７に送られ、コーデックＬＳＩ２７によって所定の圧縮処理が行われる。さらに、圧縮処理が施された音声のデータは、端末通信モジュール２８によってアンテナ２９を介して端末装置７へ送信される。端末装置７は、ゲーム装置３から送信されてくる音声のデータを無線モジュール８０によって受信し、コーデックＬＳＩ７６によって所定の伸張処理が行われる。伸張処理が行われた音声データはサウンドＩＣ７８に出力される。これによって、端末用ゲーム音声がスピーカ７７から出力される。ステップＳ７の次にステップＳ８の処理が実行される。
【０２２４】
ステップＳ８において、ＣＰＵ１０は、ゲームを終了するか否かを判定する。ステップＳ８の判定は、例えば、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ８の判定結果が否定の場合、ステップＳ２の処理が再度実行される。一方、ステップＳ８の判定結果が肯定の場合、ＣＰＵ１０は図１６に示すゲーム処理を終了する。なお、ゲーム処理を終了する際には、ゲームデータをメモリカード等にセーブする等の処理が実行されてもよい。以降、ステップＳ２〜Ｓ８の一連の処理は、ステップＳ８でゲームを終了すると判定されるまで繰り返し実行される。
【０２２５】
以上のように、本ゲーム例においては、端末装置７の表示部(ＬＣＤ)には、仮想空間に配置される鍵盤が表示される。そして、ゲームシステム１は、入力位置に基づく仮想空間内の位置（指定位置）として鍵盤の位置が算出された場合、当該位置に対応する鍵盤に応じた音を出力する。これによって、プレイヤは端末装置７によって鍵盤楽器を演奏する操作を行うことができる。また、上記ゲーム処理によれば、端末装置７のタッチパネル５２に対する入力によって、仮想空間内の面９４上の位置が指定される（ステップＳ１６）とともに、端末装置７の姿勢に応じて面９４の姿勢が変化する（ステップＳ１３）。これによれば、プレイヤは、面９４の姿勢を変化させつつ、タッチパネル５２を用いて位置を指定することで、３次元の仮想空間における各鍵盤の位置を容易に指定することができる。
【０２２６】
［７．第２のゲーム例］
以下、図２０〜図３６を参照して、本実施形態のゲームシステム１において実行される第２のゲーム例について説明する。第２のゲーム例では、プレイヤは端末装置７を用いて３次元の仮想空間（ゲーム空間）に点や線を描くことができる。仮想空間を表すゲーム画像は、テレビ２および端末装置７の２つの表示装置に表示される。本ゲーム例においては、端末装置７は、表示装置としてだけでなく操作装置として用いられる。そのため、コントローラ５は用いられなくてもよく、ゲームシステム１はコントローラ５を含まない構成であってもよい。
【０２２７】
図２０は、本ゲーム例においてゲーム操作が行われる場合におけるテレビ２および端末装置７を示す図である。図２０に示すように、テレビ２には所定の面２０１が設置される３次元の仮想空間が表示され、端末装置７にもこの面２０１が表示される。端末装置７においては、面２０１と表示画面とが一致するように面２０１が表示される。つまり、面２０１は、端末装置７が備えるタッチパネル５２の入力面に対応する。なお、面２０１はタッチパネル５２の入力面（ＬＣＤ５１の画面）と同じアスペクト比を有する長方形の平面である。また、詳細は後述するが、面２０１の姿勢は端末装置７の姿勢に対応しており、端末装置７の姿勢を変化させることで仮想空間における面２０１の姿勢が変化する。なお、図２０では、端末装置７は、タッチパネル５２が水平となる姿勢であるので、面２０１も仮想空間において水平になっている。なお、端末装置７にはアイコン２０２が表示される。詳細は後述するが、アイコン２０２は、仮想空間に生成された軌跡を移動（回転）させるために用いられる。
【０２２８】
プレイヤは、端末装置７のタッチパネル５２上にタッチペン６０や指等で点や線を描くことができる。点や線が描かれた場合、図２０に示すように、仮想空間における面２０１上には、描かれた点や線（図２０では線Ａ１）が生成されて表示される。具体的には、タッチパネル５２に対する入力（タッチ入力）が行われると、入力が行われた位置（入力位置）に対応する面２０１上の位置（指定位置）が算出される。本ゲーム例では、点や線を表すためのオブジェクトが上記指定位置に配置されることによって、入力された点や線が表示される。以上のように、プレイヤは、タッチパネル５２に対する入力操作によって３次元の仮想空間内に点や線を描くことができる。
【０２２９】
図２１は、図２０に示す状態から端末装置７を傾けた場合におけるテレビ２および端末装置７を示す図である。図２０に示す状態ではタッチパネル５２の入力面が水平となっていたのに対して、図２１に示す状態では当該入力面が鉛直となるように端末装置７の姿勢が変化している。タッチパネル５２の入力面が鉛直になるように端末装置７の姿勢を変化させると、図２１に示すように、仮想空間内の面２０１も鉛直となるように変化する。なお、本ゲーム例では、面２０１は、面２０１の中央の位置を回転の中心として、端末装置７の姿勢に応じて回転する。また、面２０１の姿勢が変化した場合、端末装置７に表示される画像の視点および視線方向は、面２０１と表示画面とが一致するように変化する。
【０２３０】
図２１に示す状態においても図２０に示す状態と同様、プレイヤは、タッチパネル５２に対する入力操作によって３次元の仮想空間内に点や線を描くことができる。つまり、図２１に示す状態で、プレイヤがタッチパネル５２に対して線を描くと、仮想空間において鉛直方向に平行となった面２０１上に線が生成されて表示される。ここで、図２１に示す状態においては、面２０１の姿勢が図２０に示す状態とは異なっているので、タッチ入力によって生成される線の位置や向きは図２０とは異なる。すなわち、図２０に示す状態で生成された線Ａ１は、水平な面内において生成されるのに対して、図２１に示す状態で生成される線Ａ２は、鉛直な面内において生成される。したがって、線Ａ１と線Ａ２とで形成される図形は、平面的なものではなく、立体的なものになる。
【０２３１】
以上のように、本ゲーム例においては、端末装置７のタッチパネル５２に対する入力に応じて、仮想空間内の面２０１上に図形（点や線）が生成されるとともに、端末装置７の姿勢に応じて面２０１の姿勢が変化する。これによれば、面２０１の姿勢を変化させることによって、面２０１上に生成される図形を立体的なものとすることができる。つまり、プレイヤは、タッチパネル５２に対する入力操作によって、３次元の仮想空間において３次元的に自由に図形を描くことができる。
【０２３２】
また、本ゲーム例では、プレイヤは、端末装置７の姿勢を変化させる操作によって仮想空間内に線を描くことも可能である。図２２は、図２１に示す状態から端末装置７を傾けた場合におけるテレビ２および端末装置７を示す図である。図２１に示す状態では、タッチパネル５２の入力面の法線方向がテレビ２の方向を向いていたのに対して、図２２に示す状態では、当該法線方向がテレビ２の方向よりやや横を向いている。また、ここでは、プレイヤは、図２１に示す状態から図２２に示す状態へ端末装置７の姿勢を変化させる際、タッチパネル５２のある１点の位置（アイコン２０２の位置を除く）をタッチし続けているものとする。図２１に示す状態から図２２に示す状態となる場合においても上記と同様、図２２に示すように、端末装置７の姿勢に応じて面２０１の姿勢が変化する。この場合、プレイヤが同じ位置をタッチし続けていても、面２０１の姿勢が変化することによって仮想空間内における指定位置は変化する。したがって、図２２に示すように、指定位置が変化した軌跡を表す線Ａ３が生成されて表示される。このように、本ゲーム例では、タッチパネル５２上に線を描く操作の他に、端末装置７の姿勢を変化させる操作によって仮想空間内に線を描くことも可能である。また、端末装置７の姿勢を変化させる操作によって、面２０１に平行でない向きに線を描くことが可能である。
【０２３３】
また、本ゲーム例では、プレイヤは、仮想空間内に生成された図形の向き（姿勢）を変化させることも可能である。図２３は、図２１に示す状態から図形を回転させた場合におけるテレビ２および端末装置７を示す図である。図２１に示す状態では、タッチパネル５２の入力面の法線方向がテレビ２の方向を向いていたのに対して、図２３に示す状態では図２２に示す状態と同様、当該法線方向がテレビ２の方向よりやや横を向いている。また、プレイヤは、図２１に示す状態から図２２に示す状態へ端末装置７の姿勢を変化させる際、所定の操作（ここでは、タッチパネル５２のアイコン２０２の位置をタッチし続ける操作）を行っているものとする。このように、所定の操作が行われた状態で端末装置７の姿勢が変化される場合、生成された図形の姿勢は、端末装置７の姿勢に応じて面２０１の姿勢と共に変化する。例えば、図２３においては、線Ａ１およびＡ２からなる図形は、端末装置７が鉛直方向を軸として回転することに応じて、仮想空間における鉛直方向を軸として面２０１と共に回転する。このとき、テレビ２には、上記図形の向きが変化して表示される。したがって、プレイヤは、アイコン２０２をタッチしながら端末装置７の姿勢を変化させる操作によって、作成した図形をいろいろな向きから見ることができ、図形の形状を確認することができる。なお、端末装置７に表示される画像に関しては、視線方向が面２０１の姿勢と共に変化するので、図形は動いていないように見える。また、本ゲーム例では、上記所定の操作は、アイコン２０２をタッチする操作であるとするが、他の実施形態では、例えば端末装置７の所定のボタンを押下する操作等、どのような操作であってもよい。
【０２３４】
（第２のゲーム例におけるゲーム処理）
次に、第２のゲーム例においてゲームシステム１で実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図２４は、ゲーム処理において用いられる各種データを示す図である。図２４において、ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図２４に示すように、ゲーム装置３のメインメモリには、ゲームプログラム２１０、端末操作データ１０１、および処理用データ２１１が記憶される。なお、メインメモリには、図２４に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームに使用される音声データ等、ゲームに必要なデータが記憶される。以下、図２４に示す各種のデータについて説明する。なお、図２４において、図１７に示すデータと同じデータについては図１７と同じ参照符号を付し、詳細な説明を省略する。
【０２３５】
ゲームプログラム２１０は、第２のゲーム例におけるゲーム処理をゲーム装置３のコンピュータ（ＣＰＵ１０）に実行させるためのものである。ゲームプログラム２１０は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム２１０は、光ディスク４に代えて、フラッシュメモリ１７やゲーム装置３の外部装置から（例えばインターネットを介して）取得されてもよい。また、ゲームプログラム２１０に含まれる一部（例えば、コントローラ５および／または端末装置７の姿勢を算出するためのプログラム）については、ゲーム装置３内に予め記憶されていてもよい。
【０２３６】
端末操作データ１０１は、上記第１のゲーム例と同様、端末装置７に対するプレイヤの操作を表すデータである。なお、本ゲーム例ではコントローラ５が操作装置として用いられないので図示しないが、メインメモリには、コントローラ５に対するプレイヤの操作を表すコントローラ操作データが記憶されてもよい。
【０２３７】
処理用データ２１１は、後述するゲーム処理（図２５等）において用いられるデータである。処理用データ２１１は、上記第１のゲーム例と同様の端末姿勢データ１０９、面姿勢データ２１２、面座標データ２１３、空間座標データ２１４、図形データ２１５、および、端末カメラデータ２１７を含む。なお、図２４に示すデータの他、処理用データ２１１は、ゲームに登場する各種オブジェクトに設定される各種パラメータを表すデータ等、ゲーム処理において用いられる各種データを含む。
【０２３８】
面姿勢データ２１２は、仮想空間に設定される面２０１の姿勢を表すデータである。面姿勢データ２１２が表す面２０１の姿勢は、回転行列によって表現されてもよいし、３次のベクトルまたは３つの角度によって表現されてもよいし、平面の式によって表現されてもよい。なお、本ゲーム例においては、面２０１の位置は予め定められた位置に固定される。
【０２３９】
面座標データ２１３は、上記指定位置の面座標を表すデータである。ここで、面座標とは、面２０１を基準とした座標系（面座標系）によって上記指定位置を表現する座標である。なお、指定位置は面２０１上の点であるので、面座標データ２１３は２次元の座標値を表すものであってもよい。面２０１上の指定位置は、タッチパネル５２上の入力位置に対応し、面座標データ２１３は、入力位置データ１０４に基づいて算出される。
【０２４０】
空間座標データ２１４は、上記指定位置の空間座標を表すデータである。ここで、空間座標とは、仮想空間を基準とした座標系（空間座標系）によって上記指定位置を表現した座標である。空間座標データ２１４は、指定位置を３次元の座標値によって表す。空間座標データ２１４は、面姿勢データ２１２と上記面座標データ２１３とに基づいて算出される。
【０２４１】
図形データ２１５は、指定位置によって形成される図形を表すデータである。図形データ２１５には、１以上の軌跡データ２１６が含まれる。軌跡データ２１６は、算出された指定位置の軌跡を表すデータである。具体的には、軌跡データ２１６は、タッチパネル５２に対して連続して入力が行われる場合（すなわち、入力位置が連続して検出される場合）、入力位置に対応する指定位置を古いものから順に表す。軌跡データ２１６は、指定位置を上記空間座標系で表現した座標値を表す。また、本ゲーム例においては、あるタッチ入力が終了してから新たに次のタッチ入力が行われる場合、当該あるタッチ入力に応じて生成された軌跡データ２１６とは別に、当該次のタッチ入力に応じて新たな軌跡データ２１６が生成されてメインメモリに記憶される。
【０２４２】
端末カメラデータ２１７は、端末用画像を生成するために用いられる仮想カメラ（端末用仮想カメラ）の位置および姿勢を表すデータである。本ゲーム例においては、端末用仮想カメラの位置および姿勢は、面２０１の位置に基づいて設定される。
【０２４３】
上記各データ２１２〜２１７の他、メインメモリには、ゲーム処理において必要となる各種のデータが記憶される。本ゲーム例においては、例えば、つかみ状態であるか否かを表すフラグデータが記憶される。つかみ状態とは、上記アイコン２０２がタッチされている状態であり、上記指定位置の軌跡によって形成される図形を移動可能な状態である。
【０２４４】
次に、ゲーム装置３において実行されるゲーム処理の詳細を、図２５〜図２８を用いて説明する。第２のゲーム例において、ゲーム処理における大略的な処理の流れを示すメインフローチャートは、図１８と同様であるので、詳細な説明は省略する。以下、第１のゲーム例との相違点を中心として、第２のゲーム例におけるゲーム処理について説明する。
【０２４５】
第２のゲーム例においても第１のゲーム例と同様、まずステップＳ１において、ＣＰＵ１０は初期処理を実行する。初期処理は、仮想空間を構築し、仮想空間に登場する各オブジェクトを初期位置に配置したり、ゲーム処理で用いる各種パラメータの初期値を設定したりする処理である。なお、本ゲーム例においては、面２０１が所定の位置および所定の姿勢で仮想空間内に配置される。面２０１の初期位置および初期姿勢を表すデータはメインメモリに記憶される。また、テレビ用画像を生成するために用いられる仮想カメラ（テレビ用仮想カメラ）、および、端末用画像を生成するために用いられる仮想カメラ（端末用仮想カメラ）が、所定の初期位置および初期姿勢で設定される。テレビ用仮想カメラの初期位置および初期姿勢を表すデータはメインメモリに記憶され、端末用仮想カメラの初期位置および初期姿勢を表すデータは、端末カメラデータ２１７としてメインメモリに記憶される。なお、テレビ用仮想カメラは、面２０１が視野範囲に含まれるような、予め定められた位置および姿勢に設定される。端末用仮想カメラの初期位置および初期姿勢は、視線方向が面２０１に垂直となり、かつ、面２０１がＬＣＤ５１の表示画面と一致するように設定される。また、ステップＳ１では、つかみ状態でないことを表すデータが上記フラグデータとしてメインメモリに記憶される。ステップＳ１の次にステップＳ２の処理が実行される。
【０２４６】
ステップＳ２において、ＣＰＵ１０は、端末装置７から送信されてくる端末操作データを取得する。ステップＳ２の処理は上記第１のゲーム例と同様である。ステップＳ２の次にステップＳ３の処理が実行される。
【０２４７】
ステップＳ３において、ＣＰＵ１０はゲーム制御処理を実行する。第２のゲーム例において、ゲーム制御処理は、プレイヤによる操作に従って、点や線を表すオブジェクトを仮想空間内に生成したり、当該オブジェクトを移動させたりする処理等を実行する処理である。以下、図２５を参照して、ゲーム制御処理の詳細について説明する。
【０２４８】
図２５は、第２のゲーム例におけるゲーム制御処理（ステップＳ３）の詳細な流れを示すフローチャートである。ゲーム制御処理においてはまずステップＳ２１において、ＣＰＵ１０は端末装置７の姿勢を算出する。ステップＳ２１の処理は上記ステップＳ１１と同様である。ステップＳ２１の次にステップＳ２２の処理が実行される。
【０２４９】
ステップＳ２２において、ＣＰＵ１０は、端末装置７の姿勢に応じて姿勢が変化するように面２０１を設定する。本ゲーム例においては、面２０１の位置は変化しないので、ＣＰＵ１０は、端末装置７の姿勢に基づいて面２０１の姿勢を算出する。本ゲーム例では、仮想空間における面２０１の姿勢は、現実空間における端末装置７の姿勢に対応するように制御される。具体的には、端末装置７のｙ軸（図９参照）が水平でかつテレビ２の方を向くときの端末装置７の姿勢を基準姿勢とし、端末装置７が当該基準姿勢となる場合に面２０１は仮想空間において水平となる。そして、端末装置７の姿勢が上記基準姿勢から変化した場合、面２０１は、当該基準姿勢時における面２０１の姿勢から、端末装置７の姿勢の変化方向に応じた方向に、変化量に応じた量だけ（本ゲーム例では、端末装置７の回転量と面２０１の回転量が等しくなるように）回転される。なお、面２０１の姿勢は、端末装置７の姿勢の変化に応じて変化するように制御されればどのように制御されてもよい。
【０２５０】
ステップＳ２２の具体的な処理としては、ＣＰＵ１０は、端末姿勢データ１０９をメインメモリから読み出し、端末装置７の姿勢に基づいて面２０１の姿勢を算出する。算出された面２０１の姿勢を表すデータは、面姿勢データ２１２としてメインメモリに記憶される。なお、本ゲーム例においては、面２０１の姿勢は、例えば、面２０１を基準とした３次元の面座標系における３軸の方向を空間座標系によって表す３つのベクトルとして表現されてもよい。ステップＳ２２の次にステップＳ２３の処理が実行される。
【０２５１】
ステップＳ２３において、ＣＰＵ１０は、図形移動処理を実行する。図形移動処理は、プレイヤによる入力に応じて設定された指定位置によって形成される図形を、端末装置７の姿勢に応じて移動（回転）させる処理である。図形移動処理の詳細については後述する。ステップＳ２３の次にステップＳ２４の処理が実行される。
【０２５２】
ステップＳ２４において、ＣＰＵ１０は、タッチパネル５２に対してタッチ入力が行われたか否かを判定する。この判定は、ステップＳ２で読み出される入力位置データ１０４を参照することで行うことができる。ステップＳ２４の判定結果が肯定である場合、ステップＳ２５の処理が実行される。一方、ステップＳ２４の判定結果が否定である場合、ステップＳ２５〜Ｓ３０の処理がスキップされ、後述するステップＳ３１の処理が実行される。
【０２５３】
ステップＳ２５およびステップＳ２６においては、入力位置に基づいて上記指定位置が算出される。上述のように、本ゲーム例においては、入力位置によって決められる面２０１上の位置が指定位置として算出される。図２６は、タッチパネル５２の入力面上の入力位置に基づいて指定位置を算出する方法を説明するための図である。図２６に示すように、面２０１上の指定位置Ｐ２は、タッチパネル５２の入力面上における入力位置Ｐ１に対応する面２０１上の位置として算出される。本ゲーム例では、まず、入力位置Ｐ１に基づいて指定位置Ｐ２の面座標（Ｐｓ，Ｐｔ）が算出される。面座標（Ｐｓ，Ｐｔ）は、面２０１を基準とした面座標系（ｓｔｕ座標系）で表現される座標である。なお、ここでは、面座標系は、面２０１の横方向を向くｓ軸と、面２０１の縦方向を向くｔ軸と、面２０１に垂直な方向を向くｕ軸とで構成される。したがって、面２０１上の位置はｓ方向成分およびｔ方向成分の２次元座標（Ｐｓ，Ｐｔ）で表現される。なお、面座標系のｕ軸は、後述する図形移動処理において面２０１上にない位置を面座標系で表す目的で設定される。面座標（Ｐｓ，Ｐｔ）は、例えば、入力位置Ｐ１の座標値を、面２０１の大きさとタッチパネル５２の入力面の大きさとの比率に応じてスケーリングする（所定の定数を乗算する）ことによって算出される。なお、上記比率が“１”となるように面座標系および空間座標系を設定する場合には、入力位置Ｐ１の座標値をそのまま面座標（Ｐｓ，Ｐｔ）として用いることができる。
【０２５４】
指定位置Ｐ２の面座標（Ｐｓ，Ｐｔ）が算出されると、次に、面座標（Ｐｓ，Ｐｔ）が空間座標（ＰＳ，ＰＴ，ＰＵ）に変換される。空間座標（ＰＳ，ＰＴ，ＰＵ）は、指定位置Ｐ２を空間座標系（ＳＴＵ座標系）で表現した座標値である。なお、空間座標系における面座標系の原点の位置および各軸の向きは、面２０１の位置および姿勢によって決まる。したがって、面２０１の位置（下記（ＤＳ，ＤＴ，ＤＵ））および姿勢（下記ベクトルＡおよびベクトルＢ）と、面座標（Ｐｓ，Ｐｔ）とに基づいて、空間座標（ＰＳ，ＰＴ，ＰＵ）を算出することができる。具体的には、空間座標（ＰＳ，ＰＴ，ＰＵ）は、以下の式（１）に従って算出することができる。
ＰＳ＝Ｐｓ×ＡＳ＋Ｐｔ×ＡＳ＋ＤＳ
ＰＴ＝Ｐｓ×ＡＴ＋Ｐｔ×ＡＴ＋ＤＴ
ＰＵ＝Ｐｓ×ＡＵ＋Ｐｔ×ＡＵ＋ＤＵ  …（１）
上式（１）においては、面座標系におけるｓ軸の正方向を向く単位ベクトルＡの各成分を（ＡＳ，ＡＴ，ＡＵ）とし、面座標系におけるｔ軸の正方向を向く単位ベクトルＢの各成分を（ＢＳ，ＢＴ，ＢＵ）とする。また、面座標系における原点の（空間座標系における）位置を（ＤＳ，ＤＴ，ＤＵ）とする。
【０２５５】
具体的には、まずステップＳ２５において、ＣＰＵ１０は、入力位置に対応する指定位置の面座標を算出する。上述のように、面座標は、タッチパネル５２の入力面上における入力位置Ｐ１に対応する面２０１上の位置Ｐ２として算出される。面座標の具体的な算出方法はどのような方法であってもよいが、面座標は、タッチパネル５２の入力面の四辺に対する入力位置Ｐ１の位置関係と、面２０１の四辺に対する指定位置Ｐ２の位置関係とが同じになるように算出される。具体的に本ゲーム例では、上述のように、面座標は、入力位置Ｐ１の座標値を上記の比率に応じてスケーリングすることによって算出される。ステップＳ２５の具体的な処理としては、ＣＰＵ１０は、ステップＳ２で読み出された入力位置データ１０４が表す入力位置から、入力位置に対応する面２０１上の位置を面座標系によって表現する２次元座標を算出する。そして、算出された２次元座標を表すデータを面座標データ２１３としてメインメモリに記憶する。ステップＳ２５の次にステップＳ２６の処理が実行される。
【０２５６】
ステップＳ２６において、ＣＰＵ１０は、上記面座標から指定位置の空間座標を算出する。上述のように、空間座標は、面座標と、面２０１の位置および姿勢（すなわち、空間座標系における面座標系の原点位置および各座標軸の向き）とに基づいて算出することができる。すなわち、ＣＰＵ１０は、面姿勢データ２１２と面座標データ２１３とをメインメモリから読み出し、面座標と面２０１の位置および姿勢を上式（１）に代入することによって空間座標を算出する。算出された空間座標を表すデータは、空間座標データ２１４としてメインメモリに記憶される。ステップＳ２６の次にステップＳ２７の処理が実行される。
【０２５７】
上記ステップＳ２５およびＳ２６によれば、ＣＰＵ１０は、仮想空間内の指定位置として、タッチパネル５２（ＬＣＤ５１）の表示画面上において入力位置に対応する（仮想空間内の）位置を算出する。つまり、表示画面上においては、プレイヤがタッチした位置が指定位置となるので、プレイヤは、直感的かつ分かりやすい操作で指定位置を指定することができる。
【０２５８】
ステップＳ２７において、ＣＰＵ１０は、タッチ入力が開始されたか否か（タッチ入力が開始された直後であるか否か）を判定する。具体的には、ＣＰＵ１０は、前回の処理ループ（ステップＳ２〜Ｓ８の一連の処理からなる処理ループ）においてタッチ入力があったか否かを判定する。なお、タッチパネル５２の誤検出やプレイヤの誤操作を考慮して、ＣＰＵ１０は、前回のタッチ入力だけでなく、過去所定回数に連続してタッチ入力があったかどうかを判定するようにしてもよい。ステップＳ２７の判定結果が肯定である場合、ステップＳ２８の処理が実行される。一方、ステップＳ２７の判定結果が否定である場合、ステップＳ２９の処理が実行される。
【０２５９】
ステップＳ２８において、ＣＰＵ１０は、ステップＳ２５およびＳ２６で算出された指定位置を、新たな軌跡の始点として記憶する。具体的には、ＣＰＵ１０は、メインメモリに記憶されている空間座標データ２１４を、新たな軌跡データ２１６としてメインメモリに記憶する。これによって、図形データ２１５に含まれる軌跡データ２１６が１つ追加されたことになる。つまり、図形を構成する軌跡が１つ追加されたことになる。ステップＳ２８の次にステップＳ３０の処理が実行される。
【０２６０】
ステップＳ２９において、ＣＰＵ１０は、ステップＳ２５およびＳ２６で算出された指定位置を、既存の軌跡の終点として記憶する。具体的には、ＣＰＵ１０は、図形データ２１５に含まれる軌跡データ２１６のうちで最新のものについて、空間座標データ２１４を当該軌跡データ２１６に追加するように更新する。これによって、上記指定位置が最新の軌跡の終点に追加されたことになる。ステップＳ２９の次にステップＳ３０の処理が実行される。
【０２６１】
ステップＳ３０において、ＣＰＵ１０は、ステップＳ２５およびＳ２６で算出された指定位置に所定のオブジェクトを配置する。ここで、所定のオブジェクトは、どのような形状であってもよいが、本ゲーム例では、指定位置の軌跡を表すオブジェクトが配置される。すなわち、ＣＰＵ１０は、１つの軌跡データ２１６に含まれる１以上の指定位置が１本の線を形成するように、オブジェクトを配置する。具体的には、１回のステップＳ３０の処理においては、最新の指定位置と１つ前の指定位置とを結ぶ線状のオブジェクトが配置される。この線状のオブジェクトは、例えば、どの方向から見ても線状に見えるように、円柱形のオブジェクトであってもよい。また、最新の指定位置が軌跡の始点である場合には、点を表すオブジェクト（例えば球状のオブジェクト）が配置される。なお、本ゲーム例においては、ステップＳ３０で配置されたオブジェクトは、以降の処理においても配置され続けるが、他の実施形態においては、例えばプレイヤの指示に従って消去されてもよい。また、上記ステップＳ３０で配置されたオブジェクトは、プレイヤによって所定の操作が行われたことに応じて、所定方向に順次（自動的に）移動されてもよい。これによれば、プレイヤは、例えば、仮想空間内の一点を指定するだけで直線を描いたり、オブジェクトの移動方向と垂直な方向に入力位置を往復させることによって波線を描いたりすることができ、より多彩な線を容易に描くことができる。ステップＳ３０の次にステップＳ３１の処理が実行される。
【０２６２】
ステップＳ３１において、ＣＰＵ１０は、面２０１の姿勢に応じて端末用仮想カメラを制御する。図２７は、面２０１と端末用仮想カメラ２０５との位置関係を示す図である。なお、図２７は、面２０１と平行な方向から面２０１を見た図である。図２７に示すように、面２０１の姿勢が変化した場合、面２０１の姿勢に応じて端末用仮想カメラ２０５の位置および姿勢が変化する。具体的には、端末用仮想カメラ２０５は、面２０１が視野範囲に含まれるように設定される。本ゲーム例においては、面２０１の外周と端末用仮想カメラ２０５の視野範囲の外縁とが一致するように端末用仮想カメラ２０５が設定される。したがって、端末用仮想カメラ２０５の位置は、面２０１の中心位置Ｐ３を通りかつ面２０１に垂直な直線上であって、面２０１からの距離が視野範囲に応じた所定距離となる位置に設定される。また、端末用仮想カメラ２０５の姿勢は、面２０１の中心位置Ｐ３を向くように設定される。以上のように端末用仮想カメラ２０５が設定されることによって、端末装置７のＬＣＤ５１には、タッチパネル５２の入力面と面２０１とが画面上において一致するように面２０１が表示されることになる（図２１等参照）。これによれば、指定位置は、プレイヤがタッチした画面上の位置となり、当該位置に点や線を表すオブジェクトが生成されて表示されるので、タッチパネル５２の操作を直感的でわかりやすい操作にすることができる。
【０２６３】
ステップＳ３１の具体的な処理としては、ＣＰＵ１０は、メインメモリから面姿勢データ２１２を読み出し、面２０１の位置および姿勢に基づいて端末用仮想カメラ２０５の位置および姿勢を算出する。そして、算出された位置および姿勢を表すデータを端末カメラデータ２１７としてメインメモリに記憶する。ステップＳ３１の後、ＣＰＵ１０はゲーム制御処理を終了する。
【０２６４】
次に、上記図形移動処理の詳細について説明する。図２８は、図２５に示す図形移動処理（ステップＳ２３）の詳細な流れを示すフローチャートである。図形移動処理においてはまずステップＳ４１において、ＣＰＵ１０は、現在の状態がつかみ状態であるか否かを判定する。この判定は、メインメモリに記憶される上記フラグデータを読み出し、フラグデータを参照することによって行うことができる。ステップＳ４１の判定結果が肯定である（つかみ状態である）場合、後述するステップＳ４５の処理が実行される。一方、ステップＳ４１の判定結果が否定である（つかみ状態でない）場合、ステップＳ４２の処理が実行される。
【０２６５】
ステップＳ４２において、ＣＰＵ１０は、つかみ状態が開始されたか否かを判定する。ここで、つかみ状態が開始される場合とは、前回の処理ループ（ステップＳ２〜Ｓ８の処理ループ）においてアイコン２０２に対するタッチ入力がなく、かつ、今回の処理ループにおいてアイコン２０２に対するタッチ入力がある場合である。具体的には、ＣＰＵ１０は、上記フラグデータをメインメモリから読み出し、フラグデータがつかみ状態でないことを表し、かつ、ステップＳ２で読み出された入力位置データ１０４がアイコン２０２の位置を表す場合、つかみ状態が開始されたと判定する。一方、上記フラグデータがつかみ状態であることを表すか、または、ステップＳ２で読み出された入力位置データ１０４がアイコン２０２以外の位置を表す場合、つかみ状態が開始された時点ではないと判定する。ステップＳ４２の判定結果が肯定である場合、ステップＳ４３の処理が実行される。一方、ステップＳ４２の判定結果が否定である場合、ＣＰＵ１０は図形移動処理を終了する。
【０２６６】
ステップＳ４３において、ＣＰＵ１０は、指定位置で形成される図形を保存する。なお、本ゲーム例では、ＣＰＵ１０は、図形を構成する各指定位置を面座標系による座標値で保存する。すなわち、ＣＰＵ１０は、メインメモリから図形データ２１５と面姿勢データ２１２とを読み出し、図形データ２１５が表す１以上の指定位置の空間座標を面座標に変換する。この変換は、面姿勢データ２１２が表す面２０１の姿勢を用いて行われる。ＣＰＵ１０は、変換された面座標を表すデータをメインメモリに記憶する。なお、このデータは、図形データ２１５に含まれる軌跡データ２１６と同様、各指定位置を軌跡毎にまとめた形式で記憶される。ステップＳ４３の次にステップＳ４４の処理が実行される。
【０２６７】
ステップＳ４４において、ＣＰＵ１０は、上記フラグデータをつかみ状態を表すように設定する。すなわち、ＣＰＵ１０は、メインメモリに記憶されるフラグデータを、つかみ状態であることを表すように更新する。これによって、これ以降、アイコン２０２に対するタッチ入力がなくなるまで、ステップＳ４１の判定処理ではつかみ状態であると判定されることになる。ステップＳ４４の次に、後述するステップＳ４７の処理が実行される。
【０２６８】
一方、ステップＳ４５において、ＣＰＵ１０は、つかみ状態が終了したか否かを判定する。すなわち、ＣＰＵ１０は、ステップＳ２で読み出された入力位置データ１０４がアイコン２０２以外の位置を表すか、または、タッチ入力がないことを表す場合、つかみ状態が終了したと判定する。一方、上記入力位置データ１０４がアイコン２０２の位置を表す場合、つかみ状態が終了していない（継続している）と判定する。ステップＳ４５の判定結果が肯定である場合、ステップＳ４６の処理が実行される。一方、ステップＳ４５の判定結果が否定である場合、ステップＳ４６の処理がスキップされてステップＳ４７の処理が実行される。
【０２６９】
ステップＳ４６において、ＣＰＵ１０は、上記フラグデータをつかみ状態を解除するように設定する。すなわち、ＣＰＵ１０は、メインメモリに記憶されるフラグデータを、つかみ状態でないことを表すように更新する。これによって、これ以降の処理においては、ステップＳ４１の判定処理ではつかみ状態でないと判定されることになる。ステップＳ４６の次にステップＳ４７の処理が実行される。
【０２７０】
ステップＳ４７において、ＣＰＵ１０は、指定位置で形成される図形を移動する。本ゲーム例では、図形は、操作装置７の姿勢の変化に応じて（すなわち、面２０１の姿勢の変化に応じて）回転する。なお、ここでは、図形の回転中心は、面２０１と同様、面２０１の中心位置である。ここで、上述のように、現在（回転後）の指定位置の空間座標は、指定位置の面座標と、現在の面２０１の姿勢とに基づいて算出することができる。したがって、ＣＰＵ１０は、ステップＳ４３で保存された面座標を表すデータと、面姿勢データ２１２とをメインメモリから読み出し、当該面座標を、面２０１の姿勢を用いて空間座標に変換する。これによって、面２０１の姿勢に応じて回転された図形を形成する指定位置の空間座標を算出することができる。ＣＰＵ１０は、算出された１以上の空間座標を表すデータを、新たな図形データ２１５としてメインメモリに記憶する。ステップＳ４７の後、ＣＰＵ１０は図形移動処理を終了する。
【０２７１】
上記図形移動処理によれば、ＣＰＵ１０は、端末装置７に対する操作に基づいて上記図形を表すオブジェクトを移動（回転）させる（ステップＳ４７）。したがって、プレイヤは、描いた図形をいろいろな位置または方向から見ることができ、描いた図形の形状を容易に確認することができる。本ゲーム例では、図形が３次元的な形状であるので、図形をいろいろな位置または方向から見ることが特に有効である。
【０２７２】
また、本ゲーム例においては、ＣＰＵ１０は、端末装置７に対する操作に関して所定の条件（具体的には、アイコン２０２を指定する操作が行われたこと）が満たされる場合（ステップＳ４１でＹｅｓまたはステップＳ４２でＹｅｓ）、上記図形のオブジェクトを端末装置７の姿勢に基づいて移動させる（ステップＳ４７）。一方、上記所定の条件が満たされない場合（ステップＳ４２でＮｏ）、ＣＰＵ１０は、端末装置７の姿勢に基づく上記オブジェクトの移動を行わない。上記によれば、プレイヤは、端末装置７の姿勢を変化させるという直感的で容易な操作によって図形の向きを変化させることができる。さらに、上記によれば、プレイヤは、面２０１の姿勢を変化させる操作と同じ操作によって図形の向きを変化させることができるので、操作性をより向上することができる。
【０２７３】
また、本ゲーム例においては、図形移動処理において図形を移動するために、ＣＰＵ１０は、図形を構成する各指定位置の面座標を記憶するようにした。すなわち、ステップＳ４３の処理においては指定位置の面座標が記憶され、図形を移動させるステップＳ４７の処理においては、当該面座標と、現在の面２０１の姿勢とを用いて、移動後の指定位置の空間座標が算出された。ここで、他の実施形態においては、ＣＰＵ１０は、ステップＳ４３の処理において、図形を構成する各指定位置の空間座標を記憶するようにしてもよい。このとき、ステップＳ４７の処理においては、ＣＰＵ１０は、前回の処理ループにおける面２０１の姿勢から今回の処理ループにおける面２０１の姿勢までの変化に応じて、図形を回転させてもよい。具体的には、面２０１の姿勢の変化方向と同じ方向に、面２０１の姿勢の変化量と同じ量だけ図形を移動（回転）させるようにしてもよい。ここで、空間座標を記憶する方法では、ステップＳ４７の処理において面２０１の変化と図形の変化との間に誤差が生じ、ステップＳ４７の処理が繰り返されることによって誤差が蓄積するおそれがある。そのため、面２０１の回転に合わせて図形を正確に回転させることができないおそれがある。これに対して、本ゲーム例によれば、ステップＳ４３で面座標を保存することによって、保存した面座標と現在の面２０１の姿勢とを用いて移動後の指定位置を算出することができる。これによれば、誤差が蓄積されることがないので、面２０１の回転に合わせて図形を正確に回転させることができる。
【０２７４】
また、本ゲーム例における上記ステップＳ４７の処理においては、仮想空間に配置された図形の全体が移動された。ここで、他の実施形態においては、上記図形の一部のみが移動されてもよい。例えば、ＣＰＵ１０は、プレイヤによって指定された軌跡のみを上記ステップＳ４３で保存し、当該軌跡のみを上記ステップＳ４７で移動させるようにしてもよい。なお、軌跡はどのような方法で指定されてもよいが、例えば、画面上における入力位置に表示される軌跡が指定されてもよい。
【０２７５】
メインフローチャート（ステップＳ１〜Ｓ８）の説明に戻り、ステップＳ３のゲーム制御処理の次にステップＳ４の処理が実行される。ステップＳ４においては、テレビ用画像が生成される。第２のゲーム例においてもテレビ用画像の具体的な生成方法は第１のゲーム例と同様である。上記ステップＳ４の次にステップＳ５の処理が実行される。
【０２７６】
また、本ゲーム例においては、指定位置に所定のオブジェクトが配置される（ステップＳ３０）ことによって、指定位置に対応するテレビ用画像上の位置に当該オブジェクトの画像が生成される。したがって、プレイヤは、タッチパネル５２の入力面に対して入力を行った位置を容易に確認することができ、入力面上に描いた図形を容易に確認することができる。また、プレイヤは、入力面に対して点や線を描くことで、仮想空間内に３次元の図形を描くことができる。さらに、本ゲーム例においては、上記オブジェクトは、入力面に連続して入力される各入力位置（入力位置）によって決められる各指定位置の軌跡を表すように生成される（ステップＳ３０）。したがって、当該軌跡を表す画像が生成されてテレビ２に表示される。これによって、プレイヤは、タッチパネル５２上で描いた線を容易に確認することができる。また、プレイヤが入力面に対して点で入力を行った場合と線で入力を行った場合とで、表示される画像が異なるので、ゲーム装置は、入力面に対する入力をより正確に反映した画像を表示することができる。
【０２７７】
なお、本ゲーム例においては、プレイヤが面２０１の姿勢（端末装置７の姿勢）を確認しやすくするべく、面２０１が表示される。さらに、プレイヤが面２０１と図形との奥行き関係を把握しやすくするべく、面２０１は半透明のオブジェクトとして生成される。ただし、他の実施形態においては、面２０１は表示されなくてもよい（透明であるとして取り扱われてもよい）し、不透明のオブジェクトとして生成されてもよい。
【０２７８】
ステップＳ５においては、端末用画像が上記ゲーム制御処理に基づいて生成される。第２のゲーム例においても端末用画像の具体的な生成方法は第１のゲーム例と同様である。なお、本ゲーム例では、仮想空間において面２０１が設定される領域を表す画像が端末用画像として生成される。具体的には、タッチパネル５２の入力面と面２０１とがＬＣＤ５１の画面上で一致するように端末用画像が生成される。これによって、面２０１の画像が端末装置７に表示される（図２１等参照）。なお、テレビ用画像と同様に、端末用画像には、ステップＳ３０で配置されたオブジェクトの画像が含まれる。したがって、プレイヤは、端末装置７の画面を見ることによっても、入力面上に描いた図形を確認することができる。また、端末用画像においては、面２０１は表示されなくてもよいし、半透明あるいは不透明のオブジェクトとして生成されてもよい。上記ステップＳ５の次にステップＳ６の処理が実行される。
【０２７９】
なお、本ゲーム例においては、テレビ用画像（および端末用画像）において、指定位置を表す画像を生成するために、仮想空間において指定位置にオブジェクトを配置することとした。ここで、指定位置を表す画像はどのような方法で生成されてもよい。例えば、他の実施形態においては、ゲーム装置３は、指定位置に対応するテレビ用画像（および端末用画像）上の位置を算出し、当該位置に所定の画像を配置することによって、指定位置を表す画像を生成してもよい。
【０２８０】
上記ステップＳ４およびＳ５の処理によれば、ＣＰＵ１０は、面２０１の姿勢と独立して視線方向が設定されるテレビ用仮想カメラを用いてテレビ用画像を生成し、面２０１との位置関係が一定となるように（より具体的には、面２０１に対して視線方向が略垂直となるように）設定される端末用仮想カメラを用いて端末用画像を生成する。したがって、プレイヤが端末装置７の姿勢を変化させた場合、テレビ２に表示される画像においては視線方向が変化しない一方、端末装置７に表示される画像においては当該姿勢に応じて視線方向が変化することになる（図２０〜図２３等）。これによれば、端末装置７においては面２０１の姿勢が一定として表示されるので、面２０１上の位置を指定する操作が容易になる。また、テレビ２においては面２０１の姿勢が変化して表示されるので、仮想空間内における面２０１の姿勢を容易に把握することができる。すなわち、本ゲーム例によれば、プレイヤは、端末装置７を用いて面２０１上の位置を指定する操作を容易に行うことができるとともに、テレビ２の画面を見ることによって面２０１の姿勢を容易に確認することができるので、３次元の仮想空間内の位置を容易に指定することができる。
【０２８１】
第２のゲーム例において、ステップＳ６〜Ｓ８の処理は第１のゲーム例と同様である。また、第２のゲーム例においても第１のゲーム例と同様、ステップＳ２〜Ｓ８の一連の処理は、ステップＳ８でゲームを終了すると判定されるまで繰り返し実行される。
【０２８２】
以上のように、第２のゲーム例におけるゲーム処理によれば、端末装置７のタッチパネル５２に対する入力によって、仮想空間内の面２０１上の位置を指定される（ステップＳ２６）とともに、端末装置７の姿勢に応じて面２０１の姿勢が変化する（ステップＳ２２）。これによれば、プレイヤは、面２０１の姿勢を変化させつつ、タッチパネル５２を用いて位置を指定することで、３次元の仮想空間における位置を指定することができる。このように、本ゲーム例によれば、タッチパネル５２という平面的な入力面を有する入力装置を用いて、３次元空間における位置を容易に入力することができる。これによれば、例えば上記実施形態のように、プレイヤは、タッチパネル５２に対して点や線の入力を行うとともに、端末装置７の姿勢を適宜変化させることで、仮想空間において３次元的な絵を描くことも可能となる。
【０２８３】
（第２のゲーム例の変形例）
上記第２のゲーム例においては、端末装置７の姿勢に応じて面２０１の姿勢が変化したが、他の実施形態においては、他の方法で面２０１を移動させてもよい。以下、図２９〜図３２を参照して、面２０１の移動方法に関する変形例について説明する。
【０２８４】
図２９は、上記第２のゲーム例の変形例におけるゲーム制御処理の流れを示すフローチャートである。なお、図２９においては、図２５に示す処理と同じ処理については同じステップ番号を付し、詳細な説明を省略する。
【０２８５】
本変形例においては、ステップＳ２１の次にステップＳ５１の処理が実行される。ステップＳ５１において、ＣＰＵ１０は、端末装置７の姿勢に応じて面２０１の位置および姿勢を算出する。すなわち、ＣＰＵ１０は、端末装置７の姿勢に対応するように面２０１の姿勢を制御するとともに、端末装置７の姿勢に応じて面２０１の位置を制御する。ここで、面２０１の姿勢は、上記第２のゲーム例と同様、端末装置７の姿勢に基づいて制御される。また、面２０１の位置は、面２０１外の位置を回転の中心として面２０１が回転移動するように、面２０１の姿勢に応じて制御される。
【０２８６】
図３０は、本変形例における面２０１の移動を示す図である。図３０において、点Ｐｃは、面２０１の回転の中心点であり、ゲーム空間に固定的に設定される。なお、図３０においては、点Ｐｃは、面２０１に関して端末用仮想カメラ２０５と同じ側に設定されている。端末装置７の姿勢が変化する場合、面２０１は、図３０に示すように、姿勢の変化とともに、基準点Ｐｃを中心に回転するように位置が変化する。具体的には、面２０１の位置は、基準点Ｐｃから面２０１への垂線の長さが予め定められた所定値となるように（つまり、基準点Ｐｃからの距離が一定となるように）算出される。このように、本変形例では、点Ｐｃを中心とした球面上を回転移動するように面２０１の位置および姿勢が変化する（図３０参照）。したがって、プレイヤは、端末装置７の姿勢を変化させつつタッチパネル５２に対して入力を行うことで、球の内側面に対して絵を描いているような感覚を得ることができる。
【０２８７】
ステップＳ５１の具体的な処理としては、ＣＰＵ１０は、まず、上記ステップＳ２２と同様の方法によって面２０１の姿勢を算出する。次に、ＣＰＵ１０は、算出された姿勢と、上記基準点Ｐｃの位置とに基づいて、上記垂線の長さが予め定められた所定値となるように面２０１の位置を算出する。例えば、基準点Ｐｃの座標を（ＥＳ，ＥＴ，ＥＵ）とし、基準点Ｐｃから面２０１までの距離をｋとすると、面２０１の位置Ｐｄ（ＤＳ，ＤＴ，ＤＵ）は次の式（２）に従って算出される。
ＤＳ＝−ｋ×ＣＳ＋ＥＳ
ＤＴ＝−ｋ×ＣＴ＋ＥＴ
ＤＵ＝−ｋ×ＣＵ＋ＥＵ  …（２）
上式（２）においては、変数面座標系におけるｕ軸の正方向を向く単位ベクトルＣ（図３０参照）の各成分を（ＣＳ，ＣＴ，ＣＵ）としている。算出された面２０１の位置および姿勢を表すデータは、メインメモリに記憶される。ステップＳ５１の次にステップＳ５２の処理が実行される。
【０２８８】
なお、本変形例においては、上記基準点Ｐｃが面２０１に関して端末用仮想カメラ２０５と同じ側に設定されているものとしたが、基準点の位置はどこであってもよい。図３１および図３２は、他の実施形態における面２０１の移動を示す図である。他の実施形態においては、図３１に示すように、基準点Ｐｃは、面２０１に関して端末用仮想カメラ２０５と反対側に設定されてもよい。これによれば、プレイヤは、端末装置７の姿勢を変化させつつタッチパネル５２に対して入力を行うことで、球の外側面に対して絵を描いているような感覚を得ることができる。なお、図３１に示す場合においては、基準点Ｐｃから面２０１の位置Ｐｄまでの向きと、ベクトルＣの向きとが同じであるので、上式（２）における“−ｋ”を“ｋ”に変更することで、面２０１の位置Ｐｄを算出することができる。また、ｋ＝０の場合には、上記第２のゲーム例のように、面２０１は位置Ｐｄ（基準点Ｐｃ）を中心に回転する（図２７参照）。
【０２８９】
また、他の実施形態においては、図３２に示すように、所定の回転方向（図３２では、上下方向を軸とした回転方向）に関しては面２０１が基準点Ｐｃを中心として回転移動を行い、他の方向に関しては面２０１が平行移動を行うようにしてもよい。これによれば、プレイヤは、円柱の内側側面に対して絵を描いているような感覚を得ることができる。なお、図３２における面２０１の平行移動は、端末装置７の姿勢の変化に応じて行われてもよいし、後述するステップＳ５２における方向入力操作に応じて行われてもよい。
【０２９０】
ステップＳ５２において、ＣＰＵ１０は、端末装置７に対する方向入力操作に基づいて面２０１を移動させる。上記方向入力操作は、どのような方法で行われてもよいが、例えば、アナログスティック５３や十字ボタン５４Ａに対する入力操作であってもよい。具体的には、面２０１は、上下左右前後の方向入力操作に応じて、面２０１の上下左右前後の方向に移動するように制御される。すなわち、ＣＰＵ１０は、ステップＳ２で取得した端末操作データ１０１に基づいて、方向入力操作によって指示された方向を判断する。そして、面２０１の位置および姿勢を表すデータをメインメモリから読み出し、上記指示された方向に応じた方向へ面２０１を移動させる。メインメモリに記憶される上記データは、移動後の面２０１の位置を表すように更新される。ステップＳ５２の次にステップＳ５３の処理が実行される。
【０２９１】
上記ステップＳ５２の処理によれば、端末装置７に対する方向入力操作によって面２０１を自由に平行移動させることができる。なお、他の実施形態においては、ステップＳ５２においてＣＰＵ１０は、面２０１を（平行移動ではなく）回転移動させるようにしてもよい。例えば、ＣＰＵ１０は、図３０〜図３２に示したように、球面上あるいは円柱の側面上を面２０１が移動するように面２０１を制御してもよい。
【０２９２】
ステップＳ５３において、ＣＰＵ１０は、面２０１の位置および姿勢に基づいてテレビ用仮想カメラを制御する。テレビ用仮想カメラは、面２０１が視野範囲に含まれるように位置および姿勢が制御されればどのように制御されてもよい。例えば、テレビ用仮想カメラの位置は、視線方向が面２０１の方を向き、面２０１から所定距離となるように制御されてもよい。また、テレビ用仮想カメラの姿勢は変化しない、すなわち、テレビ用仮想カメラは平行移動するように制御されてもよい。これによれば、上記第２のゲーム例と同様、プレイヤは、仮想空間における面２０１の姿勢をテレビ用画像で確認することができる。ステップＳ５３の具体的な処理としては、ＣＰＵ１０は、面２０１の位置および姿勢を表すデータをメインメモリから読み出し、面２０１の位置に応じてテレビ用仮想カメラの位置および姿勢を算出する。算出された位置および姿勢を表すテレビ用カメラデータはメインメモリに記憶される。このとき、ステップＳ４の処理においては、上記テレビ用カメラデータを用いてテレビ用画像が生成される。ステップＳ５３の次にステップＳ２３の処理が実行される。ステップＳ２３の処理以降については、上記第２のゲーム例と同様の処理が実行される。
【０２９３】
なお、他の実施形態においては、テレビ用仮想カメラは、端末装置７に対する方向入力操作に従って制御されてもよい。すなわち、ＣＰＵ１０は、方向入力操作に応じて、テレビ用仮想カメラを平行移動、回転移動、または回転させるようにしてもよい。これによれば、上述した図形移動処理によって図形を回転させる場合と同様、プレイヤはいろいろな向きから図形を見ることができ、図形の形状を容易に確認することができる。
【０２９４】
（指定位置を用いたゲーム処理に関する変形例）
上記第２のゲーム例においては、上記指定位置を入力として用いるゲームとして、３次元仮想空間に絵を描くことができるお絵かきゲームを例として説明した。すなわち、上記第２のゲーム例においては、上記指定位置を入力としたゲーム処理の例として、指定位置にオブジェクトを配置する処理（ステップＳ３０）を説明した。ここで、指定位置を入力として実行されるゲーム処理は、どのような処理であってもよく、例えば次のようなゲーム例が考えられる。
【０２９５】
図３３は、見本と同じになるように図形を描くゲームにおいて、テレビ２に表示されるゲーム画像を示す図である。図３３に示すように、テレビ２には、面２０１および見本オブジェクト２２１が表示される。見本オブジェクト２２１は、プレイヤが描く図形の見本を表すオブジェクトであり、ゲームプログラムにおいて複数種類の見本オブジェクトが用意される。なお、端末装置７に表示される画像は上記第２のゲーム例と同様である。このゲームにおいては、プレイヤは、上記第２のゲーム例と同様に端末装置７を用いて、見本オブジェクト２２１と同じになるように、仮想空間内に線（指定位置の軌跡を表すオブジェクト２２２）を描く。このとき、ＣＰＵ１０は、見本オブジェクト２２１と、プレイヤによる入力に応じて生成されるオブジェクト２２２との類似度を算出したり、当該類似度に基づいて得点を算出したりするゲーム処理を実行してもよい。このように、ゲーム装置３は、入力された指定位置を表す軌跡を入力とするゲーム処理を実行してもよい。
【０２９６】
図３４は、３次元の仮想空間内に配置されたオブジェクト（コイン）２２５を端末装置に対する操作によって指定するゲームにおいて、テレビ２に表示されるゲーム画像を示す図である。図３４に示すように、テレビ２には、面２０１およびコイン２２５が表示される。なお、端末装置７に表示される画像は上記第２のゲーム例と同様である。このゲームにおいては、プレイヤは、上記第２のゲーム例と同様の方法で仮想空間内における位置を指定する。そして、コイン２２５の位置を指定することでコイン２２５を取得することができる。例えば、プレイヤは、コイン２２５を正確に指定したり、制限時間内にコイン２２５を取得する数を競ったりしてゲームを行う。この場合、ＣＰＵ１０は、指定位置を入力として実行されるゲーム処理として、指定位置がコイン２２５の位置であるか否かを判定し、指定位置がコイン２２５の位置である場合、取得されたコイン２２５の枚数をカウントする処理を実行する。このように、ゲーム処理は、上記第２のゲーム例のような指定位置に画像を表示する処理に限らず、仮想空間内のオブジェクトを指定（選択）する処理であってもよい。
【０２９７】
図３５および図３６は、プレイヤが描いた図形に基づいてオブジェクトが生成されるゲームにおいて、テレビ２に表示されるゲーム画像を示す図である。このゲームにおいては、プレイヤはまず、上記第２のゲーム例と同様の操作によって、仮想空間内に図形を生成する。図３５においては、プレイヤの入力による図形を表すオブジェクト２２７が生成されて表示される。ここで、ＣＰＵ１０は、指定位置を入力として実行されるゲーム処理として、上記図形を形成する各指定位置に基づいて３次元のオブジェクトを生成する。例えば、ＣＰＵ１０は、各指定位置の軌跡に基づいて面を設定することで、３次元のオブジェクトを生成する。例えば、軌跡によって閉曲線が形成される場合、当該閉曲線を周とする面が設定されてもよい。図３６は、図３５に示すオブジェクト２２７に基づいて、３次元のオブジェクト２２８が生成される場合におけるゲーム画像を示す。このように、ゲームシステム１は、指定位置に基づいて３次元のオブジェクトを生成するゲーム処理を実行するものであってもよい。なお、このとき、生成されたオブジェクトがゲームにおいて用いられてもよい。例えば、生成されたオブジェクトをプレイヤキャラクタがアイテムとして使用することができたり、生成されたオブジェクトをプレイヤキャラクタとして使用することができたりしてもよい。
【０２９８】
上記の他、指定位置を入力として実行されるゲーム処理は、どのような処理であってもよい。例えば、他の実施形態においては、ＣＰＵ１０は、指定位置の軌跡に応じてプレイヤキャラクタを移動させるゲーム処理を実行してもよい。すなわち、ゲーム装置３において実行されるゲームは、プレイヤが指定位置の軌跡を入力すると、仮想空間内のプレイヤキャラクタが当該軌跡に沿って移動するようなゲームであってもよい。
【０２９９】
［８．第３のゲーム例］
以下、図３７〜図４２を参照して、本実施形態のゲームシステム１において実行される第３のゲーム例について説明する。第３のゲーム例では、プレイヤがハンドヘルドデバイス９を操作して仮想のゲーム空間内のオブジェクトを移動させるゲームを実行するゲーム処理について説明する。
【０３００】
なお、第３のゲーム例においては、ゲームシステム１が端末装置７に代えて、携帯型ゲーム機であるハンドヘルドデバイス９を有するものとして説明を行う。ハンドヘルドデバイス９は、端末装置７と同様、プレイヤが把持可能な装置であり、端末装置７と同様のタッチパネル５２を備えている。つまり、プレイヤが使用する操作装置は、端末装置７に限らず、プレイヤが把持可能な可搬型の装置であり、入力面に対する入力が可能な操作装置であればどのようなものであってもよい。
【０３０１】
なお、以下に示すゲーム例においては、コントローラ５はゲーム操作に使用されず、コントローラ５からのコントローラ操作データはゲーム処理に用いられない。つまり、ゲームシステム１は、コントローラ５を有しない構成であってもよい。また、他の実施形態においては、ゲーム処理は、ハンドヘルドデバイス９とコントローラ５との両方をゲーム操作に用いるものであってもよい。
【０３０２】
まず、第３のゲーム例におけるゲームの概要について説明する。このゲームは、ハンドヘルドデバイス９を操作することによってゲーム空間内においてオブジェクト（手裏剣）を飛ばすゲームである。プレイヤは、ハンドヘルドデバイス９の姿勢を変化させるとともに、タッチパネル５２上に線を描く操作によって、手裏剣を発射する方向（および速さ）を指示することができる。なお、本実施例において、線を描く操作とは、指やタッチペンによってタッチパネルやタッチパッド上をタッチして、タッチしたまま線を描くような動作で入力位置を面上で動かす操作を意味し、実際に線が描画される必要はない。
【０３０３】
図３７は、第３のゲーム例におけるテレビ２の画面とハンドヘルドデバイス９とを示す図である。図３７においては、テレビ２およびハンドヘルドデバイス９の下側ＬＣＤ（タッチパネル５２が設けられるＬＣＤ）には、ゲーム画像としてゲーム空間の画像が表示されている。テレビ２には、手裏剣３０１、制御面３０２、および標的３０３が表示されている。下側ＬＣＤには、制御面３０２（および手裏剣３０１）が表示されている。第３のゲーム例においては、プレイヤは、ハンドヘルドデバイス９を用いた操作によって手裏剣３０１を飛ばして標的３０３に当てて遊ぶ。
【０３０４】
手裏剣３０１を飛ばす場合、プレイヤは、まず、ハンドヘルドデバイス９の姿勢を操作することによって制御面３０２の姿勢を変化させて所望の姿勢にする。さらに、プレイヤは、図３７に示すように、タッチパネル５２上に線を描く操作を行う。この操作によって制御面３０２上での方向が決定され、この方向に手裏剣３０１が発射される。第３のゲーム例においては、プレイヤは、これらの操作によって手裏剣３０１を所望の方向へ飛ばすことができる。なお、図３７では、ハンドヘルドデバイス９を縦向きにして使用する様子を示しているが、ハンドヘルドデバイス９は横向きに使用されてもよく、任意の姿勢で使用されることができる。
【０３０５】
本実施形態においては、制御面３０２の姿勢はハンドヘルドデバイス９の姿勢に応じて決定される。図３８は、ハンドヘルドデバイス９の姿勢と制御面３０２の姿勢との関係を示す図である。図３８の表の上欄に示すように、ハンドヘルドデバイス９のタッチパネル５２の入力面が水平となる場合、ゲーム空間において制御面３０２は水平に配置される。また、図３８の表の中欄に示すように、ハンドヘルドデバイス９が前後方向を軸として回転した（具体的には、右側が下がるように傾いた）場合、制御面３０２は前後方向を軸として回転して（具体的には、右側が下がるように傾いて）配置される。さらに、図３８の表の下欄に示すように、ハンドヘルドデバイス９が左右方向を軸として回転した（具体的には、後側が下がるように傾いた）場合、制御面３０２は左右方向に回転して（具体的には、後側が下がるように傾いて）配置される。なお、図示していないが、ハンドヘルドデバイス９が上下方向を軸として回転した場合には、制御面３０２も上下方向を軸として回転して配置される。このように、制御面３０２の姿勢は、ハンドヘルドデバイス９の姿勢に対応するように制御される。なお、本実施形態においては、制御面３０２の位置は、ゲーム空間における所定位置に固定される。
【０３０６】
手裏剣３０１の発射方向は、上記のようにして姿勢が決定された制御面３０２上において方向を決定することで決められる。つまり、３次元のゲーム空間内における姿勢が設定された制御面３０２上において方向を決定することによって、３次元のゲーム空間内での方向が決定されることとなる。ここで、制御面３０２上における方向は、ハンドヘルドデバイス９のタッチパネル５２に入力される線（入力軌跡）に基づいて算出される。
【０３０７】
図３９は、ハンドヘルドデバイス９のタッチパネル５２に線が描かれる様子を示す図である。また、図４０は、図３９に示す線がタッチパネル５２に描かれた場合に制御面３０２上において算出される制御位置および制御方向を示す図である。図３９に示すように、ハンドヘルドデバイス９の下側ＬＣＤには、制御面３０２が表示される。ここでは、タッチパネル５２の入力面と制御面３０２とが画面上において一致する（すなわち、画面いっぱいに制御面３０２が表示される）ように制御面３０２が表示される。
【０３０８】
手裏剣３０１を発射する場合、プレイヤは、図３９に示すように、タッチパネル５２に対して線を描く操作を行う。なお、本実施形態においては、タッチパネル５２に対する入力が行われている場合、入力位置に手裏剣３０１が表示される。なお、図３９ではプレイヤによって描かれた線を点線で表しているが、この線は実際には表示されなくてもよい。
【０３０９】
プレイヤによって線が描かれる場合、すなわち、タッチパネル５２に対する入力があった場合、ゲーム装置３は、入力位置に対応する制御面３０２上の位置（指定位置。第３ゲーム例では、「制御位置」と呼ぶ）を算出する。制御位置は、下側ＬＣＤの画面上において入力位置に対応する（制御面３０２上における）位置として算出される。図４０において、点線は、入力面上に描かれた線に対応する（制御面３０２上における）線を示す。制御位置は、例えば図４０に示す点Ｐ１１〜Ｐ１４のように、この線上の位置に算出される。なお、ゲーム装置３は、タッチパネル５２に対する入力が行われる間（線が描かれる間）、制御位置の算出を繰り返し実行する。
【０３１０】
タッチパネル５２に対して線を描く入力が終了した場合、ゲーム装置３は、制御位置に基づいて制御方向（図４０に示すベクトルｖ１）を特定する。制御方向は、描かれた線に対応する各制御位置によって表される方向となるように特定される。つまり、制御方向は大略的には線の方向を向くように算出される。詳細は後述するが、本実施形態においては、制御方向は、制御位置の平均速度を表すベクトルとして算出される。なお、制御面３０２は３次元のゲーム空間内に配置されているので、制御方向も３次元のゲーム空間内における３次元の方向として算出される。これによって、ゲーム空間内における手裏剣３０１の発射方向が決定されたことになる。
【０３１１】
上記制御方向が算出されると、手裏剣３０１が発射される。手裏剣３０１がゲーム空間内を移動する様子はテレビ２に表示される。本実施形態においては、手裏剣３０１の姿勢は、制御面３０２に応じた姿勢となるように決定される。したがって、手裏剣３０１は、制御面３０２の姿勢に応じた姿勢で、上記制御方向に向かって発射（移動）される。なお、発射された後における手裏剣３０１の挙動はどのように決定されてもよい。手裏剣３０１は、例えば、制御方向に向かって真っ直ぐに移動するように制御されてもよいし、仮想的に重力の影響を加えて時間と共に落下するようにしてもよい。また、回転によって軌道が曲がるようにしてもよい。手裏剣３０１の姿勢に応じた移動方向となるように（例えば、手裏剣３０１が右に傾いている場合には右に曲がり、左に傾いている場合には左に曲がるように）制御されてもよい。
【０３１２】
以上のように、本実施形態においては、プレイヤは、ハンドヘルドデバイス９の姿勢によって制御面３０２の姿勢を指示し、タッチパネル５２に入力される線によって制御面３０２上での方向を指示することができる。そして、手裏剣３０１は、指示された制御面３０２上での方向（制御方向）に移動するように制御される。したがって、本実施形態によれば、プレイヤは、一方の手でハンドヘルドデバイス９の姿勢を実際に調整し、もう一方の手でタッチパネル５２に線で方向を入力するので、空間内で実際に方向を入力しているような直感的な操作で容易に方向を指示すことができる。本実施例においては特に、実際に手で画面に向かって手裏剣を放っているような感覚で操作をすることができる。また、ハンドヘルドデバイス９の姿勢の操作とタッチパネル５２に対する入力操作とは、同時に並行して行うことができるので、プレイヤは３次元空間における方向を指示する操作を迅速に行うことができる。
【０３１３】
（第３のゲーム例におけるゲーム処理）
次に、第３のゲーム例におけるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図４１は、ゲーム処理において用いられる各種データを示す図である。図４１において、ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図４１に示すように、ゲーム装置３のメインメモリには、ゲームプログラム３１０、端末操作データ３１１、および処理用データ３１６が記憶される。なお、メインメモリには、図４１に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームに使用される音声データ等、ゲームに必要なデータが記憶される。
【０３１４】
ゲームプログラム３１０は、第３のゲーム例におけるゲーム処理をゲーム装置３のコンピュータ（ＣＰＵ１０）に実行させるためのものである。ゲームプログラム３１０は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム３１０は、光ディスク４に代えて、ゲーム装置３の外部装置から（例えばインターネットを介して）取得されてもよい。また、ゲームプログラム３１０に含まれる一部（例えば、コントローラ５および／またはハンドヘルドデバイス９の姿勢を算出するためのプログラム）については、ゲーム装置３内に予め記憶されていてもよい。
【０３１５】
端末操作データ３１１は、ハンドヘルドデバイス９に対するユーザの操作を表すデータである。端末操作データ３１１は、ハンドヘルドデバイス９から送信されてゲーム装置３において取得される。端末操作データ３１１は、加速度データ３１２、角速度データ３１３、入力位置データ３１４、および操作ボタンデータ３１５を含む。なお、メインメモリには、最新の（最後に取得された）ものから順に所定個数の端末操作データが記憶されてもよい。
【０３１６】
加速度データ３１２は、ハンドヘルドデバイス９が備える加速度センサによって検出された加速度（加速度ベクトル）を表すデータである。ここでは、加速度データ３１２は、所定の３軸の方向に関する加速度を各成分とする３次元の加速度を表すものであるが、他の実施形態においては、任意の１以上の方向に関する加速度を表すものであればよい。
【０３１７】
角速度データ３１３は、ハンドヘルドデバイス９が備えるジャイロセンサによって検出された角速度を表すデータである。ここでは、角速度データ３１３は、所定の３軸回りのそれぞれの角速度を表すものであるが、他の実施形態においては、任意の１軸以上の軸回り角速度を表すものであればよい。
【０３１８】
入力位置データ３１４は、タッチパネル５２の入力面において入力が行われた位置（入力位置）を表すデータである。ここでは、入力位置データ３１４は、入力位置を示すための２次元座標系の座標値を表す。また、タッチパネル５２に対する入力が行われていない場合、入力位置データ３１４は、入力がないことを表す。
【０３１９】
操作ボタンデータ３１５は、ハンドヘルドデバイス９に設けられる各操作ボタンに対する入力状態を表すデータである。
【０３２０】
なお、端末操作データ３１１は、入力面に対するプレイヤの入力位置を表すデータ（本実施形態においては入力位置データ３１４）と、ハンドヘルドデバイス９の動きに応じて値が変化するデータ（本実施形態においては加速度データ３１２および角速度データ３１３）とを含むものであればよい。したがって、端末操作データ３１１は、操作ボタンデータ３１５を含まないものでもよいし、加速度データ３１２と角速度データ３１３とのいずれか一方のみを含むものでもよい。つまり、ハンドヘルドデバイス９は、操作ボタンを備えていない構成であってもよいし、加速度センサおよびジャイロセンサのいずれか一方のみを備える構成であってもよい。また、ハンドヘルドデバイス９は、加速度センサおよびジャイロセンサに代えて上記撮像情報演算部３５を備えることにより、加速度データ３１２および角速度データ３１３に代えてマーカ座標データを端末操作データ３１１に含むものであってもよい。
【０３２１】
処理用データ３１６は、後述するゲーム処理（図４２）において用いられるデータである。処理用データ３１６は、端末姿勢データ３１７、テレビカメラデータ３１８、端末カメラデータ３１９、制御面データ３２０、制御位置データ３２１、制御方向データ３２２、および、オブジェクトデータ３２３を含む。なお、処理用データ３１６は、図４１に示すデータの他、各種オブジェクトに設定されるパラメータを表すデータ等、ゲーム処理において用いられる各種データを含む。
【０３２２】
端末姿勢データ３１７は、ハンドヘルドデバイス９の姿勢を表すデータである。本実施形態では、端末姿勢データ３１７は、上記端末操作データ３１１に含まれる加速度データ３１２および角速度データ３１３に基づいて算出される。端末姿勢データ３１７の算出方法については後述する。
【０３２３】
テレビカメラデータ３１８は、テレビ２に表示されるテレビ用画像を生成するためのテレビ用仮想カメラの配置を表すデータである。具体的には、テレビカメラデータ３１８は、仮想のゲーム空間内におけるテレビ用仮想カメラの位置および姿勢を表す。なお、テレビカメラデータ３１８には、テレビ用仮想カメラの画角（視野範囲）を表すデータ等が含まれていてもよい。
【０３２４】
端末カメラデータ３１９は、ハンドヘルドデバイス９の下側ＬＣＤに表示される端末用画像を生成するための端末用仮想カメラの配置を表すデータである。具体的には、端末カメラデータ３１９は、上記ゲーム空間内における端末用仮想カメラの位置および姿勢を表す。なお、端末カメラデータ３１９には、端末用仮想カメラの画角（視野範囲）を表すデータ等が含まれていてもよい。なお、本実施形態においては、下側ＬＣＤに制御面３０２が表示されるように、制御面３０２の位置および姿勢に応じて端末用仮想カメラが配置される。
【０３２５】
制御面データ３２０は、ゲーム空間における制御面３０２の位置および姿勢を表すデータである。具体的には、制御面データ３２０は、制御面３０２を表す平面の式を表す。なお、本実施形態においては、制御面３０２の位置は予め定められた位置に固定され、制御面３０２の姿勢はハンドヘルドデバイス９の姿勢に基づいて算出される。
【０３２６】
制御位置データ３２１は、入力位置に対応する制御面３０２上の指定位置（制御位置）を表すデータである。第３のゲーム例では、指定位置が後述する制御方向を算出するために用いられるので、指定位置を「制御位置」と呼ぶ。制御位置データ３２１は、ゲーム空間内の位置を示す３次元の座標値を表す。なお、他の実施形態においては、制御位置データ３２１は、制御面上の位置を表す２次元座標系の座標値を表すものであってもよい。また、本実施形態においては、タッチパネル５２に対して連続して入力が行われる場合（すなわち、入力位置が連続して検出される場合）、最新のものから順に所定個の入力位置に対応する複数個の制御位置を表すデータが制御位置データ３２１として記憶される。また、タッチパネル５２に対する入力が終了した場合、制御位置データ３２１の内容はリセットされる。
【０３２７】
制御方向データ３２２は、手裏剣３０１の発射方向（移動方向）を決定するための制御方向を表すデータである。具体的には、制御方向データ３２２は、３次元のゲーム空間内の方向を示す３次元ベクトルを表す。以下では、この制御方向を示すベクトルを「制御方向ベクトル」と呼ぶ。制御方向データ３２２は、上記制御位置データ３２１に基づいて算出される。
【０３２８】
オブジェクトデータ３２３は、制御方向に基づいて移動されるオブジェクト（本実施形態においては手裏剣３０１）の状態を表すデータである。具体的には、オブジェクトデータ３２３は、ゲーム空間における手裏剣３０１の位置および姿勢を表す。ゲーム装置３は、オブジェクトデータ３２３に基づいてゲーム空間に手裏剣３０１を配置し、手裏剣３０１が配置されたゲーム空間の画像を生成して表示する。
【０３２９】
次に、ゲーム装置３において行われるゲーム処理の詳細を、図４２を用いて説明する。第３のゲーム例において、ゲーム処理における大略的な処理の流れを示すメインフローチャートは、図１８と同様であるので、詳細な説明は省略する。以下、第１のゲーム例との相違点を中心として、第３のゲーム例におけるゲーム処理について説明する。
【０３３０】
第３のゲーム例においても第１のゲーム例と同様、まずステップＳ１において、ＣＰＵ１０は初期処理を実行する。初期処理は、仮想空間を構築し、仮想空間に登場する各オブジェクトを初期位置に配置したり、ゲーム処理で用いる各種パラメータの初期値を設定したりする処理である。本ゲーム例においては、初期処理においてテレビ用仮想カメラの位置および姿勢が設定される。テレビ用仮想カメラの位置および姿勢は、制御面３０２が撮影範囲（仮想カメラの視体積の範囲）に含まれるように設定される。設定された位置および姿勢を表すデータは、テレビカメラデータ３１８としてメインメモリに記憶される。なお、制御面３０２の姿勢は可変であるが位置は固定であるので、初期処理において制御面３０２が撮影範囲に含まれるようにテレビ用仮想カメラを設定することは可能である。ステップＳ１の次にステップＳ２の処理が実行される。
【０３３１】
ステップＳ２において、ＣＰＵ１０は、ハンドヘルドデバイス９から端末操作データを取得する。ハンドヘルドデバイス９は、加速度センサ、ジャイロセンサ、タッチパネル５２、および操作ボタンから出力される各データを端末操作データとしてゲーム装置３へ繰り返し送信するので、ゲーム装置３は、ハンドヘルドデバイス９からのデータを逐次受信して端末操作データ３１１としてメインメモリに逐次記憶する。なお、ステップＳ２において、ＣＰＵ１０は上記端末操作データに加えてコントローラ５からコントローラ操作データを取得するようにしてもよい。ステップＳ２において、ＣＰＵ１０は、最新の端末操作データ３１１をメインメモリから読み出す。ステップＳ２の次にステップＳ３の処理が実行される。
【０３３２】
ステップＳ３において、ＣＰＵ１０はゲーム制御処理を実行する。ゲーム制御処理は、プレイヤによる操作に従ってゲーム空間内のオブジェクト（手裏剣３０１等）を動作させる等の処理によって、ゲームを進行させる処理である。以下、図４２を参照してゲーム制御処理の詳細を説明する。なお、以下では、制御方向の算出に関する処理を中心にゲーム制御処理を説明し、従来の処理と同様に行うことが可能な処理については詳細な説明を省略する。例えば、制御方向に従って発射された後の手裏剣３０１の移動制御に関する処理や、手裏剣３０１が標的３０３に当たったか否かを判定する処理や、手裏剣３０１が標的３０３に当たった場合の得点計算処理等については、従来の処理と同様に行うことが可能であるので、詳細な説明を省略する。
【０３３３】
図４２は、ゲーム制御処理の詳細な流れを示すフローチャートである。ゲーム制御処理においてはまずステップＳ６０において、ＣＰＵ１０は、ハンドヘルドデバイス９の姿勢を算出する。ハンドヘルドデバイス９の姿勢は、端末操作データ３１１に基づいて算出されればどのような方法で算出されてもよいが、本ゲーム例においては、次の方法で姿勢を算出する。以下、ハンドヘルドデバイス９の姿勢の算出方法について説明する。
【０３３４】
まず、ＣＰＵ１０は、メインメモリに記憶されている角速度データ３１３に基づいてハンドヘルドデバイス９の姿勢を算出する。ハンドヘルドデバイス９の姿勢を角速度から算出する方法はどのような方法であってもよいが、当該姿勢は、上記第１のゲーム例における端末装置７と同様の方法で算出することができる。上記ステップＳ６０の次にステップＳ６１の処理が実行される。
【０３３５】
ステップＳ６１において、ＣＰＵ１０は、ハンドヘルドデバイス９の姿勢に基づいて制御面３０２の姿勢を算出する。本ゲーム例においては、ゲーム空間における制御面３０２の姿勢は、現実空間におけるハンドヘルドデバイス９の姿勢に対応するように設定される。具体的には、ハンドヘルドデバイス９が基準姿勢となる場合には、制御面３０２の姿勢は所定の基準姿勢となるように算出される。なお、本ゲーム例においては、タッチパネル５２の入力面が水平となる姿勢をハンドヘルドデバイス９の基準姿勢とし、ゲーム空間において水平に配置される姿勢を制御面３０２の所定の基準姿勢とする（図３８の上欄参照）。また、ハンドヘルドデバイス９が基準姿勢以外の場合には、制御面３０２の姿勢は、ハンドヘルドデバイス９が基準姿勢から回転した方向に応じた方向に、回転量に応じた回転量だけ、上記所定の基準姿勢から回転させた姿勢となるように算出される（図３８の中欄および下欄参照）。以上のように、本ゲーム例においては、仮想空間における制御面３０２の姿勢が現実空間におけるハンドヘルドデバイス９の姿勢に一致するように、制御面３０２の姿勢が算出される。ただし、他の実施形態においては、ハンドヘルドデバイス９の姿勢と制御面３０２の姿勢とが一致する必要はなく、ハンドヘルドデバイス９の姿勢に応じて変化するように制御面３０２の姿勢が算出されればよい。
【０３３６】
ステップＳ６１の具体的な処理としては、ＣＰＵ１０は、メインメモリから端末姿勢データ３１７を読み出し、端末姿勢データ３１７に基づいて制御面３０２の姿勢を算出する。また、制御面３０２の位置を予め定められた所定位置に設定する。そして、算出された姿勢と設定された位置を表すデータを制御面データ３２０としてメインメモリに記憶する。ステップＳ６１の次にステップＳ６２の処理が実行される。
【０３３７】
なお、上記ステップＳ６１においては、ＣＰＵ１０は制御面３０２の位置を固定し、制御面３０２の姿勢をハンドヘルドデバイス９の姿勢に応じて変化させた。ここで、他の実施形態においては、制御面３０２の姿勢とともに位置をハンドヘルドデバイス９の姿勢に応じて変化させてもよい。例えば、ＣＰＵ１０は、制御面３０２を左に向けて回転させる場合、制御面３０２の向きを左に回転させながら位置を左に移動させてもよい。
【０３３８】
ステップＳ６２において、ＣＰＵ１０は、制御面３０２の姿勢に応じて端末用仮想カメラを制御する。ここで、上述のように、ハンドヘルドデバイス９の下側ＬＣＤには制御面３０２が表示され、具体的には、タッチパネル５２の入力面と制御面３０２とが画面上において一致するように制御面３０２が表示される。したがって、端末用仮想カメラの位置および姿勢は、制御面３０２が視野範囲に含まれるように（具体的には、制御面３０２の外周と端末用仮想カメラの視野範囲の外縁とが一致するように）、制御面３０２の姿勢に応じて制御される。また、端末用仮想カメラは、その視線方向と制御面３０２とが直行するように制御される。
【０３３９】
なお、上記ステップＳ６２の処理によれば、端末用仮想カメラは、制御面３０２と端末用仮想カメラとの位置関係が一定になるように、制御面３０２の変化に応じて移動される。これによれば、制御面３０２をどのような姿勢にしても、入力位置と制御位置との対応関係は変化しないので、タッチパネル５２に対するタッチ操作の操作性を向上することができる。
【０３４０】
ステップＳ６２の具体的な処理としては、ＣＰＵ１０は、メインメモリから制御面データ３２０を読み出し、制御面３０２の姿勢に基づいて端末用仮想カメラの位置および姿勢を算出する。そして、算出された位置および姿勢を表すデータを端末カメラデータ３１９としてメインメモリに記憶する。ステップＳ６２の次にステップＳ６３の処理が実行される。
【０３４１】
ステップＳ６３において、ＣＰＵ１０は、タッチパネル５２に対する入力（タッチ入力）があったか否かを判定する。具体的には、メインメモリに記憶されている最新の入力位置データ３１４を読み出して参照し、入力位置データ３１４が入力位置の座標値を表すか、それとも、入力が無いことを表すかを判定する。ステップＳ６３の判定結果が肯定である場合、ステップＳ６４の処理が実行される。一方、ステップＳ６３の判定結果が否定である場合、後述するステップＳ６７の処理が実行される。
【０３４２】
ステップＳ６４において、ＣＰＵ１０は、制御面３０２上における制御位置を入力位置に基づいて算出する。制御位置は、入力位置に対応する制御面３０２上の位置として算出される。具体的には、制御位置は、タッチパネル５２の入力面の四辺に対する入力位置の位置関係と、制御面３０２の四辺に対する制御位置の位置関係とが同じになるように算出される。
【０３４３】
ステップＳ６４の具体的な処理としては、ＣＰＵ１０は、まず、メインメモリに記憶されている最新の入力位置データ３１４を読み出し、入力位置データ３１４が表す入力位置を、制御面３０２上の位置を示す２次元座標系の座標に変換する。次に、ＣＰＵ１０は、変換によって得られた２次元座標を、３次元のゲーム空間の位置を示す３次元座標に変換する。この３次元座標は、上記２次元座標系の座標と、制御面３０２を表す平面の式（制御面データ３２０）とを用いて算出することができる。すなわち、ＣＰＵ１０は、制御面データ３２０をメインメモリから読み出し、上記２次元座標と制御面データ３２０とに基づいて上記３次元座標を算出する。このようにして算出された３次元座標が制御位置を表す。以上のステップＳ６４の次にステップＳ６５の処理が実行される。
【０３４４】
なお、上記ステップＳ６４においては、下側ＬＣＤの画面上において入力位置が制御位置となるように、制御位置が算出されることが好ましい。これによれば、プレイヤは仮想のゲーム空間内の制御位置を把握しやすくなり、制御方向の指示をより行いやすくなる。なお、本ゲーム例においては、タッチパネル５２の入力面の形状（縦横比）と制御面３０２の形状（縦横比）とを等しくし、また、タッチパネル５２の入力面と制御面３０２とを下側ＬＣＤの画面上において一致させている。これによって、上記のように制御位置を算出することによって、下側ＬＣＤの画面上において入力位置と制御位置とを対応させることができる。なお、他の実施形態においては、入力位置から制御位置を算出する方法はどのような方法であってもよく、入力位置と制御位置とが画面上で対応しない方法であってもよい。
【０３４５】
ステップＳ６５において、ＣＰＵ１０は、ステップＳ６４で算出された制御位置を表すデータをメインメモリに記憶する。ここで、ＣＰＵ１０は、タッチパネル５２に対して連続して入力が行われる場合、最新のものから順に所定個数の入力位置に対応する複数個の制御位置を記憶する。したがって、ＣＰＵ１０は、制御位置データ３２１をメインメモリから読み出し、制御位置データ３２１が表す制御位置が上記所定個数よりも小さい場合、制御位置データ３２１が表す制御位置に、新たな制御位置を（ステップＳ６４で算出された制御位置）追加したデータを作成する。一方、読み出した制御位置データ３２１が表す制御位置が上記所定個数以上である場合、制御位置データ３２１が表す各制御位置に対して、最も古い制御位置を削除するとともに、新たな制御位置を（ステップＳ６４で算出された制御位置）追加したデータを作成する。以上のようにして作成されたデータが新たな制御位置データ３２１としてメインメモリに記憶される。したがって、制御位置データ３２１は、現在から所定時間以内に入力された入力位置に対応する制御位置を表す。ステップＳ６５の次にステップＳ６６の処理が実行される。
【０３４６】
ステップＳ６６において、ＣＰＵ１０は、ゲーム空間における手裏剣３０１の位置および姿勢を算出する。ここで、タッチパネル５２に対する入力が行われてから発射されるまでの期間において、手裏剣３０１は、制御面３０２に応じた姿勢で制御位置に配置される。すなわち、ＣＰＵ１０は、制御面データ３２０および制御位置データ３２１をメインメモリから読み出し、手裏剣３０１の位置および姿勢を算出する。算出された位置および姿勢を表すデータが、オブジェクトデータ３２３としてメインメモリに記憶される。なお、第３のゲーム例においては、タッチパネル５２に対する入力が行われている期間には制御面３０２上に手裏剣３０１を配置・表示するようにしたが、他の実施形態においては、当該期間に手裏剣３０１を配置・表示しないようにしてもよい。また、他の実施形態においては、ＣＰＵ１０は、制御位置に応じて手裏剣３０１の位置のみを制御し、手裏剣３０１の姿勢については制御しない（姿勢は固定にする）ようにしてもよい。ステップＳ６６の後、ＣＰＵ１０はゲーム制御処理を終了する。
【０３４７】
一方、ステップＳ６６の判定結果が否定である場合にはステップＳ６７の処理が実行される。ステップＳ６７において、ＣＰＵ１０は、前回の処理ループ（ステップＳ２〜Ｓ８の一連の処理からなる処理ループ）においてタッチ入力があったか否かを判定する。ステップＳ６７の判定は、例えば、メインメモリに制御位置データ３２１が記憶されているか否かによって行うことができる。なお、前回のタッチ入力だけでなく、過去所定回数に連続してタッチ入力があったかどうかを判定するようにしてもよい。ステップＳ６７の判定結果が肯定である場合、ステップＳ６８の処理が実行される。一方、ステップＳ６７の判定結果が否定である場合、ステップＳ６８〜Ｓ７０の処理がスキップされ、ＣＰＵ１０はゲーム制御処理を終了する。
【０３４８】
ステップＳ６８において、ＣＰＵ１０は制御方向を算出する。本ゲーム例においては、制御方向（制御方向ベクトル）は、制御位置の平均速度を示すベクトルとして算出される。すなわち、ＣＰＵ１０は、制御位置データ３２１をメインメモリから読み出し、制御位置データ３２１が表す複数の制御位置から平均速度を示すベクトルを算出する。具体的には、平均速度を示すベクトルは、上記複数の制御位置のうち、最も古いものを始点とし、最新のものを終点とするベクトルを、制御位置の個数で割ることによって算出することができる。算出されたベクトルを表すデータは、制御方向データ３２２としてメインメモリに記憶される。ステップＳ６８の次にステップＳ６９の処理が実行される。
【０３４９】
上記ステップＳ６８においては、制御位置データ３２１が表す複数の制御位置の平均速度として制御方向を算出する方法を採用した。この方法では、プレイヤがタッチパネル上で線を描く途中で入力位置を移動させずに停止させた場合、算出される平均速度の大きさが非常に小さい値となってしまうおそれがある。そのため、他の実施形態においては、ＣＰＵ１０は、移動していないと推測される入力位置に対応する制御位置を除去して平均速度を算出するようにしてもよい。具体的には、上記ステップＳ６５において、ＣＰＵ１０は、上記ステップＳ６４で算出された新たな制御位置が、その１つ前に算出された制御位置から（ほとんど）移動していない場合、当該新たな制御位置を記憶しないようにしてもよい。すなわち、上記新たな制御位置と１つ前に算出された制御位置との距離が所定値以内である場合、ＣＰＵ１０は、制御位置データ３２１を更新しないようにしてもよい。
【０３５０】
ステップＳ６９において、ＣＰＵ１０は、制御方向へ手裏剣３０１を発射させる。本ゲーム例においては、制御方向ベクトルに基づいて、手裏剣３０１の移動方向および移動速度が決定される。すなわち、制御方向ベクトルの向きに、制御方向ベクトルに応じた移動量だけ手裏剣３０１を移動させる。具体的には、ステップＳ６９においては、ＣＰＵ１０は、オブジェクトデータ３２３および制御方向データ３２２を読み出し、オブジェクトデータ３２３が表す位置を、制御方向ベクトルの向きに、制御方向ベクトルに応じた移動量だけ移動させた位置を算出する。そして、オブジェクトデータ３２３が表す位置を移動後の位置に更新して、更新後のオブジェクトデータをメインメモリに記憶する。これによって、手裏剣３０１の位置が更新され、手裏剣３０１が制御方向に移動されたことになる。なお、本ゲーム例においては、上記ステップＳ６６で述べたように、手裏剣３０１は、制御面３０２に応じた姿勢で配置されている。したがって、手裏剣３０１は、制御方向により決められる方向に、制御面の姿勢によって決められる姿勢で発射される。なお、制御方向ベクトルの大きさが予め定められた所定値よりも小さい場合には、プレイヤはタッチパネル５２に対して線を描く操作（すなわち手裏剣３０１を発射する操作）を行う意図がないと考えられる。そのため、この場合にはＣＰＵ１０は手裏剣３０１を発射しないようにしてもよい。ステップＳ６９の次にステップＳ７０の処理が実行される。
【０３５１】
ステップＳ７０において、ＣＰＵ１０は制御位置をリセットする。具体的には、メインメモリに記憶されている制御位置データ３２１を消去する。これによって、次にタッチ入力が行われた場合には、ステップＳ６５において制御位置が新たに一から記憶されることとなる。ステップＳ７０の後、ＣＰＵ１０はゲーム制御処理を終了する。
【０３５２】
図４２に示すゲーム制御処理によれば、ハンドヘルドデバイス９の姿勢に応じて制御面３０２の姿勢が制御され（ステップＳ６１，Ｓ６２）、制御面３０２上において、タッチパネル５２に対して入力された線の方向に応じた制御方向が算出される（ステップＳ６８）。これによって、プレイヤは、ハンドヘルドデバイス９の姿勢の操作とタッチパネル５２に対する操作とによって、３次元空間内における方向を容易にかつ直感的に指示することができる。
【０３５３】
なお、上記ゲーム制御処理においては、複数の制御位置の平均速度として制御方向が算出された。ここで、制御位置から制御方向を算出する方法は上記に限らず、どのような方法であってもよい。例えば、本ゲーム例と同様にプレイヤに線を描く入力を行わせる場合には、ＣＰＵ１０は、制御位置データ３２１が表す複数の制御位置のうち、最も新しい制御位置を終点とし、その次に新しい制御位置を始点とするベクトルを制御方向ベクトルとして算出するようにしてもよい。また、プレイヤがタッチパネル５２上において２点を指定することによって制御方向を指示することができるようにしてもよい。すなわち、ＣＰＵ１０は、最初にタッチされた入力位置に対応する制御位置を始点とし、次にタッチされた入力位置に対応する制御位置を終点とするベクトルを制御方向ベクトルとして算出するようにしてもよい。
【０３５４】
メインフローチャート（ステップＳ１〜Ｓ８）の説明に戻り、ステップＳ３のゲーム制御処理の次にステップＳ４の処理が実行される。ステップＳ４においては、テレビ用画像が生成される。第３のゲーム例においてもテレビ用画像の具体的な生成方法は第１のゲーム例と同様である。第３のゲーム例においては、制御面３０２を含むゲーム空間の画像がテレビ用画像として生成される（図３７参照）。なお、第３のゲーム例のように、制御面３０２の姿勢が変化してもテレビ用仮想カメラの位置および姿勢を変化しないようにすることによって、プレイヤは、ゲーム空間における制御面３０２の姿勢を容易に把握することができる。上記ステップＳ４の次にステップＳ５の処理が実行される。
【０３５５】
ステップＳ５においては、端末用画像が上記ゲーム制御処理に基づいて生成される。第３のゲーム例においても端末用画像の具体的な生成方法は第１のゲーム例と同様である。なお、本ゲーム例では、上記ステップＳ６２で設定された端末用仮想カメラから見たゲーム空間の画像が端末用画像として生成される。これによって、制御面３０２の画像が端末用画像として生成される（図３７参照）。上記ステップＳ５の次にステップＳ６の処理が実行される。
【０３５６】
第３のゲーム例において、ステップＳ６〜Ｓ８の処理は第１のゲーム例と同様である。なお、ハンドヘルドデバイス９において、ゲーム装置３から送信されてくる画像データおよび音声を受信して表示部および下側ＬＣＤに出力する処理は、端末装置７における処理と同様であるとする。また、第３のゲーム例においても第１のゲーム例と同様、ステップＳ２〜Ｓ８の一連の処理は、ステップＳ８でゲームを終了すると判定されるまで繰り返し実行される。
【０３５７】
以上で説明した第３のゲーム例のゲーム処理によれば、ハンドヘルドデバイス９の姿勢によって制御面３０２の姿勢が決定され、タッチパネルに対する入力によって制御面３０２上で制御方向が決定される。そして、決定された制御方向へ手裏剣３０１が発射される。このように、本ゲーム例によれば、プレイヤは、タッチパネル５２を用いて３次元空間における方向を直感的な操作で容易に指示することができる。
【０３５８】
また、上記第３のゲーム例のゲーム処理によれば、制御面３０２上における制御方向ベクトルが算出されるので、当該制御方向ベクトルによって、オブジェクトの移動方向に加えて移動量を制御することができる。したがって、ハンドヘルドデバイス９を用いてより詳細にオブジェクトを制御することができる。
【０３５９】
また、上記第３のゲーム例のゲーム処理によれば、制御面３０２を含む画像がテレビ用画像としてテレビ２に表示されるので、プレイヤは手裏剣３０１の姿勢および発射方向をテレビ用画像によって確認することができ、操作をより行いやすくすることができる。
【０３６０】
［９．第４のゲーム例］
以下、図４３〜図４６を参照して、本実施形態のゲームシステム１において実行される第４のゲーム例について説明する。第４のゲーム例は、ハンドヘルドデバイス９を操作することによってゲーム空間内においてオブジェクト（大砲の弾）を発射するゲームである。プレイヤは、ハンドヘルドデバイス９の姿勢を変化させるとともに、タッチパネル５２上の位置を指定する（タッチする）ことによって、弾を発射する方向を指示することができる。なお、第４のゲーム例においても第３のゲーム例と同様、ゲームシステム１が端末装置７に代えて、携帯型ゲーム機であるハンドヘルドデバイス９を有するものとして説明を行う。
【０３６１】
図４３は、第４のゲーム例におけるテレビ２の画面とハンドヘルドデバイス９とを示す図である。図４３においては、テレビ２およびハンドヘルドデバイス９の下側ＬＣＤには、ゲーム画像としてゲーム空間の画像が表示されている。テレビ２には、大砲３３１、弾３３２、および標的３３３が表示されている。下側ＬＣＤには、弾３３２および標的３３３が表示されている。図４３において、下側ＬＣＤに表示される端末用画像は、大砲３３１の位置からゲーム空間を見た画像である。なお、第４のゲーム例においても第３のゲーム例と同様、ゲーム空間内に制御面が設定されるが、第３のゲーム例と異なり制御面は表示されない。したがって、本実施例においては、プレイヤはハンドヘルドデバイス９の下側ＬＣＤを見ながら主観的な視点でゲームをすることができる。テレビ２に表示される画像は下側ＬＣＤと同じ視点からの画像であってもよいが、別視点からの画像を表示させるようにすれば、両方の画面を活かしたゲームを提供することができる。例えば、下側ＬＣＤでは見えない範囲をテレビ２に表示させるようにすれば、プレイヤがテレビ２を見ながら主観視点では見えない部分を隠れて狙うようなゲームプレイを実現することもできる。また、操作感覚は異なるが、テレビ２に主観的な視点の画像を表示させるようにし、ハンドヘルドデバイスには画面を設けずにタッチパッドによる入力を行うようにすることも可能である。
【０３６２】
大砲３３１から弾３３２を発射する場合、プレイヤは、まず、ハンドヘルドデバイス９の姿勢を操作することによって制御面の姿勢を変化させて所望の姿勢にする。つまり、第４のゲーム例においても第３のゲーム例と同様、制御面の姿勢はハンドヘルドデバイス９の姿勢に応じて決定される。なお、詳細は後述するが、第４のゲーム例においては制御面の位置は、制御面の姿勢に応じて変化（移動）する。
【０３６３】
第４のゲーム例においては、プレイヤはさらに、図４３に示すように、タッチパネル５２上の所望の位置をタッチする操作を行う。この操作によって、入力位置に対応するゲーム空間内の位置（制御面上の制御位置）が決定される。第４のゲーム例においても制御位置の決定方法は第３のゲーム例と同様である。
【０３６４】
ここで、第４のゲーム例においては、制御方向は、端末用仮想カメラの位置から制御位置への方向として決定される。図４４は、ゲーム空間における仮想カメラと制御面とを示す図である。図４４において、点Ｐは制御面３３５上に設定される制御位置を表し、ベクトルｖ２は制御方向を表す。第４のゲーム例においては、図４４に示すように、端末用仮想カメラの位置Ｐｃと制御位置Ｐとに基づいて制御方向（制御方向ベクトルｖ２）が算出される。具体的には、制御方向ベクトルｖ２は、端末用仮想カメラの位置Ｐｃを始点とし、制御位置Ｐを終点とするベクトルとして算出される。弾３３２は、算出された制御方向に発射される。
【０３６５】
以上のように、第４のゲーム例においては、プレイヤは、ハンドヘルドデバイス９の姿勢の操作と、タッチパネル３２上の位置を指定する操作とによって、弾３３２を所望の方向へ飛ばすことができる。したがって、第４のゲーム例においても第３のゲーム例と同様、プレイヤは、タッチパネル５２を用いて３次元空間における方向を直感的な操作で容易に指示することができる。また、ハンドヘルドデバイス９の姿勢の操作とタッチパネル５２に対する入力操作とは、同時に並行して行うことができるので、プレイヤは３次元空間における方向を指示する操作を迅速に行うことができる。
【０３６６】
（第４のゲーム例におけるゲーム処理）
次に、第４のゲーム例におけるゲーム処理の詳細を説明する。まず、図４１を参照して、第３のゲーム例との相違点を中心に、第４のゲーム例におけるゲーム処理において用いられる各種データについて説明する。
【０３６７】
第４のゲーム例においては、ゲームプログラム３１０としては、図４５に示すゲーム処理を実行するためのゲームプログラムが記憶される。端末操作データ３１１は第３のゲーム例と同様である。
【０３６８】
処理用データ３１６としては、第４のゲーム例においても第３のゲーム例と同様のデータが記憶される。ただし、第４のゲーム例においては、制御位置データ３２１は、最新の１つの制御位置を表すものでよい。また、オブジェクトデータ３２３は、弾３３２の位置を表す。
【０３６９】
次に、第４のゲーム例におけるゲーム処理の詳細を、図４５および図４６を用いて説明する。第４のゲーム例においても第３のゲーム例と同様、図１８に示すステップＳ１〜Ｓ８の処理が実行される。以下、第３のゲーム例におけるゲーム処理との相違点を中心に、第４のゲーム例におけるゲーム処理を説明する。
【０３７０】
ステップＳ１において、ＣＰＵ１０は、第３のゲーム例と同様の初期処理を実行する。ただし、第４のゲーム例においては、テレビ用仮想カメラは制御面の位置および姿勢に応じて制御されるので（後述するステップＳ８４）、初期処理においてはテレビ用仮想カメラの位置および姿勢は設定されない。第４のゲーム例におけるステップＳ２の処理は、第３のゲーム例と同様である。
【０３７１】
ステップＳ３において、ＣＰＵ１０はゲーム制御処理を実行する。第４のゲーム例におけるゲーム制御処理は、プレイヤによる操作に従ってゲーム空間内のオブジェクト（弾３３２等）を動作させる等の処理によって、ゲームを進行させる処理である。以下、図４５を参照して、第４のゲーム例におけるゲーム制御処理の詳細を説明する。なお、以下では、制御方向の算出に関する処理を中心にゲーム制御処理を説明し、従来の処理と同様に行うことが可能な処理については詳細な説明を省略する。例えば、制御方向に従って発射された後の弾３３２の移動制御に関する処理や、弾３３２が標的３３３に当たったか否かを判定する処理や、弾３３２が標的３３３に当たった場合の得点計算処理等については、従来の処理と同様に行うことが可能であるので、詳細な説明を省略する。
【０３７２】
図４５は、第４のゲーム例におけるゲーム制御処理の詳細な流れを示すフローチャートである。ゲーム制御処理においてはまずステップＳ８１において、ＣＰＵ１０は、ハンドヘルドデバイス９の姿勢を算出する。ステップＳ８１の処理は第３のゲーム例におけるステップＳ６０の処理と同じである。ステップＳ８１の次にステップＳ８２の処理が実行される。
【０３７３】
ステップＳ８２において、ＣＰＵ１０は、ハンドヘルドデバイス９の姿勢に基づいて制御面３３５の位置および姿勢を算出する。ここで、制御面３３５の姿勢をハンドヘルドデバイス９の姿勢に基づいて算出する処理は、第３のゲーム例におけるステップＳ６１の処理と同じである。すなわち、第４のゲーム例においても、ゲーム空間における制御面３３５の姿勢は、現実空間におけるハンドヘルドデバイス９の姿勢に対応するように設定される。
【０３７４】
また、制御面３３５の位置は、制御面３３５の姿勢に応じて次のように算出される。図４６は、制御面３３５の位置および姿勢が変化する様子を示す図である。図４６において、点Ｐａは、制御面３３５の位置を決定するための基準点であり、ゲーム空間に固定的に設定される。図４６に示すように、ハンドヘルドデバイス９の姿勢が変化する場合、制御面３３５は、姿勢の変化とともに、基準点Ｐａを中心に回転するように位置も変化する。具体的には、制御面３３５の位置は、基準点Ｐａから制御面３３５への垂線の長さが予め定められた所定値となるように（つまり、基準点Ｐａからの距離が一定となるように）算出される。
【０３７５】
ステップＳ８２の具体的な処理としては、ＣＰＵ１０は、まず、上記ステップＳ６１と同様の方法によって制御面３３５の姿勢を算出する。次に、ＣＰＵ１０は、算出された姿勢と、上記基準点Ｐａの位置とに基づいて、上記垂線の長さが予め定められた所定値となるように制御面３３５の位置を算出する。算出された制御面３３５の位置および姿勢を表すデータは、制御面データ３２０としてメインメモリに記憶される。ステップＳ８２の次にステップＳ８３の処理が実行される。
【０３７６】
上記ステップＳ８２の処理によれば、制御面３３５の姿勢とともに位置が変化するように制御面３３５が制御される。端末用仮想カメラの位置（あるいは基準点の位置）を中心として、ハンドヘルドデバイス９の姿勢に応じて制御面３３５の位置を変化させることで、所定の位置から周囲を見回すような操作感覚でプレイヤにゲーム操作を行わせることができる。なお、別の実施例においては、例えば仮想空間内の特定の位置を様々な角度から見るような操作感覚のゲームを実現することも可能である。すなわち、制御面３３５の位置を変えずに、ハンドヘルドデバイス９の姿勢に応じて端末用仮想カメラの位置を変えるようにしてもよい。また、姿勢に応じて制御面３３５の位置も端末用仮想カメラの位置も動くようにして、仮想空間内で移動して視点を変えながら視線方向も変えるような操作感覚でプレイヤにゲーム操作を行わせるようにしてもよい。
【０３７７】
ステップＳ８３において、ＣＰＵ１０は、制御面３３５の位置および姿勢に応じて端末用仮想カメラを制御する。ここで、図４６に示す点Ｐｃは、端末用仮想カメラの位置を示す点である。図４６に示すように、端末用仮想カメラは、制御面３０２が視野範囲に含まれるように（より具体的には、制御面３３５の外周と端末用仮想カメラの視野範囲の外縁とが一致するように）制御される。したがって、端末用仮想カメラの位置は、基準点Ｐａと制御面３３５の中心とを通る直線上であって、制御面３３５からの距離が視野範囲に応じた距離となるように算出される。なお、端末用仮想カメラは、上記直線上であればよく、視野範囲（視野角）によっては、基準点Ｐａよりも後ろ側（制御面３３５から遠い側）の位置となることもある。
【０３７８】
上記のように端末用仮想カメラが設定されることによって、下側ＬＣＤには、タッチパネル５２の入力面と制御面３３５とが画面上において一致するように制御面３３５が表示されることになる（図４３参照）。これによれば、プレイヤがタッチした位置に対応するゲーム空間内の位置に向かって弾３３２が発射されるので、直感的でわかりやすいゲーム操作を提供することができる。また、第４のゲーム例においても第３のゲーム例と同様、端末用仮想カメラは、制御面３０２と端末用仮想カメラとの位置関係が一定になるように、制御面３０２の変化に応じて移動されることとなる。
【０３７９】
ステップＳ８３の具体的な処理としては、ＣＰＵ１０は、メインメモリから制御面データ３２０を読み出し、制御面３３５の位置および姿勢に基づいて端末用仮想カメラの位置および姿勢を算出する。そして、算出された位置および姿勢を表すデータを端末カメラデータ３１９としてメインメモリに記憶する。ステップＳ８３の次にステップＳ８４の処理が実行される。
【０３８０】
ステップＳ８４において、ＣＰＵ１０は、制御面３３５の位置および姿勢に応じてテレビ用仮想カメラを制御する。第４のゲーム例においては、テレビ用仮想カメラは、制御面３３５が視野範囲に含まれ、端末用仮想カメラとは異なる位置となるように制御される（図４３参照）。具体的には、テレビ用仮想カメラは、大砲３３１が表示されるように、大砲３３１のやや後方の位置から制御面３３５の方を向くように配置される。なお、ここでは、大砲３３１は、端末用仮想カメラの位置に配置されるものとする。具体的な処理としては、ＣＰＵ１０は、メインメモリから制御面データ３２０を読み出し、制御面３３５の位置および姿勢に応じた位置および姿勢となるように、テレビ用仮想カメラの位置および姿勢を算出する。そして、算出された位置および姿勢を表すデータをテレビカメラデータ３１８としてメインメモリに記憶する。ステップＳ８４の次にステップＳ８５の処理が実行される。
【０３８１】
上記ステップＳ８４の処理によれば、テレビ用仮想カメラは端末用仮想カメラとは異なる位置に配置される。これによって、プレイヤは、異なる２つの視点から見たゲーム空間を見ることができるので、ゲーム操作をより行いやすくなる。例えば、第４のゲーム例においては、テレビ用仮想カメラは、端末用仮想カメラよりも広いゲーム空間の範囲を撮影するように配置される（図４３参照）ので、プレイヤは、テレビ用画像を見ることによってゲーム空間内における様子（各オブジェクトの配置等）をより把握しやすくなる。
【０３８２】
また、２つの仮想カメラの位置を異ならせることによって、ゲームの興趣性を向上することもできる。例えば、大砲３３１と標的３３３との間に壁を配置しておき（端末用仮想カメラからは標的３３３が見えない）、壁より上側の標的３３３が見える位置にテレビ用仮想カメラを配置するようにすれば、テレビ２側にのみ標的３３３が表示されるようにすることができる。この場合、プレイヤは、ハンドヘルドデバイス９の画面とテレビ２の画面の両方を見比べながらゲーム操作を行うことになり、ゲームをより面白くすることができる。なお、他の実施形態においては、テレビ用仮想カメラの位置および姿勢はどのように制御されてもよく、制御面３３５が見えない位置に配置されてもよいし、また、端末用仮想カメラと同じ位置および姿勢に設定されてもよい（つまり、仮想カメラを１つのみ設定してもよい）。
【０３８３】
ステップＳ８５において、ＣＰＵ１０は、タッチパネル５２に対する入力（タッチ入力）があったか否かを判定する。ステップＳ８５の処理は、第３のゲーム例におけるステップＳ６３の処理と同じである。ステップＳ８５の判定結果が肯定である場合、ステップＳ８６の処理が実行される。一方、ステップＳ８５の判定結果が否定である場合、ＣＰＵ１０はゲーム制御処理を終了する。
【０３８４】
ステップＳ８６において、ＣＰＵ１０は、制御面３３５上における制御位置を入力位置に基づいて算出する。ステップＳ８６における制御位置の算出方法は、第３のゲーム例におけるステップＳ６４における算出方法と同じである。また、第４のゲーム例では、制御方向は最新の制御位置に基づいて算出される。そのため、ステップＳ８６においては、ＣＰＵ１０は、算出した制御位置を表すデータを制御位置データ３２１としてメインメモリに記憶する。ステップＳ８６の次にステップＳ８７の処理が実行される。
【０３８５】
ステップＳ８７において、ＣＰＵ１０は、ステップＳ８６で算出された制御位置に基づいて制御方向を算出する。制御方向は、ゲーム空間内における所定位置と制御位置とを結ぶ方向として算出される。第４のゲーム例においては、制御方向は、端末用仮想カメラ（大砲３３１）の位置から制御位置への方向として算出される（図４４参照）。具体的には、ＣＰＵ１０は、端末カメラデータ３１９と制御位置データ３２１をメインメモリから読み出し、端末用仮想カメラの位置を始点とし、制御位置を終点とする制御方向ベクトルｖ２を算出する。算出された制御方向ベクトルｖ２を表すデータは、制御方向データ３２２としてメインメモリに記憶される。ステップＳ８７の次にステップＳ８８の処理が実行される。
【０３８６】
なお、上記ステップＳ８７においては、上記所定位置として端末用仮想カメラの位置を用いた。ここで、他の実施形態においては、上記所定位置は他の位置であってもよい。例えば、上記所定位置は、図４６に示す基準点Ｐａの位置でもよいし、特定のオブジェクトの位置でもよい。上記所定位置として仮想カメラの位置以外の位置を採用する場合には、視点とは異なる位置からオブジェクト（弾３３２）が発射されるように見える。一方、第４のゲーム例のように、制御方向の始点と端末用画像における視点とを一致させるようにすれば、プレイヤは主観的な視点で弾を撃つ操作を行うことができ、より操作しやすいゲーム操作を提供することができる。
【０３８７】
ステップＳ８８において、ＣＰＵ１０は、ステップＳ８７で算出された制御方向へ弾３３２を発射する。第４のゲーム例においては、弾３３２は、所定の移動方向へ所定の速さ（所定の移動量）で移動される。所定の移動方向は、制御方向により決められる方向であって、制御方向よりも所定角度だけ上方を向く方向である。ここで、第４のゲーム例においては、発射後の弾３３２が、重力を考慮して放物線を描くように制御されるものとする。このように弾３３２が放物線を描くように飛んでいく場合、弾３３２を制御方向に発射すると、プレイヤは、制御方向よりもやや下方に発射されたような感覚を受けるおそれがある。そのため、第２に実施例では、ＣＰＵ１０は、弾３３２を制御方向よりも所定角度だけ上方に向けた方向へ発射する。このように、オブジェクトの移動方向は、制御方向により決められる方向であればよく、必ずしも制御方向と一致する方向である必要はない。
【０３８８】
ステップＳ８８の具体的な処理としては、ＣＰＵ１０は、制御方向データ３２２を読み出し、制御方向から弾３３２の移動方向を算出する。そして、オブジェクトデータ３２３を読み出し、オブジェクトデータ３２３が表す位置を、算出された移動方向の向きへ、所定の移動量だけ移動させた位置を算出する。そして、オブジェクトデータ３２３が表す位置を移動後の位置に更新して、更新後のオブジェクトデータをメインメモリに記憶する。これによって、弾３３２の位置が更新され、弾３３２が制御方向に移動されたことになる。ステップＳ８８の後、ＣＰＵ１０はゲーム制御処理を終了する。
【０３８９】
ゲーム制御処理の次には、第４のゲーム例においても第３のゲーム例と同様、ステップＳ３〜Ｓ８の処理が実行される。すなわち、ステップＳ４においてテレビ用画像が生成され、ステップＳ５において端末用画像が生成される。さらに、ステップＳ６においてテレビ用画像がテレビ２に表示され、ステップＳ７において端末用画像がハンドヘルドデバイス９の下側ＬＣＤに表示される。なお、第４のゲーム例においては、下側ＬＣＤには、タッチパネル５２の入力面と制御面３３５とが画面上において一致するようにゲーム空間が表示され（制御面３３５は表示されない）、テレビ２には、下側ＬＣＤよりも広い範囲のゲーム空間が表示される（図４３参照）。また、ステップＳ８においてゲームを終了するか否かが判定され、ステップＳ８でゲームを終了すると判定されるまでステップＳ２〜Ｓ８の一連の処理が繰り返し実行される。
【０３９０】
以上で説明した第４のゲーム例のゲーム処理によれば、ハンドヘルドデバイス９の姿勢によって制御面３３５の姿勢が決定され、タッチパネルに対する入力によって制御面３０２上で制御位置が決定される。そして、制御位置によって決められる制御方向へ大砲３３１の弾３３２が発射される。このように、本ゲーム例によれば、プレイヤは、タッチパネル５２を用いて３次元空間における方向を直感的な操作で容易に指示することができる。
【０３９１】
（第３および第４のゲーム例の変形例）
上記第３および第４のゲーム例においては、ＣＰＵ１０は、ゲーム空間内の所定のオブジェクト（手裏剣３０１または弾３３２）の移動方向を制御方向に基づいて制御するゲーム処理を実行した。ここで、ＣＰＵ１０は、オブジェクトの移動方向を制御するゲーム処理に限らず、制御方向に基づくゲーム処理を実行すればよい。例えば、他の実施形態においては、ＣＰＵ１０は、所定位置（例えば仮想カメラの位置）から制御方向に延ばした直線上に配置されるオブジェクトに対して所定の処理を実行してもよい。
【０３９２】
上記第３および第４のゲーム例においては、ハンドヘルドデバイス９がタッチパネル５２を備える場合を例として説明したが、上述のように、ハンドヘルドデバイス９はタッチパッドを備えていてもよい。また、ハンドヘルドデバイス９はタッチパッドを備える場合、ハンドヘルドデバイス９は表示装置を備えていてもよいし、備えていなくてもよい。
【０３９３】
また、タッチパネルまたはタッチパッドとしては、同時に入力された複数の入力位置を検出することが可能な方式（いわゆるマルチタッチ）のものが用いられてもよい。この場合、上記各実施例においては、ＣＰＵ１０は、入力位置毎に制御位置および制御方向を算出してもよい。具体的には、図４２に示すゲーム制御処理においては、ＣＰＵ１０は、ステップＳ６４〜Ｓ６６の処理、および、ステップＳ６８〜Ｓ７０の処理を、入力位置毎に実行してもよい。また、図４５に示すゲーム制御処理においては、ＣＰＵ１０は、ステップＳ８６〜Ｓ８８の処理を入力位置毎に実行してもよい。
【０３９４】
上記第３および第４のゲーム例においては、ハンドヘルドデバイス９自体を傾ける（姿勢を変化させる）操作によって制御面を制御する場合を例として説明した。すなわち、ＣＰＵ１０は、ハンドヘルドデバイス９の動きに応じて値が変化するデータ（加速度データ３１２および角速度データ３１３）に基づいてハンドヘルドデバイス９の姿勢を算出し、ハンドヘルドデバイス９の姿勢に基づいて制御面を制御した。ここで、制御面は、ハンドヘルドデバイス９の動きに応じて少なくとも姿勢が変化するように制御されればよい。例えば、他の実施形態においては、ハンドヘルドデバイス９の位置の変化に応じて制御面が制御されてもよい。具体的には、ＣＰＵ１０は、加速度データ３１２が表す加速度から重力加速度を除いた加速度に基づいて、ハンドヘルドデバイス９の位置の変化を算出することができる。したがって、例えば上記ステップＳ６１またはＳ８２の処理においては、ＣＰＵ１０は、ハンドヘルドデバイス９の位置の変化に応じて制御面の位置および／または姿勢を変化させてもよい（例えば、ハンドヘルドデバイス９の位置が変化した方向に応じた向きに制御面を傾けるようにしてもよい）。これによれば、ハンドヘルドデバイス９を上下左右に移動させることによって制御面の位置および／または姿勢を変化させることができる。
【０３９５】
［１０．変形例］
上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成で本発明を実施することも可能である。
【０３９６】
（入力システムを適用する他の例）
上記各ゲーム例では、仮想空間における３次元位置を算出するための位置算出システムの一例として、プレイヤが操作装置（端末装置７またはハンドヘルドデバイス９）を用いてゲーム操作を行うゲームシステム１を例に説明を行った。ここで、他の実施形態においては、位置算出システムはゲーム用途に限らず、操作装置に対する操作に基づいて仮想空間における３次元位置を算出するための任意の情報処理システムに適用されてもよい。
【０３９７】
（仮想空間に設定される面に関する変形例）
上記各ゲーム例では、３次元の仮想空間に設定される面（制御面）は、平面であった。ここで、他の実施形態においては、３次元の仮想空間に設定される面は曲面であってもよい。例えば、面が球面上あるいは円柱の側面上を移動するように制御される場合（図３０〜図３２）においては、球面あるいは円柱側面に沿った曲面が設定されてもよい。また、上記各ゲーム例では、面は、端末装置７の表示画面の形状と同じ形状であったが、面の形状と表示画面の形状とは異なっていてもよい。なお、上記第１のゲーム例のように、上記面が平面であって、かつ、面が当該面自体に対して平行な方向に移動するように制御される場合には、ユーザが指定可能な範囲は３次元空間における平面内の範囲（奥行き方向の長さを有しない範囲）となる。一方、上記第２〜第４のゲーム例のように、上記面が平面であって、かつ、面が当該面自体に対して平行でない方向に移動するように制御される場合には、ユーザが指定可能な範囲は３次元空間において３次元の範囲（縦、横および奥行き方向の長さを有する範囲）となる。このとき、面は平面であるので、入力面上の位置と面上の位置との対応がユーザにとってわかりやすく、３次元位置の入力操作が容易になる。また、上記面が曲面である場合には、端末装置７の姿勢に応じて面が平行移動する場合であっても、ユーザが指定可能な範囲は３次元空間において３次元の範囲（縦、横および奥行き方向の長さを有する範囲）となる。
【０３９８】
また、上記各ゲーム例においては、端末装置７の姿勢に応じて面の姿勢が少なくとも制御された。ここで、他の実施形態においては、端末装置７の動きに応じて仮想空間において面が決定されればよく、ゲームシステム１は、端末装置７の動きに応じて面の位置、姿勢、および形状の少なくとも１つが変化するようにしてもよい。これによれば、入力面に対する入力によって指定可能な範囲（面上の範囲）が端末装置７の動きに応じて変化し、ユーザが３次元位置を指定することが可能となる。なお、上記「端末装置７の動き」には、端末装置７の位置や姿勢、あるいは、位置や姿勢の変化が含まれる。
【０３９９】
（ゲームシステムの構成に関する変形例）
上記第２のゲーム例においては、ゲームシステム１は、表示装置として、可搬型の端末装置７と、テレビ２とを含む構成であった。ここで、ゲームシステムは、ユーザ（プレイヤ）が把持可能な操作装置を含む構成であれば、例えば、他の実施形態においては、ゲームシステム１は、１つの表示装置（例えばテレビ２）に上記画像を表示し、端末装置７には画像を表示しない構成であってもよい。また、ゲームシステム１は、端末装置７とは異なる２つの表示装置を含む構成であってもよい。このとき、上記第２のゲーム例におけるテレビ用画像が一方の表示装置に表示され、端末用画像が他方の表示装置に表示される。
【０４００】
また、ゲームシステム１は、端末装置７とは別の操作装置として、コントローラ５を含む構成であったが、他の実施形態においては、コントローラ５を含まない構成であってもよい。また、他の実施形態においては、端末装置７に加えてコントローラ５が操作装置としてさらに用いられてもよい。例えば、プレイヤが端末装置７を用いてタッチパネル５２に対して線を描くことによって仮想空間内に図形を描いた場合、ゲーム装置３は、描かれた図形をコントローラ５に対する操作に従って移動させたり変形させたりするようにしてもよい。
【０４０１】
また、仮想空間における３次元位置を算出するための位置算出システムは、複数の装置で実現されるものに限らず、１つの装置によって実現されてもよい。例えば、表示部と、入力面に対する入力が可能な入力デバイス（タッチパネルやタッチパッド等）とを備える携帯型の情報処理装置（ゲーム装置であってもよい）によって位置算出システムが実現されてもよい。このとき、情報処理装置は、タッチパネルが設けられる表示画面に上記第２のゲーム例における端末用画像を表示し、もう一方の表示画面に上記第２のゲーム例におけるテレビ用画像を表示する。また、情報処理装置は、自身の姿勢を算出するための物理量を検出するセンサ（例えば、ジャイロセンサや加速度センサ）を備えていてもよい。
【０４０２】
（入力面における入力位置の検出方法に関する変形例）
上記各ゲーム例においては、操作装置（端末装置７またはハンドヘルドデバイス９）は、所定の入力面に対する入力位置を検出する位置検出部の一例として、ＬＣＤの表画面に設けられるタッチパネル５２を備える構成であった。ここで、他の実施形態においては、位置検出部は、例えばタッチパッドであってもよい。つまり、端末装置７およびハンドヘルドデバイス９は、表示部（ＬＣＤ５１）およびタッチパネル５２を備えず、タッチパッドを備える構成であってもよい。また、操作装置は、ＬＣＤにカーソルを表示し、所定の方向入力操作（例えば、アナログスティックや十字ボタンに対する操作）に従って当該カーソルを移動させ、当該カーソルの位置を入力位置として用いてもよい。
【０４０３】
（ゲーム処理を実行する情報処理装置に関する変形例）
上記各ゲーム例においては、ゲームシステム１において実行される一連のゲーム処理をゲーム装置３が実行したが、ゲーム処理の一部は他の装置によって実行されてもよい。例えば、他の実施形態においては、ゲーム処理の一部（例えば、端末用画像の生成処理）を端末装置７が実行するようにしてもよい。また、他の実施形態では、互いに通信可能な複数の情報処理装置を有する位置算出システムにおいて、当該複数の情報処理装置がゲーム処理を分担して実行するようにしてもよい。
【０４０４】
なお、複数の情報処理装置において上記の情報処理が実行される場合には、各情報処理装置で実行される処理を同期させる必要があり、情報処理が複雑になってしまう。これに対して、上記各ゲーム例のように、情報処理が１つのゲーム装置３によって実行され、端末装置７が画像を受信して表示する処理を行う場合（つまり、端末装置７やハンドヘルドデバイス９がシンクライアント端末として機能する場合）には、複数の情報処理装置間で情報処理の同期をとる必要がなく、情報処理を簡易化することができる。
【０４０５】
上記のように、本明細書で説明した種々のシステム、方法、および技術は、デジタル電子回路、コンピュータハードウェア、ファームウェア、ソフトウェア、またはこれら要素の組み合わせによって提供されてもよい。上記の技術を実現するための装置は、プログラム可能なプロセッサによる実行のためのコンピュータ読み取り可能な非一時的な記憶装置において実体的に具体化されるコンピュータプログラムプロダクト、入出力装置、およびコンピュータプロセッサを含んでもよい。上記技術を実現するための処理は、入力データを処理して所望の出力を生成することによって、要求される機能を実行するためのプログラムを実行する、プログラム可能なプロセッサによって実行されてもよい。上記の技術は、入力装置、出力装置、および情報記憶装置といったハードウェア資源との間でデータや指示のやり取りを行うプログラム可能なプロセッサを含むコンピュータシステム上で実行可能な１以上のコンピュータプログラムによって実現されてもよい。また、各コンピュータプログラムは、手続型やオブジェクト指向型の高水準プログラミング言語、アセンブリ言語、または、機械語によって実現されてもよく、必要に応じてコンパイルまたはインタプリタされて実行されてもよい。また、上記のプロセッサは、汎用または専用のマイクロプロセッサであってもよい。プロセッサは、一般的に、ＲＯＭまたはＲＡＭからデータおよび指示を受け取る。また、上記の記憶装置は、（ａ）ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリのような半導体メモリ装置を含む不揮発性のメモリ、（ｂ）内部ハードディスクあるいは着脱可能な外部ディスクのような磁気ディスク、（ｃ）光磁気ディスク、（ｄ）ＣＤＲＯＭ、に限定されず、あらゆる種類のコンピュータメモリを含む。上記のプロセッサや記憶装置は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）によって補充される、あるいは、ＡＳＩＣに組み込まれる形で実現されてもよい。
【０４０６】
また、本明細書に記載の処理システム（回路）は、本明細書において記載された内容に応じたゲーム処理のような制御処理のためにプログラムされる。上記の内容に応じた指示を実行する少なくとも１つのＣＰＵを含む処理システムが、上記の内容によって定義される処理動作を実行するための「プログラムされた論理回路」として作用するものであってもよい。
【産業上の利用可能性】
【０４０７】
以上のように、本発明は、３次元空間における位置を容易に指定すること等を目的として、例えばゲームシステムやゲーム装置や情報処理プログラムとして利用することが可能である。
【符号の説明】
【０４０８】
１  ゲームシステム
２  テレビ
３  ゲーム装置
４  光ディスク
５  コントローラ
６  マーカ装置
７  端末装置
１０  ＣＰＵ
１１ｅ  内部メインメモリ
１２  外部メインメモリ
５１  ＬＣＤ
５２  タッチパネル
７３  加速度センサ
７４  ジャイロセンサ
８０  無線モジュール
９１  鍵盤オブジェクト
９２  端末オブジェクト
９４，２０１  面
１００，２１０，３１０  ゲームプログラム
１０１  端末操作データ
１０９  端末姿勢データ
１１１  面データ
１１３  指定位置データ
３０２  制御面
【図１】
0005988549.tif 000002
【図２】
0005988549.tif 000003
【図３】
0005988549.tif 000004
【図４】
0005988549.tif 000005
【図５】
0005988549.tif 000006
【図６】
0005988549.tif 000007
【図７】
0005988549.tif 000008
【図８】
0005988549.tif 000009
【図９】
0005988549.tif 000010
【図１０】
0005988549.tif 000011
【図１１】
0005988549.tif 000012
【図１２】
0005988549.tif 000013
【図１３】
0005988549.tif 000014
【図１４】
0005988549.tif 000015
【図１５】
0005988549.tif 000016
【図１６】
0005988549.tif 000017
【図１７】
0005988549.tif 000018
【図１８】
0005988549.tif 000019
【図１９】
0005988549.tif 000020
【図２０】
0005988549.tif 000021
【図２１】
0005988549.tif 000022
【図２２】
0005988549.tif 000023
【図２３】
0005988549.tif 000024
【図２４】
0005988549.tif 000025
【図２５】
0005988549.tif 000026
【図２６】
0005988549.tif 000027
【図２７】
0005988549.tif 000028
【図２８】
0005988549.tif 000029
【図２９】
0005988549.tif 000030
【図３０】
0005988549.tif 000031
【図３１】
0005988549.tif 000032
【図３２】
0005988549.tif 000033
【図３３】
0005988549.tif 000034
【図３４】
0005988549.tif 000035
【図３５】
0005988549.tif 000036
【図３６】
0005988549.tif 000037
【図３７】
0005988549.tif 000038
【図３８】
0005988549.tif 000039
【図３９】
0005988549.tif 000040
【図４０】
0005988549.tif 000041
【図４１】
0005988549.tif 000042
【図４２】
0005988549.tif 000043
【図４３】
0005988549.tif 000044
【図４４】
0005988549.tif 000045
【図４５】
0005988549.tif 000046
【図４６】
0005988549.tif 000047