図1を参照して、この発明の一実施例である情報選択装置10はゲームシステムの形態で実現される。なお、情報選択装置10は、ゲームシステムに限られず、パーソナルコンピュータ、携帯電話機、携帯端末などの形態で実現されてもよい。
情報選択装置すなわちゲームシステム10は、ゲーム装置12およびコントローラ14を含む。ゲーム装置12は据置型ゲーム装置である。コントローラ14は、ユーザないしプレイヤの入力装置ないし操作装置である。ゲーム装置12とコントローラ14とは無線によって接続される。無線通信は、たとえばBluetooth(登録商標)規格に従って実行されるが、無線LANなど他の規格に従って実行されてもよい。
ゲーム装置12は、略直方体のハウジング16を含み、ハウジング16の前面にはディスクスロット18およびメモリカードスロットカバー20が設けられる。ディスクスロット18から、ゲームプログラムおよびデータを記憶した情報記憶媒体の一例である光ディスク22が挿入されて、ハウジング16内のディスクドライブ24(図2)に装着される。メモリカードスロットカバー20の内側にはメモリカードスロットが設けられており、外部メモリカード26(図2)が挿入される。メモリカード26は、光ディスク22から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイされたゲームのゲームデータ(結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。また、上記ゲームデータの保存は、外部メモリカード26に代えて、たとえばフラッシュメモリ等の内部メモリに対して行うようにしてもよい。
ゲーム装置12のハウジング16の後面には、AVケーブルコネクタ(図示せず)が設けられ、当該コネクタを用いて、ゲーム装置12はAVケーブル28を介してモニタ(ディスプレイ)30に接続される。このモニタ30は典型的にはカラーテレビジョン受像機であり、AVケーブル28は、ゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)30の画面上にたとえば3Dビデオゲームのゲーム画像が表示され、内蔵されるスピーカ32からゲーム音楽や効果音などのステレオゲーム音声が出力される。
ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、家庭用電源を、ゲーム装置12を駆動するのに適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
コントローラ14は、詳細は後述されるが、第1の操作ユニットおよび第2の操作ユニットとして、それぞれが片手で把持可能な第1コントローラ34および第2コントローラ36を含む。第2コントローラ36の後端から延びるケーブル38の先端にはコネクタ40が設けられており、当該コネクタ40は、第1コントローラ34の後端面に設けられるコネクタ42(図3、図5)に接続される。第2コントローラ36において取得される入力データは、ケーブル38を介して第1コントローラ34に与えられる。第1コントローラ34は、第1コントローラ34自身の入力データと第2コントローラ36の入力データとを含むコントローラデータをゲーム装置12に送信する。
このゲームシステム10において、ゲーム(または他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくは実行したいと思う他のアプリケーション)を記憶している適宜の光ディスク22を選択し、その光ディスク22をゲーム装置12のディスクスロット18からディスクドライブ24にローディングする。これに応じて、ゲーム装置12がその光ディスク22に記憶されているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるためにコントローラ14を操作する。
また、モニタ30の周辺(この実施例では、表示面の上側)には、センサバー44が設けられ、このセンサバー44には、2つのLEDモジュール(以下、「マーカ(目印)」という。)44m,44nが所定の距離を隔てて設けられる。このセンサバー44を用いることで、後述されるように、コントローラ14(第1コントローラ34)は画面上の位置を指し示すポインティングデバイスとしても機能する。マーカ44m,44nは、赤外線LEDであり、それぞれモニタ30の前方に向けて赤外光を出力する。センサバー44から延びるケーブル44aはゲーム装置12の後面のコネクタ(図示せず)に接続され、マーカ44m,44nにはゲーム装置12から電源が与えられる。
図2はゲームシステム10の電気的な構成を示すブロック図である。ゲーム装置12はCPU46を含む。このCPU46は、ゲームプロセッサとして機能し、ゲーム装置12を全体的に制御するコンピュータである。CPU46には、バスを介してメモリコントローラ48が接続される。メモリコントローラ48は主として、CPU46の制御の下で、バスを介して接続されるメインメモリ50の書込みや読出しを制御する。このメモリコントローラ48にはGPU(Graphics Processing Unit) 52が接続される。
GPU52は、描画手段の一部を形成し、たとえばシングルチップASICで構成され、メモリコントローラ48を介してCPU46からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従って、ジオメトリユニット54およびレンダリングユニット56によって3Dのゲーム画像を生成する。つまり、ジオメトリユニット54は、3次元座標系の各種オブジェクトの回転,移動,変形等の座標演算処理を行う。オブジェクトは、複数のポリゴン(ポリゴンとは少なくとも3つの頂点座標によって定義される多角形平面をいう。)で構成されている。レンダリングユニット56は、各種オブジェクトの各ポリゴンにテクスチャ(模様画像)を貼り付ける処理などの画像生成処理を行う。したがって、GPU52によって、ゲーム画面上に表示すべき3Dの画像データが生成され、その画像データがフレームバッファ58内に記憶される。
なお、GPU52が作画コマンドを実行するにあたって必要なデータ(プリミティブまたはポリゴンやテクスチャ等)は、GPU52がメモリコントローラ48を介してメインメモリ50から入手する。
フレームバッファ58は、たとえばラスタスキャンモニタ30の1フレーム分の画像データを描画(蓄積)しておくためのメモリであり、GPU52によって1フレーム毎に書き換えられる。具体的には、フレームバッファ58は、1画素(ピクセル)毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、R,G,B,Aについてのデータであり、たとえば、8ビットのR(赤)データ、8ビットのG(緑)データ、8ビットのB(青)データおよび8ビットのA(アルファ)データである。なお、Aデータは、マスク(マット画像)についてのデータである。後述のビデオI/F68がメモリコントローラ48を介してフレームバッファ58のデータを読み出すことによって、モニタ30の画面上にゲーム画像が表示される。
また、Zバッファ60は、(フレームバッファ58に対応する画素数×1画素当たりの奥行きデータのビット数)に相当する記憶容量を有し、フレームバッファ58の各記憶位置に対応するドットの奥行き情報または奥行きデータ(Z値)を記憶する。
なお、フレームバッファ58およびZバッファ60は、ともにメインメモリ50の一部を用いて構成されてもよく、また、これらはGPU52の内部に設けられてもよい。
メモリコントローラ48はまた、DSP(Digital Signal Processor)62を介して、オーディオ用のRAM(以下、「ARAM」という。)64に接続される。したがって、メモリコントローラ48は、メインメモリ50だけでなく、サブメモリとしてのARAM64の書込みおよび/または読出しを制御する。
DSP62は、サウンドプロセッサとして働き、メインメモリ50に記憶されたサウンドデータを用いたり、ARAM64に書き込まれた音波形(音色)データを用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
メモリコントローラ48は、バスを介してさらに各インタフェース(I/F)66,68,70,72および74に接続される。コントローラI/F66は、ゲーム装置12にBluetooth通信ユニット76を介して接続されるコントローラ14のためのインタフェースである。具体的に言うと、Bluetooth通信ユニット76は、本体側通信装置であり、コントローラ14側通信装置である無線モジュール78(図5)から送信されるコントローラデータ(入力データ)を受信する。コントローラI/F66は、Bluetooth通信ユニット76によって受信されたコントローラデータを、メモリコントローラ48を通してCPU46に与える。ビデオI/F68は、フレームバッファ58にアクセスし、GPU52によって生成された画像データを読み出して、画像信号または画像データ(ディジタルRGBAピクセル値)をAVケーブル28(図1)を介してモニタ30に与える。
外部メモリI/F70は、ゲーム装置12の前面から挿入される外部メモリカード26をメモリコントローラ48に連係させる。それによって、メモリコントローラ48を介して、CPU46がこのメモリカード26にデータを書き込み、またはメモリカード26からデータを読み出すことができる。オーディオI/F72は、メモリコントローラ48を通してDSP62から与えられるオーディオデータまたは光ディスク22から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号(音声信号)をモニタ30のスピーカ32に与える。
ディスクI/F74は、ディスクドライブ24をメモリコントローラ48に接続し、したがって、CPU46がディスクドライブ24を制御する。このディスクドライブ24によって光ディスク22から読み出されたプログラムおよびデータが、CPU46の制御の下でメインメモリ50に書き込まれる。CPU46は、このプログラムに従ってゲームまたはアプリケーションのための処理を実行する。
図3には第1コントローラ34の外観の一例が示される。図3(A)は、第1コントローラ34を上面後方から見た斜視図であり、図3(B)は、第1コントローラ34を下面前方から見た斜視図である。
第1コントローラ34は、たとえばプラスチック成型によって形成されたハウジング80を有している。ハウジング80は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。一例として、ハウジング80は人間の掌とほぼ同じ長さまたは幅を持つ大きさをしている。プレイヤは、第1コントローラ34を用いて、それに設けられたボタンを押下することと、第1コントローラ34自体を動かしてその位置や向きを変えることとによって、ゲーム操作を行うことができる。
ハウジング80には、複数の操作ボタン(操作キー)が設けられる。すなわち、ハウジング80の上面には、十字キー82a、1ボタン82b、2ボタン82c、Aボタン82d、−ボタン82e、メニューボタン82f、および+ボタン82gが設けられる。一方、ハウジング80の下面には凹部が形成されており、当該凹部の後方側傾斜面にはBボタン82hが設けられる。これら各ボタン(スイッチ)82a−82hには、ゲーム装置12が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。また、ハウジング80の上面には、遠隔からゲーム装置12本体の電源をオン/オフするための電源スイッチ82iが設けられる。第1コントローラ34に設けられる各ボタン(スイッチ)は、包括的に参照符号82を用いて示されることもある。
また、ハウジング80の後面には、上述のコネクタ42が設けられている。コネクタ42は、たとえば32ピンのエッジコネクタであり、第1コントローラ34に他の機器を接続するために利用される。この実施例では、コネクタ42には第2コントローラ36のコネクタ40が接続される。また、ハウジング80上面の後端側には複数のLED84が設けられ、この複数のLED84によって当該コントローラ14のコントローラ番号(コントローラの識別番号)が示される。ゲーム装置12には、たとえば最大4つのコントローラ14が接続可能であり、ゲーム装置12に複数のコントローラ14が接続される場合には、各コントローラ14には、たとえば接続順にコントローラ番号が付与される。各LED84はコントローラ番号と対応付けられており、当該コントローラ番号に対応するLED84が点灯される。
また、第1コントローラ34のハウジング80内には加速度センサ86(図5)が設けられている。加速度センサ86としては、典型的には静電容量式の加速度センサが用いられ得る。加速度センサ86は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸ごとの直線成分の加速度や重力加速度を検出する。具体的には、この実施例では、3軸加速度センサが適用され、第1コントローラ34の上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向のそれぞれで加速度を検知する。
なお、加速度センサ86としては、ハウジング80の形状または第1コントローラ34の持たせ方の限定等に応じて、上下方向、左右方向および前後方向のうちいずれか2方向の加速度を検出する2軸加速度センサが用いられてもよい。場合によっては1軸加速度センサが用いられてもよい。
さらに、コントローラ22は、撮像情報演算部88(図5参照)を有している。図3(B)に示すように、ハウジング80の先端面には撮像情報演算部88の光入射口90が設けられ、光入射口90からはセンサバー44のマーカ44m、44nの発する赤外線が取り込まれる。
図4には第2コントローラ36の外観の一例が示される。図4(A)は、第2コントローラ36を上面後方から見た斜視図であり、図4(B)は、第2コントローラ36を下面前方から見た斜視図である。なお、図4では、第2コントローラ36のケーブル38は省略されている。
第2コントローラ36は、たとえばプラスチック成型によって形成されたハウジング92を有している。ハウジング92は、平面視では、前後方向(図4のZ軸方向)に略細長い楕円形状を有し、後端側の左右方向(図4のX軸方向)の幅が先端側のそれよりも狭くされている。また、ハウジング92は、側面視では、全体として湾曲した形状を有しており、先端側の水平部分から後端側に向かって下がるように湾曲している。ハウジング92は、第1コントローラ34と同様に、全体として大人や子供の片手で把持可能な大きさであるが、長手方向(Z軸方向)の長さは、第1コントローラ34のハウジング80よりもやや短くされている。この第2コントローラ36でも、プレイヤは、ボタンやスティックを操作することと、コントローラ自体を動かしてその位置や向きを変えることとによって、ゲーム操作を行うことができる。
ハウジング92の上面の先端側には、アナログジョイスティック94aが設けられる。ハウジング92の先端には、後方にやや傾斜する先端面が設けられており、この先端面には、上下方向(図4に示すY軸方向)に並べて、Cボタン94bおよびZボタン94cが設けられる。アナログジョイスティック94aおよび各ボタン94b,94cには、ゲーム装置12が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。第2コントローラ36に設けられるアナログジョイスティック94aおよび各ボタン94b,94cは、包括的に参照符号94を用いて示されることもある。
また、第2コントローラ36のハウジング92内には加速度センサ96(図5)が設けられている。この加速度センサ96としては、第1コントローラ34の加速度センサ86と同様の加速度センサが適用される。具体的には、この実施例では3軸加速度センサが適用され、第2コントローラ36の上下方向(図4に示すY軸方向)、左右方向(図4に示すX軸方向)および前後方向(図4に示すZ軸方向)の3軸方向のそれぞれで加速度を検知する。
なお、図3に示した第1コントローラ34および図4に示した第2コントローラ36の形状や、ボタン(スイッチまたはスティック等)の形状、数および設置位置等は一例であり、他の形状、数および設置位置等に適宜変更され得る。
また、コントローラ14の電源は、第1コントローラ34内に取替可能に収容されるバッテリ(図示せず)によって与えられる。第2コントローラ36には、コネクタ42、コネクタ40およびケーブル38を介してこの電源が供給される。
図5には、第1コントローラ34と第2コントローラ36とが接続されたときのコントローラ14の電気的構成の一例が示される。
第1コントローラ34は、その内部に通信部98を備え、通信部98には、操作部82、加速度センサ86、撮像情報演算部88およびコネクタ42が接続される。操作部82は、上述の操作ボタンないし操作スイッチ82a‐82iを示す。操作部82が操作されると、その操作信号(キー情報)が通信部98に与えられる。
加速度センサ86が検出した加速度を示すデータは、通信部98へ出力される。加速度センサ86は、たとえば最大200フレーム/秒程度のサンプリング周期を有する。
撮像情報演算部88が取得したデータもまた通信部98に出力される。撮像情報演算部88は、赤外線フィルタ100、レンズ102、撮像素子104および画像処理回路106によって構成される。赤外線フィルタ100は、第1コントローラ34の前方の光入射口90から入射する光から赤外線のみを通過させる。上述したように、モニタ30の表示面近傍(周辺)に配置されるセンサバー44のマーカ44mおよび44nは、モニタ30の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ100を設けることによってマーカ44mおよび44nの画像をより正確に撮像することができる。レンズ102は、赤外線フィルタ100を透過した赤外線を集光して撮像素子104へ出射する。撮像素子104は、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ102によって集光された赤外線を撮像する。したがって、撮像素子104は、赤外線フィルタ100を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子104によって撮像された画像を撮像画像と呼ぶ。撮像素子104によって生成された画像データは、画像処理回路106で処理される。画像処理回路106は、撮像画像内における撮像対象(マーカ44mおよび44n)の位置を算出し、所定時間(たとえば1フレーム)毎に、当該位置を示す各座標値を含むマーカ座標データを通信部98に出力する。なお、画像処理回路106における処理については後述する。
コネクタ42には、第2コントローラ36から延びるケーブル38のコネクタ40が接続される。コネクタ40には、第2コントローラ36の操作部94および加速度センサ96が接続される。操作部94は、上述のアナログジョイスティック94aおよび操作ボタン94b、94cを示す。操作部94が操作されると、その操作信号がケーブル38、コネクタ40およびコネクタ42等を介して通信部98に与えられる。また、加速度センサ96も、加速度センサ86と同様のサンプリング周期を有しており、検出された加速度を示すデータを通信部98に与える。
通信部98は、マイクロコンピュータ(マイコン)108、メモリ110、無線モジュール78およびアンテナ112を含む。マイコン108は、処理の際にメモリ110を記憶領域(作業領域やバッファ領域)として用いながら、無線モジュール78を制御して、取得したデータをゲーム装置12に送信したりゲーム装置12からのデータを受信したりする。
第1コントローラ34の操作部82、加速度センサ86および撮像情報演算部88ならびに第2コントローラ36の操作部94および加速度センサ96からマイコン108へ出力されたデータは、一時的にメモリ110に格納される。通信部98からゲーム装置12のBluetooth通信ユニット76への無線送信は所定の周期毎に行われる。なお、ゲームの処理は1/60秒を単位として行われることが一般的であるので、第1コントローラ34からの送信はそれと同等かそれより短い周期で行うことが必要となる。マイコン108は、ゲーム装置12への送信タイミングが到来すると、メモリ110に格納されている操作部82および94の操作データ、加速度センサ86および96の加速度データならびに撮像情報演算部88のマーカ座標データを含むデータを、コントローラデータとして無線モジュール78へ出力する。無線モジュール78は、Bluetoothのような近距離無線通信技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ112から放射する。つまり、コントローラデータは、無線モジュール78で微弱電波信号に変調されて第1コントローラ34から送信される。微弱電波信号はゲーム装置12側のBluetooth通信ユニット76で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置12はコントローラデータを取得することができる。ゲーム装置12のCPU46は、コントローラ14から取得したコントローラデータに基づいてゲーム処理を行う。
なお、加速度センサ86および96から出力される加速度の信号に基づいて、ゲーム装置12のプロセッサ(例えばCPU46)またはコントローラ14のプロセッサ(例えばマイコン108)などのコンピュータが処理を行うことによって、コントローラ14に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ86および96を搭載する第1コントローラ34および第2コントローラ36が静的な状態であることを前提としてコンピュータ側で処理する場合(すなわち、加速度センサ86および96によって検出される加速度が重力加速度のみであるとして処理する場合)、第1コントローラ34および第2コントローラ36が現実に静的な状態であれば、検出された加速度に基づいて第1コントローラ34および第2コントローラ36の姿勢が重力方向に対して傾いているか否か又はどの程度傾いているかをそれぞれ知ることができる。具体的には、加速度センサ86および96の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かだけで、第1コントローラ34および第2コントローラ36がそれぞれ傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかも知ることができる。また、多軸加速度センサが適用される場合には、さらに各軸の加速度の信号に対して処理を施すことによって、第1コントローラ34および第2コントローラ36がそれぞれ重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ86および96からの出力に基づいて、コンピュータが第1コントローラ34および第2コントローラ36の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ86および96からの出力に基づいて、おおよその傾き具合を推定するような処理としてもよい。このように、加速度センサ86および96をコンピュータと組み合わせて用いることによって、第1コントローラ34および第2コントローラ36の傾き、姿勢または位置を判定することができる。
一方、加速度センサ86および96が動的な状態であることを前提とする場合には、重力加速度成分に加えて加速度センサ86および96の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、動き方向などを知ることができる。具体的には、加速度センサ86および96を備える第1コントローラ34および第2コントローラ36がユーザの手で動的に加速されて動かされる場合に、加速度センサ86および96によって生成される加速度信号を上記コンピュータによって処理することによって、第1コントローラ34および第2コントローラ36のさまざまな動きおよび/または位置を算出することができる。なお、加速度センサ86および96が動的な状態であることを前提とする場合であっても、加速度センサ86および96の動きに応じた加速度を所定の処理により除去すれば、重力方向に対する傾きを知ることが可能である。他の実施例では、加速度センサ86および96は、信号をマイコン108に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ86および96が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
このゲームシステム10では、ユーザがコントローラ14を動かすことによってゲームに対する操作または入力を行うことができる。ゲームをプレイする際には、たとえば図6に示すように、ユーザは、その右手で第1コントローラ34を持ち、その左手で第2コントローラ36を持つ。上述のように、この実施例では、第1コントローラ34には3軸方向の加速度を検出する加速度センサ86が内蔵され、第2コントローラ36にも同様の加速度センサ96が内蔵されている。第1コントローラ34および第2コントローラ36がそれぞれユーザによって動かされると、加速度センサ86および加速度センサ96によって、それぞれのコントローラ自身の動きを示す加速度値が検出される。ゲーム装置12では、当該検出された加速度値に応じてゲーム処理が実行され得る。
また、第1コントローラ34には撮像情報演算部88が設けられるので、ユーザは第1コントローラ34をポインティングデバイスとして使用して操作を行うことができる。この場合、ユーザは、第1コントローラ34の先端面(光入射口90)がマーカ44mおよび44nの方を向く状態で第1コントローラ34を把持する。ただし、図1から分かるように、マーカ44mおよび44nは、モニタ30の画面の所定の1辺(上辺または下辺)の近傍に、当該所定の1辺に対して平行に配置されている。この状態で、ユーザは、第1コントローラ34自体を動かして、第1コントローラ34が指示する画面上の位置を変更したり、第1コントローラ34と各マーカ44mおよび44nとの距離を変更したりすることによって、ゲーム操作を行うことができる。
図7は、マーカ44mおよび44nと第1コントローラ34の視野角を説明するための図である。図7に示すように、マーカ44mおよび44nは、それぞれ、視野角αの範囲で赤外光を放射する。また、撮像情報演算部88の撮像素子104は、第1コントローラ34の視線方向(図3に示すZ軸方向)を中心とした視野角βの範囲で入射する光を受光することができる。たとえば、マーカ44mおよび44nの視野角αは、共に34°(半値角)であり、一方、撮像素子104の視野角βは42°である。ユーザは、撮像素子104が2つのマーカ44mおよび44nからの赤外光を受光することが可能な位置および向きとなるように、第1コントローラ34を把持する。具体的には、撮像素子104の視野角βの中に少なくとも一方のマーカ44mまたは44nが存在し、かつ、マーカ44mおよび44nの少なくとも一方の視野角αの中に第1コントローラ34が存在する状態となるように、ユーザは第1コントローラ34を把持する。この状態にあるとき、第1コントローラ34は、マーカ44mおよび44nの少なくとも一方を検知することができる。ユーザは、この状態を満たす範囲で第1コントローラ34の位置および向きを変化させることによってゲーム操作を行うことができる。なお、マーカ44mおよび44nのいずれか一方のみが検出される場合には、たとえば、直前の2つのマーカ44mおよび44nを検出したデータを利用して、検出されない他方のマーカの代わりに仮のマーカ座標を設定することによって、第1コントローラ34の指示位置を算出することができる。
なお、第1コントローラ34の位置および向きがこの範囲外となった場合、第1コントローラ34の位置および向きに基づいたゲーム操作を行うことができなくなる。したがって、上記範囲は「操作可能範囲」と呼ばれる。
操作可能範囲内で第1コントローラ34が把持される場合、撮像情報演算部88によってマーカ44mおよび44nの画像が撮像される。すなわち、撮像素子104によって得られる撮像画像には、撮像対象であるマーカ44mおよび44nの画像(対象画像)が含まれる。図8は、対象画像を含む撮像画像の一例を示す図である。対象画像44m’および44n’を含む撮像画像の画像データを用いて、画像処理回路106は、各マーカ44mおよび44nの撮像画像における位置を表す座標(マーカ座標)を算出する。
撮像画像の画像データにおいて対象画像44m’および44n’は高輝度部分として現れるため、画像処理回路106は、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路106は、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、2つの対象画像(マーカ画像)44m’および44n’だけではなく、窓からの太陽光や部屋の蛍光灯の光等のような他の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、マーカ44mおよび44nの画像44m’および44n’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。撮像画像における対象画像44m’および44n’と他の画像との区別のために、撮像対象44mおよび44nは既知のものである必要があり、この実施例ではその大きさが予め決められるので、マーカ画像44m’および44n’の大きさを予測することができる。したがって、高輝度部分の大きさに基づいて、マーカ画像44m’および44n’の判定を行うことができる。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路106は当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子104の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子104によって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
なお、図8に示すように、撮像画像における位置は、撮像画像の左上を原点Oとし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(撮像画像のXY座標系)で表現されるものとする。
また、対象画像44m’および44n’が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路106は、算出された2箇所のマーカ座標を示すデータ、つまり、撮像対象の位置を示す撮像対象データを通信部98に出力する。出力された撮像対象データ(マーカ座標データ)は、上述したように、マイコン108によってコントローラデータに含められて、ゲーム装置12に送信される。
ゲーム装置12(CPU46)は、受信したコントローラデータからマーカ座標データを取得すると、このマーカ座標データに基づいて、モニタ30の画面上における第1コントローラ34の指示位置(指示座標)と、第1コントローラ34からマーカ44mおよび44nまでの各距離とを算出することができる。なお、たとえば、第1コントローラ34がモニタ30の画面の左端を指示するとき、対象画像44m’および44n’は撮像画像の右側に検出され、第1コントローラ34が画面の下端を指示するとき、対象画像44m’および44n’は撮像画像の上側に検出され、つまり、画面上の第1コントローラ34の指示位置と逆側に撮像画像上のマーカ座標が検出される。したがって、第1コントローラ34の指示位置の座標をマーカ座標から算出する際には、座標系が図8の撮像画像の座標系から画面上の位置を表すための座標系に適宜に変換される。
なお、この実施例では、第1コントローラ34で撮像データに所定の演算処理を行ってマーカ座標を検出して、そのマーカ座標データをゲーム装置12に送信するようにしている。しかし、他の実施例では、撮像データをコントローラデータとして第1コントローラ34からゲーム装置12に送信し、ゲーム装置12のCPU46が撮像データに所定の演算処理を行って、マーカ座標および指示位置の座標を検出するようにしてもよい。
また、撮像画像における対象画像間の距離は、第1コントローラ34と、マーカ44mおよび44nとの距離に応じて変化する。マーカ44mおよび44n間の距離、撮像画像の幅、撮像素子104の視野角βが予め決まっているので、2つのマーカ座標間の距離を算出することによって、ゲーム装置12は第1コントローラ34とマーカ44mおよび44nとの間の現在の距離を算出することができる。
ゲームシステム10では、複数の項目から任意の項目をユーザに選択させ当該選択の決定された項目を処理する情報選択処理が実行される。この実施例では、文字入力処理における文字選択にこの発明が適用された場合を説明する。なお、ゲームのアイテム選択、メニュー選択など様々な情報の選択にこの発明を適用可能である。
図9には、文字入力を行う際に表示される文字入力画面の一例が示される。画面上には、入力すべき文字を選択するためのリスト120と、入力された文字を表示する入力欄122が設けられている。リスト120では、選択項目としての複数の文字がリング状に配列される。より詳細には、複数の文字は円形状に配置されてもよいし、多角形状に配置されてもよい。
この実施例では、16個の文字の位置は八角形の頂点および辺の中点に相当する。図9では、アルファベットa−pが時計回りで順に配置される。なお、この図9に示すa−pの配置は、アルファベットの順番に従ったものであり、各項目に対する入力頻度を考慮したものではない。
項目の選択は、アナログジョイスティック94aを用いた方向指示によって行われる。そのため、この実施例では、選択項目の配列形状は、アナログジョイスティック94aのガイド部92aの形状によって決められている。図10から分かるように、第2コントローラ36のハウジング92には八角形のガイド部92aが形成されており、このガイド部92aによってアナログジョイスティック94aの傾倒される方向および量などの動きが制限される。特に、アナログジョイスティック94aはガイド部92aの角の位置で当該角を形成する2辺によって安定的に係止されるので、角に対応する方向の入力が行い易い。したがって、この実施例の選択項目はガイド形状に合わせて八角形の頂点と辺の中央とに対応する位置に配置されている。
また、リスト120では、アナログジョイスティック94aの操作方向に対応する項目上の位置に移動されるカーソル124が表示される。アナログジョイスティック94aがニュートラルポジションにある、つまり、操作されていないときには、カーソル124は表示されないようにしてよい。また、リスト120の中央には現在選択されている項目を示す表示欄126が設けられている。表示欄126はたとえば括弧と下線によって表現されており、図9では文字「b」が選択中であるのでbが表示されているが、項目が選択されていない場合には空白になる。なお、図9では分り易くするためにリスト120は画面の中央に大きく示されるが、リスト120のサイズや位置は任意である。他にメインとなる画像が存在する場合などには、当該メインとなる画像が画面中央に表示されて、リスト120が画面の端部に小さいサイズで表示されてよい。
アナログジョイスティック94aが操作されると、カーソル124はアナログジョイスティック94aの操作方向に対応する項目上に移動される。たとえば図11に示すように、アナログジョイスティック94aが上方向に倒されたときには、カーソル124は上方向に対応する文字「a」の位置に移動されるとともに、リスト120の中央の表示欄126には、現在選択されている文字「a」が表示される。このように、この実施例では、アナログジョイスティック94aを用いた方向入力という簡単な操作によって、当該入力方向に対応する位置の項目を選択することができる。
このような操作方向に応じた項目の選択においては、項目を方向に割り当てる必要があるが、方向と項目との対応付けの数に限度がある。文字入力のように多くの項目が存在する場合、すべての項目を同時に選択の候補(選択項目)とするのは困難である。この実施例では、ガイド部92aの八角形の頂点と辺上に対応させて項目を配置するので、一度に選択候補として採用できる項目数は16個以下である。したがって、それよりも多い項目を選択させる必要がある場合には、複数の項目のうちの所定数以下の項目のみを選択候補として採用し、その後、選択候補を変更していく必要がある。たとえば、複数の項目を幾つかのページに分けて選択候補に採用し、ページを切替えるといった構成が必要である。選択させる項目が少ない場合には、当該ページは1つだけでよい。
アナログジョイスティック94aの入力方向に応じた項目の選択を行うために、選択項目は所定の方向に割り当てられる必要がある。このため、この実施例では、アナログジョイスティック94aの入力値に予め対応付けられた領域を設けておき、この領域と項目との対応付けを行うことによって、項目と入力方向とが対応付けられる。この領域をセルと呼ぶこととする。
この実施例においては、図12に示すように、アナログジョイスティック94aの入力値による座標平面内において、八角形を16分割した領域と、当該八角形の中央付近の領域との計17個の領域としてセル0−16が設けられている。セル1−16には上述の選択項目(たとえば上述のa−p等)が関連付けられる。なお、中央のセル0は、方向入力がほとんど無い場合(アナログジョイスティック94aがほとんど操作されていない場合)に対応付けられており、このセル0には選択項目は関連付けられず、何も選択されていない状態に対応する。
セルに関連付けられてリスト120に設定すべき項目は、項目データ222から選出される。図13には項目データの一部が示される。項目データは複数の項目を含み、それぞれの項目は例えば配列(i[1],i[2],…)として記憶されている。図13の例では、i[1]からi[26]にはアルファベットaからzが登録される。i[27]からi[32]はブランクである。i[33]からi[48]には各種記号が登録される。i[49]からi[64]には数字に関する項目が登録される。その他、アルファベットの大文字AからZや、仮名等を登録しておいてもよい。また、項目データは、文字だけでなく、所定の文字列を設定してもよい。本実施例では、i[65]からi[85]に[]で表している部分に、図13の下段で文字列データとして示したような複数の文字からなる文字列が登録されている。ドメイン名やアドレスの一部のような、よく使われる文字列を項目として登録しておくことによって、一度の入力で文字列の入力が可能となり、文字入力の効率性を向上できる。
図14(A)にはi[65]−i[80]の文字列を選択項目として採用したリスト120が示され、図14(B)にはi[81]−i[85]の文字列を選択項目として採用したリスト120が示される。文字列は、図14(A)のようにリスト120上にそのまま表示されてもよい。また、図14(B)に示すように、複数の数字からなる文字列を、表示上記号で置き換えるようにしてもよい。当該記号に対応する文字列を別途表示させることで、表示が煩雑にならないようにしている。このように、アドレスの一部やドメイン名のような、入力頻度の高い定型組合せを項目として登録しておくことによって、文字入力の効率性を向上できる。
選択項目の設定を行う際には、項目データから所定数の項目が選出され、セル1−16に対応付けられる。図15に示すように、セルの識別情報を示すセルIDと項目の識別情報を示す項目ID(区別のため、i[1],i[2],…を示すIDをi1,i2,…と表すこととする)との対応関係を示す選択項目リストデータが生成される。たとえば図9に示すリスト120の場合、アルファベットa−p(文字ID:i1−i16)が選択項目としてセル1−16(セルID:c1−c16)に設定される。上述のように、複数の項目は複数のページに分けられる必要がある。図13の項目データの場合、i1−i16の項目(アルファベットa−p)が第1ページ、i17−i32の項目(アルファベットq−z)が第2ページ、i33−i48の項目(各種記号)が第3ページ、i49−i64の項目(数字)が第4ページ、i65−i80の項目(ドメイン名)が第5ページ、i81−i96の項目(アドレス関連の数字)が第6ページに分けられてよい。
項目の方向への割り当て(項目の配置)を決める際には、この実施例では、方向の入力難度と項目に対する入力頻度とが考慮される。
複数のセル1−16は、上述のように、アナログジョイスティック94aのガイド部92aの形状に合わせて配列されており、所定の方向にそれぞれ対応付けられている。アナログジョイスティック94aによる方向入力操作の難しさの度合いは、方向に応じて異なり、つまり、各セルに対する入力の難しさには差異が存在する。図16には入力難度データの一例が示される。この実施例のように、八角形ガイド部92a付のアナログジョイスティック94aを用いてセルを16分割で配置する場合、上下左右の4方向が最も入力し易い。ガイド部92aの頂点によってスティック94aが係止されるとともに、スティック94aの傾倒操作が典型的には親指(図6参照)を用いて行われるためである。上下左右の4方向の入力難度は最も低く1に設定される。ガイド部92aの頂点の存在する斜め4方向が次に入力し易い。これら斜め4方向の入力難度は2に設定される。そして、ガイド部92aの頂点以外の部分に対応する残りの8方向は、最も入力し難い。これら8方向の入力難度は最も高く3に設定される。このような各セルの入力難度diを示す入力難度データが予め記憶されている。
また、項目データは複数の項目を含むが、よく入力される項目もあれば、ほとんど入力されない項目もある。つまり、各項目が入力される頻度は異なるものとなる。そのため、図17に示すような各項目に対する入力頻度fiを示す入力頻度データが記憶される。なお、各項目に対する入力頻度の統計情報が既知の場合には、入力頻度データとして予め記憶されてもよい。また、情報選択装置10での実際の文字入力処理において、ユーザに入力された項目の入力頻度の統計情報を取得することによって、入力頻度データが更新されるようにしてもよい。
この実施例では、リスト120の初期状態において、選択項目は入力頻度に基づいて配置される。既知の入力頻度の統計情報に基づいて決定した固定的な配置、すなわち、入力頻度に基づく静的配置が行われる。
たとえば、各ページに載せられる項目が固定的に決まっている場合、初期状態の項目の配置を既知の入力頻度に基づいて予め決めることができるので、入力頻度に基づく静的配置の行われた各ページの初期配置情報を予め記憶しておき、当該初期配置情報に基づいて選択項目の設定を行うことができる。なお、予め記憶しておいた初期配置情報を使用せず、選択項目の設定を行う際に、入力頻度データを参照して各項目の配置を決めるようにしてもよい。
図18に静的配置の一例が示されており、入力頻度の高い項目が入力し易い方向に配置される。具体的には、図18(A)では、高頻度項目がガイド部92aの頂点に配置される。入力難度の低い頂点に対応する方向への割り当てを行うことによって、高頻度項目の入力を容易にすることができる。また、図18(B)では、高頻度項目がガイド部92aの上下左右の4つの頂点に配置される。この場合、特に入力難度の低い頂点に対応する方向への割り当てによって、高頻度項目をより容易に入力することができる。
図19にも静的配置の他の例が示される。図19では、定型文のような出力時の情報量の多い項目が、入力し難い方向に割り当てられる。定型文は、含まれる情報量が多い。したがって、項目として定型文を予め登録しておけば、文字入力の効率を高めることが期待できる。一方、定型文の入力頻度は、1つの文字のそれに比べてそれほど高くない場合が多い。したがって、定型文等の情報量の多い項目は、ガイド部92aの頂点以外の部分に対応する方向に割り当てられる。入力し難い方向に割り当てられても、出力時の情報量が多い項目であるから、文字入力を全体としては効率よく行うことができる。
また、選択項目の配置は、入力頻度に基づいて動的に再配置される。具体的には、入力頻度に比例するように、方向入力の受付角度が動的に変更される。
この実施例では、ユーザの入力しようとしている項目は、アナログジョイスティック94aの倒される方向によって指示される。したがって、当該項目の特定のために、アナログジョイスティック94aの入力(操作信号)に基づいてユーザの入力方向が検出され、当該入力方向に対応するセルが特定される。図20に示すように、各セル(セルID:c1−c16)には、アナログジョイスティック94aの入力方向の受付範囲が設定されている。したがって、入力方向が含まれる受付範囲を特定することによってセルを特定できる。具体的には、図20に示すように、アナログジョイスティック94aの左右方向にX軸、上下方向にY軸を定義するとき、コントローラデータには、アナログジョイスティック94aのX方向およびY方向の傾き量(X,Y)が含まれている。なお、ニュートラルポジション(傾きなし)のときの入力を(0,0)とする。このアナログジョイスティック94aの入力(X,Y)をXY平面にプロットしたとき、(0,0)と(X,Y)とを結ぶ線と基準方向(たとえばX軸)とのなす角θは、アナログジョイスティック94aの傾き方向、すなわち、ユーザの入力方向を示す。このように、アナログジョイスティック94aの操作信号(X,Y)は、入力操作に応じた方向を示す方向データに相当する。アナログジョイスティック94aの入力(X,Y)によって算出される角度θが含まれる受付角度範囲を特定することによって、ユーザの入力方向に対応するセルを特定することができる。なお、アナログジョイスティック94aの入力(X,Y)の大きさが閾値を超えない場合には、方向入力操作が行われていないものとみなして、セル0が選択される。上述の処理によって、アナログジョイスティック94aの入力が、17個のセルのいずれに含まれるかを特定することができる。なお、上述の処理ではアナログジョイスティック94aの入力(X,Y)からθを算出し、当該算出されたθがどの範囲に属するかに基づいて、ユーザの入力方向に対応するセルを特定するが、それ以外の処理によってセルの特定を行ってもよい。たとえば、θの算出を行わずに、図20のXY平面において各セルの領域を定義し、アナログジョイスティック94aの入力(X,Y)がどの領域に含まれるかに基づいて、ユーザの入力方向に対応するセルを特定してもよい。
このような方向入力の受付範囲が入力頻度に基づいて動的に変更される。図21に、入力難度と入力頻度に基づく受付角度の分配法が示されている。項目iに関して、入力難度di、入力頻度fi、基準角θi、開始角φi、終了角φi+1とすると、配置の条件式は、次の数1で表される。
[数1]
(φi+1 −θi)/(θi+1 −φi+1)=di*fi/(di+1*fi+1)
ここで、基準角θiは当該項目iの対応付けられるセルの受付範囲の基準となる角度であり、この実施例では八角形の頂点と辺の中点に対応する角度である。開始角φiは受付範囲の開始位置に対応する角度であり、終了角φi+1は受付範囲の終了位置に対応する角度である。
数1には、次の境界条件が与えられる。固定端の条件として数2、自由端の条件として数3が与えられる。
[数2]
θi=定数
[数3]
φi+1 −θi=θi −φi
なお、全て自由端の場合、θ0=0である。
以上の連立1次方程式を解くことによって、受付角度の範囲(φiからφi+1)が算出される。そして、図22に示すような、各セルの受付角度範囲を示すセル角度データが生成される。このセル角度データを参照して、アナログジョイスティック94aの入力方向が含まれる受付角度範囲を特定することによって、ユーザの入力方向に対応するセルを特定することができる。このように、入力頻度に応じた受付範囲を設定することができるので、高頻度項目を入力し易くすることができる。
また、選択項目の動的な再配置の別の方法として、入力難度と入力頻度に基づいて項目の配置が変更される。項目iに関して、入力難度di、入力頻度fiとしたとき、入力難度と入力頻度の積の総和を評価関数とし、この評価関数Σ(di*fi)の最小化を図る。この際、任意の項目間の順序に前後関係の拘束を持たせ、つまり、アルファベットや数字などの並びはその順序で拘束されるようにしてもよい。具体的には、項目が入力されたときに、拘束条件を満たしながら当該項目の配置を見直すことによって、評価関数の最小化を図る。配置の見直しは、当該入力された項目の近い位置で、当該項目の現在の位置より低難度の位置に対して行われる。
図23および図24を参照して、配置変更方法を説明する。選択項目の初期配置は図23および図24に示される通りであり、セル1−12には、0−5の数字がピリオドと交互に順番に配置され、セル13−16には、残りの数字6−9が順番に配置される。つまり、0−9の数字を配置した場合には、数箇所余ることになるので、八角形の辺上の数箇所はピリオドを配置することとしている。ピリオド以外であっても、必要に応じて適宜記号等を配置してもよい。各数字の並びは順序に拘束され、数字とピリオドとは拘束されない。
配置変更の際には、まず、入力された項目Xに関して、現在のセルAよりも低難度の直近のセルが左右両方向に探索される。たとえば入力された項目Xがセル14の数字7である場合、セル14の入力難度は3である。図23には右方向探索の場合が示され、図24には左方向探索の場合が示される。図23の右方向探索によって、現在のセルよりも低難度の直近のセルBとして、セル15(入力難度2)が発見される。次に、セルAB間に項目Xと拘束される項目が存在するか否かが判断される。拘束される項目が存在しない場合には、項目XとセルBの項目とで配置が交換される。しかし、図23の例では、セルAB間には数字7と拘束される数字8が存在するので、非拘束項目の再配置が行われる。具体的には、セルAB間のセルと同数だけ項目Xと拘束の無い項目がセルAから順に配置される。これによって、セル14にピリオドが配置される。続いて、項目Xの再配置が行われる。つまり、項目Xが低難度の直近のセルBに配置される。これによって、数字7がセル15に配置される。さらに、拘束付項目の再配置が行われる。つまり、項目Xと拘束のある項目がセルBに続いて順に配置される。数字7の再配置されたセル15から右方向にセル1まで、数字7と拘束される数字8,9,0が配置されていたので、これらの数字8−0が順にセル16からセル2まで再配置される。また、残りの項目はそのまま再配置される。このようにして、右方向探索によって、図23に示すような新配置が得られる。
一方、図24の左方向探索の場合、現在のセルAよりも低難度の直近のセルBとして、セル13(入力難度1)が発見される。次に、セルAB間に項目Xと拘束される項目が存在するか否かが判断される。拘束される項目がAB間に存在するので、非拘束項目の再配置によって、セル14にピリオドが配置される。続いて、項目Xの再配置によって、数字7がセル13に配置される。さらに、拘束付項目の再配置によって、数字6がセルBに続くセル12に配置される。また、残りの項目がそのまま再配置される。このようにして、左方向探索によって、図24に示すような新配置が得られる。
そして、新配置に関して、評価関数(入力難度と入力頻度の積の総和)を算出し、当該評価関数がより小さくなったか否かが判断される。評価関数がより小さくなったときには、当該新配置への変更が採用される。評価関数がより小さくならなかったときには、元の配置に戻される。
新配置が採用された後には、当該新配置における項目の入力に応じて、同様な配置変更処理が実行されることとなる。図25には、図24の新配置が採用された後の項目入力に応じた配置変更の過程が示される。ここでは、左方向探索の場合の場合のみを説明する。たとえば入力された項目Xがセル12の数字6である場合、このセル12の入力難度は3である。現在のセルAよりも低難度の直近のセルBが探索され、入力難度2のセル11が発見される。セルAB間に項目Xと拘束される項目が存在するので、非拘束項目の再配置によって、数字6と拘束のない項目としてのピリオドがセルAに配置される。続いて、入力項目Xの再配置によって、数字6がセルBに配置される。さらに、拘束付項目の再配置によって、拘束のある数字5がセルBに続くセル10に配置される。また、残りの項目がそのまま再配置される。このようにして、図25に示すような新配置が得られる。新配置の評価関数がより小さくなっていれば、選択項目の配置が当該新配置に変更される。
選択項目の別の配置変更方法として、ユーザの動作に応じた一時的再配置も実行される。この実施例では、ガイド部92aの頂点に対応する方向に割り当てられた項目と、頂点以外の部分に対応する方向に割り当てられた項目とが入れ替えられる。図26に一時的再配置としての入替配置の一例が示される。図26では、初期配置として、アルファベット大文字A−Pがセル1−16に順に配置されている。ユーザによって右方向への入替配置動作が行われたとき、選択項目の右回転入替が行われる。つまり、各項目の配置が360/16度右方向にずらされ、各項目が右隣のセルに移動される。なお、図示は省略されるが、左方向への入替配置動作が行われたときには、選択項目の左回転入替が実行され、各項目が左隣のセルに移動される。
なお、右方向への入替配置動作は、たとえば、メニューボタン82fの右側に存在する+ボタン82gの操作であり、左方向への入替配置動作は、たとえば、メニューボタン82fの左側に存在する−ボタン82eの操作である。コントローラ14が両手持ち型に形成される場合、−ボタン82eおよび+ボタン82fに代えて、LボタンスイッチおよびRボタンスイッチの操作が入替配置動作として割り当てられてよい。
この入替配置は項目の入力が決定されるまでの間の一時的な配置である。この一時的な配置において方向入力によって指示された項目を特定するために、図27に示すような一時的再配置データが生成される。一時的再配置データでは、選択項目リストデータと同様に、各セルと当該セルに配置された項目とが対応付けられる。
このような入替配置によって、ガイド部92aの頂点と頂点以外の部分とで項目の配置を入れ替えることができるので、入力のし難い方向に割り当てられた項目を、入力のし易い方向に一時的に割り当てることができる。したがって、項目の選択をより容易に行うことができる。
図28にはメモリマップの一例が示される。メモリマップはプログラム記憶領域200およびデータ記憶領域202を含む。プログラムとデータの一部とは、光ディスク22から一度に全部または必要に応じて部分的に、かつ順次的に読み出され、メインメモリ50に記憶される。なお、図28にはメモリマップの一部のみが示されており、処理に必要な他のプログラムおよびデータも記憶される。たとえば、音声、効果音、音楽などの音を出力するためのサウンドデータ、画面を生成するための画像データ、音出力プログラム、画像生成表示プログラムなどが、光ディスク22から読み出されてデータ記憶領域202またはプログラム記憶領域200に記憶される。なお、本実施例においては、プログラムとデータの一部は光ディスク22から読み出されるが、別の実施例においては、たとえばゲーム装置12にフラッシュメモリ等の不揮発的な記憶媒体を内蔵させ、当該記憶媒体に予め記憶したプログラムやデータを読み出してメインメモリ50に記憶するようにしてもよい。その際さらに、ゲーム装置12に無線または有線の通信モジュールを設け、ネットワーク経由でダウンロードしたプログラムを当該記憶媒体に記憶しておくようにしてもよい。
プログラム記憶領域200の記憶領域204には項目配置プログラムが記憶される。このプログラムは複数の項目から選択項目を設定するためのプログラムである。この実施例では、所定数(16個)以下の項目が項目データから読み出され、それぞれの項目は、入力頻度に基づいてセルに対応付けられることによって方向に割り当てられる。たとえば、入力頻度に基づく静的配置の場合、図18(A)に示したように、高頻度項目がガイド部92aの頂点に対応するセルに配置され、つまり、当該セルの方向に割り当てられる。あるいは、図18(B)に示したように、高頻度項目がガイド部92aの所定の4つ(上下左右)の頂点に対応するセルに配置され、つまり、当該セルの方向に割り当てられる。また、図19に示したように、定型文のような出力時の情報量の多い項目がガイド部92aの頂点以外の部分に対応するセルに配置される。
記憶領域206には受付角度設定プログラムが記憶されている。このプログラムは、セルの受付角度を入力難度と項目の入力頻度に基づいて設定するためのプログラムである。各セルの受付角度範囲は、図21で示したように、配置条件式(数1)と境界条件(数2、数3)から算出され、図22に示すようなセル角度データが生成される。項目の配置が変更されたり入力頻度が更新されたりするごとに、セルの受付角度範囲も動的に変更され、これによって、高頻度の項目が受け付ける方向の範囲を他の項目のそれよりも相対的に大きくすることができる。したがって、ユーザがよく選択する項目をより選択し易くすることができる。
記憶領域208には操作方向検出プログラムが記憶されている。このプログラムは、ユーザの操作方向(入力方向)を検出するためのプログラムである。図20で示したように、アナログジョイスティック94aの操作信号(X,Y)によって、ユーザの入力操作に応じた方向θを取得することができる。
記憶領域210にはセル選択プログラムが記憶されている。このプログラムは、ユーザの入力方向に対応するセルを選択するためのプログラムである。各セルには、アナログジョイスティック94aの入力方向の受付範囲が割り当てられ、図22に示すように、各セルの受付角度範囲を示すセル角度データが記憶される。セル角度データに基づいて入力方向が含まれる受付角度範囲を特定することによって、入力方向に対応するセルを特定できる。なお、アナログジョイスティック94aの入力(X,Y)の大きさが閾値を超えない場合には、方向入力操作が行われていないものとみなして、セル0が選択される。
記憶領域212には項目選択プログラムが記憶されている。このプログラムは、ユーザの入力方向に対応する項目を選択するためのプログラムである。上述のセル選択プログラムによって、入力方向に対応するセルが特定されるので、当該セルに対応付けられている項目を、図15に示す選択項目リストデータを参照して特定する。一時的再配置が行われている場合には、図27に示す一時的再配置データが生成されているので、この一時的再配置データを参照して項目を特定する。また、この実施例では、第1コントローラ34で所定の操作が行われることによって、方向入力で選択されている項目の入力が決定される。したがって、所定の操作データが入力されたときに、選択されている項目が特定されて出力される。
記憶領域214には入力頻度算出プログラムが記憶されている。このプログラムは、ユーザによって入力の決定された項目の入力頻度を動的に算出し、図17に示すような入力頻度データを更新する。ユーザの実際の入力頻度を取得することができ、したがって、この入力頻度を用いて項目の配置(方向への割り当て)を変更することが可能になる。入力頻度の値としては、たとえば全体の入力回数に占める当該項目の入力回数の割合等を算出するようにすればよい。
記憶領域216には配置変更プログラムが記憶されている。このプログラムは、図23−図25を用いて説明した入力頻度に基づく動的再配置を実行するためのプログラムである。項目の順序に前後関係の拘束を持たせながら、入力難度に基づいて近い位置で項目の配置が見直される。入力難度と入力頻度の積の総和を評価関数として、この評価関数の最小化が図られる。入力頻度算出プログラムによって算出された入力頻度を用いて配置変更を行うことができるので、実際のユーザの選択結果に基づいて配置を変更でき、高頻度の項目をガイド部92aの頂点に対応する方向に割り当てることができる。したがって、ユーザがよく入力する項目を入力し易い方向に割り当てることができる。
記憶領域218には一時的再配置プログラムが記憶される。このプログラムは、項目の一時的再配置を実行する。ユーザの所定の操作に応じて、図26に示したように入替配置が実行され、ガイド部92aの頂点に対応する方向に割り当てられた項目が、頂点以外の部分に対応する方向に割り当てられるとともに、頂点以外の部分に対応する方向に割り当てられていた項目が、頂点に対応する方向に割り当てられる。なお、この一時的再配置のための所定の操作は、項目選択の決定のための所定の操作とは異なるものに設定される。一時的再配置が実行されると、図27に示すような再配置後のセルと項目との対応を示す一時的再配置データが生成される。
データ記憶領域202の記憶領域220はコントローラデータバッファであり、Bluetooth通信ユニット76を介して受信したコントローラ14からのコントローラデータが記憶される。記憶領域222には、図13に示すような複数の項目を示す項目データが記憶される。項目データは光ディスク22に予め記憶されている。
記憶領域224には図17に示すような各項目の入力頻度の統計情報を示す入力頻度データが記憶される。初期の入力頻度データは、たとえば既知の統計結果に基づくデータを光ディスク22に予め記憶して、当該データを読み出すようにしてもよい。また、既知のデータを用いず、ユーザの動的な入力頻度のみを用いる場合には、光ディスク22からの所定値の読み出し、またはプログラムの処理による所定値の算出によって所定の初期値を設定するようにしてもよい。入力頻度算出プログラムによって入力頻度が算出されたとき、入力頻度データは更新される。更新された入力頻度データは、ゲーム装置12のメインメモリ50のうちの不揮発性メモリ(たとえばフラッシュメモリ)、または外部メモリカード26に記憶されてよい。この場合、次回の文字入力処理の際には、ユーザの過去の入力結果の反映された入力頻度データが記憶領域224に読み出されて利用される。
記憶領域226には図16に示すような各セルの入力難度を示す入力難度データが記憶される。入力難度データは光ディスク22に予め記憶されている。
記憶領域228には図15に示したような選択項目リストデータが記憶される。選択項目リストデータは項目配置プログラムによって生成され、配置変更プログラムによる変更によって更新される。この選択項目リストデータを参照することによって、入力方向に対応する、つまり、ユーザによって入力された項目が特定される。
記憶領域230には図22に示したような各セルの受付角度範囲を示すセル角度データが記憶される。セル角度データは受付角度設定プログラムによって生成または更新される。
記憶領域232にはセル選択フラグが記憶される。セル選択フラグは、セル0以外のセルの選択(方向入力)が行われているか否かを示すフラグである。アナログジョイスティック94aの傾き量が所定の閾値よりも大きいときに、ユーザが方向を入力しているものとみなして、セル選択フラグはオンにされる。記憶領域234には現在選択されているセル(セルID)を示す選択セルが記憶される。
記憶領域236にはカーソル位置が記憶される。リスト120におけるカーソル124の位置情報が記憶される。カーソル124の位置は、セル1−16のそれぞれに対して予め定められて記憶されている。この記憶領域236には、現在選択されているセルに対応する位置が記憶される。
記憶領域238には図27に示したような一時的再配置データが記憶されている。一時的再配置プログラムによって一時的再配置が行われたとき、各セルの再配置後の項目を示す一時的再配置データが生成される。一時的再配置が行われている場合、この一時的再配置データを参照して、入力された項目が特定される。
記憶領域240には文字入力履歴が記憶される。この実施例では、アナログジョイスティック94aの方向入力によってセル1−16が選択されている状態で、第1コントローラ34で所定の操作が行われることによって、選択されているセルに対応する項目(文字)の入力が決定され、当該文字を入力することができる。この記憶領域240には、第1コントローラ34のコントローラデータに基づいて所定の操作が検出されたときに、方向入力で選択されているセルに対応する文字(文字ID)が記憶される。
記憶領域242には確定入力が記憶される。この実施例では、アナログジョイスティック94aで方向入力が行われていない状態で、第1コントローラ34で所定の操作が行われることによって、文字入力が確定される。したがって、セル1−16が選択されていない状態で第1コントローラ34のコントローラデータに基づいて所定の操作が検出されたときに、この記憶領域242に、記憶領域240の文字入力履歴が確定入力として記憶される。
図29から図31には文字入力処理におけるCPU46の動作の一例が示される。文字入力処理を開始すると、CPU46は、まずステップS1で、項目配置プログラムに従ってリスト120への項目の配置を行う。具体的には、項目データから所定数以下の項目が選出されて、それぞれの項目がセル1−16に割り当てられる。そして、図15に示す選択項目リストデータが生成されて記憶領域228に記憶される。この実施例では、複数の項目(文字)のうちの所定数が所定のページに割り当てられており、また、ステップS1はリスト120の初期設定であるから、第1ページの選択項目がセル1−16に対応付けられる。入力頻度に基づく静的配置の実行によって、当該ページに含まれる所定数の項目のうち高頻度の項目が、ガイド部92aの頂点または上下左右の頂点に対応するセルに割り当てられる。あるいは、定型文など出力時の情報量が多い項目は、ガイド部92aの頂点以外の部分に対応するセルに割り当てられる。また、この項目配置に関して、入力難度diと入力頻度fiの積の総和を算出し、当該算出値をデータ記憶領域202の所定領域に記憶しておく。
次に、ステップS3で、CPU46は、受付角度設定プログラムに従って、入力難度と入力頻度に基づいて受付角度を設定する。図21を参照して説明したように、配置の条件式(数1)と境界条件(数2および数3)に従って、各セルの受付角度範囲が算出される。図22に示すようなセル角度データが生成されて記憶領域230に記憶される。なお、ステップS3は、フレーム毎に実行されてもよいが、たとえば予め光ディスク22に記憶された既知の入力頻度を利用する場合には、最初だけ受付角度の設定を行うようにしてもよく、その場合ユーザの入力頻度に動的に対応しなくとも、ある程度妥当な入力頻度に基づいた方向の静的な設定を予め行うことができる。また、後述のステップS37の配置変更処理のみであってもユーザの入力頻度に動的に対応することが可能であるが、その場合にはステップS3を省略する構成であってもよい。逆に、ステップS3を毎フレーム実行することで、ユーザの入力頻度に動的に対応し、後述の配置変更処理を省略する構成であってもよい。ステップS3の受付角度の設定と、ステップS37の配置変更処理との両方をフレーム毎に行う場合には、ユーザの入力頻度に基づいて、方向の項目への割り当てをより効果的に行うことができるが、頻度は項目に対して設定されるべきものであるので、入力頻度データをセルに関連付けて記憶する場合には、配置変更処理で項目の入れ替えが行われる際に入力頻度データも合わせて入れ替える必要がある。
続いて、ステップS5で、CPU46は画面を表示または更新する。具体的には、CPU46は、GPU52を用いて図9に示すようなリスト120を含む画面の画像データを生成し、当該画面をモニタ30に表示する。選択項目リストデータおよび項目データを参照して、図9に示すようにセル1−16の位置関係に対応するような配置で各項目が表示される。カーソル124はカーソル位置に表示される。カーソル位置がセル0を示す場合にはカーソルを表示しないこととする。記憶領域234の選択セルがセル0ではない場合、表示欄126には選択セルに対応する項目が表示される。また、記憶領域240に文字入力履歴が記憶されている場合には、入力された文字の履歴が入力欄122に表示される。
ステップS7では、CPU46は記憶領域220からコントローラデータを取得する。コントローラデータは、第2コントローラ36の操作部94の操作データ、第1コントローラ34の操作部82の操作データ、加速度センサ86および96の加速度データ、撮像情報演算部88の撮像対象データ等を含む。したがって、アナログジョイスティック94aの操作信号(方向データ)等が取得され得る。
続くステップS9で、CPU46は、操作方向検出プログラムに従って、アナログジョイスティック94aの傾き量と傾き方向をその操作信号から算出する。アナログジョイスティック94aの操作信号(X,Y)は、X方向およびY方向(図20)の傾き量を示す。したがって、(X,Y)の大きさを算出することによってアナログジョイスティック94a全体としての傾き量が得られる。また、(X,Y)の角度θ(図20)を算出することによって、アナログジョイスティック94aの傾き方向すなわち入力方向が得られる。
そして、ステップS11で、CPU46は傾き量が所定の閾値以上であるか否かを判断する。この閾値判定によって不明確な入力を排除し、アナログジョイスティック94aで方向入力が行われたか否かを明確に判断できる。
ステップS11で“NO”の場合には、つまり、方向入力が行われていない場合には、CPU46はステップS13で記憶領域232のセル選択フラグをオフにする。また、ステップS15で、CPU46はセル0を現在のセルとして記憶領域234に記憶する。なお、記憶領域234に記憶される選択セルの初期値はセル0に設定される。
一方、ステップS11で“YES”の場合、つまり、方向入力が行われている場合には、ステップS17で、CPU46は、セル選択プログラムに従って、セル角度データに基づいて傾き方向に対応するセルを特定し、当該セルを現在のセルとして記憶領域234に記憶する。また、CPU46はステップS19で記憶領域232のセル選択フラグをオンにする。
ステップS15またはS19を終了すると、CPU46は、ステップS21で記憶領域236のカーソル位置を、記憶領域234の選択セルに対応する位置に更新する。なお、カーソル位置の初期値はセル0に対応する位置に設定される。したがって初期状態ではカーソルの表示は行われない。
続いて、ステップS23で、CPU46は、ページ切替動作が行われたか否かを判断する。ページ切替動作は、たとえば、所定の一連の方向入力が行われたことであり、方向データの推移に基づいて判定される。たとえばアナログジョイスティック94aが1回転したことを判定してページ切替動作を行うようにしてもよい。あるいは、所定の操作スイッチ(たとえば1ボタン82b)が操作されたこと、所定の加速度データが加速度センサ86または96によって検出されたことなどが、ページ切替動作として採用されてもよい。選択すべき項目が少ない場合等、ページが1つだけの場合には、当該処理は行わなくともよい。
ステップS23で“YES”の場合、CPU46は、ステップS25でページ切替処理を実行する。たとえば、記憶領域228の選択項目リストデータにおいて全ての項目が次のページの項目に置き換えられる。このページ切替においても、ステップS1の項目配置と同様に、入力頻度に基づく静的配置が実行されてよい。ステップS25を終了すると、処理はステップS3に戻る。
一方、ステップS23で“NO”の場合には、処理は次の図30のステップS27に進む。図30のステップS27で、CPU46は、決定動作が行われたか否かを判断する。決定動作は、ユーザが文字入力の決定を指示するための動作であり、たとえば、Aボタン82dまたはCボタン94bが押下げられることである。この判定は、第1コントローラ34の操作データまたは第2コントローラ36の操作データに基づいて行われる。
なお、他の実施例では、決定動作の判定には、コントローラ14の操作部82および94のボタン操作ではなく、加速度センサ86および96、または撮像情報演算部88によって取得されるデータを用いるようにしてよい。たとえば、加速度センサ86または加速度センサ94によって所定の条件を満足する加速度値または加速度変化量などが検出されたとき、つまり、第1コントローラ34または第2コントローラ36で所定の動きが検出されたとき、文字の入力決定を行うようにしてよい。あるいは、撮像情報演算部88によって取得されるデータに基づいて、第1コントローラ34による指示位置または指示位置変化などが所定の条件を満たしたと判断されるとき、つまり、第1コントローラ34で所定の動きが検出されたとき、文字の入力決定を行うようにしてもよい。
ステップS27で“YES”の場合、CPU46は、ステップS29で、記憶領域232のセル選択フラグがオンであるか否かを判断する。ステップS29で“YES”の場合、つまり、アナログジョイスティック94aによる方向入力が行われつつAボタン82dが押下げられた(決定動作が行われた)ときには、ユーザが入力しようとする文字を決定したものとみなされる。したがって、ステップS31で、CPU46は現在のセルに対応する文字を記憶領域228の選択項目リストデータを参照して特定する。なお、後述の一時的再配置が行われて一時的再配置データが記憶領域238に生成されているときには、この一時的再配置データが参照される。続いて、ステップS33で、CPU46は特定された文字を出力し、つまり、記憶領域240の文字入力履歴に記憶する。なお、一時的再配置は、ユーザによって入力が決定されるまでの間だけ行われるものであるので、一時的再配置データに基づいて入力文字を特定した後には、記憶領域238の一時的再配置データは削除される。
そして、ステップS35で、CPU46は入力頻度算出プログラムに従って入力頻度の集計を行う。たとえば、全入力回数に占める当該項目の入力回数の割合等を算出するようにすればよく、したがって入力に応じて入力された文字の入力頻度fiが増加され、他の文字の入力頻度が下がり、記憶領域224の入力頻度データが更新される。また、入力頻度は厳密な回数の割合に限らず、たとえば数段階からなるレベルとして示されてもよいし、頻度を表す値であれば算出方法は適宜設定できる。また、全ての入力における頻度を算出してもよいが、直近のn回の入力の履歴を記憶しておき、当該n回の入力におけるそれぞれの文字の入力頻度を算出するようにしてもよい。
さらに、ステップS37で、CPU46は配置変更プログラムに従って配置変更処理を実行する。配置変更処理の動作の一例は図32に詳細に示される。この配置変更処理によって、選択項目リストデータに記憶されている配置が入力難度と入力頻度に基づいて必要に応じて変更される。
図32のステップS71では、CPU46は、入力された項目Xに関して、現在のセルAよりも低難度の直近のセルを両方向に探索する。具体的には、記憶領域226の入力難度データを参照して、記憶領域234の現在のセルの入力難度diを読み出すとともに、当該入力難度diよりも低い難度の直近のセルを左右両方向で探索する。
次に、ステップS73で、CPU46は低難度のセルBを発見できたか否かを判断する。ステップS73で“NO”の場合、それ以上適切な配置変更が行えないので、この配置変更処理を終了する。
一方、ステップS73で“YES”の場合には、入力された項目Xの配置をより低難度のセルに変更することを試みる。左右両方向にそれぞれセルBが発見されたとき、それぞれのセルBに対しての配置変更を試みる。なお、配置変更を元に戻すことができるようにするために、記憶領域228に記憶されている現在の選択項目リストデータは、データ記憶領域202の別の領域に一時保存される。
まず、ステップS75で、CPU46は、セルAB間に項目Xと拘束される項目が存在するか否かを選択項目リストデータに基づいて判断する。なお、拘束関係は、同じ種類の項目のグループに対して予め設定され、順番を入れ替えるとかえって配置がわかりにくくなるようなものに対して設定される。具体的には、1−9の数字の並びや、アルファベット等であって、昇順または降順になっている方がわかりやすいものである。それ以外の項目のグループに対しても、必要に応じてさまざまな拘束関係を予め設定することができる。したがって、セルAB間に項目Xの種類(アルファベット、記号、数字など)と同じ種類の項目が存在するか否かが判断される。項目の種類は、たとえば項目データにおいて項目IDに対応付けて記憶される。
ステップS75で“NO”の場合、つまり、項目の順序の前後関係をそのまま維持可能な場合には、CPU46は、ステップS77で、選択項目リストデータにおいて、項目XとセルBの項目とで配置を交換する。つまり、セルAにセルBの項目を配置するとともに、セルBに項目Xを配置する。
一方、ステップS75で“YES”の場合、つまり、単純な配置交換では拘束条件を満足できない場合には、CPU46は、ステップS77で、選択項目リストデータにおいて、セルAB間のセルと同数だけ項目Xと拘束の無い項目を、セルAから順に再配置する。これによって、セルAからセルBまでは、項目Xに非拘束な項目が配置される。続いて、ステップS81で、CPU46は選択項目リストデータにおいて項目XをセルBに配置する。そして、ステップS83で、CPU46は、選択項目リストデータにおいて、項目Xと拘束のある項目を、セルBに続いて順に再配置する。たとえば、セルAB間に存在していた拘束付項目がセルBに続くセルに配置される。当該再配置の対象となるセルBに続くセルに、拘束付項目が配置されていた場合には、当該拘束付項目も、セルAB間の拘束付項目の配置されたセルに続いて順に配置される。このような再配置によって、項目の順序の前後関係を維持しつつ配置を変更することができる。
ステップS77またはS83を終了すると、CPU46は、ステップS85で、新配置に関して、入力難度diと入力頻度fiの積の総和、すなわち、評価関数を計算する。そして、ステップS87で、CPU46は総和が配置変更前に比べて下回ったか否かを判断する。ステップS87で“YES”の場合、つまり、評価関数がより小さくなった場合、この変更配置を採用し、この配置変更処理を終了する。なお、このときの評価関数の値をデータ記憶領域202の所定領域に記憶しておき、次回の処理において配置変更前の値として比較する。
一方、ステップS87で“NO”の場合、つまり、評価関数の値が小さくならなかった場合には、変更前の配置がより適切な配置であることが分かる。したがって、CPU46は、ステップS89で配置を元に戻す、つまり、記憶領域228の選択項目リストデータを変更前のデータに戻す。ステップS89を終了すると、この配置変更処理を終了し、処理は図29のステップS3に戻る。したがって、配置が変更されたときには、各項目は新たな配置で画面上に表示される。また、画面上の入力欄122には文字入力履歴に記憶された文字が表示される。
また、図30のステップS29で“NO”の場合、つまり、アナログジョイスティック94aによる方向入力が行われていない状態で決定動作(Aボタン82dの押下げなど)が行われたときには、ユーザが文字の入力を終えたものとみなされる。したがって、ステップS39で、CPU46は、記憶領域240の文字入力履歴を確定入力として処理する。たとえば、文字入力履歴を確定入力として所定の記憶領域242に出力(記憶)したり、確定入力の文字情報を使った処理を実行したりする。ステップS39を終了すると、この文字入力処理が終了される。
また、ステップS27で“NO”の場合には、CPU46はステップS41で取消動作が行われたか否かを判断する。取消動作は、ユーザが先に入力した文字の削除または文字入力の取消しを指示するための動作であり、たとえば、Bボタン82hまたはZボタン94cが押下げられることである。この判定は、第1コントローラ34の操作データまたは第2コントローラ36の操作データに基づいて行われる。
たとえば決定動作をCボタン94bに、取消動作をZボタン94cに割り当てる場合、選択操作のためのアナログジョイスティック94aと決定操作のためのCボタン94bと取消動作のためのZボタン94cがすべて片手で把持可能な第2コントローラ36のハウジング92に設けられるので、ユーザは片手で入力が可能になる。さらには、ユーザが当該ハウジング92を片手で把持したときの親指の位置にアナログジョイスティック94aが配設され、かつ、ユーザが当該ハウジング92を片手で把持したときの人差し指または中指の位置にZボタン94cおよびCボタン94bが配設されるので、操作性がよい。
なお、他の実施例では、取消動作の判定には、コントローラ14の操作部82および94のボタン操作ではなく、加速度センサ86および96、または撮像情報演算部88によって取得されるデータを用いるようにしてよい。たとえば、加速度センサ86または加速度センサ94によって所定の条件を満足する加速度値または加速度変化量などが検出されたとき、つまり、第1コントローラ34または第2コントローラ36で所定の動きが検出されたとき、文字入力の取消しを行うようにしてよい。あるいは、撮像情報演算部88によって取得されるデータに基づいて、第1コントローラ34による指示位置または指示位置変化などが所定の条件を満たしたと判断されるとき、つまり、第1コントローラ34で所定の動きが検出されたとき、文字の取消しを行うようにしてもよい。
また、さらに他の実施例では、リスト120の選択項目の中に、キャンセルを行うための項目を設けるようにしてもよい。
ステップS41で“YES”の場合、CPU46はステップS43で文字入力履歴記憶領域240に項目が記憶されているか否かを判断する。ステップS43で“YES”の場合、直前の文字の入力がキャンセルされたものとみなされる。したがって、ステップS45で、CPU46は記憶領域240の文字入力履歴から最後に入力された1つの項目(文字または文字列)を削除する。ステップS45を終了すると、処理は図29のステップS3に戻る。したがって、画面上の入力欄122では、最後に入力された文字が消去される。
一方、ステップS43で“NO”の場合、つまり、1つの項目も入力されていない状態で取消動作(Bボタン82hの押下げなど)が行われたときには、文字入力自体がキャンセルされたものとみなされる。したがって、CPU46はステップS47で文字入力の取消しを実行し、この文字入力処理を終了する。
また、ステップS41で“NO”の場合には、CPU46は、図31のステップS49で、入替配置動作が行われたか否かを判断する。入替配置動作は、ユーザが一時的再配置としての入替配置の実行を指示するための動作であり、たとえば、−ボタン82eおよび+ボタン82gが押下げられることである。この判定は、第1コントローラ34の操作データに基づいて行われる。
ステップS49で“YES”の場合、CPU46は、ステップS51で右回転入替えが指示されたか否か、つまり、+ボタン82gが押下げられたか否かを第1コントローラ34の操作データに基づいて判断する。ステップS51で“YES”の場合、CPU46は、ステップS53で、各項目を右隣のセルに配置する。具体的には、記憶領域228の選択項目リストデータをコピーして一時的再配置データを記憶領域238に生成し、当該一時的再配置データにおいて、各項目を右隣のセルに対応付ける。
一方、ステップS51で“NO”の場合、つまり、−ボタン82eが押下げられた場合には、CPU46は、ステップS55で各項目を左隣のセルに配置する。具体的には、記憶領域228の選択項目リストデータをコピーして一時的再配置データを記憶領域238に生成し、当該一時的再配置データにおいて、各項目を左隣のセルに対応付ける。ステップS53またはS55を終了したとき、処理は図29のステップS3に戻る。したがって、入替え配置が行われた場合には、ガイド部92aの頂点に対応する方向と頂点以外の部分に対応する方向とで項目の入替えられたリスト120が表示される。また、ステップS49で“NO”の場合にも、処理は図29のステップS3に戻る。
この実施例によれば、方向指示による項目選択において、項目に対する入力頻度に基づいて項目のそれぞれを方向に割り当てるような静的配置および/または動的配置を実行するようにしたので、項目選択の操作性を良くすることができる。
また、所定の操作に応じて、ガイド部92aの頂点に対応する方向に割り当てられた項目と頂点以外の部分に割り当てられた項目とを一時的に入れ替えるようにしたので、入力し難い方向に割り当てられた項目を、入力し易くすることができる。
また、入力頻度が算出されて当該入力頻度に基づく配置変更が試みられるので、動的配置によって、入力頻度の高い項目が入力し難い方向から入力し易い方向に割り当てられるように変更していくことができる。
図33には他の実施例で実行される一時的再配置としての拡大配置の一例が示される。この実施例では、項目を選択するための方向入力がガイド部92aの頂点に対応する方向に限定される。さらに、それ以外の項目は、辺上の方向に対応させる代わりに、2段階の方向入力によって選択することができる。
具体的には、ガイド部92aの頂点に対応する方向が入力されたとき、頂点に割り当てられた以外の項目が、決定動作が行われるまでの間、入力方向に対応する頂点以外の頂点に一時的に割り当てられる。
図33では、初期配置として、アルファベットA−Pがそれぞれ配置されている。セル1、3、5、7、9、11、13、15にそれぞれA、C、E、G、I、K、M、Oが対応付けられている。それ以外の項目は、2段階の方向入力によって選択することができる項目として設定されている。具体的には、たとえばセル2、4、6、8、10、12、14、16を領域が設定されないセルとして便宜的に設定した選択項目リストを生成し、表示の際には頂点に対応する項目同士の間に表示をするようにすればよい。その場合、上述の偶数番号のセルは方向入力によって選択されることはないが、奇数番号のセル同士に隣接するものとしてプログラムで処理され、2段階目の選択において選択可能になる。図33において、セル3に配置されたCが方向入力によって指示されている。このとき、Cの両隣のセルに表示されていた2つの項目BとDが、Cの両隣の頂点のセル(セル1と5)に対応する位置にそれぞれ配置される。また、Cの両隣の頂点のセルに配置されていた2つの項目AとEが、Cの両方向に2つ隣の頂点のセル(セル15と7)に対応する位置にそれぞれ配置される。つまり、この一時的再配置では、最初に指示された頂点に割り当てられた項目(C)の近くに表示される所定数の項目(A、B、D、E)が、当該頂点の近くの頂点に割り当てられる。なお、この実施例では、指示された頂点の両隣の頂点に割り当てられた項目(A、E)も一時的に別の頂点に再配置されるようにしているが、少なくとも指示された頂点の両隣のセルに表示する項目(B、D)が一時的に両隣の頂点セルにそれぞれ配置されればよい。
なお、図33では、一時的再配置された項目(A、B、D、E)と方向入力で指示された項目(C)以外の項目がグレー表示され、一時的再配置されなかった項目は選択不可能にされている。しかし、別の実施例では、一時的再配置されなかった項目も選択可能にされてよい。
このように、方向入力で指示された項目の近くの複数の項目の配列が拡大される。ユーザは所望の項目が頂点部分に対応していなくとも、当該項目に隣接して表示される項目に対応する頂点の方向を入力することによって、当該項目を頂点以外の部分から頂点に一時的に再配置させることができ、そして、当該項目が一時的に再配置された頂点に対応する方向を入力することで当該項目を容易に指示することができる。この拡大配置によれば、ガイド部92aの頂点に対応する方向を2段階で入力することによって、所望の項目を容易に選択することができる。
図34から図36には、この実施例の文字入力処理の動作の一例が示される。なお、図34から図36における図29から図31で説明した文字入力処理と同様の処理には同じ参照符号が付されており、それらの処理の詳細な説明は省略される。
図34のステップS17でアナログジョイスティック94aの傾き方向に対応するセルを特定した後、拡大配置動作が行われたか否かの判定が行われる。この実施例では、アナログジョイスティック94aを用いて頂点に対応する方向の入力が無入力状態(すなわちセル0の選択状態)から行われることが、拡大配置実行の条件としている。したがって、CPU46は、ステップS111で、記憶領域232のセル選択フラグがオフであるか否かを判断する。つまり、前フレームで方向入力が行われていなかったかどうかが判断される。
ステップS111で“YES”の場合、CPU46は、ステップS113でデータ記憶領域202の所定領域に設けられる拡大配置動作フラグをオンにする。ステップS113を終了すると、処理はステップS19に進む。また、ステップS111で“NO”の場合、つまり、無入力状態からの方向入力ではない場合には、処理はステップS21へ進む。
図35のステップS29で“YES”の場合、つまり、方向入力が行われながら決定動作が行われた場合、当該頂点に配置された項目の入力が決定される。したがって、ステップS31で、一時的再配置データに基づいて項目すなわち入力された文字が特定される。
図35のステップS41で“NO”の場合、図36のステップS119で、CPU46は、拡大配置動作フラグがオンであるか否かを判断する。ステップS119で“YES”の場合、つまり、拡大配置動作が行われたときには、CPU46は、ステップS121で、記憶領域228の選択項目リストデータをコピーして、記憶領域238に一時的再配置データを生成する。
続いて、CPU46は、ステップS123で、選択項目リストデータを参照して、現在のセルの両隣の頂点セルに対応する項目を特定する。すなわち、本実施例においては、奇数番号のセル同士で隣接する項目を特定する。そして、ステップS125では、CPU46は、一時的再配置データにおいて、特定された項目を現在のセルから両方向に2つ隣の頂点セルにそれぞれ配置する。
さらに、ステップS127で、CPU46は、選択項目リストデータを参照して、現在のセルの両隣のセルに対応する項目を特定する。すなわち、本実施例では、奇数番号のセルである現在のセルに隣接する偶数番号(領域は設定されていない)のセルに対応する項目を特定する。そして、ステップS129で、CPU46は、一時的再配置データにおいて、特定された項目を、現在のセルの両隣の頂点セル(奇数番号のセル)にそれぞれ配置する。
ステップS131では、CPU46は、拡大配置動作に応じて一時的再配置を行ったので、データ記憶領域202に記憶される拡大配置動作フラグをオフにする。ステップS131を終了すると、処理は図34のステップS3に戻る。また、ステップS119で“NO”の場合、つまり、拡大配置動作が行われていない場合には、処理はステップS49へ進む。
この実施例によれば、入力された方向がガイド部92aの頂点に対応する方向を示すとき、頂点以外の部分に対応する方向に割り当てられた項目(頂点の方向に割り当てられた項目以外の項目)を、頂点に対応する方向に一時的に割り当てるようにしたので、入力し難い方向に割り当てられた項目を選択し易くすることができる。
なお、上述の各実施例では、ステップS1の項目配置の処理で入力頻度に基づく項目配置の実行された選択項目リストに対して、入替配置や拡大配置のような一時的再配置を実行するようにした。しかし、他の実施例では、入力頻度を考慮せずに項目の配置された選択項目リストに対して、一時的再配置を実行するようにしてもよい。一時的再配置によれば、上述のように、入力難度の高い頂点以外の部分に配置された項目であっても、入力難度の低い頂点に簡単に再配置することができるからである。
また、上述の各実施例では、項目を選択するための方向の入力は、アナログジョイスティック94aによって行われた。しかし、この方向入力のための入力装置は、適宜変更され得る。たとえば、上下左右方向を指示可能な十字キー82aが使用されてよい。十字キー82aの場合、セルおよび選択項目は、たとえば4角形の頂点および辺上に対応する方向に割り当てられる。なお、十字キー82aの上下左右の4つの操作部分のうちの隣接する2つが同時に押下げられたとき、斜め方向の入力が検出される。あるいは、静電式または感圧式などのトラックパッド(タッチパッド)が使用されてもよい。この場合、タッチパッドの基準位置からみた接触位置、または前回の接触位置からみた現在の接触位置の方向などによってユーザの入力方向を検出することができる。タッチパッド以外のポインティングデバイス、たとえばマウスも適用可能である。また、トラックパッドを多角形状のガイド部とともに形成することによって、上述のガイド部92aを有するアナログジョイスティック94aと同様に、頂点に対応する方向入力を行い易くすることができる。
また、上述の各実施例では、ガイド部92aは八角形であったが、これに限らず、方向入力のためのガイドは、八角形以外の多角形や、複数の角を有する他の形状であってもよい。いずれの多角形形状であっても項目を多角形の頂点と辺上に対応させて配置することができる。ここで、角を複数有する形状であれば、厳密な多角形でなくともガイドの効果を奏するので、たとえば曲線を含むような形状であってもよい。また、項目は辺上には対応させず、頂点のみに対応させるようにしてもよい。