図1を参照して、本発明の一実施形態に係る情報処理プログラムを実行する情報処理装置について説明する。以下、説明を具体的にするために、当該情報処理装置の一例として据置型のゲーム装置本体5を用い、ゲーム装置本体5を含むゲームシステムについて説明する。なお、図1は、据置型のゲーム装置3を含むゲームシステム1の一例を示す外観図である。図2は、ゲーム装置本体5の一例を示すブロック図である。以下、当該ゲームシステム1について説明する。
図1において、ゲームシステム1は、表示手段の一例である家庭用テレビジョン受像機(以下、モニタと記載する)2と、モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置3から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、本願発明の情報処理プログラムの一例となるプログラム(例えば、ゲームプログラム)を記録した光ディスク4と、光ディスク4のプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、表示画面に表示されたオブジェクト等を操作するために必要な操作情報をゲーム装置本体5に与えるためのコントローラ7とを備えている。
ゲーム装置本体5は、無線コントローラモジュール19(図2参照)を内蔵する。無線コントローラモジュール19は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体5からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体5とを無線通信によって接続する。また、ゲーム装置本体5には、ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着される。
ゲーム装置本体5には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ17(図2参照)が搭載される。ゲーム装置本体5は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。ゲームプログラム等は、光ディスク4に限らず、フラッシュメモリ17に予め記録されたものを実行するようにしてもよい。また、ゲーム装置本体5は、フラッシュメモリ17に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のユーザは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
コントローラ7は、無線コントローラモジュール19を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報等の送信データを無線送信する。コントローラ7は、主にモニタ2の表示画面に表示されるプレイヤオブジェクト等を操作したり、表示された選択肢を選択したりするための操作手段である。コントローラ7は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キー等を含む)とが設けられている。また、後述により明らかとなるが、コントローラ7は、コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。そして、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7は、ゲーム装置本体5の無線コントローラモジュール19から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
次に、図2を参照して、ゲーム装置本体5の内部構成について説明する。図2は、ゲーム装置本体5の構成の一例を示すブロック図である。ゲーム装置本体5は、CPU(Central Processing Unit)10、システムLSI(Large Scale Integration)11、外部メインメモリ12、ROM/RTC(Read Only Memory/Real Time Clock)13、ディスクドライブ14、およびAV−IC(Audio Video−Integrated Circuit)15等を有する。
CPU10は、光ディスク4に記憶されたプログラムを実行することによって処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については、後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたプログラムや、フラッシュメモリ17から読み出されたプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置本体5の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ35または外部メインメモリ12に読み出したデータを書き込む。
システムLSI11には、入出力プロセッサ31、GPU(Graphics Processor Unit)32、DSP(Digital Signal Processor)33、VRAM(Video RAM)34、および内部メインメモリ35が設けられる。図示は省略するが、これらの構成要素31〜35は、内部バスによって互いに接続される。
GPU32は、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM34は、GPU32がグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU32は、VRAM34に記憶されたデータを用いて画像データを作成する。
DSP33は、オーディオプロセッサとして機能し、内部メインメモリ35や外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、AVコネクタ16を介して、読み出した画像データをモニタ2に出力するとともに、読み出した音声データをモニタ2に内蔵されるスピーカ2aに出力する。これによって、画像がモニタ2に表示されるとともに音がスピーカ2aから出力される。
入出力プロセッサ(I/Oプロセッサ)31は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ31は、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、および外部メモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
入出力プロセッサ31は、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ31は、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データがある場合には、無線通信モジュール18およびアンテナ22を介して当該データをネットワークに送信する。また、入出力プロセッサ31は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22、および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10は、プログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してプログラムで利用する。フラッシュメモリ17には、ゲーム装置本体5と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体5を利用してプレイしたゲームのセーブデータ(処理の結果データまたは途中データ)が記憶されてもよい。
入出力プロセッサ31は、アンテナ23および無線コントローラモジュール19を介して、コントローラ7から送信される操作データ等を受信し、内部メインメモリ35または外部メインメモリ12のバッファ領域に記憶(一時記憶)する。なお、内部メインメモリ35には、外部メインメモリ12と同様に、光ディスク4から読み出されたプログラムや、フラッシュメモリ17から読み出されたプログラムを記憶したり、各種データを記憶したりしてもよく、CPU10のワーク領域やバッファ領域として用いられてもかまわない。
入出力プロセッサ31には、拡張コネクタ20および外部メモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ31は、拡張コネクタ20や外部メモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
ゲーム装置本体5(例えば、前部主面)には、当該ゲーム装置本体5の電源ボタン24、ゲーム処理のリセットボタン25、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトボタン26等が設けられている。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置本体5の各構成要素に対して、図示しないACアダプタを介して電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置本体5の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た一例を示す斜視図である。図4は、コントローラ7を下面前方から見た一例を示す斜視図である。
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。ユーザが十字キー72aの何れかの操作部分を押下することによって上下左右(前後左右)何れかの方向を選択される。例えばユーザが十字キー72aを操作することによって、仮想世界に登場するオブジェクト等の移動方向を指示したり、複数の選択肢から選択する指示をしたりすることができる。
なお、十字キー72aは、上述したユーザの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、ユーザによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、十字キー72aの代わりに設けてもかまわない。
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、ユーザがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置本体5が実行するプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、ユーザが不意に誤って押下することのないタイプのボタンである。
ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体5の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、ユーザが不意に誤って押下することのないタイプのボタンである。
ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をユーザに通知するために用いられる。具体的には、無線コントローラモジュール19からコントローラ7へ、複数のLED702のうち、上記コントローラ種別に対応するLEDを点灯させるための信号が送信される。
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5に示すスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、ユーザがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該ユーザの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を後面側から見た一例を示す斜視図である。図6は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を前面側から見た一例を示す斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た状態となっている。
図5において、ハウジング71の内部には基板700が固設されており、基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。そして、無線モジュール753(図7参照)およびアンテナ754によって、コントローラ7がワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データを用いてコントローラ7の動きを良好な感度でゲーム装置本体5等が判定することができる。
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。また、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体5から送信された振動データに応じてその作動をオン/オフする。
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成の一例を示すブロック図である。
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体5からのデータに応じて、サウンドIC707の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体5から送信されたサウンドデータ等を処理する。
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ)を無線コントローラモジュール19へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、無線コントローラモジュール19への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術を用いて、操作情報を示す電波信号を所定周波数の搬送波を用いてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、およびZ軸方向加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置本体5の無線コントローラモジュール19でその電波信号を受信し、ゲーム装置本体5で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、および処理結果データ)を取得する。そして、ゲーム装置本体5のCPU10は、取得した操作情報とプログラムとに基づいて、処理を行う。なお、ブルートゥース(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
ここで、図8に示すように、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、ユーザは、一方の手(例えば右手)でコントローラ7を把持する。そして、ユーザは、コントローラ7の前面(撮像情報演算部74が撮像する光の入射口側)がモニタ2に向くようにコントローラ7を把持する。一方、モニタ2の表示画面近傍には、2つのマーカ8Lおよび8Rが設置されている。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力し、撮像情報演算部74の撮像対象となる。
図9に示すように、マーカ8Lおよび8Rは、それぞれ視野角θ1を有している。また、撮像素子743は、視野角θ2を有している。例えば、マーカ8Lおよび8Rの視野角θ1はともに34°(半値角)であり、撮像素子743の視野角θ2は41°である。そして、撮像素子743の視野角θ2の中にマーカ8Lおよび8Rがともに存在し、マーカ8Lの視野角θ1の中でかつマーカ8Rの視野角θ1の中に撮像素子743が存在するとき、ゲーム装置本体5は、2つのマーカ8Lおよび8Rによる高輝度点に関する位置データを用いてコントローラ7が指し示す位置を算出する。
ユーザがその前面がモニタ2に向くようにコントローラ7を把持することによって、撮像情報演算部74には2つのマーカ8Lおよび8Rが出力した赤外光が入射する。そして、赤外線フィルタ741およびレンズ742を介して、入射した赤外光を撮像素子743が撮像し、当該撮像画像を画像処理回路744が処理する。ここで、撮像情報演算部74は、マーカ8Lおよび8Rから出力される赤外線成分を検出することで、上記撮像画像における当該マーカ8Lおよび8Rの位置情報(対象画像の位置)等を取得する。具体的には、画像処理回路744は、撮像素子743が撮像した画像データを解析して、まず面積情報からマーカ8Lおよび8Rからの赤外光ではあり得ない画像を除外し、さらに輝度が高い点をマーカ8Lおよび8Rそれぞれの位置として判別する。そして、撮像情報演算部74は、判別されたそれらの輝点の重心位置等の位置情報を取得し、上記処理結果データとして出力する。ここで、上記処理結果データである位置情報は、撮像画像における所定の基準点(例えば、撮像画像の中央や左上隅)を原点とした座標値として出力するものでもよく、所定のタイミングにおける輝点位置を基準点として、当該基準位置からの現在の輝点位置の差をベクトルとして出力するものでもよい。つまり、上記対象画像の位置情報は、撮像素子743が撮像した撮像画像に対して所定の基準点を設定した場合に、当該基準点に対する差として用いられるパラメータである。このような位置情報をゲーム装置本体5へ送信することによって、ゲーム装置本体5では、基準からの上記位置情報の差に基づいて、マーカ8Lおよび8Rに対する撮像情報演算部74、すなわちコントローラ7の動き、姿勢、位置等に応じた信号の変化量を得ることができる。具体的には、コントローラ7が動かされることによって、通信部75から送信される画像内の高輝度点の位置が変化するため、高輝度点の位置の変化に対応させた方向入力や座標入力を行うことで、コントローラ7が指し示している位置を操作入力としたり、コントローラ7の移動方向に沿った方向入力や座標入力を行ったりすることができる。なお、後述する情報処理例では、撮像情報演算部74が撮像画像におけるマーカ8Lおよび8Rの対象画像それぞれの重心位置の座標を少なくとも取得し、上記処理結果データとして出力する例を用いる。
このように、コントローラ7の撮像情報演算部74によって、固定的に設置されたマーカ(実施例では、2つのマーカ8Lおよび8Rからの赤外光)を撮像することによって、ゲーム装置本体5におけるゲーム処理において、コントローラ7から出力されるデータを処理してコントローラ7の動き、姿勢、位置等に対応した操作が可能となり、ボタンを押下するような操作ボタンや操作キーとは異なった直感的な操作入力となる。また、上述したように上記マーカは、モニタ2の表示画面近傍に設置されているため、マーカに対する位置をモニタ2の表示画面に対するコントローラ7の動き、姿勢、位置等に換算することも容易に行うことができる。つまり、コントローラ7の動き、姿勢、位置等による処理結果データは、モニタ2の表示画面に直接作用する操作入力(例えば、コントローラ7が指し示す位置を入力)として用いることができる。
次に、ゲーム装置本体5が行う具体的な処理を説明する前に、図10〜図12を用いてゲーム装置本体5で行う情報処理の概要について説明する。図10は、十字キー操作モードにおいてモニタ2に表示される画像の一例を概説する図解図である。図11は、ポインティング操作モードにおいてモニタ2に表示される画像の一例を概説する図解図である。図12は、ポインティング操作モードにおいてモニタ2に表示される画像の他の例を概説する図解図である。以下の説明では、モニタ2に表示された複数の選択肢ボタンから選択して決定する操作を、ユーザがコントローラ7を用いて行う一例を用いる。
図10〜図12において、モニタ2には、ユーザに選択操作を促すための複数の選択肢ボタンが表示される。選択肢ボタンは、それぞれユーザに選択されて決定する操作が行われることによって、当該決定された選択肢ボタンが示す情報処理がゲーム装置本体5によって実行される。なお、以下の説明において、ユーザが複数の選択肢ボタンから選択している選択肢ボタンを、単に選択ボタンと記載する。
一方、ユーザは、コントローラ7を用いて、モニタ2に表示された複数の選択肢ボタンから選択ボタンを選択する操作ができる。ここで、複数の選択肢ボタンから選択ボタンを選択する選択操作においては、コントローラ7の操作ボタン72a(十字キー)をユーザが押下操作することによる選択操作モード(十字キー操作モード)と、コントローラ7を用いてモニタ2の表示画面をユーザが指し示す選択操作(ポインティング操作モード)とが用意されている。
図10において、ゲーム装置本体5が十字キー操作モードで動作している場合、十字キー操作モードであることをユーザに通知するために、例えば十字キーを模した標識を有する操作モード通知がモニタ2に表示される。そして、その時点で選択されている選択ボタンは、当該選択ボタンを示す標識としてその周囲に選択カーソルが付与されるとともに、他の選択肢ボタンに対して相対的に拡大表示される。したがって、ユーザは、選択カーソルが付与されて拡大表示されている選択肢ボタンを、現時点において選択されている選択ボタンであると認識することができる。例えば、選択カーソルは、選択ボタンの少なくとも一部を取り囲む不透明の枠画像で構成されて、モニタ2に表示される。なお、本実施形態においては、モニタ2において透明でも半透明でもない状態で表示される状態を「不透明」と定義し、図10においては選択カーソルの枠画像が不透明であることを斜線領域で示している。なお、十字キー操作モードであることを示す操作モード通知は、操作モードが十字キー操作モードに切り換わった直後から一定の時間だけ表示して非表示にしてもいいし、操作モードが十字キー操作モードである間は常に十字キー操作モードであることを示す操作モード通知を表示してもよい。
十字キー操作モードにおいて、ユーザが操作ボタン72aにおける何れかの方向を押下した場合、当該押下された方向に応じて選択ボタンが変更される。例えば、ユーザが操作ボタン72aにおける右方向を押下した場合、押下前に選択されていた選択ボタンの右側に配置されている選択肢ボタンが選択ボタンとなる。そして、押下前に選択されていた選択ボタンに付与されていた選択カーソルが、その右側に配置されている選択肢ボタンの周囲に移動し、当該選択肢ボタンが拡大表示されることによって、新たな選択ボタンが選択されたことがユーザに示される。一方、上記押下操作前に選択されていた旧選択ボタンは、その周囲から選択カーソルが取り除かれるとともに、拡大表示が解除されることによって他の選択肢ボタンと同様の表示態様に戻ることによって、ユーザの選択から外れたことが示される。
図11および図12において、ゲーム装置本体5がポインティング操作モードで動作している場合、ポインティング操作モードであることをユーザに通知するために、例えば指差し状態の手を模した標識を有する操作モード通知がモニタ2に表示される。そして、十字キー操作モードと同様に、その時点で選択されている選択ボタンは、その周囲に選択カーソルが付与されるとともに、他の選択肢ボタンに対して相対的に拡大表示される。したがって、ポインティング操作モードにおいても、ユーザは、選択カーソルが付与されて拡大表示されている選択肢ボタンを、現時点において選択されている選択ボタンであると認識することができる。また、ポインティング操作モードにおいては、コントローラ7で指し示されている位置を示すポインタとして、ポインティング位置アイコンがモニタ2に表示される(図12参照)。なお、ポインティング操作モードであることを示す操作モード通知は、操作モードがポインティング操作モードに切り換わった直後から一定の時間だけ表示して非表示にしてもいいし、操作モードがポインティング操作モードである間は常にポインティング操作モードであることを示す操作モード通知を表示してもよい。
ここで、ポインティング操作モードにおいては、選択カーソルは、不透明の枠画像で表示される場合と半透明の枠画像で表示される場合とがある。例えば、図11に示すように、ポインティング操作モードにおいて、コントローラ7で指し示されている位置(ポインティング位置)が何れの選択肢ボタン上にもない場合、選択カーソルが半透明の枠画像で表示される。具体的には、ポインティング操作モードにおいて、ユーザのポインティング位置がモニタ2の表示画面外にある場合や表示画面内であっても表示されている選択肢ボタンの画像上にない場合、直前の選択操作によって選択されている選択ボタンの周囲に半透明の選択カーソルが表示され、当該選択ボタンの拡大表示が継続される。一方、図12に示すように、ポインティング操作モードにおいて、ポインティング位置が選択肢ボタンの何れか1つの上にある場合、当該ポインティング位置に配置されている選択肢ボタンが選択ボタンに設定される。すなわち、ポインティング位置に配置されている選択肢ボタンが新たに選択ボタンとなり、当該選択ボタンの周囲に不透明の選択カーソルが配置され、当該選択ボタンが拡大表示されることによって、新たな選択ボタンが選択されたことがユーザに示される。一方、上記ポインティング操作前に選択されていた旧選択ボタンは、その周囲から選択カーソル(典型的には、半透明の選択カーソル)が取り除かれるとともに、拡大表示が解除されることによって他の選択肢ボタンと同様の表示態様に戻ることによって、ユーザの選択から外れたことが示される。
このように、複数の選択肢ボタンから選択ボタンを選択する選択操作においては、操作ボタン72aを押下する選択操作と、コントローラ7で指し示す選択操作とが可能となっている。これらの選択操作は、ユーザの意図に応じて切り替えることができるが、以下のような操作によって一方の操作モードから他方の操作モードへ切り替えることができる。例えば、十字キー操作モードで動作している場合、所定時間以上継続してコントローラ7の操作ボタン72への操作がない状態で、上記ポインティング位置が所定の範囲外(例えば、モニタ2の表示画面外)から当該所定の範囲内(例えば、モニタ2の表示画面内)に移動すれば、ポインティング操作モードに切り替えられる。一方、ポインティング操作モードで動作している場合、コントローラ7の操作ボタン72a(十字キー)が押下されれば、十字キー操作モードに切り替えられる。つまり、ユーザは、上述した操作モードを意識しない状態であっても、操作ボタン72aを押下すれば、当該操作ボタン72aを押下することによって選択操作が可能な十字キー操作モードに切り替えることができる。また、ユーザは、コントローラ7で一旦所定の範囲外を指し示した後、当該所定の範囲内を指し示すような動作を、操作ボタン72を操作することなく行えば、当該コントローラ7で指し示すことによって選択操作が可能なポインティング操作モードに切り替えることができる。特に、ユーザはコントローラ7を用いてモニタ2の表示画面を指し示したい場合に、当該コントローラ7では表示画面を直接指し示すわけではなくユーザが正確に表示画面を指し示しているのか否かを判断しにくいため、ユーザはコントローラ7の向きをいろいろ変化させるような操作を自然に行うことになる。この自然に行われる操作により、一旦所定の範囲外を指し示した後に当該所定の範囲内を指し示すことになり、その結果、十字キー操作モードからポインティング操作モードに移行することになる。すなわち、ユーザがコントローラ7を用いてモニタ2の表示画面を指し示したいという意思が働いたときの自然な操作でポインティング操作モードに切り替わることになる。
次に、ゲームシステム1において行われる処理の詳細を説明する。まず、図13を参照して、処理において用いられる主なデータについて説明する。なお、図13は、ゲーム装置本体5の外部メインメモリ12および/または内部メインメモリ35(以下、2つのメインメモリを総称して、単にメインメモリと記載する)に記憶される主なデータおよびプログラムの一例を示す図である。
図13に示すように、メインメモリのデータ記憶領域には、操作データDa、指示位置データDb、選択肢ボタンデータDc、選択ボタンデータDd、選択カーソルデータDe、操作モードデータDf、キー未入力時間データDg、画面外フラグデータDh、および画像データDi等が記憶される。なお、メインメモリには、図13に示す情報に含まれるデータの他、モニタ2に表示される他のオブジェクト等に関するデータ等、処理に必要なデータが記憶される。また、メインメモリのプログラム記憶領域には、情報処理プログラムを構成する各種プログラム群Paが記憶される。
操作データDaは、コントローラ7から送信データとして送信されてくる一連の操作情報が格納され、最新の操作データに更新される。操作データDaは、キーデータDa1、第1座標データDa2、および第2座標データDa3等を含んでいる。キーデータDa1は、コントローラ7の操作部72に対する操作を示すデータであり、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる最新のキーデータが格納される。第1座標データDa2および第2座標データDa3は、上述の処理結果データの位置情報に相当するデータである。第1座標データDa2は、撮像素子743が撮像した撮像画像に対して、2つのマーカ8Lおよび8Rのうちの一方の画像の位置(撮像画像内における位置)を示すデータである。第2座標データDa3は、他方のマーカの画像の位置(撮像画像内における位置)を示すデータである。例えば、撮像画像におけるマーカの画像の位置は、撮像画像におけるxy座標系によって表される。
なお、ゲーム装置本体5に備える無線コントローラモジュール19は、コントローラ7から所定周期(例えば、1/200秒毎)に送信される操作情報に含まれるキーデータおよび処理結果データを受信し、無線コントローラモジュール19に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられたキーデータおよび加速度データが処理周期である1フレーム毎(例えば、1/60秒毎)に読み出されて、メインメモリのキーデータDa1、第1座標データDa2、および第2座標データDa3がそれぞれ更新される。
このとき、操作情報を受信する周期と処理周期とが異なるために、上記バッファには複数の時点に受信した操作情報が記述されていることになる。後述する処理の説明においては、後述する各ステップにおいて、複数の時点に受信した操作情報のうち最新の操作情報のみを常に用いて処理して、次のステップに進める態様を用いる。
また、後述する処理フローでは、キーデータDa1、第1座標データDa2、および第2座標データDa3が処理周期である1フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コントローラ7からの送信周期毎にキーデータDa1、第1座標データDa2、および第2座標データDa3をそれぞれ更新し、当該更新されたキーデータDa1、第1座標データDa2、および第2座標データDa3を処理周期毎に利用する態様でもかまわない。この場合、キーデータDa1、第1座標データDa2、および第2座標データDa3を更新する周期と、他の処理周期とが異なることになる。
指示位置データDbは、モニタ2の表示画面に表示されている表示画像(仮想世界)において、ユーザがコントローラ7で指し示すポインティング操作に応じて設定されるユーザの指示位置(ポインティング位置)を示すデータである。
選択肢ボタンデータDcは、モニタ2に表示する複数の選択肢ボタンおよび選択ボタン(図10〜図12参照)に関するデータである。例えば、選択肢ボタンデータDcは、複数の選択肢ボタン(選択ボタンを含む)毎に、ボタンの表示位置、表示形状、表示サイズ、表示内容、および対応する情報処理の内容等を示すデータを含んでいる。選択ボタンデータDdは、複数の選択肢ボタンから選択されている選択ボタン(図10〜図12参照)に関するデータである。例えば、選択ボタンデータDdは、選択肢ボタンから選択ボタンとして選択されているボタンを区別するデータを含んでいる。選択カーソルデータDeは、モニタ2に表示する選択カーソル(図10〜図12参照)に関するデータである。例えば、選択カーソルデータDeは、選択カーソルの表示位置、表示形状、表示サイズ、および表示態様(不透明や半透明)等を示すデータを含んでいる。
操作モードデータDfは、現時点で設定されている操作モード(例えば、十字キー操作モード、ポインティング操作モード)を示すデータである。キー未入力時間データDgは、コントローラ7の操作ボタン72に対して、操作が行われていない状態が継続している時間(キー未入力時間T)を示すデータである。画面外フラグデータDhは、ユーザの指示位置(ポインティング位置)がモニタ2の表示画面外に出た場合にオンに設定される画面外フラグを示すデータである。
画像データDiは、選択肢ボタン画像データDi1、選択カーソル画像データDi2、操作モード通知画像データDi3、および背景画像データDi4等を含んでいる。選択肢ボタン画像データDi1は、表示画面に選択肢ボタンや選択ボタン等を配置して表示画像を生成するためのデータである。選択カーソル画像データDi2は、表示画面に選択カーソルを配置して表示画像を生成するためのデータである。操作モード通知画像データDi3は、表示画面に操作モード通知(図10〜図12参照)を配置して表示画像を生成するためのデータである。背景画像データDi4は、表示画面に背景を配置して画像を生成するためのデータである。
次に、図14〜図16を参照して、ゲーム装置本体5において行われる処理の詳細を説明する。なお、図14は、ゲーム装置本体5において実行される処理の一例を示すフローチャートである。図15は、図14におけるステップ42の十字キー操作処理の一例を示すサブルーチンである。図16は、図14におけるステップ51のポインティング操作処理の一例を示すサブルーチンである。ここで、図14〜図16に示すフローチャートにおいては、処理のうち、ユーザの操作に応じて、選択肢ボタンから選択ボタンを選択して決定する処理について主に説明し、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図14〜図16では、CPU10が実行する各ステップを「S」と略称する。
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU10は、ROM/RTC13に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶された情報処理プログラムがメインメモリに読み込まれ、CPU10によって当該プログラムの実行が開始される。図14〜図16に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
図14において、CPU10は、処理の初期設定を行い(ステップ41)、次のステップに処理を進める。例えば、上記ステップ41における初期設定において、CPU10は、ユーザに選択を促す表示画面を初期設定して、各パラメータを初期化する。例えば、上記初期設定において、CPU10は、初期配置する選択肢ボタンの表示位置、表示形状、表示サイズ、表示内容、および対応する情報処理の内容等を示すデータを設定し、選択肢ボタンデータDcを更新する。また、上記初期設定において、CPU10は、初期配置された選択肢ボタンのうち、所定のデフォルト位置に配置された選択肢ボタンを選択ボタンに初期設定し、当該初期設定された選択ボタンが拡大表示されて周囲に選択カーソルが設定されるように、選択肢ボタンデータDc、選択ボタンデータDd、および選択カーソルデータDeを更新する。さらに、上記初期設定において、CPU10は、他のデータを所定の値(例えば、0、空値、またはNull値)に初期化する。
次に、CPU10は、十字キー操作処理を行い(ステップ42)、次のステップに処理を進める。以下、図15を参照して、上記ステップ42で行う十字キー操作処理について説明する。
図15において、CPU10は、動作モードを十字キー操作モードに設定し(ステップ60)、次のステップに処理を進める。例えば、CPU10は、操作モードデータDfが示す操作モードを十字キー操作モードに設定する。
次に、CPU10は、選択肢ボタン、選択ボタン、選択カーソル、および操作モード通知等を表示画面に配置して表示する処理を行い(ステップ61)、次のステップに処理を進める。例えば、CPU10は、選択肢ボタンデータDc、選択ボタンデータDd、選択カーソルデータDe、操作モードデータDf、および画像データDiに基づいた表示位置、表示形状、表示サイズ、および表示内容等を用いて、選択肢ボタン、選択ボタン、選択カーソル、および操作モード通知等を配置して、モニタ2に表示する。ここで、上記ステップ61において、CPU10は、ポインティング位置アイコンを表示画面に表示していない。なお、CPU10は、前回の処理においてポインティング位置アイコンが表示画面に表示されている場合、当該ポインティング位置アイコンを表示画面から削除する。
次に、CPU10は、コントローラ7から操作情報を示すデータを取得し(ステップ62)、次のステップに処理を進める。例えば、CPU10は、コントローラ7から受信した操作情報を取得し、当該操作情報に含まれる最新のキーデータおよび処理結果データを用いて、キーデータDa1、第1座標データDa2、および第2座標データDa3を更新する。また、CPU10は、更新された第1座標データDa2および第2座標データDa3を用いて、スクリーン座標系の位置座標を指示位置(ポインティング位置)として算出し、指示位置データDbを更新する。なお、撮像情報演算部74の撮像画像にマーカ8Lおよび8Rが撮像されていない等によって上記指示位置が算出できない場合、CPU10は、Null値を示すデータを用いて指示位置データDbを更新する。以下、操作情報を用いて、指示座標を算出する一例について詳述する。
例えば、CPU10は、第1座標データDa2が示す位置から第2座標データDa3が示す位置への方向を算出する。具体的には、CPU10は、第1座標データDa2および第2座標データDa3を参照して、第1座標データDa2が示す位置を始点とし第2座標データDa3が示す位置を終点とするベクトルを算出する。このベクトルが示す方向と所定の基準方向との差によって、コントローラ7の撮像面に垂直な方向を軸とする回転を算出することができる。
また、CPU10は、第1座標データDa2が示す位置と第2座標データDa3が示す位置との中点の位置を算出する。この中点の位置は、撮像画像内における対象画像(マーカ8Lおよび8R)の位置を示しており、中点の位置と所定の基準位置との差によって、コントローラ7の位置の変化による画像位置の変化を算出することができる。
ここで、マーカ8Lおよび8Rと、モニタ2の表示画面と、コントローラ7との位置関係について考える。例えば、モニタ2の上面に2つのマーカ8Lおよび8Rを設置し(図1参照)、上面が上方向を向いたコントローラ7を用いてユーザがモニタ2の表示画面の中央を指し示した場合(撮像情報演算部74の撮像画像の中央に表示画面中央が撮像されている状態)を考える。このとき、撮像情報演算部74の撮像画像において、対象画像の中点(マーカ8Lおよび8Rの中点)位置と指し示した位置(表示画面中央)とが一致しない。具体的には、上記撮像画像における対象画像の位置は、撮像画像の中心から上方の位置となる。このような位置に対象画像が位置する場合に、表示画面中央を指し示しているという基準位置の設定を行う。一方、コントローラ7の移動に対応して、撮像画像中の対象画像の位置も移動する(移動方向は逆方向となる)ので、撮像画像中の対象画像の位置の移動に対応させて表示画面を指し示す位置を移動させる処理を行うことによって、コントローラ7で指し示された表示画面基準の位置(スクリーン座標系の位置座標)を算出することができる。ここで、基準位置の設定は、予めユーザが表示画面の所定位置を指し示し、そのときの対象画像の位置を当該所定位置と対応させて記憶しておくようにしてもよいし、マーカ8Lおよび8Rと表示画面との位置関係が固定的であれば、予め設定されていてもよい。また、マーカ8Lおよび8Rが、モニタ2とは別体で設けられてモニタ2の近く(モニタ2の上や下など)に載置されて使用されるものである場合には、ゲーム開始前に、マーカ8Lおよび8Rをモニタに対してどの位置に載置しているかをユーザに入力させ(例えば、モニタ2の上に載置したか下に載置したか等の選択肢から選択させ)、光ディスク4やゲーム装置本体5に内蔵された不揮発メモリなどに、モニタの上に載置した場合の基準位置データと、モニタの下に載置した場合の基準位置データをそれぞれ記憶しておいて、それらを選択して使用してもよい。このようなスクリーン座標系の指示位置は、中点の位置からモニタ2の表示画面基準の座標を算出する関数を用いた線形変換で算出される。この関数は、ある撮像画像から算出される中点の位置の値(座標)を、当該撮像画像が撮像されるときのコントローラ7によって指し示される表示画面上の位置(スクリーン座標系の位置座標)を表す座標に変換するものである。この関数によって、中点の位置から表示画面を基準とした指示位置(ポインティング位置)を算出することができる。
しかしながら、上面が上方向以外(例えば、右方向)を向いたコントローラ7を用いてユーザがモニタ2の表示画面の中央を指し示した場合、上記撮像画像における対象画像の位置は撮像画像の中心から上方以外(例えば、左方)の方向にずれた位置となる。つまり、コントローラ7の傾きによって、コントローラ7の移動方向と、表示画面基準の指示位置の移動方向が一致しないことになる。そこで、上記ベクトルが示す方向に基づいて、中点の位置を補正する。具体的には、中点の位置を、コントローラ7の上面が上方向を向いた状態であるとした場合における中点の位置に補正する。より具体的には、上記基準位置の設定の際には上記ベクトルが示す方向の基準も設定され、中点の位置を、当該方向と当該基準方向との角度差に応じた量だけ、撮像画像の中心を軸として中点の位置を回転移動させて補正する。そして、補正された中点の位置を用いて上述したように指示位置を算出する。
次に、CPU10は、十字キー(操作ボタン72a)が押下操作されているか否かを判断する(ステップ63)。そして、CPU10は、十字キーが押下操作されている場合、次のステップ64に処理を進める。一方、CPU10は、十字キーが押下操作されていない場合、当該サブルーチンによる処理を終了する。例えば、CPU10は、キーデータDa1を参照して、十字キー(操作ボタン72a)が押下操作されているか否かを判断する。
ステップ64において、CPU10は、十字キーが押下された操作指示方向に応じて、選択ボタンを変更し、次のステップに処理を進める。例えば、CPU10は、キーデータDa1、選択肢ボタンデータDc、および選択ボタンデータDdを参照して、上記操作指示方向に応じた選択ボタンを設定する。具体的には、十字キーにおける右方向が押下操作されたことをキーデータDa1が示している場合、CPU10は、選択ボタンデータDdが示す選択ボタンの右側に配置されている選択肢ボタンを、選択肢ボタンデータDcを参照して抽出する。そして、CPU10は、上記抽出された選択肢ボタンを新たな選択ボタンに設定して、選択ボタンデータDdを更新する。つまり、上記ステップ64では、選択ボタンデータDdが示していた選択ボタンは破棄され、上記抽出された選択肢ボタンが新たな選択ボタンとして設定されることになる。
なお、十字キーの押下操作に応じて、新たな選択ボタンに変更する方式は、任意の方式を用いればよい。一例として、十字キーが1回押下操作されることによって、当該押下操作された操作指示方向へ1つ選択ボタンをずらす方式が考えられる。この場合、十字キーが押下操作されていない状態から押下操作されている状態に変化したことを契機に、当該押下操作された操作指示方向へ選択ボタンが変更される。他の例として、十字キーが押下操作されることによって、当該押下操作された操作指示方向へ1つ選択ボタンをずらすとともに、十字キーが継続して押下操作されている場合に所定時間毎にさらに当該押下操作されている操作指示方向へ1つ選択ボタンをずらす方式が考えられる。この場合、十字キーが押下操作されていない状態から押下操作されている状態に変化したことを契機および継続して押下操作されている場合の所定時間毎を契機に、当該押下操作された操作指示方向へ選択ボタンが変更される。
次に、CPU10は、上記ステップ64で設定された新たな選択ボタンを拡大表示し、それまでに設定されていた旧選択ボタンを通常のサイズに縮小表示する設定を行い(ステップ65)、次のステップに処理を進める。例えば、CPU10は、上記ステップ64で設定された新たな選択ボタンに対応する選択肢ボタンの表示サイズを拡大して設定し、選択肢ボタンデータDcにおいて対応する選択肢ボタンの表示サイズを、当該拡大後の表示サイズを用いて更新する。また、CPU10は、上記ステップ64において新たな選択ボタンが設定されるまで設定されていた旧選択ボタンの表示サイズを、他の選択肢ボタンと実質的に同等のサイズに縮小し、選択肢ボタンデータDcにおいて対応する選択肢ボタンの表示サイズを、当該縮小後の表示サイズを用いて更新する。
次に、CPU10は、上記ステップ64で設定された新たな選択ボタンの周囲に選択カーソルを移動させ(ステップ66)、当該サブルーチンによる処理を終了する。例えば、CPU10は、上記ステップ64で設定された新たな選択ボタンの周囲に選択カーソルが配置されるように、スクリーン座標系における選択カーソルの位置を設定し、設定された位置を用いて選択カーソルデータDeを更新する。また、CPU10は、選択カーソルの表示態様を不透明に設定して選択カーソルデータDeを更新する。
図14に戻り、上記ステップ42における十字キー操作処理の後、CPU10は、決定操作が行われたか否かを判断する(ステップ43)。ここで、決定操作は、コントローラ7の所定の操作ボタン72(例えば、操作ボタン72d(Aボタン))が押下されることによって行われる。例えば、上記ステップ43において、CPU10は、キーデータDa1を参照し、上記決定操作が行われたか否かを判断する。そして、CPU10は、決定操作が行われていない場合、次のステップ44に処理を進める。一方、CPU10は、決定操作が行われた場合、次のステップ54に処理を進める。
ステップ44において、CPU10は、コントローラ7における何れかのキー(操作ボタン72の何れか)が操作されているか否かを判断する。そして、CPU10は、何れのキーも操作されていない場合、次のステップ45に処理を進める。一方、CPU10は、何れかのキーが操作されている場合、次のステップ46に処理を進める。例えば、上記ステップ44において、CPU10は、キーデータDa1を参照して操作ボタン72の何れかが操作されたか否かを判断する。
ステップ45において、CPU10は、何れのキーも操作されていない場合にキー未入力時間Tに1を加算して、次のステップ47に処理を進める。例えば、CPU10は、キー未入力時間データDgが示すキー未入力時間Tに1を加算し、加算後のキー未入力時間Tを用いてキー未入力時間データDgを更新する。
一方、ステップ46において、CPU10は、何れかのキーが操作されている場合にキー未入力時間Tを0に初期化して、上記ステップ42に戻って処理を繰り返す。例えば、CPU10は、キー未入力時間データDgが示すキー未入力時間Tを0に初期化し、初期化されたキー未入力時間Tを用いてキー未入力時間データDgを更新する。
ステップ47において、CPU10は、キー未入力時間データDgが示すキー未入力時間Tが閾値Tmax(例えば、2秒)以上か否かを判断する。そして、CPU10は、キー未入力時間Tが閾値Tmax以上である場合、次のステップ48に処理を進める。一方、CPU10は、キー未入力時間Tが閾値Tmax未満である場合、上記ステップ42に戻って処理を繰り返す。
ステップ48において、CPU10は、指示位置データDbが示す指示位置が表示画面内か否かを判断する。そして、CPU10は、指示位置が表示画面内である場合、次のステップ50に処理を進める。一方、CPU10は、指示位置が表示画面外である場合や指示位置が算出されていない場合、画面外フラグをオンに設定して画面外フラグデータDhを更新し(ステップ49)、上記ステップ42に戻って処理を繰り返す。
なお、上述した処理では、キー未入力時間Tが閾値Tmax以上である場合のみ、画面外フラグがオンまたはオフに切り替えられる例を示したが、他のタイミングでも画面外フラグのオン/オフを切り替えてもかまわない。例えば、上記十字キー操作処理(ステップ42)中や後述するポインティング操作処理(ステップ51)中において、指示位置が表示画面内である場合に画面外フラグをオフし、指示位置が表示画面外である場合に画面外フラグをオンに切り替える処理を常に行ってもかまわない。
ステップ50において、CPU10は、画面外フラグデータDhが示す画面外フラグがオンに設定されているか否かを判断する。そして、CPU10は、画面外フラグがオンに設定されている場合、キー未入力時間データDgが示すキー未入力時間Tを0に初期化し、画面外フラグをオフに設定して画面外フラグデータDhを更新して、次のステップ51に処理を進める。一方、CPU10は、画面外フラグがオフに設定されている場合、上記ステップ42に戻って処理を繰り返す。
ステップ51において、CPU10は、ポインティング操作処理を行い、次のステップに処理を進める。以下、図16を参照して、上記ステップ51で行うポインティング操作処理について説明する。
図16において、CPU10は、動作モードをポインティング操作モードに設定し(ステップ81)、次のステップに処理を進める。例えば、CPU10は、操作モードデータDfが示す操作モードをポインティング操作モードに設定する。
次に、CPU10は、コントローラ7から操作情報を示すデータを取得し(ステップ82)、次のステップに処理を進める。例えば、CPU10は、コントローラ7から受信した操作情報を取得し、当該操作情報に含まれる最新のキーデータおよび処理結果データを用いて、キーデータDa1、第1座標データDa2、および第2座標データDa3を更新する。また、CPU10は、更新された第1座標データDa2および第2座標データDa3を用いて、スクリーン座標系の位置座標を指示位置(ポインティング位置)として算出し、指示位置データDbを更新する。なお、指示位置の算出方法の一例については、上記ステップ62の処理と同様であるため、ここでは詳細な説明を省略する。
次に、CPU10は、選択肢ボタン、選択ボタン、選択カーソル、操作モード通知、およびポインティング位置アイコン等を表示画面に配置して表示する処理を行い(ステップ83)、次のステップに処理を進める。例えば、CPU10は、指示位置データDb、選択肢ボタンデータDc、選択ボタンデータDd、選択カーソルデータDe、操作モードデータDf、および画像データDiに基づいた表示位置、表示形状、表示サイズ、および表示内容等を用いて、選択肢ボタン、選択ボタン、選択カーソル、操作モード通知、およびポインティング位置アイコン等を配置して、モニタ2に表示する。ここで、CPU10は、指示位置データDbが示す指示位置に対応するスクリーン座標系の位置にポインティング位置アイコンを配置するが、当該位置が表示画面外である場合や指示位置が算出されていない場合、結果的にポインティング位置アイコンが表示画面内に表示されないことになる。
次に、CPU10は、指示位置が何れかの選択肢ボタン内または選択ボタン内にあるか否かを判断する(ステップ84)。そして、CPU10は、指示位置が何れかの選択肢ボタン内または選択ボタン内にある場合、次のステップ85に処理を進める。一方、指示位置が何れの選択肢ボタン内にも選択ボタン内にもない場合や指示位置が算出されていない場合、次のステップ90に処理を進める。例えば、CPU10は、選択肢ボタンデータDcを用いて各選択肢ボタンおよび選択ボタンの位置、表示サイズ、および表示形状を管理しており、当該データおよび指示位置データDbを用いて、指示位置が何れかの選択肢ボタン内または選択ボタン内にあるか否かを判断する。
ステップ85において、CPU10は、指示位置が選択ボタン内にあるか否かを判断する。そして、CPU10は、指示位置が選択ボタン内にない場合(すなわち、選択肢ボタン内にある場合)、次のステップ86に処理を進める。一方、指示位置が選択ボタン内にある場合、次のステップ89に処理を進める。例えば、CPU10は、選択肢ボタンデータDcおよび選択ボタンデータDdを用いて、指示位置が選択ボタン内にあるか否かを判断する。
ステップ86において、CPU10は、指示位置が含まれる選択肢ボタンを新たな選択ボタンに設定し、次のステップに処理を進める。例えば、CPU10は、指示位置データDbおよび選択肢ボタンデータDcを参照して、指示位置が含まれる選択肢ボタンを抽出する。そして、CPU10は、上記抽出された選択肢ボタンを新たな選択ボタンに設定して、選択ボタンデータDdを更新する。つまり、上記ステップ86では、選択ボタンデータDdが示していた選択ボタンは破棄され、上記抽出された選択肢ボタンが新たな選択ボタンとして設定されることになる。
次に、CPU10は、上記ステップ86で設定された新たな選択ボタンを拡大表示し、それまでに設定されていた旧選択ボタンを通常のサイズに縮小表示する設定を行い(ステップ87)、次のステップに処理を進める。例えば、CPU10は、上記ステップ86で設定された新たな選択ボタンに対応する選択肢ボタンの表示サイズを拡大して設定し、選択肢ボタンデータDcにおいて対応する選択肢ボタンの表示サイズを、当該拡大後の表示サイズを用いて更新する。また、CPU10は、上記ステップ64において新たな選択ボタンが設定されるまで設定されていた旧選択ボタンの表示サイズを、他の選択肢ボタンと実質的に同等のサイズに縮小し、選択肢ボタンデータDcにおいて対応する選択肢ボタンの表示サイズを、当該縮小後の表示サイズを用いて更新する。
次に、CPU10は、上記ステップ86で設定された新たな選択ボタンの周囲に選択カーソルを移動させ(ステップ88)、次のステップ89に処理を進める。例えば、CPU10は、上記ステップ86で設定された新たな選択ボタンの周囲に選択カーソルが配置されるように、スクリーン座標系における選択カーソルの位置を設定し、設定された位置を用いて選択カーソルデータDeを更新する。
ステップ89において、CPU10は、選択カーソルの表示態様を不透明に設定して選択カーソルデータDeを更新し、当該サブルーチンによる処理を終了する。
一方、ステップ90において、CPU10は、選択カーソルの表示態様を半透明に設定して選択カーソルデータDeを更新し、当該サブルーチンによる処理を終了する。
図14に戻り、上記ステップ51におけるポインティング操作処理の後、CPU10は、決定操作が行われたか否かを判断する(ステップ52)。ここで、決定操作は、コントローラ7の所定の操作ボタン72(例えば、操作ボタン72d(Aボタン))が押下されることによって行われる。例えば、上記ステップ52において、CPU10は、キーデータDa1を参照し、上記決定操作が行われたか否かを判断する。そして、CPU10は、決定操作が行われていない場合、次のステップ53に処理を進める。一方、CPU10は、決定操作が行われた場合、次のステップ54に処理を進める。
ステップ53において、CPU10は、操作ボタン72a(十字キー)が操作されているか否かを判断する。そして、CPU10は、操作ボタン72aが操作されていない場合、上記ステップ51に戻って処理を繰り返す。一方、CPU10は、操作ボタン72aが操作されている場合、上記ステップ42に戻って処理を繰り返す。例えば、上記ステップ53において、CPU10は、キーデータDa1を参照して操作ボタン72aが操作されているか否かを判断する。
ステップ54において、CPU10は、ユーザによって選択された選択肢に応じた処理を実行し、当該フローチャートによる処理を終了する。ここで、上記ステップ54の処理は、上記ステップ43またはステップ52の判定処理において肯定判定された、すなわちユーザが決定操作を行った場合に行われる。この場合、上記ステップ42における十字キー操作処理または上記ステップ51におけるポインティング操作処理において、何れかの選択肢ボタンが選択ボタンとして選択されている。したがって、上記ステップ54において、CPU10は、決定操作された時点で選択されている選択ボタンに対応する情報処理の内容を選択肢ボタンデータDcを参照して取得し、当該情報処理の実行を開始する。
このように、上述した処理によれば、操作ボタン72を押下する操作およびコントローラ7で指し示す操作の一方を選択して所定の情報処理を行う場合、ユーザの意図に応じて操作方法を切り替えることができる。
なお、上述した説明では、コントローラ7の操作ボタン72a(十字キー)をユーザが押下操作することによる選択操作モード(十字キー操作モード)と、コントローラ7を用いてモニタ2の表示画面をユーザが指し示す選択操作(ポインティング操作モード)とが用意されている例を用いたが、他の選択操作の組み合わせでも本発明を実現することができる。例えば、コントローラ7に設けられた他の操作ボタン72をユーザが押下操作することによる選択操作モードと、上記ポインティング操作モードとを用意して、当該操作モードを同様に切り替えてもかまわない。また、上述したように、十字方向の4つのプッシュスイッチ、4つのプッシュスイッチとセンタスイッチとを複合した操作部、ジョイスティック、円盤状部材をスライドさせる操作部、タッチパッド等がコントローラ7に設けられている場合、これらのデバイスをユーザが操作することによる選択操作モードと、上記ポインティング操作モードとを用意して、当該操作モードを同様に切り替えてもかまわない。
また、キーボードのキー(例えば、方向キー)をユーザが押下操作することによる選択操作モード(方向キー操作モード)と、マウスを用いて表示画面上の位置を指定する選択操作(マウス操作モード)とを用意して、これらの操作を切り替える態様でもかまわない。以下、図17Aおよび図17Bを参照して、上記方向操作モードとマウス操作モードとを切り替える例について説明する。なお、図17Aは、方向キー操作モードにおいてモニタ2に表示される画像の一例を概説する図解図である。図17Bは、マウス操作モードにおいてモニタ2に表示される画像の一例を概説する図解図である。
図17Aにおいて、モニタ2には、上述した例と同様に、ユーザに選択操作を促すための複数の選択肢ボタンおよび選択ボタンが表示されている。ゲーム装置本体5が方向キー操作モードで動作している場合、方向キー操作モードであることをユーザに通知するために、例えば方向キーを模した標識を有する操作モード通知がモニタ2に表示される。そして、その時点で選択されている選択ボタンは、その周囲に不透明の選択カーソルが付与されるとともに、他の選択肢ボタンに対して相対的に拡大表示される。
このような方向キー操作モードでゲーム装置本体5が動作している状態で、ユーザがマウス操作モードに切り替えたい場合、所定時間以上継続してキーボードへのキー入力がない状態で、マウスによる指示位置(ポインティング位置)が所定の範囲外から当該所定の範囲内に移動すれば、マウス操作モードに切り替えられる。ここで、一般的に、マウスを用いて表示画面上の位置を指定する場合、表示画面外を指定できないことが多く、当該指定可能な範囲は表示画面内に限定されている。したがって、マウスを選択操作に用いる場合は、モニタ2の表示画面全体を切り替え判定に用いる上記所定の範囲に設定することはできない。したがって、マウス操作モードへの切り替えに用いる上記所定の範囲を、モニタ2に表示可能な表示領域の内部に設けることによって、上記切り替え判定を行う。例えば、図17Aに示すように、モニタ2の表示領域の外縁領域を除いた判定領域Arを設定する。そして、所定時間以上継続してキーボードへのキー入力がない状態で、マウスによる指示位置が判定領域Ar外から判定領域Ar内に移動すれば、マウス操作モードに切り替える。このように、選択操作を切り替える際に用いられる所定の範囲は、表示画面全体と等しい範囲または表示画面全体より大きな範囲に設定してもいいし、表示画面内部の一部に設けてもよい。なお、図17Aにおいては、方向キー操作モードにおいて指示位置が記載されているが、これは判定領域Ar外に指示位置が設定されている例をわかりやすくするためであり、モニタ2には指示位置を示す画像が表示されなくてもかまわない。
上記切り替え操作の後、ゲーム装置本体5がマウス操作モードで動作を開始すれば、マウス操作モードであることをユーザに通知するために、例えばマウスを模した標識を有する操作モード通知がモニタ2に表示される(図17B参照)。そして、方向キー操作モードと同様に、その時点で選択されている選択ボタンは、その周囲に選択カーソルが付与されるとともに、他の選択肢ボタンに対して相対的に拡大表示される。また、マウス操作モードにおいては、マウスによる指示位置を示す標識として、ポインティング位置アイコンがモニタ2に表示される。
ここで、マウス操作モードにおいても、選択カーソルは、不透明の枠画像で表示される場合と半透明の枠画像で表示される場合とがある。例えば、図17Bに示すように、マウス操作モードにおいて、マウスの指示位置が何れの選択肢ボタン上にもない場合、選択カーソルが半透明の枠画像で表示される。具体的には、マウス操作モードにおいて、ユーザの指示位置が表示されている選択肢ボタンの画像上にない場合、直前の選択操作によって選択されている選択ボタンの周囲に半透明の選択カーソルが表示され、当該選択ボタンの拡大表示が継続される。一方、マウス操作モードにおいて、マウスの指示位置が選択肢ボタンの何れか1つの上にある場合、当該指示位置に配置されている選択肢ボタンが選択ボタンに設定される。すなわち、マウスの指示位置と重なって配置されている選択肢ボタンが新たに選択ボタンとなり、当該選択ボタンの周囲に不透明の選択カーソルが配置され、当該選択ボタンが拡大表示されることによって、新たな選択ボタンが選択されたことがユーザに示される。
また、上述した説明においては、操作ボタン72a(十字キー)をユーザが押下操作することによる選択操作モード(十字キー操作モード)およびコントローラ7を用いてモニタ2の表示画面をユーザが指し示す選択操作(ポインティング操作モード)とを切り替える態様と、キーボードの方向キーをユーザが押下操作することによる選択操作モード(方向キー操作モード)およびマウスを用いて表示画面上の位置を指定する選択操作(マウス操作モード)とを切り替える態様とを用いた。これらは、ボタンを押下操作することによる選択操作モード(十字キー操作モード、方向キー操作モード)と、ポインティングデバイスを用いた選択操作モード(ポインティング操作モード、マウス操作モード)とを切り替えていることになるが、他のデバイスを用いた選択操作を切り替えてもかまわない。例えば、タッチパネルをタッチ操作することによる選択操作モード(タッチ操作モード)と、上記ポインティング操作モードとを切り替えてもよい。これは、ポインティングデバイスを用いた選択操作モード(タッチ操作モード)と当該ポインティングデバイスとは別のポインティングデバイスを用いた選択操作モード(ポインティング操作モード、マウス操作モード)とを切り替えていることになる。なお、本説明で用いたタッチパネルは、他のデバイスでもよい。例えば、上記タッチパネルに代えて、トラックパッド、トラックボール、ペンタブレット、ジョイスティック等でも実現可能である。
この場合、所定時間以上継続してタッチパネルへのタッチ操作がない状態で、コントローラ7が指し示す位置またはマウスの指示位置が所定の範囲外から当該所定の範囲内に移動すれば、タッチ操作モードからポインティング操作モードまたはマウス操作モードに切り替えられる。一方、タッチパネルがタッチ操作されれば、ポインティング操作モードまたはマウス操作モードからタッチ操作モードに切り替えられる。このように、ユーザは、上述したタッチ操作モード、ポインティング操作モード、およびマウス操作モード等を意識しない状態であっても、タッチパネルをタッチ操作すれば、当該タッチパネルをタッチ操作することによって選択操作が可能なタッチ操作モードに切り替えることができる。また、ユーザは、コントローラ7またはマウスで一旦所定の範囲外を指示した後、当該所定の範囲内を指示するような動作を、タッチパネルをタッチ操作することなく行えば、当該コントローラ7またはマウスで指示することによって選択操作が可能なポインティング操作モードまたはマウス操作モードに切り替えることができる。
このような操作の切り替えは、表示画面に覆われたタッチパネルを用いた操作と、当該表示画面をコントローラで指し示す操作とを切り替える場合に好適である。すなわち、ユーザは、自身の手が届く範囲に表示画面が配置されている場合は、当該表示画面に覆われたタッチパネルを用いて表示画面を直接タッチする操作を行い、自身の手が届かない位置に表示画面が配置されている場合は、コントローラで表示画面を指し示して遠隔操作することが可能となる。そして、これらの操作の切り替えが、ユーザが意識することなく迅速に行われるため、ユーザの意図に応じてストレスなく2つの操作が切り替えられる。
また、図14〜図16を用いて説明した情報処理例では、当該処理開始時の最初に十字キー操作モードが設定されるが、ポインティング操作モードが最初に設定されてもかまわない。この場合、上記ステップ41における初期設定の後に上記ステップ51〜上記ステップ53の処理を行い、当該ステップ53で肯定判定された場合に上記ステップ41〜ステップ50の処理を行えばよい。また、上記情報処理においてユーザが最後に選択した操作モードを、当該情報処理が次に実行される際に初期設定される操作モードに設定してもかまわない。
また、上述した説明では、十字キー操作モードからポインティング操作モードへの切り替え、方向キー操作モードからマウス操作モードへの切り替え、およびタッチ操作モードからポインティング操作モードまたはマウス操作モードへの切り替えにおいて、それぞれ十字キー、方向キー、およびタッチパネルに所定時間以上継続して操作が行われていないことを切り替え条件の1つとしている。これは、ユーザが意図しない状態で別の操作モードへ切り替えられることを防止するためである。例えば、十字キー操作モードにおいて、コントローラ7の操作ボタン72aを操作している際、ユーザが当該操作中にコントローラ7自体を動かしてしまうことが考えられる。このような場合、上記切り替え条件によってユーザが意図しない操作の切り替えが防止されるが、当該切り替え条件がない場合、操作ボタン72aの操作中にポインティング操作モードへ切り替えられてしまう可能性がある。なお、このような効果を期待しない場合、上記切り替え条件を考慮しなくてもよい。一例として、十字キー操作モードからポインティング操作モードへの切り替え、方向キー操作モードからマウス操作モードへの切り替え、およびタッチ操作モードからポインティング操作モードまたはマウス操作モードへの切り替えは、それぞれコントローラ7またはマウスで指示される指示位置が所定の範囲外から当該所定の範囲内に移動した時点において、十字キー、方向キー、およびタッチパネルが操作されていなければ、ポインティング操作モードまたはマウス操作モードに切り替えられる。他の例として、十字キー操作モードからポインティング操作モードへの切り替え、方向キー操作モードからマウス操作モードへの切り替え、およびタッチ操作モードからポインティング操作モードまたはマウス操作モードへの切り替えは、それぞれコントローラ7またはマウスで一旦所定の範囲外を指示した後、当該所定の範囲内を指示するような動作が行われるだけで、ポインティング操作モードまたはマウス操作モードに切り替えられる。
また、上述した説明では、表示画面に表示された選択肢から選択する操作に対して、切り替え可能な2つの操作を適用させたが、他の操作に対して上述した操作を適用させてもかまわない。例えば、仮想世界に配置されたプレイヤキャラクタを移動させる操作に対して、十字キーの押下方向に応じて当該プレイヤキャラクタを移動させる操作と、コントローラ7で指し示した位置または方向やマウスで指定した位置または方向等を移動目標としてプレイヤキャラクタを移動させる操作とを、上述した処理によって切り替えてもかまわない。なお、この操作の切り替え例においては、さらに当該操作の切り替えを契機として、ゲーム画像の視点も切り替えることも考えられる。例えば、十字キーの押下方向に応じてプレイヤキャラクタを移動させる操作モードでは、当該プレイヤキャラクタを含む仮想世界を客観視点で見たゲーム画像を表示する。一方、コントローラ7で指し示した位置または方向やマウスで指定した位置または方向等を移動目標としてプレイヤキャラクタを移動させる操作モードでは、当該プレイヤキャラクタから仮想世界を見た主観視点でゲーム画像を表示する。このように、操作の切り替えと視点の切り替えとを連動させることによって、さらに興趣度が高いゲームを実現することもできる。
また、上述した説明では、表示画面に対して遠隔から座標指定するために、コントローラ7に設けられた撮像素子743で撮像対象を撮像した画像データを解析することによって、モニタ2の表示画面に対して座標指定する態様を用いた。この態様は、表示画面近傍に撮像対象となる2つのマーカを設置し、撮像手段およびその撮像方向を自在に変更可能なハウジングを備えたデバイスが撮像画像中の2つのマーカを検出し、当該撮像画像におけるマーカの位置に基づいて当該デバイスが指定する座標位置を導出するものである。しかしながら、他の態様で上記座標指定を行ってもかまわない。
例えば、表示画面近傍に設置する撮像対象は、上述した電気的なマーカ(LEDモジュール)の他に、光を反射する部材や特定色や特定形状を有する物理的なマーカでもかまわない。また、モニタ2の表示画面に撮像対象を表示してもかまわない。また、コントローラ7が備える撮像手段でラスタスキャン型モニタの走査線を読み取ることによって、当該モニタ自体を撮像対象にしてもかまわない。また、磁気発生装置を設け、当該磁気発生装置から生じる磁気を利用して遠隔から座標指定してもかまわない。この場合、コントローラ7には、上記磁気を検出するための磁気センサを設けることになる。
また、上述した説明では、2つのマーカ8Lおよび8Rからの赤外光を、コントローラ7の撮像情報演算部74の撮像対象としたが、他のものを撮像対象にしてもかまわない。例えば、1つまたは3つ以上のマーカをモニタ2の近傍に設置し、それらのマーカからの赤外光を撮像情報演算部74の撮像対象としてもかまわない。例えば、所定の長さを有する1つのマーカをモニタ2の近傍に設置しても、本発明を同様に実現することができる。また、モニタ2の表示画面自体や他の発光体(室内灯等)を撮像情報演算部74の撮像対象としてもかまわない。撮像対象とモニタ2の表示画面との配置関係に基づいて、当該表示画面に対するコントローラ7の位置を演算すれば、様々な発光体を撮像情報演算部74の撮像対象として用いることができる。
また、コントローラ7側にマーカ等の撮像対象を設けて、撮像手段をモニタ2側に設けてもかまわない。さらに他の例では、コントローラ7の前面から光を放射する機構を設けてもかまわない。この場合、コントローラ7およびモニタ2とは別の場所にモニタ2の表示画面を撮像する撮像装置を設置し、モニタ2の表示画面にコントローラ7から放射された光が反射した位置を当該撮像装置が撮像した画像から解析することによって、同様に表示画面に対して遠隔から座標指定するためのデータを出力可能なポインティングデバイスを構成することができる。
また、上記実施例では、据置型のゲーム装置3を用いて説明したが、携帯型のゲーム装置や一般的なパーソナルコンピュータ等の情報処理装置で本発明の情報処理プログラムを実行して、本発明を実現してもかまわない。また、他の実施形態では、ゲーム装置に限らず任意の携帯型電子機器、例えば、PDA(Personal Digital Assistant)や携帯電話、パーソナルコンピュータ、カメラ等であってもよい。
また、上述した説明では情報処理をゲーム装置本体5で行う例を用いたが、上記情報処理における処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲーム装置本体5が他の装置(例えば、サーバや他のゲーム装置)と通信可能に構成されている場合、上記情報処理における処理ステップは、ゲーム装置本体5および当該他の装置が協働することによって実行してもよい。一例として、他の装置において、選択肢ボタン等を設定する処理が行われ、ゲーム装置本体5が選択肢ボタンに関するデータを取得して、当該データを利用しながらステップ41〜ステップ54の処理を行うことが考えられる。そして、何れかの選択肢が決定される操作が行われた場合、当該決定された旨を示すデータが他の装置へ送信され、他の装置から当該決定された処理に用いられるデータを取得することが考えられる。このように、上記情報処理における処理ステップの少なくとも一部を他の装置で行うことによって、上述した情報処理と同様の処理が可能となる。上述した情報処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施形態においては、ゲーム装置本体5のCPU10が所定のプログラムを実行することによって、上述したフローチャートによる処理が行われたが、ゲーム装置本体5が備える専用回路によって上記処理の一部または全部が行われてもよい。
また、上述した説明では、コントローラ7とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
また、上述したゲーム装置本体5の形状や、コントローラ7に設けられている各種操作ボタンの形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した情報処理で用いられる処理順序、設定値、表示態様、判定に用いられる値等は、単なる一例に過ぎず他の順序、表示態様、値であっても、本発明を実現できることは言うまでもない。例えば、上述した説明では、選択ボタンを囲むように不透明の選択アイコンや半透明の選択アイコンが付与される例を用いたが、他の表示態様や他の形状の選択アイコンを付与してもかまわない。一例として、半透明の選択アイコンの代わりに半透明部に塗りつぶしがない枠画像内部が透明の選択アイコンを、選択アイコンに付与してもかまわない。他の例として、半透明の選択アイコンの代わりに上記不透明の選択アイコンに対して色が異なる不透明の選択アイコンを、選択アイコンに付与してもかまわない。
また、上記情報処理プログラム(ゲームプログラム)は、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、情報処理プログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、情報処理プログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープなどでもよい。また、上記情報処理プログラムを記憶する情報記憶媒体としては、不揮発性半導体メモリや揮発性メモリでもよい。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。