(57)【要約】【課題】ユーザが手に持って使用する入力装置を用いて従来にはない新たな操作を行う。【解決手段】情報処理装置は、入力装置から取得された操作データから、入力装置の傾きに対応して変化する傾きデータを算出または取得する。なお、操作データには、撮像手段によって撮像される撮像画像のデータ、当該撮像画像における撮像対象の所定の２箇所の位置を示すデータ、当該２箇所の位置を結ぶ方向を示すデータ、および当該方向から算出される入力装置の傾きを示すデータ、の少なくともいずれかが含まれる。情報処理装置は、傾きデータに基づいて、画面に表示されているオブジェクト（パネル等）を他のオブジェクトに入れ替えて表示させる。【選択図】図８
2007260116.tif 000002
【特許請求の範囲】
【請求項１】
撮像対象を撮像するための撮像手段を備えた入力装置から操作データを取得し、当該操作データに応じてゲーム処理を行った結果を表示装置の画面に表示させる情報処理装置であって、
前記操作データには、前記撮像手段によって撮像される撮像画像のデータ、当該撮像画像における前記撮像対象の所定の２箇所の位置を示すデータ、当該２箇所の位置を結ぶ方向を示すデータ、および当該方向から算出される前記入力装置の傾きを示すデータ、の少なくともいずれかが含まれ、
前記入力装置から取得された操作データから、前記入力装置の傾きを表す傾きデータを算出または取得する傾きデータ算出手段と、
前記傾きデータに基づいて、前記画面に表示されているオブジェクトを他のオブジェクトに入れ替えて表示させる入替手段とを備える、情報処理装置。
【請求項２】
前記入替手段は、前記画面に表示されている複数のオブジェクトの位置を入れ替える、請求項１に記載の情報処理装置。
【請求項３】
前記操作データには、前記撮像手段によって撮像される撮像画像のデータ、当該撮像画像における前記撮像対象の所定の２箇所の位置を示すデータ、および、当該撮像画像における前記撮像対象の位置を示すデータ、の少なくともいずれかが含まれており、
前記情報処理装置は、
前記入力装置によって指し示される前記画面上の指示位置を前記操作データから算出する指示位置算出手段と、
前記画面に表示され得る複数のオブジェクトのうちから、入替の対象となる対象オブジェクトを前記指示位置を用いて複数選出する選出手段とをさらに備え、
前記入替手段は、複数の前記対象オブジェクトの位置を入れ替える、請求項２に記載の情報処理装置。
【請求項４】
前記選出手段は、前記指示位置を含む所定の領域内に含まれる複数のオブジェクトを前記対象オブジェクトとして選出する、請求項３に記載の情報処理装置。
【請求項５】
前記画面には、複数のオブジェクトからなるオブジェクト群を表すオブジェクト群画像が複数表示されており、
前記選出手段は、所定のタイミングにおいて前記複数のオブジェクト群画像のいずれかと前記指示位置とが重なったか否かを判定し、前記指示位置と重なったオブジェクト群画像に対応する複数のオブジェクトを前記対象オブジェクトとして選出する、請求項３に記載の情報処理装置。
【請求項６】
前記選出手段は、所定のタイミングにおいて、前記画面に表示されている複数のオブジェクトのいずれかと前記指示位置とが重なったか否かを判定し、当該指示位置と重なったオブジェクトを対象オブジェクトとして選出し、
前記入替手段は、複数のオブジェクトが前記対象オブジェクトとして選出されている場合、当該複数の対象オブジェクトの位置を入れ替える、請求項３に記載の情報処理装置。
【請求項７】
前記入替手段は、複数のオブジェクトの表示位置の中心を軸に回転移動させることによって当該複数のオブジェクトを入れ替える、請求項２に記載の情報処理装置。
【請求項８】
前記入替手段は、所定期間における、前記傾きデータにより示される傾きの変化に基づいてオブジェクトの入替を行う、請求項１から請求項３のいずれかに記載の情報処理装置。
【請求項９】
前記入力装置は少なくとも１つの押圧可能な操作キーを有し、
前記操作データは、前記操作キーが押されているか否かを示すキーデータをさらに含み、
前記入替手段は、前記キーデータに基づいて前記所定期間を決定する、請求項８に記載の情報処理装置。
【請求項１０】
前記入替手段は、複数のオブジェクトの位置を循環的に入れ替え、
前記入替手段による入替は、前記所定期間における前記傾きの変化量に応じた回数だけ行われる、請求項８に記載の情報処理装置。
【請求項１１】
前記入替手段は、予め定められた基準方向に対する前記傾きデータにより示される傾きの変化に基づいてオブジェクトの入替を行う、請求項１から請求項３のいずれかに記載の情報処理装置。
【請求項１２】
撮像対象を撮像するための撮像手段と、少なくとも１つの押圧可能な操作キーとを備えた入力装置から操作データを取得し、当該操作データに応じてゲーム処理を行うゲーム装置であって、
前記操作データには、前記撮像手段によって撮像される撮像画像のデータ、当該撮像画像における前記撮像対象の所定の２箇所の位置を示すデータ、当該２箇所の位置を結ぶベクトルを示すデータ、および当該ベクトルから算出される前記入力装置の傾きを示すデータ、の少なくともいずれかである第１データと、前記操作キーが押されているか否かを示す第２データとが含まれ、
前記操作データを逐次取得する操作データ取得手段と、
前記操作データに含まれる第１データから、前記入力装置の傾きを逐次算出または取得する傾き算出手段と、
前記入力装置によって指し示される前記画面上の指示位置を、前記操作データに含まれる第１データから逐次算出する指示位置算出手段と、
前記操作データに含まれる第２データに基づき、前記操作キーが押されているか否かを判定するキー入力判定手段と、
ゲーム空間内に配置された、複数種類のグループに分類された複数のパズル要素のうち、前記キーが押されたタイミングにおける指示位置に対応するゲーム空間内の位置を含む所定領域内に配置されるパズル要素を操作対象として設定する操作対象設定手段と、
前記キーが押されたタイミングにおける入力装置の傾きを記憶する記憶手段と、
前記キーが押されている期間、前記記憶手段に記憶された傾きに対する前記傾き算出手段によって算出された傾きの変化量を逐次算出する変化量算出手段と、
前記変化量に基づいた回転量で、前記操作対象のパズル要素を回転させる回転手段と、
前記キーが離されたタイミングにおける変化量を、前記操作対象のパズル要素の位置を循環的に入れ替えたときの回転量に近似する近似手段と、
前記近似された回転量だけ前記操作対象のパズル要素を回転させることにより、当該パズル要素の位置を循環的に入れ替える入替手段と、
前記入替手段によって前記パズル要素の位置を入れ替えた結果、同一グループに分類されるパズル要素が前記ゲーム空間において所定個数以上並んだ場合に、当該並んだパズル要素を消去する消去手段と、
前記パズル要素を含む前記ゲーム空間の画像を表示装置に逐次表示させる表示制御手段とを備える、ゲーム装置。
【請求項１３】
撮像対象を撮像するための撮像手段と、第１の操作キーおよび第２の操作キーとを備えた入力装置から操作データを取得し、当該操作データに応じて文字入力を受け付ける文字入力受付装置であって、
前記操作データには、前記撮像手段によって撮像される撮像画像のデータ、当該撮像画像における前記撮像対象の所定の２箇所の位置を示すデータ、当該２箇所の位置を結ぶベクトルを示すデータ、および当該ベクトルから算出される前記入力装置の傾きを示すデータ、の少なくともいずれかである第１データと、前記操作キーが押されているか否かを示す第２データとが含まれ、
前記操作データを逐次取得する操作データ取得手段と、
前記操作データに含まれる第１データから、前記入力装置の傾きを逐次算出または取得する傾き算出手段と、
前記入力装置によって指し示される前記画面上の指示位置を、前記操作データに含まれる第１データから逐次算出する指示位置算出手段と、
前記操作データに含まれる第２データに基づき、前記操作キーが押されているか否かを判定するキー入力判定手段と、
複数の文字からなる文字群を表す文字群画像を表示装置に複数表示させる第１表示制御手段と、
前記第１の操作キーが押されたタイミングにおいて前記指示位置と重なっている文字群画像により表される文字群に含まれる各文字を文字毎に表す複数の文字画像を、それぞれ所定の位置関係となるように前記表示装置に表示させる第２表示制御手段と、
前記傾き算出手段によって算出される傾きに基づいて前記複数の文字画像の位置関係を入れ替える入替手段と、
前記第２の操作キーが押下された場合、複数の文字画像のうち、所定の位置に表示されている文字画像により表される文字の入力を受け付ける入力受付手段と、
前記入力受付手段によって入力が受け付けられた文字を前記表示装置に表示させる第３表示制御手段とを備える、文字入力受付装置。
【請求項１４】
撮像対象を撮像するための撮像手段を備えた入力装置から操作データを取得し、当該操作データに応じてゲーム処理を行った結果を表示装置の画面に表示させる情報処理装置のコンピュータに実行させるプログラムであって、
前記操作データには、前記撮像手段によって撮像される撮像画像のデータ、当該撮像画像における前記撮像対象の所定の２箇所の位置を示すデータ、当該２箇所の位置を結ぶ方向を示すデータ、および当該方向から算出される前記入力装置の傾きを示すデータ、の少なくともいずれかが含まれ、
前記入力装置から取得された操作データから、前記入力装置の傾きを表す傾きデータを算出または取得する傾きデータ算出ステップと、
前記傾きデータに基づいて、前記画面に表示されているオブジェクトを他のオブジェクトに入れ替えて表示させる入替ステップとを前記コンピュータに実行させる、情報処理プログラム。
【請求項１５】
前記入替ステップにおいて、前記コンピュータは、前記画面に表示されている複数のオブジェクトの位置を入れ替える、請求項１４に記載の情報処理プログラム。
【請求項１６】
前記操作データには、前記撮像手段によって撮像される撮像画像のデータ、当該撮像画像における前記撮像対象の所定の２箇所の位置を示すデータ、および、当該撮像画像における前記撮像対象の位置を示すデータ、の少なくともいずれかが含まれており、
前記情報処理プログラムは、
前記入力装置によって指し示される前記画面上の指示位置を前記操作データから算出する指示位置算出ステップと、
前記画面に表示され得る複数のオブジェクトのうちから、入替の対象となる対象オブジェクトを前記指示位置を用いて複数選出する選出ステップとをさらに前記コンピュータに実行させ、
前記入替ステップにおいて、前記コンピュータは、複数の前記対象オブジェクトの位置を入れ替える、請求項１５に記載の情報処理プログラム。
【請求項１７】
前記選出ステップにおいて、前記コンピュータは、前記指示位置を含む所定の領域内に含まれる複数のオブジェクトを前記対象オブジェクトとして選出する、請求項１６に記載の情報処理プログラム。
【請求項１８】
前記画面には、複数のオブジェクトからなるオブジェクト群を表すオブジェクト群画像が複数表示されており、
前記選出ステップにおいて、前記コンピュータは、所定のタイミングにおいて前記複数のオブジェクト群画像のいずれかと前記指示位置とが重なったか否かを判定し、前記指示位置と重なったオブジェクト群画像に対応する複数のオブジェクトを前記対象オブジェクトとして選出する、請求項１６に記載の情報処理プログラム。
【請求項１９】
前記選出ステップにおいて、前記コンピュータは、所定のタイミングにおいて、前記画面に表示されている複数のオブジェクトのいずれかと前記指示位置とが重なったか否かを判定し、当該指示位置と重なったオブジェクトを対象オブジェクトとして選出し、
前記入替ステップにおいて、前記コンピュータは、複数のオブジェクトが前記対象オブジェクトとして選出されている場合、当該複数の対象オブジェクトの位置を入れ替える、請求項１６に記載の情報処理プログラム。
【請求項２０】
前記入替ステップにおいて、前記コンピュータは、複数のオブジェクトの表示位置の中心を軸に回転移動させることによって当該複数のオブジェクトを入れ替える、請求項１５に記載の情報処理プログラム。
【請求項２１】
前記入替ステップにおいて、前記コンピュータは、所定期間における、前記傾きデータにより示される傾きの変化に基づいてオブジェクトの入替を行う、請求項１４から請求項１６のいずれかに記載の情報処理プログラム。
【請求項２２】
前記入力装置は少なくとも１つの押圧可能な操作キーを有し、
前記操作データは、前記操作キーが押されているか否かを示すキーデータをさらに含み、
前記入替ステップにおいて、前記コンピュータは、前記キーデータに基づいて前記所定期間を決定する、請求項２１に記載の情報処理プログラム。
【請求項２３】
前記入替ステップにおいて、前記コンピュータは、複数のオブジェクトの位置を循環的に入れ替え、
前記入替ステップにおける入替は、前記所定期間における前記傾きの変化量に応じた回数だけ行われる、請求項２１に記載の情報処理プログラム。
【請求項２４】
前記入替ステップにおいて、前記コンピュータは、予め定められた基準方向に対する前記傾きデータにより示される傾きの変化に基づいてオブジェクトの入替を行う、請求項１４から請求項１６のいずれかに記載の情報処理プログラム。
【請求項２５】
撮像対象を撮像するための撮像手段と、少なくとも１つの押圧可能な操作キーとを備えた入力装置から操作データを取得し、当該操作データに応じてゲーム処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記操作データには、前記撮像手段によって撮像される撮像画像のデータ、当該撮像画像における前記撮像対象の所定の２箇所の位置を示すデータ、当該２箇所の位置を結ぶベクトルを示すデータ、および当該ベクトルから算出される前記入力装置の傾きを示すデータ、の少なくともいずれかである第１データと、前記操作キーが押されているか否かを示す第２データとが含まれ、
前記操作データを逐次取得する操作データ取得ステップと、
前記操作データに含まれる第１データから、前記入力装置の傾きを逐次算出または取得する傾き算出ステップと、
前記入力装置によって指し示される前記画面上の指示位置を、前記操作データに含まれる第１データから逐次算出する指示位置算出ステップと、
前記操作データに含まれる第２データに基づき、前記操作キーが押されているか否かを判定するキー入力判定ステップと、
ゲーム空間内に配置された、複数種類のグループに分類された複数のパズル要素のうち、前記キーが押されたタイミングにおける指示位置に対応するゲーム空間内の位置を含む所定領域内に配置されるパズル要素を操作対象として設定する操作対象設定ステップと、
前記キーが押されたタイミングにおける入力装置の傾きを前記ゲーム装置の記憶手段に記憶する記憶ステップと、
前記キーが押されている期間、前記記憶手段に記憶された傾きに対する前記傾き算出ステップにおいて算出された傾きの変化量を逐次算出する変化量算出ステップと、
前記変化量に基づいた回転量で、前記操作対象のパズル要素を回転させる回転ステップと、
前記キーが離されたタイミングにおける変化量を、前記操作対象のパズル要素の位置を循環的に入れ替えたときの回転量に近似する近似ステップと、
前記近似された回転量だけ前記操作対象のパズル要素を回転させることにより、当該パズル要素の位置を循環的に入れ替える入替ステップと、
前記入替ステップにおいて前記パズル要素の位置を入れ替えた結果、同一グループに分類されるパズル要素が前記ゲーム空間において所定個数以上並んだ場合に、当該並んだパズル要素を消去する消去ステップと、
前記パズル要素を含む前記ゲーム空間の画像を表示装置に逐次表示させる表示制御ステップとを前記コンピュータに実行させる、ゲームプログラム。
【請求項２６】
撮像対象を撮像するための撮像手段と、第１の操作キーおよび第２の操作キーとを備えた入力装置から操作データを取得し、当該操作データに応じて文字入力を受け付ける文字入力受付装置のコンピュータに実行させるプログラムであって、
前記操作データには、前記撮像手段によって撮像される撮像画像のデータ、当該撮像画像における前記撮像対象の所定の２箇所の位置を示すデータ、当該２箇所の位置を結ぶベクトルを示すデータ、および当該ベクトルから算出される前記入力装置の傾きを示すデータ、の少なくともいずれかである第１データと、前記操作キーが押されているか否かを示す第２データとが含まれ、
前記操作データを逐次取得する操作データ取得ステップと、
前記操作データに含まれる第１データから、前記入力装置の傾きを逐次算出または取得する傾き算出ステップと、
前記入力装置によって指し示される前記画面上の指示位置を、前記操作データに含まれる第１データから逐次算出する指示位置算出ステップと、
前記操作データに含まれる第２データに基づき、前記操作キーが押されているか否かを判定するキー入力判定ステップと、
複数の文字からなる文字群を表す文字群画像を表示装置に複数表示させる第１表示制御ステップと、
前記第１の操作キーが押されたタイミングにおいて前記指示位置と重なっている文字群画像により表される文字群に含まれる各文字を文字毎に表す複数の文字画像を、それぞれ所定の位置関係となるように前記表示装置に表示させる第２表示制御ステップと、
前記傾き算出ステップにおいて算出される傾きに基づいて前記複数の文字画像の位置関係を入れ替える入替ステップと、
前記第２の操作キーが押下された場合、複数の文字画像のうち、所定の位置に表示されている文字画像により表される文字の入力を受け付ける入力受付ステップと、
前記入力受付ステップにおいて入力が受け付けられた文字を前記表示装置に表示させる第３表示制御ステップとを備える、文字入力受付プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびプログラムに関し、より特定的には、撮像装置を備える入力装置を用いてユーザが操作を行う情報処理装置およびプログラムに関する。
【背景技術】
【０００２】
従来、光学式のポインティングシステムを用いて表示画面上の特定の位置を指定する技術が考えられている。例えば、特許文献１に記載の光学式ポインティングシステムは、複数の視聴者を対象とした会議等において用いられるシステムである。このシステムでは、表示画面の近傍に発光素子が設けられ、指示器には光電変換素子を用いた撮像装置が内蔵される。指示者が指示器を用いて表示画面の任意の位置を指定する場合、指示器は、撮像装置によって上記発光素子を撮像し、撮像された画像に基づいて指示器が指定する位置を算出する。算出された位置にマークが表示されることによって、指示者が指示したい位置がマークによって示されることとなる。
【０００３】
また、上記と同様の光学式のポインティングシステムを用いたゲーム用コントローラが考えられている（例えば、特許文献２参照。）。このコントローラは、ガン（拳銃）型の形状を有しており、射撃ゲームに用いられる。この射撃ゲームは、画面に表示されている標的に向かってガンを用いて射撃させるゲームである。ガンは、画面上の任意の位置（弾が飛んでいく位置）を指定するために用いられる。ガン型のコントローラにはＣＣＤカメラが内蔵されており、画面の周囲の４箇所に配置された発光体をＣＣＤカメラが撮像する。コントローラは、撮像された画像を用いてガンの向きや回転や傾きを算出する。算出結果を用いて、画面に表示されている標的の向きをガンが正しく向いているか否かを検出することによって、標的に命中したか否かを判断する。以上の構成によって、プレイヤが手に持ったコントローラ（ガン）自体を動かしてゲーム操作を行うゲームシステムを実現することができる。
【特許文献１】特開平６−３０８８７９号公報
【特許文献２】特開平８−７１２５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の技術では、ユーザが手に持って使用する入力装置（上記指示器やガン型のコントローラ）は、表示画面上の位置を指定するために用いられるのみである。つまり、上記の指示器やガン型のコントローラでは、表示画面上の位置を指定するという単一の操作のみが可能であり、他の操作を行うことができなかった。例えば、上記入力装置をゲーム装置に用いる場合、表示画面上の位置を指定するという１種類の単純なゲーム操作しか行うことができない。そのため、ゲーム操作が単純であることからゲーム自体も単純な内容となってしまい、興趣性に欠けるものとなる。
【０００５】
それゆえ、本発明の目的は、ユーザが手に持って使用する入力装置を用いて従来にはない新たな操作を行うことが可能な情報処理装置およびプログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、撮像対象（マーカ８ａおよび８ｂ）を撮像するための撮像手段（撮像素子４０）を備えた入力装置（コントローラ７）から操作データ（６２）を取得し、当該操作データに応じてゲーム処理を行った結果を表示装置（モニタ２）の画面に表示させる情報処理装置（ゲーム装置３）である。操作データには、撮像手段によって撮像される撮像画像のデータ、当該撮像画像における撮像対象の所定の２箇所の位置を示すデータ（マーカ座標データ６２１）、当該２箇所の位置を結ぶ方向を示すデータ、および当該方向から算出される入力装置の傾きを示すデータ、の少なくともいずれかが含まれる。情報処理装置は、傾きデータ算出手段（Ｓ２２、Ｓ３９、またはＳ５７を実行するＣＰＵ１０等。以下、この欄においてはステップ番号のみを記載する。）と、入替手段（Ｓ２５およびＳ２６、Ｓ４０、または、Ｓ５８）とを備える。傾きデータ算出手段は、入力装置から取得された操作データから、入力装置の傾きを表す傾きデータ（６３６）を算出または取得する。入替手段は、傾きデータに基づいて、画面に表示されているオブジェクト（パネル５１、候補文字画像７３ａ〜７３ｅ、表７６の欄、または、ウィンドウ８１ａ〜８１ｄ）を他のオブジェクトに入れ替えて表示させる。
【０００８】
第２の発明においては、入替手段は、画面に表示されている複数のオブジェクトの位置を入れ替えてもよい。
【０００９】
第３の発明においては、操作データには、撮像手段によって撮像される撮像画像のデータ、当該撮像画像における撮像対象の所定の２箇所の位置を示すデータ（マーカ座標データ６２１）、および、当該撮像画像における撮像対象の位置を示すデータ、の少なくともいずれかが含まれていてもよい。このとき、情報処理装置は、指示位置算出手段（Ｓ１１、Ｓ３４、またはＳ５２）と、選出手段（Ｓ１２およびＳ１３、Ｓ３５およびＳ３７、または、Ｓ５３およびＳ５４）とをさらに備えている。指示位置算出手段は、入力装置によって指し示される画面上の指示位置を操作データから算出する。選出手段は、画面に表示され得る複数のオブジェクトのうちから、入替の対象となる対象オブジェクトを指示位置を用いて複数選出する。入替手段は、複数の対象オブジェクトの位置を入れ替える。
【００１０】
第４の発明においては、選出手段は、指示位置を含む所定の領域内（枠５３によって囲まれる領域内）に含まれる複数のオブジェクトを対象オブジェクトとして選出するようにしてもよい。
【００１１】
第５の発明においては、画面には、複数のオブジェクトからなるオブジェクト群を表すオブジェクト群画像（候補文字群画像７１ａ〜７１ｅ）が複数表示されてもよい。このとき、選出手段は、所定のタイミング（候補文字決定ボタンが押下されたタイミング）において複数のオブジェクト群画像のいずれかと指示位置とが重なったか否かを判定し、指示位置と重なったオブジェクト群画像に対応する複数のオブジェクト（候補文字画像７３ａ〜７３ｅ）を対象オブジェクトとして選出する。
【００１２】
第６の発明においては、選出手段は、所定のタイミング（選択ボタンが押下されたタイミング）において、画面に表示されている複数のオブジェクト（表７６の各欄）のいずれかと指示位置とが重なったか否かを判定し、当該指示位置と重なったオブジェクトを対象オブジェクトとして選出するようにしてもよい。このとき、入替手段は、複数のオブジェクトが対象オブジェクトとして選出されている場合、当該複数の対象オブジェクトの位置を入れ替える。
【００１３】
第７の発明においては、入替手段は、複数のオブジェクト（対象パネル）の表示位置の中心（マーク５４）を軸に回転移動させることによって当該複数のオブジェクトを入れ替えるようにしてもよい。
【００１４】
第８の発明においては、入替手段は、所定期間（入替状態に移行した時点から現在までの期間）における、傾きデータにより示される傾きの変化に基づいてオブジェクトの入れ替えを行うようにしてもよい。
【００１５】
第９の発明においては、入力装置は少なくとも１つの押圧可能な操作キー（操作キー３２ａ〜３２ｉ）を有していてもよい。このとき、操作データは、操作キーが押されているか否かを示すキーデータ（操作キーデータ６２２）をさらに含んでいる。入替手段は、キーデータに基づいて所定期間を決定する。
【００１６】
第１０の発明においては、入替手段は、複数のオブジェクトの位置を循環的に入れ替えるようにしてもよい。このとき、入替手段による入替は、所定期間における傾きの変化量に応じた回数だけ行われる。
【００１７】
第１１の発明においては、入替手段は、予め定められた基準方向に対する傾きデータにより示される傾きの変化に基づいてオブジェクトの入れ替えを行ってもよい。
【００１８】
第１２の発明は、撮像対象（マーカ８ａおよび８ｂ）を撮像するための撮像手段（撮像素子４０）と、少なくとも１つの押圧可能な操作キー（操作キー３２ａ〜３２ｉ）とを備えた入力装置（コントローラ７）から操作データ（６２）を取得し、当該操作データに応じてゲーム処理を行うゲーム装置（３）である。
操作データには、撮像手段によって撮像される撮像画像のデータ、当該撮像画像における撮像対象の所定の２箇所の位置を示すデータ、当該２箇所の位置を結ぶベクトルを示すデータ、および当該ベクトルから算出される入力装置の傾きを示すデータ、の少なくともいずれかである第１データ（マーカ座標データ６２１）と、操作キーが押されているか否かを示す第２データ（操作キーデータ６２２）とが含まれる。ゲーム装置は、操作データ取得手段（Ｓ３）と、傾き算出手段（Ｓ１５およびＳ２２）と、指示位置算出手段（Ｓ１１）と、キー入力判定手段（Ｓ１４およびＳ２１）と、操作対象設定手段（Ｓ１２およびＳ１３）と、記憶手段（Ｓ１５）と、変化量算出手段（Ｓ２３）と、回転手段（Ｓ２５）と、近似手段（Ｓ２６）と、入替手段（Ｓ２８）と、消去手段（Ｓ１８）と、表示手段（Ｓ２８）とを備えている。操作データ取得手段は、操作データを逐次取得する。傾き算出手段は、操作データに含まれる第１データから、入力装置の傾きを逐次算出または取得する。指示位置算出手段は、入力装置によって指し示される画面上の指示位置を、操作データに含まれる第１データから逐次算出する。キー入力判定手段は、操作データに含まれる第２データに基づき、操作キーが押されているか否かを判定する。操作対象設定手段は、ゲーム空間内に配置された、複数種類のグループに分類された複数のパズル要素（パネル）のうち、キーが押されたタイミングにおける指示位置に対応するゲーム空間内の位置を含む所定領域内（枠５３の領域内）に配置されるパズル要素を操作対象（対象パネル）として設定する。記憶手段は、キーが押されたタイミングにおける入力装置の傾きを記憶する。変化量算出手段は、キーが押されている期間、記憶手段に記憶された傾きに対する傾き算出手段によって算出された傾きの変化量を逐次算出する。回転手段は、変化量に基づいた回転量で、操作対象のパズル要素を回転させる。近似手段は、キーが離されたタイミングにおける変化量を、操作対象のパズル要素の位置を循環的に入れ替えたときの回転量に近似する。入替手段は、近似された回転量だけ操作対象のパズル要素を回転させることにより、当該パズル要素の位置を循環的に入れ替える。消去手段は、入替手段によってパズル要素の位置を入れ替えた結果、同一グループに分類されるパズル要素がゲーム空間において所定個数以上並んだ場合に、当該並んだパズル要素を消去する。表示制御手段は、パズル要素を含むゲーム空間の画像を表示装置に逐次表示させる。
【００１９】
第１３の発明は、撮像対象（マーカ８ａおよび８ｂ）を撮像するための撮像手段（撮像素子４０）と、第１の操作キーおよび第２の操作キーとを備えた入力装置（コントローラ７）から操作データ（６２）を取得し、当該操作データに応じて文字入力を受け付ける文字入力受付装置（ゲーム装置３）である。操作データには、撮像手段によって撮像される撮像画像のデータ、当該撮像画像における撮像対象の所定の２箇所の位置を示すデータ、当該２箇所の位置を結ぶベクトルを示すデータ、および当該ベクトルから算出される入力装置の傾きを示すデータ、の少なくともいずれかである第１データ（マーカ座標データ６２１）と、操作キーが押されているか否かを示す第２データ（操作キーデータ６２２）とが含まれる。文字入力受付装置は、操作データ取得手段（Ｓ３３）と、傾き算出手段（Ｓ３９）と、指示位置算出手段（Ｓ３４）と、キー入力判定手段（Ｓ３６およびＳ３８）と、第１表示制御手段（Ｓ４２）と、第２表示制御手段（Ｓ４２）と、入替手段（Ｓ４０）と、入力受付手段（Ｓ４１）と、第３表示制御手段（Ｓ４２）とを備えている。操作データ取得手段は、操作データを逐次取得する。傾き算出手段は、操作データに含まれる第１データから、入力装置の傾きを逐次算出または取得する。指示位置算出手段は、入力装置によって指し示される画面上の指示位置を、操作データに含まれる第１データから逐次算出する。キー入力判定手段は、操作データに含まれる第２データに基づき、操作キーが押されているか否かを判定する。第１表示制御手段は、複数の文字からなる文字群を表す文字群画像（候補文字群画像７１ａ〜７１ｅ）を表示装置に複数表示させる。第２表示制御手段は、第１の操作キーが押されたタイミングにおいて指示位置と重なっている文字群画像により表される文字群に含まれる各文字を文字毎に表す複数の文字画像（候補文字画像７３ａ〜７３ｅ）を、それぞれ所定の位置関係となるように表示装置に表示させる。入替手段は、傾き算出手段によって算出される傾きに基づいて複数の文字画像の位置関係を入れ替える。入力受付手段は、第２の操作キーが押下された場合、複数の文字画像のうち、所定の位置に表示されている文字画像により表される文字の入力を受け付ける。第３表示制御手段は、入力受付手段によって入力が受け付けられた文字を表示装置に表示させる。
【００２０】
また、本発明は、上記発明における機能を情報処理装置のコンピュータに実行させるためのプログラムの形態で提供されてもよい。
【発明の効果】
【００２１】
第１の発明によれば、傾きデータ算出手段は、入力装置の傾きに応じて変化する傾きデータを算出し、入替手段は、算出された傾きデータに基づいてオブジェクトの入替を行う。これによれば、ユーザは、入力装置の傾きを変化させる操作を行うことによって、オブジェクトの入替を行うことができる。つまり、コントローラ７自体を回転させることによってオブジェクトを入れ替えるという、今までにない新規な操作をユーザに提供することができる。
【００２２】
第２の発明によれば、複数のオブジェクトの位置を入れ替えるための操作を、コントローラ７自体を回転させるという今までにない新規な操作によって行うことができる。
【００２３】
第３の発明によれば、指示位置算出手段によって算出される指示位置に基づいて入替の対象となる対象オブジェクトが選出される。したがって、ユーザは、オブジェクトを入れ替える操作に加えて、入替の対象となるオブジェクトを選出する操作をコントローラ７を用いて行うことができる。すなわち、ユーザは、コントローラ７自体を操作する操作方法によって２種類の異なる操作を行うことができる。このように第３の発明によれば、簡単な操作でユーザに２種類の操作を行わせることができ、操作性の良い情報処理装置をユーザに提供することができる。
【００２４】
第４の発明によれば、指示位置を含む所定の領域内のオブジェクトが入替の対象となるので、ユーザは、入替の対象となるオブジェクトを直感的な操作で容易に選出することができる。
【００２５】
第５の発明によれば、所定のタイミングにおいてオブジェクト群画像の位置に指示位置が位置する場合、当該オブジェクト群画像に対応する複数のオブジェクトが入替の対象となる。したがって、ユーザは、入替の対象とすべき所望のオブジェクト群を表すオブジェクト群画像を指定するという直感的な操作によって、入替の対象となるオブジェクトを容易に選出することができる。
【００２６】
第６の発明によれば、所定のタイミングにおいて指示位置と重なったオブジェクトが入替の対象となる。これによれば、入替の対象とすべきオブジェクトを１つずつ選出することができるので、より自由度の高い入れ替え操作が可能となる。また、ユーザは、入替の対象となるオブジェクトを直感的な操作で容易に選出することができる。
【００２７】
第７の発明によれば、入替の対象となるオブジェクトが回転されるので、入替が行われる様子をわかりやすくユーザに提示することができる。
【００２８】
第８の発明によれば、コントローラ７の傾きの相対的な変化に基づいてオブジェクトの入替を行うことができる。
【００２９】
第９の発明によれば、ユーザは、上記所定期間を操作キーによって自ら決定することができるので、入替の操作をより容易に行うことができる。
【００３０】
第１０の発明によれば、変化量の大きさに応じて入替が行われる回数が変化するので、ユーザは複数回の入替操作を容易に行うことができる。
【００３１】
第１１の発明によれば、コントローラ７の絶対的な傾きに基づいてオブジェクトの入替を行うことができる。
【００３２】
第１２の発明によれば、コントローラ７の指示位置を移動させることによって入替の対象となるパズル要素を指定するとともに、コントローラ７を回転させることによってパズル要素を入れ替えるという、直感的で、かつ、今までにない新規な操作方法のパズルゲームを提供することができる。
【００３３】
第１３の発明によれば、コントローラ７の指示位置を移動させることによって入力の候補となる文字群を指定するとともに、コントローラ７を回転させることによって入力する文字を決定するという、直感的で、かつ、今までにない新規な操作方法の文字入力受付装置を提供することができる。
【発明を実施するための最良の形態】
【００３４】
図１を参照して、本発明の一実施形態に係る情報処理装置の一例であるゲーム装置を含むゲームシステム１について説明する。なお、図１は、当該ゲームシステム１を説明するための外観図である。以下、据置型のゲーム装置を一例にして、本発明の情報処理装置について説明する。
【００３５】
図１において、ゲームシステム１は、家庭用テレビジョン受像機等のスピーカを備えたディスプレイ（以下、モニタと記載する）２に、接続コードを介して接続される据置型ゲーム装置（以下、単にゲーム装置と記載する）３および当該ゲーム装置３に操作データを与えるコントローラ７によって構成される。また、モニタ２の周辺（図では画面の上側）には、２つのマーカ８ａおよび８ｂが設置される。マーカ８ａおよび８ｂは、具体的には赤外ＬＥＤであり、それぞれモニタ２の前方に向かって赤外光を出力する。ゲーム装置３は、接続端子を介して受信ユニット６が接続される。受信ユニット６は、コントローラ７から無線送信される操作データを受信し、コントローラ７とゲーム装置３とは無線通信によって接続される。なお、他の実施形態においてはコントローラ７とゲーム装置３とは有線で接続されてもよい。また、ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着される。ゲーム装置３の上部主面には、当該ゲーム装置３の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置３上部の蓋を開くＯＰＥＮスイッチが設けられている。ここで、プレイヤがＯＰＥＮスイッチを押下することによって上記蓋が開き、光ディスク４の脱着が可能となる。
【００３６】
また、ゲーム装置３には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード５が必要に応じて着脱自在に装着される。ゲーム装置３は、光ディスク４に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ２に表示する。さらに、ゲーム装置３は、外部メモリカード５に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置３のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲームを楽しむことができる。
【００３７】
コントローラ７は、その内部に備える通信部３６（後述）から受信ユニット６が接続されたゲーム装置３へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて操作データを無線送信する。コントローラ７は、複数の操作キーからなる操作部が設けられている。また、後述により明らかとなるが、コントローラ７は、少なくとも直交２軸方向の加速度を検出する加速度センサ３７（後述）を備えている。加速度センサ３７によって検出された加速度を示すデータは上記操作データの一部としてゲーム装置３へ送信される。また、コントローラ７は、当該コントローラ７から見た画像を撮像するための撮像情報演算部３５（後述）を備えている。撮像情報演算部３５は、モニタ２の周辺に配置された各マーカ８ａおよび８ｂを撮像対象として、各マーカ８ａおよび８ｂの画像を撮像する。ゲーム装置３は、この画像に基づいた演算処理によってコントローラ７の位置および姿勢に応じた処理を実行する。
【００３８】
次に、図２を参照して、ゲーム装置３の構成について説明する。なお、図２は、ゲーム装置３の機能ブロック図である。
【００３９】
図２において、ゲーム装置３は、各種プログラムを実行する例えばリスク（ＲＩＳＣ）ＣＰＵ（セントラルプロセッシングユニット）１０を備える。ＣＰＵ１０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ１３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ１０には、メモリコントローラ１１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１２、メインメモリ１３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１４、およびＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）１５が接続される。また、メモリコントローラ１１には、所定のバスを介して、コントローラＩ／Ｆ（インターフェース）１６、ビデオＩ／Ｆ１７、外部メモリＩ／Ｆ１８、オーディオＩ／Ｆ１９、およびディスクＩ／Ｆ２１が接続され、それぞれ受信ユニット６、モニタ２、外部メモリカード５、スピーカ２２、およびディスクドライブ２０が接続されている。
【００４０】
ＧＰＵ１２は、ＣＰＵ１０の命令に基づいて画像処理を行うものあり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ１２は、図示しない画像処理専用のメモリやメインメモリ１３の一部の記憶領域を用いて画像処理を行う。ＧＰＵ１２は、これらを用いてモニタ２に表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ１１およびビデオＩ／Ｆ１７を介してモニタ２に出力する。
【００４１】
メインメモリ１３は、ＣＰＵ１０で使用される記憶領域であって、ＣＰＵ１０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ１３は、ＣＰＵ１０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ１３に記憶されたゲームプログラムや各種データ等がＣＰＵ１０によって実行される。
【００４２】
ＤＳＰ１４は、ゲームプログラム実行時にＣＰＵ１０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ１５が接続される。ＡＲＡＭ１５は、ＤＳＰ１４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ１４は、ＡＲＡＭ１５に記憶されたサウンドデータを読み出し、メモリコントローラ１１およびオーディオＩ／Ｆ１９を介してモニタ２に備えるスピーカ２２に出力させる。
【００４３】
メモリコントローラ１１は、データ転送を統括的に制御するものであり、上述した各種Ｉ／Ｆが接続される。コントローラＩ／Ｆ１６は、例えば４つのコントローラＩ／Ｆで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置３とを通信可能に接続する。例えば、受信ユニット６は、上記コネクタと嵌合し、コントローラＩ／Ｆ１６を介してゲーム装置３と接続される。上述したように受信ユニット６は、コントローラ７からの操作データを受信し、コントローラＩ／Ｆ１６を介して当該操作データをＣＰＵ１０へ出力する。なお、他の実施形態においては、ゲーム装置３は、受信ユニット６に代えて、コントローラ７から送信されてくる操作データを受信する受信モジュールをその内部に設ける構成としてもよい。この場合、受信モジュールが受信した送信データは、所定のバスを介してＣＰＵ１０に出力される。ビデオＩ／Ｆ１７には、モニタ２が接続される。外部メモリＩ／Ｆ１８には、外部メモリカード５が接続され、その外部メモリカード５に設けられたバックアップメモリ等とアクセス可能となる。オーディオＩ／Ｆ１９にはモニタ２に内蔵されるスピーカ２２が接続され、ＤＳＰ１４がＡＲＡＭ１５から読み出したサウンドデータやディスクドライブ２０から直接出力されるサウンドデータをスピーカ２２から出力可能に接続される。ディスクＩ／Ｆ２１には、ディスクドライブ２０が接続される。ディスクドライブ２０は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置３のバスやオーディオＩ／Ｆ１９に出力する。
【００４４】
次に、図３Ａ〜図８を参照して、コントローラ７について説明する。図３Ａ〜図４は、コントローラ７の外観構成を示す斜視図である。図３Ａは、コントローラ７の上面後方から見た斜視図であり、図３Ｂは、コントローラ７を下面後方から見た斜視図である。図４は、コントローラ７を前方から見た図である。
【００４５】
図３Ａ〜図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ７を用いることによって、それに設けられたボタンを押下すること、および、コントローラ７自体の位置や向きを変えること等によってゲーム操作を行うことができる。例えば、プレイヤは、長手方向を軸としてコントローラ７を回転させたり、コントローラ７によって指し示される画面上の位置を変えたりする操作によって、操作対象に対する操作を行うことができる。ここで、「コントローラ７によって指し示される画面上の位置」とは、理想的には、コントローラ７の前端部から上記長手方向に延ばした直線とモニタ２の画面とが交わる位置であるが、厳密に当該位置である必要はなく、その周辺の位置をゲーム装置３によって算出することができればよい。以下では、コントローラ７によって指し示される画面上の位置を「コントローラ７の指示位置」と呼ぶ。また、コントローラ７（ハウジング３１）の長手方向を、「コントローラ７の指示方向」と呼ぶことがある。
【００４６】
ハウジング３１には、複数の操作キーが設けられる。ハウジング３１の上面には、十字キー３２ａ、Ｘボタン３２ｂ、Ｙボタン３２ｃ、Ａボタン３２ｉ、セレクトスイッチ３２ｅ、メニュースイッチ３２ｆ、およびスタートスイッチ３２ｇが設けられる。一方、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｄが設けられる。これらの各操作キー（ボタン）は、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないためここでは詳細な説明を省略する。また、ハウジング３１の上面には、遠隔からゲーム装置３本体の電源をオン／オフするための電源スイッチ３２ｈが設けられる。
【００４７】
また、コントローラ７は撮像情報演算部３５（図５Ｂ）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射口３５ａが設けられる。一方、ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、例えば３２ピンのエッジコネクタであり、コントローラ７に他の機器を接続するために利用される。また、ハウジング３１上面の後面側には複数のＬＥＤ３４が設けられる。ここで、コントローラ７には、他のコントローラ７と区別するためにコントローラ種別（番号）が付与される。ＬＥＤ３４は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７からゲーム装置３へ操作データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ３４のいずれか１つが点灯する。
【００４８】
次に、図５Ａおよび図５Ｂを参照して、コントローラ７の内部構造について説明する。図５Ａおよび図５Ｂは、コントローラ７の内部構造を示す図である。なお、図５Ａは、コントローラ７の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図５Ｂは、コントローラ７の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図５Ｂに示す基板３００は、図５Ａに示す基板３００の裏面から見た斜視図となっている。
【００４９】
図５Ａにおいて、ハウジング３１の内部には基板３００が固設されており、当該基板３００の上主面上に操作キー３２ａ〜３２ｈ、加速度センサ３７、ＬＥＤ３４、水晶振動子４６、無線モジュール４４、およびアンテナ４５等が設けられる。そして、これらは、基板３００等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。また、無線モジュール４４およびアンテナ４５によって、コントローラ７がワイヤレスコントローラとして機能する。なお、水晶振動子４６は、後述するマイコン４２の基本クロックを生成する。
【００５０】
一方、図５Ｂにおいて、基板３００の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ７の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１によって構成されおり、それぞれ基板３００の下主面に取り付けられる。また、基板３００の下主面上の後端縁にコネクタ３３が取り付けられる。そして、撮像情報演算部３５の後方であって基板３００の下主面上にＡボタン３２ｉが取り付けられていて、それよりさらに後方に電池４７が収容される。電池４７とコネクタ３３との間の基板３００の下主面上には、バイブレータ４８が取り付けられる。このバイブレータ４８は、例えば振動モータやソレノイドであってよい。バイブレータ４８が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームを実現することができる。
【００５１】
なお、図３Ａ〜図５Ｂに示したコントローラ７の形状や、各操作キーの形状、数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができることは言うまでもない。また、コントローラ７における撮像情報演算部３５の位置（撮像情報演算部３５の光入射口３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。このとき、上記「コントローラ７の指示方向」は、光入射口に垂直な方向、すなわち、撮像素子４０の撮像方向となる。
【００５２】
図６は、コントローラ７の構成を示すブロック図である。コントローラ７は、操作部３２（各操作キー）、撮像情報演算部３５、通信部３６、および加速度センサ３７を備えている。
【００５３】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ７の動きでも追跡して解析することができる。
【００５４】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ７の前方から入射する光から赤外線のみを通過させる。ここで、モニタ２の表示画面近傍に配置されるマーカ８ａおよび８ｂは、モニタ２の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ３８を設けることによってマーカ８ａおよび８ｂの画像をより正確に撮像することができる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ３９が集光した赤外線を撮像する。したがって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ８ａおよび８ｂ）の位置を算出する。以下、図７を用いて撮像対象の位置の算出方法を説明する。
【００５５】
図７は、撮像画像の一例を示す図である。図７に示す撮像画像Ａ１においては、マーカ８ａの画像８ａ’およびマーカ８ｂの画像８ｂ’が左右に並んでいる。撮像画像が入力されると、まず、画像処理回路４１は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。ここで、所定条件とは、撮像対象の画像（対象画像）を特定するための条件であり、所定条件の具体的な内容は、輝度が所定値以上の領域（高輝度領域）であり、かつ、領域の大きさが所定範囲内の大きさであることである。なお、所定条件は撮像対象を特定するための条件であればよく、他の実施形態においては、画像の色に関する条件を含んでいてもよい。
【００５６】
対象画像の位置を算出する際、まず、画像処理回路４１は、撮像画像の領域から上記高輝度領域を対象画像の候補として特定する。撮像画像の画像データにおいて対象画像は高輝度領域として現れるからである。次に、画像処理回路４１は、特定された高輝度領域の大きさに基づいて、その高輝度領域が対象画像であるか否かを判定する判定処理を行う。撮像画像には、対象画像である２つのマーカ８ａおよび８ｂの画像８ａ’および８ｂ’の他、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれている場合がある。この場合、マーカ８ａおよび８ｂの画像８ａ’および８ｂ’以外の画像も高輝度領域として現れてしまう。上記の判定処理は、対象画像であるマーカ８ａおよび８ｂの画像８ａ’および８ｂ’とそれ以外の画像とを区別し、対象画像を正確に特定するための処理である。具体的には、当該判定処理においては、特定された高輝度領域が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度領域が所定範囲内の大きさである場合、当該高輝度領域は対象画像を表すと判定され、高輝度領域が所定範囲内の大きさでない場合、当該高輝度領域は対象画像以外の画像を表すと判定される。
【００５７】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度領域について、画像処理回路４１は当該高輝度領域の位置を算出する。具体的には、当該高輝度領域の重心位置を算出する。なお、重心位置は撮像素子４０の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子４０によって撮像された撮像画像の解像度が１２６×９６であるとし、重心位置は１０２４×７６８のスケールで算出されるものとする。つまり、重心位置の座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。なお、撮像画像における位置は、図７に示すように、撮像画像の左上を原点とし、下向きをｙ軸正方向とし、右向きをｘ軸正方向とする座標系（ｘｙ座標系）で表現されるものとする。
【００５８】
以上のようにして、画像処理回路４１は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。なお、以下では、画像処理回路４１によって算出される座標をマーカ座標と呼ぶ。マーカ座標は、撮像画像に対応する平面上の位置を表すための座標系において撮像対象の位置を示す座標である。画像処理回路４１は、マーカ座標を通信部３６のマイコン４２へ出力する。マーカ座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。マーカ座標はコントローラ７自体の向き（姿勢）や位置に対応して変化するので、ゲーム装置３は当該座標値を用いてコントローラ７の向きや位置を算出することができる。なお、本実施形態では、撮像画像からマーカ座標を算出する処理までをコントローラ７の画像処理回路４１および／またはマイコン４２で行ったが、例えば撮像画像をゲーム装置３に送り、以降の処理と同等の処理をゲーム装置３のＣＰＵ１０等で行わせることもできる。
【００５９】
また、他の実施形態においては、２個のマーカ８ａおよび８ｂに代えて、例えば細長形状の光源を用いてもよい。この光源の両端の位置を示す座標を算出することによって、上記マーカ座標と同等の座標を得ることができる。つまり、１個のマーカのうちの所定の２箇所の位置を算出することによって、上記マーカ座標と同等の座標を得ることができる。
【００６０】
図６の説明に戻り、加速度センサ３７は、コントローラ７の加速度（重力加速度を含む）を検出する、すなわち、コントローラ７に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度の値を検出する。例えば、２軸または３軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度（直線加速度）をそれぞれ検出する。本実施形態では、加速度センサ３７は、コントローラ７を基準とした上下方向（図３Ａおよび図３Ｂに示すＹ軸方向）、左右方向（図３Ａおよび図３Ｂに示すＸ軸方向）および前後方向（図３Ａおよび図３Ｂに示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は、３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ７を基準に設定されるＸＹＺ座標系における３次元のベクトルとして表される。加速度センサ３７が検出した加速度を示すデータ（加速度データ）は、マイコン４２へ出力される。なお、本実施形態では、加速度データはゲーム処理に用いられないので、コントローラ７は加速度センサ３７を備えていない構成であってもよい。
【００６１】
操作部３２は、上述した十字キー３２ａ等の各操作キー３２ａ〜３２ｉに相当し、各操作キー３２ａ〜３２ｉに対する入力状態（各操作キー３２ａ〜３２ｉが押下されたか否か）を示すデータを通信部３６のマイコン４２へ出力する。
【００６２】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理の際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータを無線送信する無線モジュール４４を制御する。
【００６３】
操作部３２および撮像情報演算部３５（および加速度センサ３７）からマイコン４２へ出力されたデータは、一時的にメモリ４３に格納される。ここで、通信部３６から受信ユニット６への無線送信は所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。マイコン４２は、受信ユニット６への送信タイミングが到来すると、メモリ４３に格納されているデータを操作データとして無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ７から送信される。微弱電波信号はゲーム装置３側の受信ユニット６で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。
【００６４】
上記コントローラ７を用いることによって、プレイヤは、各操作キーを押下する従来の一般的なゲーム操作に加えて、コントローラ７の姿勢を変化させたり、コントローラ７自身の位置を動かしたり、コントローラ７を回転させたりするというゲーム操作を行うことができる。
【００６５】
図８は、コントローラ７を用いてゲーム操作するときの状態を概説する図解図である。図８に示すように、ゲームシステム１でコントローラ７を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ７を把持する。ここで、マーカ８ａおよび８ｂは、モニタ２の画面の横方向と平行に、画面の上側に配置されている。なお、他の実施形態においては、マーカ８ａおよび８ｂの配置位置ならびに２つのマーカ８ａおよび８ｂを配置する向きは任意であり、例えば、マーカ８ａおよび８ｂが画面の下側に配置されてもよいし、２つのマーカ８ａおよび８ｂが画面の縦方向に沿って配置されてもよい。プレイヤは、コントローラ７の前面（撮像情報演算部３５が撮像する光の入射口側）がマーカ８ａおよび８ｂの方向を向く状態でコントローラ７を把持する。この状態で、プレイヤは、コントローラ７の傾きを変化させたり（図８に示す矢印参照）、コントローラ７が指し示す画面上の位置（指示位置）を変更したり、コントローラ７と各マーカ８ａおよび８ｂとの距離を変更したりすることによってゲーム操作を行う。
【００６６】
以下、上述したゲームシステム１を用いて行われるゲームの具体例について説明する。まず、本実施形態では、ゲームシステム１を用いて行われるパズルゲームを例として説明する。
【００６７】
図９〜図１１は、本実施形態におけるパズルゲームのゲーム画像の一例を示す図である。本実施形態において、モニタ２の画面には、複数のパネル５１、カーソル５２、枠５３、マーク５４、残り時間画像５５、および得点画像５６が表示される。パネル５１は縦６行、横５列に並んでおり、合計３０個のパネルが表示されている。各パネルには番号が付されており、番号が同じものは同じ種類のパネルである。このパズルゲームにおいては、プレイヤは後述する入替操作によってパネルの位置を入れ替えることができる。入替操作によって同じ種類のパネルが縦または横に３つ以上並ぶと、並んだパネルが消去される。このパズルゲームは、予め定められた制限時間内にパネルを消した個数を競って遊ぶゲームである。なお、残り時間画像５５は、制限時間が経過するまでの残り時間を示す。得点画像５６は、現在の得点、すなわち、現在までにパネルを消した個数を示す。
【００６８】
本実施形態におけるゲームにおいて、プレイヤは、カーソル５２を移動させる操作である移動操作と、パネルを入れ替える操作である入替操作を行うことが可能である。すなわち、ゲーム装置３は、プレイヤによる移動操作および入替操作を受け付ける。以下では、移動操作が可能であるゲーム状態を移動状態と呼び、入替操作が可能であるゲーム状態を入替状態と呼ぶ。
【００６９】
図９は、移動状態におけるゲーム画像を示す図である。移動状態においては、ゲーム装置３は、プレイヤによる移動操作に従って画面上においてカーソル５２を移動させる。具体的には、ゲーム装置３は、コントローラ７から取得される操作データを用いてコントローラ７の指示位置を算出し、当該指示位置にカーソル５２を表示させる。プレイヤは、移動操作として、コントローラ７の指示位置を変更するようにコントローラ７の位置および／または姿勢を変化させる操作を行う。
【００７０】
移動状態において、プレイヤは、カーソル５２を移動させることによって枠５３を所望の位置に移動させる。枠５３は、入替操作による入替の対象となるパネルを示すための画像である。枠５３は、縦２行横２列に並んだ任意の４つのパネルを囲むように配置されている。本実施形態において、枠５３によって囲まれる４つのパネルが入替の対象となるパネル（対象パネルと呼ぶ）である。枠５３は、カーソル５２の移動に応じて移動する。具体的には、枠５３は、カーソル５２が枠５３の内部に常に位置するように移動する。例えば、図９に示す状態からカーソル５２が左へ移動していき、カーソル５２が枠５３の左辺を超えそうになると、ゲーム装置３はパネル１列分だけ枠５３を左に移動させる。このように、移動状態においては、プレイヤは、入替を行いたい所望の４つのパネルを囲むように枠５３を移動させる。なお、マーク５４は、枠５３により囲まれる領域の中心位置を示す。
【００７１】
移動状態において、コントローラ７の所定の入替指示ボタン（例えば、Ｂボタン３２ｄ）が押下されると、ゲーム装置３はゲーム状態を移動状態から入替状態へ移行させる。また、本実施形態では、入替指示ボタンが押下されている間はゲーム状態が入替状態に設定され、入替指示ボタンが離される（押下されなくなる）とゲーム状態は入替状態から移動状態へ戻る。つまり、プレイヤは、入替指示ボタンを押下し続ける間、入替操作を行うことができる。プレイヤは、移動状態において枠５３を所望の位置に移動させることができれば、入替指示ボタンを押下して入替操作を開始すればよい。
【００７２】
入替状態において、ゲーム装置３は、コントローラ７からの操作データから、コントローラ７の長手方向を軸とした回転に関する傾きを算出する。そして、当該傾きに応じて対象パネルを回転移動させる。入替操作は、コントローラ７を長手方向（図３Ａおよび図３Ｂに示すＺ軸方向）を軸として回転させる操作である。なお、以下における本実施形態の説明では、「コントローラ７の回転」とは「コントローラ７の長手方向を軸とした回転」を指し、「コントローラ７の傾き」とは「コントローラ７の長手方向を軸とした回転量に関する傾き」を指すものとする。
【００７３】
図１０は、入替状態におけるゲーム画像を示す図である。図１０は、上記入替指示ボタンが押下された時点のコントローラ７の状態から、コントローラ７を右回りに約６０°回転させた状態である。なお、本明細書では、コントローラ７に関する「右回り」および「左回り」とは、コントローラ７の後方（図３に示すＺ軸負方向側）から見たときの回転方向を言うものとする。図１０に示すように、対象パネルは、入替指示ボタンが押下された時点の状態（図９に示す状態）から、コントローラ７の傾きに応じた回転量でマーク５４を中心に回転している。図１０においては、対象パネルは図９に示す状態から右回りに約６０°回転している。このように、入替状態においてゲーム装置３は、対象パネルをコントローラ７の傾きに応じて回転移動させる。
【００７４】
なお、本実施形態では、ゲーム装置３は、入替状態に移行した時点における向きを基準（０°）として、右回りまたは左回りにそれぞれ最大２７０°まで対象パネルを回転させる。プレイヤは、右回りまたは左回りに、９０°、１８０°または２７０°だけ対象パネルを回転させることによって、対象パネルである４つのパネルの配置位置を入れ替える。そして、当該４つの対象パネルの配置された位置が所望の位置となれば、入替指示ボタンを離してゲーム状態を移動状態へ移行させる。
【００７５】
また、本実施形態において、移動状態においては３０個のパネルは縦６行、横５列に整列されて配置されるものとする。つまり、入替状態終了時において対象パネルが整列されていなければ、ゲーム装置３は、入替状態終了時における対象パネルの位置を必要に応じて補正する。
【００７６】
図１１は、入替状態から移動状態へ移行した直後におけるゲーム画像を示す図である。図１１は、図９における状態から、図１０に示す入替操作によって対象パネルが右回りに９０°回転移動された状態を示している。つまり、枠５３内の１つのパネルについて見れば、入替操作によって、入替前のパネルが他のパネルに入れ替えられていることになる。例えば枠５３内の左上の位置について見れば、入替操作によって、番号が“４”のパネルが番号が“３”のパネルに入れ替えられている。また、枠５３内の４つのパネルについて見れば、４つのパネルの配置位置が入れ替えられていることになる。このように、本実施形態では、入替状態においてコントローラ７の傾きを変化させることで、画面に表示されたオブジェクト（パネル）の入替を行うことができる。
【００７７】
また、本実施形態では、４つの対象パネルが循環的に入れ替えられている。ここで、「循環的に入れ替える」とは、入替の対象となる各オブジェクト（パネル）を、当該各オブジェクトの配置位置を所定の順番で循環して移動させるように入れ替えることである。このように、所定の規則に従ってパネルを移動させることによって、パズルゲームの戦略性が増し、より面白いパズルゲームを提供することができる。
【００７８】
図１１においては、上から４行目において同種類のパネル（番号が“２”のパネル）が３つ並んで配置されているので、これらの３つのパネルが消去される。なお、図１１においては、これら３つのパネルが消去される様子を白黒を反転させた表示で表現している。また、３つのパネルが消去されたことによって得点が３点加算される（図１１に示す得点画像５６参照）。本実施形態においては、ゲーム装置３は、パネルが消去されると、消去されたパネルの位置に新たなパネルを追加する。以降において、プレイヤは、制限時間が経過するまで、移動操作と入替操作とを繰り返し行うことによってパネルを消去していく。
【００７９】
以上のように、本実施形態では、プレイヤは、コントローラ７を長手方向を軸として回転させる入替操作によって、対象パネルの位置を入れ替えることができる。つまり、プレイヤは、コントローラ７自体を回転させることによって、画面に表示されているオブジェクト（パネル）の位置を入れ替えるという、今までにない新規な操作を味わうことができる。
【００８０】
さらに本実施形態では、コントローラ７の指示位置を移動させることによって、入替の対象となるパネルを選出する操作を行うことができる。つまり、プレイヤは、コントローラ７自体を操作する操作方法によって２種類の異なる操作（移動操作および入替操作）を行うことができるので、簡単な操作でプレイヤに２種類の操作を行わせることができ、操作性の良いゲームをプレイヤに提供することができる。
【００８１】
次に、本実施形態においてゲーム装置３で実行されるプログラム処理について説明する。まず、ゲーム処理において用いられる主なデータについて図１２を用いて説明する。図１２は、ゲーム装置３のメインメモリ１３に記憶される主なデータを示す図である。図１２に示すように、メインメモリ１３には、ゲームプログラム６１、操作データ６２、およびゲーム処理用データ６３等が記憶される。なお、メインメモリ１３には、図１２に示すデータの他、パズルゲームに登場するパネルやカーソルや枠等の画像データや、残り時間や得点を示すデータ等、ゲーム処理に必要なデータが記憶される。
【００８２】
ゲームプログラム６１は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリ１３に記憶される。ゲームプログラム６１には、後述するゲーム処理（図１３）の実行に必要なプログラムが含まれている。
【００８３】
操作データ６２は、コントローラ７からゲーム装置３へ送信されてきて、メインメモリ１３に記憶される。操作データ６２には、マーカ座標データ６２１および操作キーデータ６２２が含まれる。マーカ座標データ６２３は、撮像情報演算部３５の画像処理回路４１によって算出される座標、すなわち上記マーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための座標系（図７に示すｘｙ座標系）で表現される。また、操作キーデータ６２２は、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示すデータである。なお、操作データ６２には、必要に応じて、上記加速度センサ３７によって検出される加速度（加速度ベクトル）を示す加速度データが含まれていてもよい。
【００８４】
ゲーム処理用データ６３は、後述するゲーム処理において用いられるデータである。ゲーム処理用データ６３は、ゲーム状態データ６３１、パネル配列データ６３２、カーソルデータ６３３、枠データ６３４、対象パネルデータ６３５、傾きデータ６３６、基準傾きデータ６３７、および回転角データ６３８を含む。
【００８５】
ゲーム状態データ６３１は、現在のゲーム状態を示すデータである。上述したように、本実施形態では、ゲーム状態には、移動状態および入替状態という２種類の状態がある。ゲーム状態データ６３１は、“移動状態”および“入替状態”のいずれかを示す。
【００８６】
パネル配列データ６３２は、３０個のパネルの配列を示すデータである。具体的には、パネル配列データ６３２は、第ｉ行（１≦ｉ≦６）の第ｊ列（１≦ｊ≦５）に配置されるパネルの種類（パネルの番号）を示す。
【００８７】
カーソルデータ６３３は、上記カーソル５２の画面上の位置、すなわち、コントローラ７の指示位置を示す。カーソルデータ６３３は、上記マーカ座標データ６２１に基づいて算出される。
【００８８】
枠データ６３４は、上記枠５３の画面上の位置を示す。本実施形態では、枠データ６３４は、枠５３の中心位置（すなわち、マーク５４の位置）の座標を示す。
【００８９】
対象パネルデータ６３５は、画面に表示されている３０個のパネルのうちで対象パネルとなっている４つのパネルを示す。本実施形態においては、４つの対象パネルのうちの例えば左上のパネルの位置を表す行数および列数のデータを対象パネルデータ６３５として記憶する。例えば、図９に示す状態おいては、対象パネルデータ６３５は、“第３行第３列”を示す。
【００９０】
傾きデータ６３６は、コントローラ７の傾きに対応して変化する方向を示すデータである。本実施形態では、傾きデータ６３６により示される方向は、仮想の３次元座標系であるＸ’Ｙ’Ｚ’座標系（図１８参照）を用いて表される。具体的には、当該方向は、Ｘ’Ｙ’Ｚ’座標系におけるＸ’Ｙ’平面上のベクトルで表現される。傾きデータ６３６は、上記マーカ座標データ６２１に基づいて算出される。
【００９１】
基準傾きデータ６３７は、入替操作が開始された時点（すなわち、移動状態から入替状態へ移行した時点）におけるコントローラ７の傾きに対応する方向を示すデータである。基準傾きデータ６３７は、上記傾きデータ６３６と同様、上記Ｘ’Ｙ’Ｚ’座標系におけるＸ’Ｙ’平面上のベクトルのデータである。基準傾きデータ６３７は、入替操作が開始された時点において算出される傾きデータである。
【００９２】
回転角データ６３８は、入替状態における対象パネルの回転角度を示す。対象パネルの回転角度θは、入替操作が開始された時点における対象パネルの向きを０°とし、右回りを正として、−２７０°≦θ≦２７０°の範囲の値で表現される。なお、他の実施例においては、対象パネルの回転角度をベクトルで表現してもよい。
【００９３】
次に、ゲーム装置３において行われる処理の詳細を、図１３〜図１８を用いて説明する。図１３は、ゲーム装置３において実行される処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ１３等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリ１３に読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１３に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【００９４】
まず、ステップＳ１において、以降の処理において用いられるデータの初期化処理が実行される。具体的には、“移動状態”を示すデータがゲーム状態データ６３１としてメインメモリ１３に記憶される。本実施形態においては、ゲーム開始直後は移動状態とするからである。また、ゲーム開始時における各パネルの初期配置を示すデータがパネル配列データ６３２としてメインメモリ１３に記憶される。各パネルの初期配置は、ゲームプログラム６１において予め決められていてもよいし、ランダムに決定されてもよい。
【００９５】
続くステップＳ２において、ゲーム空間が構築されてモニタ２に表示される。ＣＰＵ１０は、３次元または２次元のゲーム空間を構築し、パネル配列データ６３２に従って３０個のパネルを配置する。以上のように構築されたゲーム空間を表すゲーム画像が生成され、生成されたゲーム画像がモニタ２に表示される。以降、ステップＳ３〜Ｓ７の処理ループが１フレーム毎に繰り返される（ステップＳ１８およびＳ１９が実行される場合を除く。）ことによって、ゲームが進行していく。
【００９６】
ステップＳ３において、ＣＰＵ１０は、コントローラ７から操作データを取得する。すなわち、コントローラ７は所定時間間隔（例えば、１フレーム時間間隔以内）で操作データをゲーム装置３へ送信してくるので、ＣＰＵ１０は、送信されてきた操作データをメインメモリ１３に記憶する。この操作データには、少なくとも上記マーカ座標データおよび操作キーデータが含まれている。ＣＰＵ１０は、マーカ座標データおよび操作キーデータをメインメモリ１３に記憶する。なお、ステップＳ３の処理が所定時間間隔で実行されることによって、ゲーム装置３は、マーカ座標データおよび操作キーデータを逐次取得することができる。
【００９７】
続くステップＳ４において、ＣＰＵ１０は、現在のゲーム状態が移動状態であるか否かを判定する。ステップＳ４の判定は、メインメモリ１３に記憶されているゲーム状態データ６３１を参照することによって行われる。具体的には、ゲーム状態データ６３１が移動状態を示す場合、ステップＳ４の判定結果は肯定となり、ゲーム状態データ６３１が入替状態を示す場合、ステップＳ４の判定結果は否定となる。ステップＳ４の判定結果が肯定の場合、ステップＳ５の処理が実行される。一方、ステップＳ４の判定結果が否定の場合、後述するステップＳ６の処理が実行される。
【００９８】
ステップＳ５においては、移動処理が実行される。移動処理とは、移動状態におけるゲーム処理であり、プレイヤによる移動操作に従ってカーソル５２や枠５３を移動させるための処理である。以下、図１４を参照して移動処理の詳細について説明する。
【００９９】
図１４は、図１３に示す移動処理（ステップＳ５）の詳細を示すフローチャートである。移動処理においては、まずステップＳ１０において、ＣＰＵ１０は、パネルがそろったか否かを判定する。ステップＳ１０の判定は、メインメモリ１３に記憶されているパネル配列データ６３２を参照することによって行われる。すなわち、パネル配列データ６３２により示される各パネルの配列において、同じ種類のパネルが縦または横に３つ以上並んでいる場合、ステップＳ１０の判定結果は肯定となり、同じ種類のパネルが縦または横に３つ以上並んでいない場合、ステップＳ１０の判定結果は否定となる。ステップＳ１０の判定結果が肯定の場合、後述するステップＳ１８の処理が実行される。一方、ステップＳ１０の判定結果が否定の場合、ステップＳ１１の処理が実行される。
【０１００】
ステップＳ１１においては、カーソル５２の画面上の位置、すなわち、コントローラ７の指示位置が算出される。具体的には、ＣＰＵ１０は、メインメモリ１３に記憶されているマーカ座標データ６２３により示されるマーカ座標に基づいて、コントローラ７の指示位置を算出する。算出された指示位置のデータは、カーソルデータ６３３としてメインメモリ１３に記憶される。ここで、コントローラ７の指示位置の算出方法はどのようなものであってもよいが、例えば次に示す方法が考えられる。
【０１０１】
以下、コントローラ７の指示位置の算出方法の一例を説明する。コントローラ７から取得されるマーカ座標データ６２３は、マーカ８ａおよび８ｂに対応する２つのマーカ座標を示すので、まずＣＰＵ１０は、マーカ座標データから２つのマーカ座標の中点を算出する。この中点の位置は、撮像画像に対応する平面上の位置を表すための上記ｘｙ座標系によって表現される。次に、上記２つのマーカ座標を結ぶベクトルがｙ軸に平行になるように、撮像画像の中心を軸として当該マーカ座標の中点を回転する補正を行う。本願発明は、コントローラ７の傾きを入力に用いるため、コントローラ７が傾いている場合等にも、正確に指示位置を算出するためにそのような補正が必要になる。次に、ＣＰＵ１０は、当該補正された中点の位置を示す座標を、モニタ２の画面上の位置を表すための座標系（ｘ’ｙ’座標系とする）の座標に変換する。この変換は、ある撮像画像から算出される中点の座標を、当該撮像画像が撮像される時のコントローラ７の実際の指示位置に対応する画面上の座標に変換する関数を用いて行うことができる。その際、コントローラ７の指示位置と、撮像画像内でのマーカ座標の位置とは逆方向に移動することになるので、上下左右が反転するような変換を行う。以上のようにして算出されたｘ’ｙ’座標値により示される位置がコントローラ７の指示位置となる。
【０１０２】
続くステップＳ１２において、ＣＰＵ１０は、入替を行う対象を変更するか否か、すなわち、枠５３を移動させるか否かを判定する。ステップＳ１２の判定は、メインメモリ１３に記憶されているカーソルデータ６３３と枠データ６３４とを参照することによって行うことができる。すなわち、カーソルデータ６３３により示されるカーソル５２の位置が、枠データ６３４によって決められる枠５３の領域の内側である場合、ステップＳ１２の判定結果は否定となる。逆に、カーソル５２の位置が枠５３の領域の外側である場合、ステップＳ１２の判定結果は肯定となる。なお、本実施形態では枠５３の大きさは予め決まっているので、枠データ６３４により枠５３の中心位置を特定することができれば枠５３の領域を算出することができる。ステップＳ１２の判定結果が肯定の場合、ステップＳ１３の処理が実行される。一方、ステップＳ１２の判定結果が否定の場合、ステップＳ１３の処理がスキップされてステップＳ１４の処理が実行される。
【０１０３】
ステップＳ１３においては、枠５３が移動される。ＣＰＵ１０は、カーソルデータ６３３により示されるカーソル５２の位置に応じて、左方向または右方向に１列分、あるいは、上方向または下方向に１行分だけ枠５３を移動させる。すなわち、カーソル５２が枠５３よりも左側に位置する場合には左方向へ１列分だけ枠５３を移動させ、カーソル５２が枠５３よりも右側に位置する場合には右方向へ１列分だけ枠５３を移動させ、カーソル５２が枠５３よりも上側に位置する場合には上方向へ１行分だけ枠５３を移動させ、カーソル５２が枠５３よりも下側に位置する場合には下方向へ１行分だけ枠５３を移動させる。このとき、メインメモリ１３に記憶されている枠データ６３４の内容は、移動後の枠５３の位置を示すデータに更新して記憶される。また、対象パネルデータ６３５の内容は、移動後の枠５３によって囲まれる４つのパネルを示すデータに更新して記憶される。以上のステップＳ１３およびＳ１４によって、３０個の各パネルのうちで、入替処理における入替の対象として選出されるパネルが変更されたこととなる。
【０１０４】
ステップＳ１４においては、ＣＰＵ１０は、プレイヤによって入替指示が行われたか否かを判定する。すなわち、入替指示ボタン（本実施形態では、Ｂボタン３２ｄ）が押下されたか否かを判定する。ステップＳ１４の判定は、メインメモリ１３に記憶されている操作キーデータ６２２を参照することによって行われる。すなわち、操作キーデータ６２２が、Ｂボタン３２ｄが押下されたことを示す場合、ステップＳ１４の判定結果は肯定となり、操作キーデータ６２２が、Ｂボタン３２ｄが押下されていないことを示す場合、ステップＳ１４の判定結果は否定となる。ステップＳ１４の判定結果が肯定の場合、ステップＳ１５の処理が実行される。一方、ステップＳ１４の判定結果が否定の場合、ステップＳ１５およびＳ１６の処理がスキップされてステップＳ１７の処理が実行される。
【０１０５】
ステップＳ１５においては、基準傾きデータが算出されてメインメモリ１３に記憶に記憶される。つまり、入替指示が行われた時点において取得された操作データに基づいて、コントローラ７の傾きに対応する方向が算出される。本実施形態では、この方向は、仮想の３次元座標系であるＸ’Ｙ’Ｚ’座標系におけるベクトルとして表現される。以下、図１５および図１６を用いて、基準傾きデータの算出方法の詳細を説明する。
【０１０６】
図１５は、ある状態において得られた撮像画像におけるマーカ座標の位置を示す図である。図１５においては、位置Ｍ１およびＭ２を示す２つのマーカ座標が撮像情報演算部３５によって算出されたものとする。つまり、ゲーム装置３は、図１５に示す位置のマーカ座標を示すデータを操作データとしてコントローラ７から取得したものとする。このとき、ＣＰＵ１０は、まず、２つのマーカ座標を結ぶベクトルｖを算出する。なお、２つのマーカ座標のうちでいずれをベクトルの始点にしていずれをベクトルの終点にするかは、予め定められた所定のルールに従って決定される。例えば、２つのマーカ座標のうち、ｘ成分の値が小さい方のマーカ座標を始点とするようにしてもよい。なお、算出されたベクトルｖがｘ軸となす角度をθと表す。次にＣＰＵ１０は、ｘｙ座標系におけるベクトルｖを、Ｘ’Ｙ’Ｚ’座標系におけるベクトルＶ’に変換する。具体的には、ベクトルＶ’がＸ’Ｙ’平面（Ｚ’＝０）上となり、かつ、ベクトルＶ’がＸ’軸となす角度がθとなるように変換する。また、ベクトルＶ’の大きさは１とする。図１６は、図１５に示すベクトルｖを変換した場合のベクトルＶ’を示している。以上のようにして得られるベクトルＶ’は、コントローラ７の傾きに対応して変化し、コントローラ７の傾きを示している。以下では、このベクトルＶ’を傾きベクトルと呼ぶ。特に、上記入替指示が行われた時点において算出される傾きベクトルを基準傾きベクトルと呼ぶ。
【０１０７】
ステップＳ１５において、以上のように算出された基準傾きベクトルＶ’のデータは、基準傾きデータ６３７としてメインメモリ１３に記憶される。詳細は後述するが、本実施形態では、ステップＳ１５で算出された基準傾きベクトルＶ’の方向を基準とした傾きベクトルの方向の変化に基づいて、パネルの入れ替えが行われる。ステップＳ１５の後、ステップＳ１６の処理が実行される。
【０１０８】
ステップＳ１６においては、ゲーム状態が入替状態に設定される。具体的には、ＣＰＵ１０は、メインメモリ１３に記憶されているゲーム状態データ６３１の内容を、入替状態を示すデータに書き換える。これによって、次のフレーム処理（ステップＳ３〜Ｓ７の処理）においてはステップＳ４の判定結果が肯定となるのでステップＳ６の入替処理が実行されることとなる。ステップＳ１６の後、ステップＳ１７の処理が実行される。
【０１０９】
ステップＳ１７において、モニタ２にゲーム画像が表示される。すなわち、メインメモリ１３に記憶されているパネル配列データ６３２により示される配列で３０個のパネルが表示され、カーソルデータ６３３により示される位置にカーソル５２が表示され、枠データ６３４により示される位置に枠５３が表示される（図９参照）。また、残り時間画像５５および得点画像５６が表示される。ステップＳ１７の処理が終了するとＣＰＵ１０は移動処理を終了する。
【０１１０】
一方、ステップＳ１８においては、縦または横に３つ以上並んだ同じ種類のパネルが消去される様子がモニタ２に表示される。続くステップＳ１９において、パネルが消去された位置に新たなパネルを追加する様子がモニタ２に表示される。なお、ステップＳ１８およびＳ１９の表示処理は、複数のフレームにわたってアニメーションを表示することによって行われることが好ましい。ステップＳ１９の処理が終了するとＣＰＵ１０は移動処理を終了する。
【０１１１】
図１３の説明に戻り、ステップＳ６においては、入替処理が実行される。入替処理とは、入替状態におけるゲーム処理であり、プレイヤによる回転操作に従ってパネルの位置を入れ替えるための処理である。以下、図１７を参照して入替処理の詳細について説明する。
【０１１２】
図１７は、図１３に示す入替処理（ステップＳ６）の詳細を示すフローチャートである。入替処理においては、まずステップＳ２１において、ＣＰＵ１０は、入替終了指示があったか否かを判定する。すなわち、入替指示ボタン（本実施形態では、Ｂボタン３２ｄ）に対する入力がなくなったかを判定する。ステップＳ２１の判定は、メインメモリ１３に記憶されている操作キーデータ６２２を参照することによって行われる。すなわち、操作キーデータ６２２が、Ｂボタン３２ｄが押下されていないことを示す場合、ステップＳ２１の判定結果は肯定となり、操作キーデータ６２２が、Ｂボタン３２ｄが押下されていることを示す場合、ステップＳ２１の判定結果は否定となる。ステップＳ２１の判定結果が肯定の場合、後述するステップＳ２６の処理が実行される。一方、ステップＳ２１の判定結果が否定の場合、ステップＳ２２の処理が実行される。
【０１１３】
ステップＳ２２においては、現在のコントローラの傾きを示す傾きベクトルＶ’のデータ（すなわち傾きデータ）が算出される。傾きデータは、今回のフレーム処理におけるステップＳ３で取得されてメインメモリ１３に記憶されたマーカ座標データ６２１を用いて算出される。傾きベクトルの算出方法は、上述したステップＳ１５で説明した算出方法と同様である。なお、ステップＳ２２において傾きベクトルを算出する場合、２つのマーカ座標のうち、前回のフレーム処理においてマーカ座標を結ぶベクトルの始点とされた座標に近い方のマーカ座標がベクトルの始点とされる。算出された傾きベクトルＶ’のデータは、傾きデータ６３６としてメインメモリ１３に記憶される。
【０１１４】
続くステップＳ２３において、基準傾きベクトルの方向（基準方向）を基準としたときの、ステップＳ２２で算出された傾きベクトルの方向の変化量が算出される。この変化量は、ステップＳ２２で算出された傾きベクトルと基準傾きベクトルとの内積値として表される。すなわち、ＣＰＵ１０は、ステップＳ２２で算出された傾きベクトルと基準傾きベクトルとの内積を算出する。なお、他の実施形態においては、ステップＳ２２で算出された傾きベクトルの方向と基準方向とのなす角の大きさ（°）を上記変化量として算出するようにしてもよい。上記変化量は、入替指示が行われた時点における状態からのコントローラ７の傾きの変化量を示す。つまり、ステップＳ２３は、入替指示が行われた時点における状態からのコントローラ７の回転量を算出するための処理である。
【０１１５】
続くステップＳ２４において、基準方向を基準としたときの、ステップＳ２２で算出された傾きベクトルの方向が変化する向きが算出される。具体的には、ＣＰＵ１０は、基準傾きベクトルとステップＳ２２で算出された傾きベクトルとの外積を算出する。図１８は、ステップＳ２４の処理を説明するための図である。図１８においては、基準傾きベクトルをＶ１’とし、ステップＳ２２で算出された傾きベクトルをＶ２’とする。上述したように、ベクトルＶ１’およびＶ２’はＸ’Ｙ’平面上のベクトルである。図１８においては、傾きベクトルは、入替指示が行われた時点における状態から、Ｚ’軸正方向の向きに見て右回りに回転している。このとき、ベクトルＶ１’とベクトルＶ２’との外積は、ベクトルＶ３となる。一方、傾きベクトルが、入替指示が行われた時点における状態から、Ｚ’軸正方向の向きに見て左回りに回転している場合、ベクトルＶ１’とベクトルＶ２’との外積は、ベクトルＶ３’となる。つまり、上記変化の向きが右回りである場合、外積のベクトルがＺ’軸正方向を向き、上記変化の向きが左回りである場合、外積のベクトルがＺ’軸負方向を向く。このように、外積のベクトルを算出し、当該ベクトルのＺ’成分の値が正か負かによって、上記変化の向きを知ることができる。つまり、外積のベクトルのＺ’成分の値が正か負かによって、コントローラ７の回転方向を知ることができる。
【０１１６】
続くステップＳ２５において、対象パネルの回転角度が決定される。具体的には、ＣＰＵ１０は、まず、ステップＳ２４で算出された向きに、ステップＳ２３で算出された変化量だけ対象パネルを回転させる角度を算出する。なお、本実施形態では、所定の中心角度（０°、９０°、１８０°または２７０°）に対して±α°の範囲を遊び範囲として設定しておく。ＣＰＵ１０は、上記算出した角度がこの遊び範囲内の値である場合、対象パネルの回転角度を、遊び範囲に対応する中心角度として決定する。また、上記算出した角度がこの遊び範囲内の値でない場合、上記算出した角度を回転角度として決定する。例えば、上記算出した角度が９０°±αの範囲内の値となる場合、回転角度は９０°に決定される。これにより、プレイヤは、上記中心角度に正確に対応するようにコントローラ７を操作しなくても、対象パネルを当該中心角度だけ回転させることができるので、ゲームの操作性を向上することができる。ステップＳ２５で決定された角度のデータは、回転角データ６３８としてメインメモリ１３に記憶される。ステップＳ２５の後、後述するステップＳ２８の処理が実行され、上記決定された角度だけ回転した対象パネルのゲーム画像がモニタ２に表示されることとなる。
【０１１７】
ステップＳ２５に示したように、本実施形態では、所定の期間（入替状態に移行した時点から現在までの期間）において、傾きデータにより示される方向の変化量に基づいて対象パネルの入替を行った。すなわち、基準傾きベクトルと現在の傾きベクトルとの変化に基づいて対象パネルの入替を行った。ここで、他の実施形態においては、後述する第１の変形例のように、現在の傾きベクトルの値のみに基づいて対象パネルの入替を行うようにしてもよい。
【０１１８】
一方、ステップＳ２６においては、対象パネルの現在の回転角度に一番近い中心角度となるように、対象パネルの回転角度が決定される。具体的には、ＣＰＵ１０は、上記中心角度（０°、９０°、１８０°または２７０°）のうちで、対象パネルの現在の回転角度に最も近い中心角度を選択して、選択した中心角度を対象パネルの現在の回転角度として決定する。ここで、対象パネルの現在の回転角度は、その時点でメインメモリ１３に記憶されている回転角データ６３８により示されている。本実施形態では、対象パネルの現在の回転角度は、前回のフレーム処理のステップＳ２５で決定された回転角度であるが、他の実施形態では、対象パネルの現在の回転角度は、今回のフレーム処理におけるステップＳ２６の前にステップＳ２２〜Ｓ２５の処理を実行することによって得られる回転角度であってもよい。ステップＳ２５で決定された角度のデータは、回転角データ６３８としてメインメモリ１３に記憶される。さらに、回転角度が決定されたことにより、当該角度に基づいて、パネルの配置が入れ替わるようにパネル配列データ６３２の内容を変更する。
【０１１９】
続くステップＳ２７において、ゲーム状態が移動状態に設定される。具体的には、ＣＰＵ１０は、メインメモリ１３に記憶されているゲーム状態データ６３１の内容を、移動状態を示すデータに書き換える。これによって、次のフレーム処理においてはステップＳ４の判定結果が否定となるのでステップＳ５の移動処理が実行されることとなる。
【０１２０】
ステップＳ２５またはＳ２７の次に、ステップＳ２８の処理が実行される。ステップＳ２８においては、入替状態におけるゲーム画面が表示される。すなわち、対象パネルについては、メインメモリ１３に記憶されている回転角データ６３８により示される角度だけ回転した状態で表示される（図１０参照）。なお、本実施形態では、対象パネルの回転と同じ角度だけ枠５３も回転して表示される。ステップＳ２８の処理が終了するとＣＰＵ１０は入替処理を終了する。
【０１２１】
図６の説明に戻り、ステップＳ５またはＳ６の次に、ステップＳ７の処理が実行される。ステップＳ７において、ＣＰＵ１０はゲームを終了するか否かを判定する。ステップＳ７の判定は、例えば、ゲームの制限時間が経過したか否かによって行われる。ステップＳ７の判定結果が否定である場合、ステップＳ３の処理が再度実行され、以降、ゲームを終了すると判定されるまでステップＳ３〜Ｓ７の処理ループが実行される。一方、ステップＳ７の判定結果が肯定である場合、ＣＰＵ１０は図１３に示す処理を終了する。以上で、本実施形態においてゲーム装置３において実行されるゲーム処理の説明を終了する。
【０１２２】
以上のように、本実施形態においては、プレイヤが入替指示を行うと、ゲーム状態は移動状態から入替状態に移行し（ステップＳ１６）、コントローラ７の傾きに応じて対象パネルを回転させることが可能となる（ステップＳ２２〜Ｓ２５）。さらに、プレイヤによって入替終了指示が行われると（ステップＳ２１でＹｅｓ）、対象パネルは右回りまたは左回りに０°、９０°、１８０°または２７０°だけ回転した状態となって（ステップＳ２６）、ゲーム状態が入替状態から移動状態へ移行する（ステップＳ２７）。したがって、入替処理によって、コントローラの傾きに応じて、４つの対象パネルについて、ある位置に表示されていたパネルが他のパネル（他の位置に表示されていたパネル）と入れ替えられたこととなる。すなわち、本実施形態においては、プレイヤは、コントローラ７自体を回転させることによって、画面に表示されているオブジェクト（パネル）を入れ替えるという、今までにない新規な操作を味わうことができる。
【０１２３】
また、本実施形態において、対象パネルが９０°回転するような入替処理を１回の入替処理とすると、ゲーム装置３は、コントローラ７の傾きの変化量に応じた回数だけ入替処理を行うこととなる。これによって、プレイヤは複数回の入替操作を容易に行うことができる。
【０１２４】
なお、上記本実施形態では、入替処理において、１フレーム毎に対象パネルの回転角度が算出されて（ステップＳ２２〜２５）対象パネルの回転角度が１フレーム毎に変化された。これによって、コントローラ７の傾きに応じて対象パネルが回転移動するアニメーションが表示されることとなる。ここで、他の実施例においては、コントローラ７の傾きに応じて対象パネルを入れ替えるようにすればよく、上記アニメーションが表示されなくてもよい。
【０１２５】
また、本実施形態では、対象パネルを４個とし、コントローラ７の傾きに応じて４個のオブジェクトの位置を入れ替えることとしたが、対象パネルの数はいくつであってもよい。例えば、左右または上下に並ぶ２個のパネルを対象パネルとし、２個のパネルの位置を入れ替えるようにしてもよい。
【０１２６】
なお、本実施形態では、画面に表示されている複数個のオブジェクト（パネル）の位置を入れ替える場合を例として説明したが、本発明は、画面に表示されているオブジェクトを他のオブジェクトに入れ替えて表示させる種々の形態に適用することが可能である。以下、変形例として、他のゲーム例について説明する。
【０１２７】
（第１の変形例）
以下、第１の変形例として、文字入力を行う際に本発明を適用する場合の例を説明する。図１９は、第１の変形例におけるゲーム画像の一例を示す図である。図１９に示すゲーム画像は、ひらがなを入力する際にモニタ２の画面に表示される。すなわち、画面には、候補文字群画像７１ａ〜７１ｊ、カーソル７２、候補文字画像７３ａ〜７３ｅ、枠７４、および入力文字画像７５が表示される。第１の変形例においては、ゲーム開始時や、ゲーム中において所定の条件が満たされた場合等に、図１９に示す画像が表示される。
【０１２８】
図１９において、カーソル７２は、プレイヤによって操作され、プレイヤが画面上の任意の位置を指定するために用いられる。すなわち、ゲーム装置３は、コントローラ７の指示位置にカーソル７２を表示する。なお、カーソル７２の表示位置を算出する方法は上記実施形態と同様である。
【０１２９】
画面上部に表示されている候補文字群画像７１ａ〜７１ｊは、それぞれ、候補文字の集合（候補文字群）を示す画像である。例えば、“あ行”と記載された候補文字群画像７１ａは、“あ”〜“お”の５つの候補文字の集合を示す画像である。ここで、候補文字とは、入力可能な文字として画面に表示される文字である。つまり、候補文字として選択されている文字は、それに対応する画像（後述する候補文字画像）が画面に表示されることとなる。
【０１３０】
候補文字画像７３ａ〜７３ｅは、候補文字として現在選択されている文字を示す画像である。図１９の状態においては、“あ”〜“お”の５つの文字が候補文字に選択されており、これら５つの候補文字の入力を行うことが可能である。第１の変形例においては、候補文字画像７３ａ〜７３ｅは環状に配置されている。コントローラ７の傾きを変化させる操作によって、候補文字画像７３ａ〜７３ｅの位置を入れ替えることができる。
【０１３１】
枠７４は、候補文字のうちで、入力の対象となっている文字を示す。つまり、枠７４によって囲まれる候補文字画像の文字が入力の対象となっている文字である。例えば、図１９の状態において、プレイヤがコントローラ７の所定の入力決定ボタン（例えば、Ａボタン３２ｉ）を押下すると、枠７４によって囲まれている候補文字である“あ”が入力される。
【０１３２】
入力文字画像７５は、すでに入力された文字（文字列）を示す画像である。図１９の状態では、入力文字画像７５は、“あ”の文字が入力済である状態を示している。
【０１３３】
図１９に示す画像が表示されると、プレイヤはまず、コントローラ７を用いて第１の操作を行う。第１の操作は、候補文字群を選択するための操作である。具体的には、まず、プレイヤは、候補文字群画像７１ａ〜７１ｊのうちの所望の１つの画像にカーソル７２が重なるようにカーソル７２を移動させる。次に、プレイヤは、所望の候補文字群画像の位置にカーソル７２を移動させると、所定の候補文字決定ボタン（例えば、Ｂボタン３２ｄ）を押下する。これによって、ゲーム装置３は、カーソル７２によって指し示される候補文字群画像が選択されたと認識し、候補文字として選択される文字群を、当該候補文字群画像に対応する文字群に変更する。例えば、図１９に示す状態において、“か行”の文字群に対応する候補文字群画像７１ｂが選択された場合、“あ”〜“お”の５文字に変えて、“か”〜“こ”の５文字を候補文字として選択する。これによって、“あ”〜“お”の５文字の候補文字画像に代えて、“か”〜“こ”の５文字の候補文字画像が画面に表示される。以上のように、プレイヤは、所望の文字を入力する際、まず、第１の操作として、入力したい文字を候補文字として画面に表示させるために、カーソル７２を用いて候補文字群画像を選択する操作を行う。
【０１３４】
第１の操作の次に、プレイヤは、候補文字のうちから、入力する文字を決定する操作を第２の操作として行う。ここで、第１の変形例では、ゲーム装置３は、コントローラ７の傾きに応じて候補文字画像７３ａ〜７３ｅの位置を入れ替える。例えば、図１９に示す状態から、コントローラ７を長手方向を軸として右回りに回転させた場合、ゲーム装置３は、候補文字画像７３ａ〜７３ｅの位置を、図２０に示すように入れ替える。図２０は、図１９に示す状態から、候補文字画像７３ａ〜７３ｅの位置が入れ替えられた後のゲーム画像を示す図である。図２０においては、各候補文字画像７３ａ〜７３ｅは、循環的に位置が入れ替えられている。つまり、各候補文字画像７３ａ〜７３ｅは、右回りにそれぞれ１つずつずれるように表示位置が移動されている。
【０１３５】
以上のように、プレイヤは、コントローラ７の傾きを変化させる操作によって、枠７４によって囲まれる位置にくる候補文字画像を入れ替えることができる。すなわち、入力の対象となる文字を入れ替えることができる。プレイヤは、所望の候補文字が枠７４によって選択されている状態となれば、所定の入力決定ボタン（例えば、Ａボタン３２ｉ）を押下する。これに応じてゲーム装置３は、選択されている文字が入力されたと認識し、入力文字画像７５に当該文字を追加する。例えば、図２０においては、図１９に示す状態から“い”の文字が新たに入力された様子を示している。
【０１３６】
図２１は、第１の変形例において、ゲーム装置３のメインメモリ１３に記憶される主なデータを示す図である。図２１に示すように、メインメモリ１３には、ゲームプログラム６１、操作データ６２、およびゲーム処理用データ６３等が記憶される。なお、図２１において、上記実施形態と同様のデータについては図１２と同じ参照符号を付し、詳細な説明を省略する。以下、図１２との相違点を中心に図２１について説明する。
【０１３７】
第１の変形例において、ゲーム処理用データ６３は、カーソルデータ６３３、傾きデータ６３６、候補文字群データ６４０、および入力文字データ６４１を含んでいる。カーソルデータ６３３および傾きデータ６３６は上記実施形態と同様のデータである。
【０１３８】
候補文字群データ６４０は、現在の候補文字群、すなわち、候補文字として現在選択されている文字群を示すデータである。候補文字群データ６４０は、例えば配列の形式で表現される。また、この配列においてそれぞれの列の最初に格納される文字が現在入力の対象となる文字であり、配列の２番目以降には、アルファベット順に各文字が格納される。なお、現在の候補文字群のうちでアルファベットの順番が最後の文字の後は、当該候補文字群のうちでアルファベットの順番が最初の文字が格納され、それ以降にはアルファベット順に書く文字が格納される。例えば、候補文字群が“か”〜“こ”であり、現在入力の対象となっている文字が“く”である場合、配列は、［“く”，“け”，“こ”，“か”，“き”］となる。
【０１３９】
入力文字データ６４１は、すでに入力された文字（文字列）を示すデータである。図１９に示す入力文字画像７５は、入力文字データ６４１により示される文字（文字列）を示している。
【０１４０】
次に、第１の変形例においてゲーム装置３で行われる処理の詳細を、図２２および図２３を用いて説明する。図２２および図２３は、第１の変形例においてゲーム装置３で実行される処理の流れを示すメインフローチャートである。なお、図２２および図２３に示すフローチャートは、ゲーム開始時や、ゲーム中において所定の条件が満たされた場合等に開始される。
【０１４１】
まずステップＳ３１において、以降の処理において用いられるデータの初期化処理が実行される。具体的には、候補文字群データ６４０および入力文字データ６４１の内容が初期化される。ここでは、初期状態においては、“あ”〜“お”の文字が候補文字群として選択されており、入力の対象となる文字が“あ”に設定されているとする。したがって、［“あ”，“い”，“う”，“え”，“お”］を示すデータが候補文字群データ６４０としてメインメモリ１３に記憶される。
【０１４２】
続くステップＳ３２において、ゲーム空間が構築されてモニタ２に表示される。すなわち、ＣＰＵ１０は、図１９に示すようなゲーム画像を生成してモニタ２に表示させる。以降、ステップＳ３３〜Ｓ４３の処理ループが１フレーム毎に繰り返されることによって、ゲームが進行していく。
【０１４３】
ステップＳ３３においては、ＣＰＵ１０は、コントローラ７から操作データを取得する。ステップＳ３３の処理は上記ステップＳ３の処理と同じである。続くステップＳ３４においては、カーソル７２の画面上の位置、すなわち、コントローラ７の指示位置が算出される。ステップＳ３４の処理は上記ステップＳ１１の処理と同じである。
【０１４４】
ステップＳ３５において、ＣＰＵ１０は、候補文字群画像７１ａ〜７１ｊのいずれかが指定されたか否かを判定する。具体的には、ステップＳ３４で算出したカーソル７２の位置が候補文字群画像７１ａ〜７１ｊのいずれかと重なっているか否かを判定する。判定の結果、カーソル７２の位置が候補文字群画像７１ａ〜７１ｊのいずれかと重なっている場合、ステップＳ３６の処理が実行される。一方、カーソル７２の位置が候補文字群画像７１ａ〜７１ｊのいずれとも重なっていない場合、ステップＳ３６〜Ｓ３８の処理がスキップされてステップＳ３８の処理が実行される。
【０１４５】
ステップＳ３６においては、ＣＰＵ１０は、候補文字を指定する入力があったか否か、すなわち、所定の候補文字決定ボタン（例えば、Ｂボタン３２ｄ）が押下されたか否かを判定する。ステップＳ３６の処理は、上記ステップＳ１４の処理と同様である。ステップＳ３６の判定結果が肯定の場合、ステップＳ３７の処理が実行される。一方、ステップＳ３６の判定結果が否定の場合、ステップＳ３７およびＳ３８の処理がスキップされてステップＳ３８の処理が実行される。
【０１４６】
ステップＳ３７においては、候補文字群が変更される。すなわち、ＣＰＵ１０は、ステップＳ３５においてカーソル７２と重なると判定された候補文字群画像に対応する候補文字群を、新たに選択された候補文字群とする。このとき、ＣＰＵ１０は、新たに選択された各候補文字を示す配列データを候補文字群データ６４０としてメインメモリ１３に記憶する。なお、この時点では、新たに選択された候補文字のうち、アルファベット順で最初の文字が配列の先頭となる。以上のステップＳ３７によって、入替の対象として選出されるオブジェクト（候補文字画像）が変更されたこととなる。
【０１４７】
ステップＳ３８において、ＣＰＵ１０は、入力する文字を決定する指示があったか否か、すなわち、所定の入力決定ボタン（例えば、Ａボタン３２ｉ）が押下されたか否かを判定する。ステップＳ３８の具体的な処理は、上記ステップＳ１４の処理に準ずる。ステップＳ３８の判定結果が肯定の場合、後述するステップＳ４１の処理が実行される。一方、ステップＳ３８の判定結果が否定の場合、ステップＳ３９の処理が実行される。
【０１４８】
ステップＳ３９においては、コントローラの傾きを示す傾きベクトルのデータ（すなわち傾きデータ）が算出される。ステップＳ３９の処理は、上記ステップＳ２２と同様である。
【０１４９】
ステップＳ４０においては、ステップＳ３９で算出された傾きデータに基づいて、候補文字群の入替が行われる。候補文字群の入替は、例えば次のようにして行うことができる。すなわち、ＣＰＵ１０は、傾きベクトルの方向に基づいて、候補文字群データ６４０の配列の先頭にくる文字を決定する。より具体的には、傾きベクトルの方向を０°〜３６０°の角度で表現するとすれば、次に示す対応関係に従って候補文字画像を決定する。
０°以上７２°未満のとき：アルファベット順で最初の候補文字（例えば“あ”）
７２°以上１４４°未満のとき：アルファベット順で２番目の候補文字（例えば“い”）
１４４°以上２１６°未満のとき：アルファベット順で３番目の候補文字（例えば“う”）
２１６°以上２８８°未満のとき：アルファベット順で４番目の候補文字（例えば“え”）
２８８°以上３６０°未満のとき：アルファベット順で５番目の候補文字（例えば“お”）
上記の対応関係に基づいて配列の先頭の文字を決定することによって、配列に格納される文字の順番を決定することができる。なお、第１の変形例においては、候補文字群画像７１ｊが選択されている場合には候補文字は“わ”、“を”、および“ん”の３つとなるので、上記対応関係とは異なる対応関係を用いる必要がある。
【０１５０】
なお、上記ステップＳ４０においては、傾きベクトルの方向は、予め定められた方向を基準（０°）とした角度で表されるものであった。ここで、他の実施形態においては、上記実施形態と同様、所定のタイミング（例えば、候補文字群が選択されたタイミング）における傾きベクトルの方向を基準とした角度で表されてもよい。
【０１５１】
一方、ステップＳ４１においては、現在入力の対象となっている文字が入力済みの文字（文字列）に追加される。すなわち、ＣＰＵ１０は、候補文字群データ６４０により示される配列の先頭の文字データを、入力文字データ６４１に含まれる文字データに追加するように、入力文字データ６４１の内容を更新する。
【０１５２】
ステップＳ４０またはＳ４１の次に、ステップＳ４２の処理が実行される。すなわち、ステップＳ４２においては、文字入力画面がモニタ２に表示される。このとき、メインメモリ１３に格納される候補文字群データ６４０により示される配列の先頭の文字に対応する候補文字画像が枠７４により囲まれる位置に表示される。また、配列に含まれる他の文字に対応する候補文字画像は、配列の順番に従って（例えば右回りに）環状に配置される（図１９参照）。したがって、候補文字群データ６４０により示される配列における文字の順番を並び替えることによって、画面に表示されるオブジェクト（候補文字画像）の入替を行うことができる。
【０１５３】
続くステップＳ４３において、ＣＰＵ１０は、文字入力を終了するか否かを判定する。例えば、ＣＰＵ１０は、文字入力を終了する旨の指示がプレイヤによって行われたことに応じて文字入力を終了する。ステップＳ４３の判定結果が否定である場合、ステップＳ３３の処理が再度実行され、以降、文字入力を終了すると判定されるまでステップＳ３３〜Ｓ４３の処理ループが実行される。一方、ステップＳ４３の判定結果が肯定である場合、ＣＰＵ１０は図２２および図２３に示す処理を終了する。以上で、第１の変形例においてゲーム装置３において実行される処理の説明を終了する。
【０１５４】
以上のように、第１の変形例においても上記実施形態と同様、プレイヤは、コントローラ７を長手方向を軸として回転させる操作によって、候補文字画像の位置を入れ替えることができる。つまり、プレイヤは、コントローラ７自体を回転させることによって、画面に表示されているオブジェクト（候補文字画像）の位置を入れ替えるという、今までにない新規な操作を味わうことができる。
【０１５５】
さらに第１の変形例では、カーソル７２を移動させることによって、候補文字として表示すべき文字群を変更させる操作を行うことができる。つまり、プレイヤは、コントローラ７自体を操作する操作方法によって２種類の異なる操作を行うことができるので、簡単な操作でプレイヤに２種類の操作を行わせることができ、２種類の操作の組み合わせによって、選択肢の多い候補文字からの選択を高速に行うことができるため、操作性の良い文字入力方法をプレイヤに提供することができる。
【０１５６】
なお、上記第１の変形例においては、環状に配置された複数のオブジェクトに対して入替を行ったが、例えば図２４に示すように、直線状に配置された複数のオブジェクトに対して入替を行うものであってもよい。図２４に示す場合も上記第１の変形例と同様、配列を示す候補文字群データ６４０を用いて候補文字画像７３ａ〜７３ｊの位置を管理することができる。例えば、ゲーム装置３は、配列の先頭の文字に対応する候補文字画像から順に上から下へ候補文字画像を並べて表示することによって、図２４に示す画像を表示させることができる。この場合も入替の方法は上記第１の変形例と同様に行うことができる。
【０１５７】
また、上記第１の変形例においては、入替の対象となる複数のオブジェクト（候補文字画像）が同時に表示されていたが、他の例においては、入替の対象となるオブジェクトの１つのみが表示されている形態であってもよい。図２５は、第１の変形例の他の例におけるゲーム画像を示す図である。図２５においては、入替の対象となる候補文字画像のうちで、枠７４に囲まれる画像のみを表示するようにしている。なお、図２５に示す例は、枠７４に囲まれる候補文字画像以外の候補文字画像が表示されない点を除いては第１の変形例と同様であり、コントローラ７の傾きに応じて、枠７４に囲まれる候補文字画像が入れ替わる点は第１の変形例と同様である。図２５に示す例では、コントローラ７の傾きに応じて候補文字画像７３ａが他の候補文字画像に入れ替わることになる。  
【０１５８】
なお、上記第１の変形例では、ひらがなを入力する場合を例として説明したが、他の変形例では、例えばＡ〜Ｚのアルファベットを入力する場合に第１の変形例を用いることも可能である。この場合、例えばＡ〜Ｚのアルファベットを、Ａ〜Ｅ、Ｆ〜Ｊ、Ｋ〜Ｏ、Ｐ〜Ｔ、Ｕ〜Ｚの５つのグループに分類し、各グループを示す候補文字群画像を表示すればよい。さらに、他の変形例においては、例えばメニュー画面においてアイテムを選択する場合に第１の変形例を用いることも可能である。具体的には、ゲーム装置３は、候補文字群画像に代えて、アイテムの種類（例えば武器、防具等）を示す画像を複数表示する。そして、カーソルによって当該画像のうちの１つが選択された場合には、ゲーム装置３は、選択された画像により示される種類に属するアイテムを示す画像を候補文字画像に代えて表示する。例えば、「武器」を示す画像がカーソルによって選択された場合、「剣」を示す画像や「槍」を示す画像が表示される。プレイヤは、コントローラ７を回転させることによって「剣」や「槍」を示す画像を入れ替えることができ、所望のアイテムを選択することができる。
【０１５９】
（第２の変形例）
以下、第２の変形例として、各キャラクタの隊列の順番を示すためのメニュー画面を表示する際に本発明を適用する場合の例を説明する。図２６は、第２の変形例におけるゲーム画像の一例を示す図である。このゲーム画像は、キャラクタＡ〜キャラクタＤという４つのキャラクタが登場するゲームにおいて、各キャラクタの隊列の順番、および、各キャラクタが装備しているアイテムを示す画像である。すなわち、
図２６に示すゲームでは４つのキャラクタが一列になって隊列を組むものとし、画面には、各キャラクタとそのキャラクタの隊列における順番とを対応付けた表７６が表示される。なお、この表７６においては、キャラクタが装備しているアイテム（武器および防具）がキャラクタ毎に対応付けられている。また、画面には、コントローラ７の指示位置に応じて移動するカーソル７７が表示される。
【０１６０】
第２の変形例において入替の対象となるオブジェクトは、表７６のうちの、隊列の順番を示す数字が記載された各欄（セル）である。プレイヤは、これらの欄のうちで入替を行う欄を複数選択する。このゲーム例においては、入替の対象となる欄はプレイヤによって１つずつ選択される。具体的には、プレイヤは、入替の対象とする欄の位置にカーソル７７を移動させ、当該欄がカーソル７７によって指し示されている状態で所定の選択ボタン（例えば、Ａボタン３２ｉ）を押下する。ゲーム装置３は、選択ボタンが押下されたことに応じて、押下された時点でカーソル７７によって指し示されている欄を入替の対象として選択する。第２の変形例においては、入替の対象として選択された欄は太線で囲まれる。プレイヤは、カーソル７７を移動させるとともに入替の対象となる欄を選択する操作を複数回繰り返す。これによって、入替の対象となる欄が複数選択された状態となる。図２６に示す状態では、キャラクタＡの隊列の欄（“１”と記載された欄）と、キャラクタＣの隊列の欄（“３”と記載された欄）とが選択されている。
【０１６１】
欄が複数選択された状態において、プレイヤは、コントローラ７の傾きを変化させることによって、選択されている欄の内容を入れ替えることができる。すなわち、ゲーム装置３は、コントローラ７の傾きに応じて、選択されている欄の内容を入れ替える。例えば、図２６に示す状態において、コントローラ７の傾きが変化されると、ゲーム装置３は、キャラクタＡの隊列の欄と、キャラクタＣの隊列の欄とを入れ替える。その結果、入れ替え後の表７６においては、図２７に示すように、キャラクタＡの隊列の欄に“３”と記載され、キャラクタＣの隊列の欄に“１”と記載されることとなる。これによって、隊列の前から１番前に位置するキャラクタはキャラクタＣとなり、隊列前から３番目に位置するキャラクタはキャラクタＡとなるように隊列が入れ替えられる。
【０１６２】
図２８は、第２の変形例において、ゲーム装置３のメインメモリ１３に記憶される主なデータを示す図である。図２８に示すように、メインメモリ１３には、ゲームプログラム６１、操作データ６２、およびゲーム処理用データ６３等が記憶される。なお、図２８において、上記実施形態と同様のデータについては図１２と同じ参照符号を付し、詳細な説明を省略する。以下、図１２との相違点を中心に図２８について説明する。
【０１６３】
第２の変形例において、ゲーム処理用データ６３は、カーソルデータ６３３、傾きデータ６３６、基準傾きデータ６３７、対象欄データ６４２、対象内容データ６４３、および隊列データ６４４を含んでいる。カーソルデータ６３３、傾きデータ６３６および基準傾きデータ６３７は上記実施形態と同様のデータである。
【０１６４】
対象欄データ６４２は、上記表７６の各欄のうちで、入替の対象となっている欄を示すデータである。対象欄データ６４２は、第１の変形例における候補文字群データ６４０と同様、配列の形式で記憶される。この配列には、入替の対象として最初に選択された欄を示すデータが先頭に格納され、以降、選択された順番に欄を示すデータが格納される。例えば、図２６に示す状態において、「キャラクタＡの隊列」の欄が選択された後「キャラクタＣの隊列」の欄が選択された場合、対象欄データ６４２の内容は、［「キャラクタＡの隊列」，「キャラクタＣの隊列」］となる。
【０１６５】
対象内容データ６４３は、入替の対象となっている欄の内容（すなわち、欄に記載されている順番）を示すデータである。対象内容データ６４３は、対象欄データ６４２と同様、配列の形式で記憶される。この配列には、入替の対象として最初に選択された欄に記載されたアイテムを示すデータが先頭に格納され、以降、選択された順番にアイテムを示すデータが格納される。例えば、図２６に示す状態において、「キャラクタＡの隊列」の欄が選択された後「キャラクタＣの隊列」の欄が選択された場合、対象内容データ６４３の内容は、［“１”，“３”］となる。
【０１６６】
隊列データ６４４は、４つのキャラクタの隊列の順番を示すデータである。つまり、隊列データ６４４は、図２６に示す表７６の左側２列の内容を示すデータである。換言すれば、ゲーム装置３は、隊列データ６４４の内容に従って表７６を表示する。
【０１６７】
次に、第２の変形例においてゲーム装置３で行われる処理の詳細を、図２９を用いて説明する。図２９は、第２の変形例においてゲーム装置３で実行される処理の流れを示すメインフローチャートである。なお、図２９に示すフローチャートは、ゲーム中において所定の条件が満たされた場合（例えば、キャラクタの隊列の順番を変更する指示がプレイヤによって行われた場合）等に開始される。なお、図２９に示す処理が開始される際、メインメモリ１３に記憶されている対象欄データ６４２および対象内容データ６４３の配列は空にされる。
【０１６８】
第２の変形例においては、まず、ステップＳ５１において、コントローラ７から操作データが取得され、続くステップＳ５２において、カーソル７７の画面上の位置、すなわち、コントローラ７の指示位置が算出される。ステップＳ５１の処理は上記ステップＳ３の処理と同じであり、ステップＳ５２の処理は上記ステップＳ１１の処理と同じである。
【０１６９】
続くステップＳ５３において、ＣＰＵ１０は、表７６の各欄のうちのいずれかが指定されたか否かを判定する。この判定は、当該各欄のいずれかがカーソル７７によって指し示されている状態であり、かつ、所定の選択ボタン（例えば、Ａボタン３２ｉ）が押下されたか否かによって判定される。各欄のいずれかがカーソル７７によって指し示されている状態であるか否かは、ステップＳ５２で算出したカーソル７７の位置が表７６の各欄のうちのいずれかと重なっているか否かにより行われる。また、所定の選択ボタンが押下されたか否かは、メインメモリ１３に記憶されている操作キーデータ６２２を参照することによって、上記ステップＳ３８と同様の方法で行うことができる。ステップＳ５３の判定の結果、表７６の各欄のうちのいずれかが指定された場合、ステップＳ５４の処理が実行される。一方、表７６の各欄のうちのいずれも指定されていない場合、ステップＳ５４およびＳ５５の処理がスキップされてステップＳ５６の処理が実行される。
【０１７０】
ステップＳ５４においては、ステップＳ５３で指定されたと判定された欄が入替対象として決定される。すなわち、ＣＰＵ１０は、指定された欄を示すデータ（例えば「キャラクタＡの隊列」を示すデータ）を、対象欄データ６４２により示される配列の最後に追加する。また、指定された欄に記載されている内容を示すデータを、対象内容データ６４３により示される配列の最後に追加する。このステップＳ５４によって、入替の対象としてオブジェクト（欄）が新たに選出されたこととなる。
【０１７１】
ステップＳ５５においては、基準傾きデータが算出されてメインメモリ１３に記憶に記憶される。ステップＳ５５の処理は、上記ステップＳ１５の処理と同じである。
【０１７２】
ステップＳ５６においては、入替対象が複数決定されているか否かが判定される。この判定は、メインメモリ１３に記憶されている対象欄データ６４２または対象内容データ６４３により示される配列に格納されているデータの数を参照することによって行うことができる。すなわち、当該数が０または１の場合、ステップＳ５５の判定結果は否定となり、当該数が２以上の場合、ステップＳ５５の判定結果は肯定となる。ステップＳ５６の判定結果が肯定の場合、ステップＳ５７の処理が実行される。一方、ステップＳ５６の判定結果が否定の場合、ステップＳ５７およびＳ５８の処理がスキップされてステップＳ５９の処理が実行される。
【０１７３】
ステップＳ５７においては、現在のコントローラの傾きを示す傾きベクトルＶ’のデータ（すなわち傾きデータ）が算出される。ステップＳ５７の処理は上記ステップＳ２２の処理と同じである。
【０１７４】
続くステップＳ５８において、入替対象として選択されている欄の内容が入れ替えられる。すなわち、ＣＰＵ１０は、対象内容データ６４３により示される配列に格納されているデータの順番を入れ替える。ここで、第２の変形例においては、以下に示す入替処理を処理単位としてアイテムの入替が行われる。すなわち、１回の入替処理においては、入替前において配列のｉ（ｉは２以上の整数）番目に格納されていたデータが（ｉ−１）番目に格納されるとともに、入替前において配列の先頭に格納されていたデータが配列の最後に格納される。ステップＳ５８において、ＣＰＵ１０は、上記入替処理を、コントローラ７の傾きに応じた回数だけ実行する。例えば、ＣＰＵ１０は、上記ステップＳ２２〜Ｓ２５の処理によって算出される回転角度を用いて、回転角度が３０°増加する毎に１回の入替処理を行う。さらに、他の変形例においては、上記入替処理と逆の入替を行う処理を回転角度が３０°減少する毎に行うようにしてもよい。以上の入替処理が実行されることによって、対象内容データ６４３により示される配列に格納されるデータの順番が入れ替えられることとなる。
【０１７５】
さらに、ステップＳ５８において、ＣＰＵ１０は、入替処理が実行された後の対象内容データ６４３および対象欄データ６４２を参照して、表７６の内容を入れ替える。具体的には、対象欄データ６４２の配列の第ｊ番目（ｊは１以上の整数）に格納されている欄のデータと、対象内容データ６４３の配列の第ｊ番目に格納されているとを対応付け、この対応関係に従って隊列データ６４４の内容を更新する。例えば、対象欄データ６４２の配列の先頭に「キャラクタＡの隊列」を示すデータが格納されており、対象内容データ６４３の配列の先頭に“３”を示すデータが格納されている場合、キャラクタＡの順番が前から３番目となるように隊列データ６４４の内容を更新する。
【０１７６】
以上のステップＳ５８の処理によれば、ゲーム装置３は、任意の複数のオブジェクト（欄）を入れ替えることが可能である。なお、入替対象となる欄の数は、２つ以上であればよく、３つ以上であっても入れ替えは可能である。
【０１７７】
ステップＳ５９においては、各キャラクタが装備しているアイテムを示すためのメニュー画面がモニタ２に表示される。このとき、画面に表示される表７６の内容は、メインメモリ１３に記憶されている隊列データ６４４の内容に従って生成される。
【０１７８】
続くステップＳ６０においては、メニュー画面の表示を終了するか否かが判定される。例えば、ＣＰＵ１０は、メニュー画面の表示を終了する旨の指示がプレイヤによって行われたことに応じて当該表示を終了する。ステップＳ６０の判定結果が否定である場合、ステップＳ５１の処理が再度実行され、以降、メニュー画面の表示を終了すると判定されるまでステップＳ５１〜Ｓ６０の処理ループが実行される。一方、ステップＳ６０の判定結果が肯定である場合、ＣＰＵ１０は図２９に示す処理を終了する。以上で、第２の変形例においてゲーム装置３において実行される処理の説明を終了する。
【０１７９】
なお、上記第２の変形例においては、武器の欄および防具の欄についても隊列の欄と同様に入れ替えが可能としてもよいし、入れ替えが不可能な欄としてもよい。
【０１８０】
以上の第２の変形例に示したように、本発明においては、入れ替えの対象となるオブジェクトを、プレイヤが１つずつ選択するようにしてもよい。これによって、より自由度の高い入れ替え操作が可能となる。さらに、コントローラ７の指示位置を変更する操作によって入れ替えの対象となるオブジェクトを選択するようにすれば、入れ替え操作の操作性をより向上することができる。
【０１８１】
（第３の変形例）
以下、第３の変形例として、キャラクタの状態を示すためのメニュー画面を表示する際に本発明を適用する場合の例を説明する。図３０は、第３の変形例におけるゲーム画像の一例を示す図である。このゲーム画像は、キャラクタＡ〜キャラクタＤという４つのキャラクタが登場するゲームにおいてキャラクタの状態を示す画像である。すなわち、画面には、４つのウィンドウ８１ａ〜８１ｄが表示されている。１つのウィンドウには、そのウィンドウに対応するキャラクタについての状態として、レベル、体力値（ＨＰ）、魔法力値（ＭＰ）、および持っているアイテムの情報が記述されている。なお、４つのウィンドウ８１ａ〜８１ｄは重なって表示されているので、最前面に位置するウィンドウ（図３０においてはウィンドウ８１ａ）についてのみ内容が表示され、他のウィンドウについては内容が表示されない。他のウィンドウ８１ｂ〜８１ｄについては、ウィンドウ上部のタブ部分のみが表示される。このタブ部分には、キャラクタの名称等が記載されている。
【０１８２】
図３０のメニュー画面が表示されている状態において、プレイヤは、コントローラ７の傾きを変化させることによって、最前面に表示されるウィンドウを入れ替えることができる。すなわち、ゲーム装置３は、コントローラ７の傾きに応じて、最前面に表示するウィンドウを入れ替える。図３１は、図３０に示す状態からコントローラ７の傾きを変化させる操作を行ったことによって、キャラクタＢのウィンドウが最前面に表示された様子を示す図である。図３１においては、最前面に位置するウィンドウが、ウィンドウ８１ａからウィンドウ８１ｂに入れ替えられている。このように、第３の変形例では、コントローラ７の傾きに応じて、表示されるウィンドウを入れ替えることができる。第３の変形例のように、本発明における入替は、画面の奥行き方向に関する位置を入れ替えるものであってもよい。
【０１８３】
なお、最前面に表示するウィンドウを決定する方法は、コントローラ７の傾きに基づいて決定する方法であればどのような方法でもよい。例えば、上記実施形態のように、基準傾きベクトルと傾きベクトルとの角度差に基づいて決定する方法でもよいし、上記第１の変形例のように、（基準傾きベクトルを用いずに）傾きベクトルのみに基づいて決定する方法であってもよい。
【０１８４】
また、第３の変形例において、最前面に位置するウィンドウを管理する方法としては、例えば、深さ方向（画面の奥行き方向）に関するウィンドウの位置を示す深さデータをウィンドウに対応付けておき、このデータに基づいてウィンドウを表示する方法が考えられる。この方法においてウィンドウの入替を行う場合、各ウィンドウに対応付けられる深さデータの内容を変更すればよい。
【０１８５】
上記実施形態および第１〜第３の変形例において示したように、本発明は、コントローラ７の傾きを変化させる操作によって、画面に表示されるオブジェクトに対して種々の入替操作を行うことができる。
【０１８６】
なお、上記実施形態では、コントローラ７の傾きを示すデータ（傾きデータ）として、仮想のＸ’Ｙ’Ｚ’座標系におけるベクトルのデータを用いたが、傾きデータは、コントローラ７の傾きに対応して変化するデータであればどのようなものであってもよい。例えば、上記マーカ座標を結ぶベクトル（図１５に示すベクトルｖ）を傾きデータとして用い、傾きデータに基づいてオブジェクトの入替を行うようにしてもよい。
【０１８７】
また、上記実施形態では、ゲーム装置３は、コントローラ７から操作データとしてマーカ座標データを取得することとしたが、ゲーム装置３がコントローラ７から取得する操作データはこれに限らない。例えば、操作データは、（ａ）撮像画像のデータ、（ｂ）２つのマーカ座標の位置を結ぶ方向を示すデータ、または（ｃ）上記傾きデータであってもよい。なお、（ａ）撮像画像のデータをコントローラ７から取得する場合、ゲーム装置３は、撮像画像からマーカ座標を算出する処理を実行する必要がある。また、（ｂ）２つのマーカ座標の位置を結ぶ方向を示すデータがゲーム装置３によって取得される場合、コントローラ７は、当該ベクトルを算出する処理を実行する必要がある。この場合、ゲーム装置３側においては、当該処理を実行する必要はない。なお、「方向を示すデータ」は、図１５に示したベクトルｖのように、ベクトルとして表現されてもよいし、角度値（°）として表現されてもよい。また、（ｃ）傾きデータがゲーム装置３によって取得される場合、コントローラ７は、撮像画像から傾きデータを算出する処理（上記ステップＳ２２）を実行する必要がある。このとき、ゲーム装置３側においては、当該処理を実行する必要はない。
【０１８８】
また、上記実施形態では、ゲーム装置３は、コントローラ７から操作データとして取得されるマーカ座標データに基づいてコントローラ７の指示位置を算出することとしたが、コントローラ７の指示位置を算出する方法はこれに限らない。例えば、上記実施形態のようにゲーム装置３がコントローラ７の指示位置を算出する場合には、操作データは、（ａ）撮像画像のデータ、または、（ｄ）撮像画像における撮像対象の位置を示すデータであってもよい。なお、（ｂ）撮像画像における撮像対象の位置を示すデータは、例えば、上記実施形態において述べた、２つのマーカ座標の中点を示すデータであってもよい。２つのマーカ８ａおよび８ｂを１つの撮像対象として見れば、当該中点の位置が撮像対象の位置とすることができるからである。また、（ａ）撮像画像のデータをコントローラ７から取得する場合、ゲーム装置３は、撮像画像から撮像対象の位置（例えば、上記中点の位置）を算出する処理を実行する必要がある。
【産業上の利用可能性】
【０１８９】
以上のように、本発明は、ユーザが手に持って使用する入力装置を用いて従来にはない新たな操作を行うこと等を目的として、例えばゲーム装置およびゲームプログラムに利用することが可能である。
【図面の簡単な説明】
【０１９０】
【図１】本発明の一実施形態に係る座標算出装置一例であるゲーム装置を含むゲームシステムの外観図
【図２】ゲーム装置３の機能ブロック図
【図３Ａ】コントローラ７の斜視図
【図３Ｂ】コントローラ７の斜視図
【図４】コントローラ７を前方から見た図
【図５Ａ】コントローラ７の内部構造を示す図
【図５Ｂ】コントローラ７の内部構造を示す図
【図６】コントローラ７の構成を示すブロック図
【図７】撮像画像の一例を示す図
【図８】コントローラ７を用いてゲーム操作するときの状態を概説する図解図
【図９】移動状態におけるゲーム画像を示す図
【図１０】入替状態におけるゲーム画像を示す図
【図１１】入替状態から移動状態へ移行した直後におけるゲーム画像を示す図
【図１２】ゲーム装置３のメインメモリ１３に記憶される主なデータを示す図
【図１３】ゲーム装置３において実行される処理の流れを示すメインフローチャート
【図１４】図１３に示す移動処理（ステップＳ５）の詳細を示すフローチャート
【図１５】ある状態において得られた撮像画像におけるマーカ座標の位置を示す図
【図１６】図１５に示すベクトルｖを変換した場合のベクトルＶ’を示す図
【図１７】図１３に示す入替処理（ステップＳ６）の詳細を示すフローチャート
【図１８】ステップＳ２４の処理を説明するための図
【図１９】第１の変形例におけるゲーム画像の一例を示す図
【図２０】図１９に示す状態から、候補文字画像７３ａ〜７３ｅの位置が入れ替えられた後のゲーム画像を示す図
【図２１】第１の変形例において、ゲーム装置３のメインメモリ１３に記憶される主なデータを示す図
【図２２】第１の変形例においてゲーム装置３で実行される処理の流れを示すメインフローチャート
【図２３】第１の変形例においてゲーム装置３で実行される処理の流れを示すメインフローチャート
【図２４】第１の変形例の他の例におけるゲーム画像を示す図
【図２５】第１の変形例の他の例におけるゲーム画像を示す図
【図２６】第２の変形例におけるゲーム画像の一例を示す図
【図２７】第２の変形例におけるゲーム画像の一例を示す図
【図２８】第２の変形例において、ゲーム装置３のメインメモリ１３に記憶される主なデータを示す図
【図２９】第２の変形例においてゲーム装置３で実行される処理の流れを示すメインフローチャート
【図３０】第３の変形例におけるゲーム画像の一例を示す図
【図３１】図３０に示す状態からコントローラ７の傾きを変化させる操作が行われた後の様子を示す図
【符号の説明】
【０１９１】
１  ゲームシステム
２  モニタ
３  ゲーム装置
４  光ディスク
５  外部メモリカード
７  コントローラ
８ａ，８ｂ  マーカ
１０  ＣＰＵ
１３  メインメモリ
３２  操作部
３５  撮像情報演算部
３６  通信部
３７  加速度センサ
４０  撮像素子
５１  パネル
５２，７２，７７  カーソル
５３，７４  枠
７１ａ〜７１ｊ  候補文字群画像
７３ａ〜７３ｅ  候補文字画像
８１ａ〜８１ｄ  ウィンドウ
【図１】
2007260116.tif 000003
【図２】
2007260116.tif 000004
【図３Ａ】
2007260116.tif 000005
【図３Ｂ】
2007260116.tif 000006
【図４】
2007260116.tif 000007
【図５Ａ】
2007260116.tif 000008
【図５Ｂ】
2007260116.tif 000009
【図６】
2007260116.tif 000010
【図７】
2007260116.tif 000011
【図８】
2007260116.tif 000012
【図９】
2007260116.tif 000013
【図１０】
2007260116.tif 000014
【図１１】
2007260116.tif 000015
【図１２】
2007260116.tif 000016
【図１３】
2007260116.tif 000017
【図１４】
2007260116.tif 000018
【図１５】
2007260116.tif 000019
【図１６】
2007260116.tif 000020
【図１７】
2007260116.tif 000021
【図１８】
2007260116.tif 000022
【図１９】
2007260116.tif 000023
【図２０】
2007260116.tif 000024
【図２１】
2007260116.tif 000025
【図２２】
2007260116.tif 000026
【図２３】
2007260116.tif 000027
【図２４】
2007260116.tif 000028
【図２５】
2007260116.tif 000029
【図２６】
2007260116.tif 000030
【図２７】
2007260116.tif 000031
【図２８】
2007260116.tif 000032
【図２９】
2007260116.tif 000033
【図３０】
2007260116.tif 000034
【図３１】
2007260116.tif 000035