図面を参照して、本発明の一実施形態に係る情報処理プログラムを実行する情報処理装置について説明する。本発明の情報処理プログラムは、任意のコンピュータシステムで実行されることによって適用することができるが、情報処理装置の一例としてゲーム装置1を用い、ゲーム装置1で実行される情報処理プログラムを用いて説明する。なお、図1は、本発明の情報処理プログラムの一例であるゲームプログラムを実行するゲーム装置1の外観図である。ここでは、ゲーム装置1の一例として、携帯ゲーム装置を示す。なお、ゲーム装置1は、カメラを内蔵しており、当該カメラによって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりする撮像装置としても機能する。
図1において、ゲーム装置1は、折り畳み型の携帯ゲーム装置であり、開いた状態(開状態)のゲーム装置1を示している。ゲーム装置1は、開いた状態においてもプレイヤが両手または片手で把持することができるようなサイズで構成される。
ゲーム装置1は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に連結されている。図1の例では、下側ハウジング11および上側ハウジング21は、それぞれ横長の長方形の板状で形成され、互いの長辺部分で回動可能に連結されている。通常、プレイヤは、開状態でゲーム装置1を使用する。そして、プレイヤは、ゲーム装置1を使用しない場合には閉状態としてゲーム装置1を保管する。また、図1に示した例では、ゲーム装置1は、上記閉状態および開状態のみでなく、下側ハウジング11と上側ハウジング21とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング21を下側ハウジング11に対して任意の角度で静止させることができる。
下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12が設けられる。下側LCD12は横長形状であり、長辺方向が下側ハウジング11の長辺方向に一致するように配置される。なお、本実施形態では、ゲーム装置1に内蔵されている表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を利用してもよい。また、ゲーム装置1は、任意の解像度の表示装置を利用することができる。
下側ハウジング11には、入力装置として、各操作ボタン14A〜14Kおよびタッチパネル13が設けられる。図1に示されるように、各操作ボタン14A〜14Kのうち、方向入力ボタン14A、操作ボタン14B、操作ボタン14C、操作ボタン14D、操作ボタン14E、電源ボタン14F、スタートボタン14G、およびセレクトボタン14Hは、上側ハウジング21と下側ハウジング11とを折りたたんだときに内側となる、下側ハウジング11の内側主面上に設けられる。方向入力ボタン14Aは、例えば選択操作等に用いられる。各操作ボタン14B〜14Eは、例えば決定操作やキャンセル操作等に用いられる。電源ボタン14Fは、ゲーム装置1の電源をオン/オフするために用いられる。図1に示す例では、方向入力ボタン14Aおよび電源ボタン14Fは、下側ハウジング11の内側主面中央付近に設けられる下側LCD12に対して、左右一方側(図1では左側)の当該主面上に設けられる。また、操作ボタン14B〜14E、スタートボタン14G、およびセレクトボタン14Hは、下側LCD12に対して左右他方側(図1では右側)となる下側ハウジング11の内側主面上に設けられる。方向入力ボタン14A、操作ボタン14B〜14E、スタートボタン14G、およびセレクトボタン14Hは、ゲーム装置1に対する各種操作を行うために用いられる。
なお、図1においては、操作ボタン14I〜14Kの図示を省略している。例えば、Lボタン14Iは、下側ハウジング11の上側面の左端部に設けられ、Rボタン14Jは、下側ハウジング11の上側面の右端部に設けられる。Lボタン14IおよびRボタン14Jは、ゲーム装置1に対して、例えば撮影指示操作(シャッター操作)を行うために用いられる。さらに、音量ボタン14Kは、下側ハウジング11の左側面に設けられる。音量ボタン14Kは、ゲーム装置1が備えるスピーカの音量を調整するために用いられる。
また、ゲーム装置1は、各操作ボタン14A〜14Kとは別の入力装置として、さらにタッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上を覆うように装着されている。なお、本実施形態では、タッチパネル13は、例えば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル13は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、本実施形態では、タッチパネル13として、例えば下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度とが一致している必要はない。また、下側ハウジング11の右側面には、タッチペン27の挿入口(図1に示す破線)が設けられている。上記挿入口は、タッチパネル13に対する操作を行うために用いられるタッチペン27を収納することができる。なお、タッチパネル13に対する入力は、通常タッチペン27を用いて行われるが、タッチペン27に限らずプレイヤの指等でタッチパネル13を操作することも可能である。
また、下側ハウジング11の右側面には、メモリカード28を収納するための挿入口(図1では、二点鎖線で示している)が設けられている。この挿入口の内側には、ゲーム装置1とメモリカード28とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード28は、例えばSD(Secure Digital)メモリカードであり、上記コネクタに着脱自在に装着される。メモリカード28は、例えば、ゲーム装置1によって撮像された画像を記憶(保存)したり、他の装置で生成された画像をゲーム装置1に読み込んだりするため等に用いられる。
さらに、下側ハウジング11の上側面には、メモリカード29を収納するための挿入口(図1では、一点鎖線で示している)が設けられている。この挿入口の内側にも、ゲーム装置1とメモリカード29とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード29は、情報処理プログラムやゲームプログラム等を記憶した記憶媒体であり、下側ハウジング11に設けられた挿入口に着脱自在に装着される。
下側ハウジング11と上側ハウジング21との連結部の左側部分には、3つのLED15A〜15Cが取り付けられる。ここで、ゲーム装置1は、他の機器との間で無線通信を行うことが可能であり、第1LED15Aは、無線通信が確立している場合に点灯する。第2LED15Bは、ゲーム装置1の充電中に点灯する。第3LED15Cは、ゲーム装置1の電源がオンである場合に点灯する。したがって、3つのLED15A〜15Cによって、ゲーム装置1の通信確立状況、充電状況、および、電源のオン/オフ状況をプレイヤに通知することができる。
一方、上側ハウジング21には、上側LCD22が設けられる。上側LCD22は横長形状であり、長辺方向が上側ハウジング21の長辺方向に一致するように配置される。なお、下側LCD12と同様、上側LCD22に代えて、他の任意の方式および任意の解像度の表示装置を利用してもよい。また、上側LCD22上を覆うように、タッチパネルを設けてもかまわない。
また、上側ハウジング21には、2つのカメラ(内側カメラ23および外側カメラ25)が設けられる。図1に示されるように、内側カメラ23は、上側ハウジング21の連結部付近の内側主面に取り付けられる。一方、外側カメラ25は、内側カメラ23が取り付けられる内側主面の反対側の面、すなわち、上側ハウジング21の外側主面(ゲーム装置1が閉状態となった場合に外側となる面であり、図1に示す上側ハウジング21の背面)に取り付けられる。なお、図1においては、外側カメラ25を破線で示している。これによって、内側カメラ23は、上側ハウジング21の内側主面が向く方向を撮像することが可能であり、外側カメラ25は、内側カメラ23の撮像方向の逆方向、すなわち、上側ハウジング21の外側主面が向く方向を撮像することが可能である。このように、本実施形態では、2つの内側カメラ23および外側カメラ25の撮像方向が互いに逆方向となるように設けられる。例えば、プレイヤは、ゲーム装置1からプレイヤの方を見た景色を内側カメラ23で撮像することができるとともに、ゲーム装置1からプレイヤの反対側の方向を見た景色を外側カメラ25で撮像することができる。なお、下側LCD12および/または上側LCD22は、内側カメラ23または外側カメラ25で撮像されている画像をリアルタイムに表示するために用いられることもある。
なお、上記連結部付近の内側主面には、音声入力装置としてマイク(図2に示すマイク43)が収納されている。そして、上記連結部付近の内側主面には、マイク43がゲーム装置1外部の音を検知できるように、マイクロフォン用孔16が形成される。マイク43を収納する位置およびマイクロフォン用孔16の位置は必ずしも上記連結部である必要はなく、例えば下側ハウジング11にマイク43を収納し、マイク43の収納位置に対応させて下側ハウジング11にマイクロフォン用孔16を設けるようにしても良い。
また、上側ハウジング21の外側主面には、第4LED26(図1では、破線で示す)が取り付けられる。第4LED26は、内側カメラ23または外側カメラ25によって撮像が行われている間点灯する。また、内側カメラ23または外側カメラ25によって動画が撮像(撮像画像を動画として記憶)される間は点滅させても良い。なお、LEDが画面に映り込むことを防ぐために、シャッターが押された瞬間から、当該シャッターが押された瞬間の撮像画像の記憶が完了するまでの間は第4LED26を消灯させても良い。第4LED26によって、ゲーム装置1による撮像が行われていることを撮像対象者や周囲に通知することができる。
また、上側ハウジング21の内側主面中央付近に設けられる上側LCD22に対して、左右両側の当該主面に音抜き孔24がそれぞれ形成される。音抜き孔24の奥の上側ハウジング21内には、それぞれスピーカが収納されている。音抜き孔24は、スピーカからの音をゲーム装置1の外部に放出するための孔である。
以上に説明したように、上側ハウジング21には、画像を撮像するための構成である内側カメラ23および外側カメラ25と、各種画像を表示するための表示手段である上側LCD22とが設けられる。一方、下側ハウジング11には、ゲーム装置1に対する操作入力を行うための入力装置(タッチパネル13および各ボタン14A〜14K)と、各種画像を表示するための表示手段である下側LCD12とが設けられる。当該入力装置は、例えば、ゲーム装置1を使用する際には、下側LCD12や上側LCD22に撮像画像(カメラによって撮像された画像)を表示しながら、下側ハウジング11をプレイヤが把持して入力装置に対する入力を行うような用途に用いることができる。
次に、図2を参照して、ゲーム装置1の内部構成を説明する。なお、図2は、ゲーム装置1の内部構成の一例を示すブロック図である。
図2において、ゲーム装置1は、CPU31と、メインメモリ32と、メモリ制御回路33と、保存用データメモリ34と、プリセットデータ用メモリ35と、メモリカードインターフェース(メモリカードI/F)36および37と、無線通信モジュール38と、ローカル通信モジュール39と、リアルタイムクロック(RTC)40と、電源回路41と、インターフェース回路(I/F回路)42等との電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて、下側ハウジング11(または上側ハウジング21でもよい)内に収納される。
CPU31は、所定のプログラムを実行するための情報処理手段である。本実施形態では、所定のプログラムがゲーム装置1内のメモリ(例えば保存用データメモリ34)やメモリカード28および/または29に記憶されており、CPU31は、当該所定のプログラムを実行することによって、後述する情報処理を実行する。なお、CPU31によって実行されるプログラムは、ゲーム装置1内のメモリに予め記憶されていてもよいし、メモリカード28および/または29から取得されてもよいし、他の機器との通信によって他の機器から取得されてもよい。
CPU31には、メインメモリ32、メモリ制御回路33、およびプリセットデータ用メモリ35が接続される。また、メモリ制御回路33には、保存用データメモリ34が接続される。メインメモリ32は、CPU31のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ32は、上記情報処理に用いられる各種データを記憶したり、外部(メモリカード28および29や他の機器等)から取得されるプログラムを記憶したりする。本実施形態では、メインメモリ32として、例えばPSRAM(Pseudo−SRAM)を用いる。保存用データメモリ34は、CPU31によって実行されるプログラムや内側カメラ23および外側カメラ25によって撮像された画像のデータ等を記憶するための記憶手段である。保存用データメモリ34は、不揮発性の記憶媒体によって構成されており、例えば本実施例ではNAND型フラッシュメモリで構成される。メモリ制御回路33は、CPU31の指示に従って、保存用データメモリ34に対するデータの読み出しおよび書き込みを制御する回路である。プリセットデータ用メモリ35は、ゲーム装置1において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ35としては、SPI(Serial Peripheral Interface)バスによってCPU31と接続されるフラッシュメモリを用いることができる。
メモリカードI/F36および37は、それぞれCPU31に接続される。メモリカードI/F36は、コネクタに装着されたメモリカード28に対するデータの読み出しおよび書き込みを、CPU31の指示に応じて行う。また、メモリカードI/F37は、コネクタに装着されたメモリカード29に対するデータの読み出しおよび書き込みを、CPU31の指示に応じて行う。本実施形態では、メモリカード29に記憶された各種プログラムが、CPU31によって読み出されて実行される例を用いる。
なお、本発明の情報処理プログラム(ゲームプログラム)は、メモリカード29を通じてコンピュータシステムに供給されるだけでなく、メモリカード28等の外部記憶媒体を通じてコンピュータシステムに供給されてもよい。また、本発明の情報処理プログラムは、有線または無線の通信回線を通じてコンピュータシステムに供給されてもよい。さらに、本発明の情報処理プログラムは、コンピュータシステム内部の不揮発性記憶装置に予め記憶されていてもよい。なお、本発明の情報処理プログラムを記憶する情報記憶媒体としては、上記不揮発性記憶装置に限らず、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
無線通信モジュール38は、例えばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール39は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール38およびローカル通信モジュール39は、CPU31に接続される。CPU31は、無線通信モジュール38を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール39を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
また、CPU31には、RTC40および電源回路41が接続される。RTC40は、時間をカウントしてCPU31に出力する。例えば、CPU31は、RTC40によって計時された時間に基づいて、現在時刻(日付)等を計算することもできる。電源回路41は、ゲーム装置1が有する電源(典型的には電池であり、下側ハウジング11に収納される)から供給される電力を制御し、ゲーム装置1の各部品に電力を供給する。
また、ゲーム装置1は、マイク43およびアンプ44を備えている。マイク43およびアンプ44は、それぞれI/F回路42に接続される。マイク43は、ゲーム装置1に向かって発声されたプレイヤの音声を検知して、当該音声を示す音声信号をI/F回路42に出力する。アンプ44は、I/F回路42から音声信号を増幅してスピーカ(図示せず)から出力させる。I/F回路42は、CPU31に接続される。
また、タッチパネル13は、I/F回路42に接続される。I/F回路42は、マイク43およびアンプ44(スピーカ)の制御を行う音声制御回路と、タッチパネル13の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成してCPU31に出力する。例えば、タッチ位置データは、タッチパネル13の入力面に対して入力が行われた位置の座標を示すデータである。なお、タッチパネル制御回路は、タッチパネル13からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。CPU31は、I/F回路42を介して、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
操作ボタン14は、上記各操作ボタン14A〜14Kから構成され、CPU31に接続される。操作ボタン14からCPU31へは、各操作ボタン14A〜14Kに対する入力状況(押下されたか否か)を示す操作データが出力される。CPU31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に応じた処理を実行する。
内側カメラ23および外側カメラ25は、それぞれCPU31に接続される。内側カメラ23および外側カメラ25は、CPU31の指示に応じて画像を撮像し、撮像した画像データをCPU31に出力する。例えば、CPU31は、内側カメラ23および外側カメラ25のいずれか一方に対して撮像指示を行い、撮像指示を受けたカメラが画像を撮像して画像データをCPU31に送る。
また、下側LCD12および上側LCD22は、それぞれCPU31に接続される。下側LCD12および上側LCD22は、それぞれCPU31の指示に従って画像を表示する。一例として、CPU31は、上記ゲームプログラムを実行することによって生成された画像(例えば、ゲーム画像)を下側LCD12および/または上側LCD22に表示させる。他の例として、CPU31は、内側カメラ23および外側カメラ25のいずれかから取得した画像を、下側LCD12および上側LCD22の一方に表示させ、所定の処理によって生成した操作説明画面を下側LCD12および上側LCD22の他方に表示させる。
次に、ゲーム装置1で実行されるゲームプログラムによる具体的な処理動作を説明する前に、図3〜図13を参照して当該ゲーム処理動作によって下側LCD12に表示される表示形態例等について説明する。なお、図3〜図5は、タッチパネル13を介して「はじき操作」をすることによって単一の操作オブジェクトを移動対象として選択した場合に、下側LCD12に表示されるゲーム画像の一例を示す図である。図6〜図9は、タッチパネル13を介して「継続タッチ操作」をすることによって複数の操作オブジェクトを移動対象として選択した場合に、下側LCD12に表示されるゲーム画像の一例を示す図である。図10〜図13は、タッチパネル13を介して「ダブルタッチ操作」をすることによって複数の操作オブジェクトを移動対象として選択した場合に、下側LCD12に表示されるゲーム画像の一例を示す図である。
図3〜図13において、下側LCD12には、仮想ゲーム世界に配置された複数のプレイヤオブジェクトPOが表示されている。ここで、後述するゲーム処理においては、仮想ゲーム世界内においてプレイヤが操作可能なプレイヤオブジェクトが複数存在する場合があり、本実施形態においては、これら複数存在するプレイヤオブジェクトをプレイヤオブジェクトPOと総称している。具体的には、図3〜図13に示した下側LCD12には、4つのプレイヤオブジェクトPO1〜PO4が表示されており、ゲーム装置1を操作するプレイヤがタッチパネル13を介してタッチ操作することに応じて仮想ゲーム世界内を移動するオブジェクトとして機能している。なお、仮想ゲーム世界が下側LCD12に表示される表示範囲より大きく設定されている場合、プレイヤが操作可能なプレイヤオブジェクトPOが当該表示範囲外の仮想ゲーム世界内に配置されている場合もあり得る。
図3において、4つのプレイヤオブジェクトPO1〜PO4の1つのプレイヤオブジェクト(図3の例では、プレイヤオブジェクトPO2)に対して、プレイヤがタッチペン27を用いてタッチパネル13を「はじき操作」している。ここで、「はじき操作」とは、タッチパネル13を介して、プレイヤが移動させたいプレイヤオブジェクトPOをはじくようなタッチ操作をすることを示している。本実施形態においては、プレイヤが移動させたいプレイヤオブジェクトPO上の位置においてタッチパネル13に対してタッチ操作を開始(タッチオン)し、当該プレイヤオブジェクトPOを移動させたい方向に当該タッチオン位置からタッチパネル13上をスライドさせた後にタッチパネル13へのタッチ操作を終了(タッチオフ)する一連のはじくようなタッチ操作が、所定の時間内で行われた場合に「はじき操作」となる。図3の一例では、プレイヤがプレイヤオブジェクトPO2を移動させるために、プレイヤオブジェクトPO2上の位置でタッチパネル13にタッチオン(タッチ位置TP1)した後に、移動させたい右上方向(図示破線矢印方向)に当該タッチオン位置からタッチパネル13上を短時間でスライドさせた後にタッチオフ(タッチ位置TP2)する「はじき操作」を行っている。
図3に示すような「はじき操作」が行われた場合、下側LCD12に表示されている複数のプレイヤオブジェクトPO1〜PO4のうち、タッチオン位置(タッチ位置TP1)に配置されていたプレイヤオブジェクトPO2のみがタッチオフ位置に向かう方向(すなわち、タッチ位置TP1からタッチ位置TP2へ向かう方向)へ移動を開始する(図4参照)。なお、プレイヤオブジェクトPO2が移動を開始する際の仮想ゲーム世界における移動速度は、例えば「はじき操作」によってタッチ操作されたタッチ位置変化量の平均値によって決定されるが、詳細については後述する。
「はじき操作」に応じて仮想ゲーム世界を移動するプレイヤオブジェクトPO2は、以降の移動速度および移動方向が仮想ゲーム世界に設定された環境に応じて変化していく(図5参照)。すなわち、移動対象となったプレイヤオブジェクトに対する「はじき操作」による初速度および移動開始方向(射出方向)が「はじき操作」におけるタッチ入力によって決定されるが、以降の移動速度および移動方向については仮想ゲーム世界に設定された環境を考慮しながら決定される。例えば、仮想ゲーム世界に下方向の重力加速度が設定されている場合、当該重力加速度による物理法則に応じてプレイヤオブジェクトPO2の移動速度および移動方向が変化していく。また、仮想ゲーム世界に配置された他のオブジェクト(他のキャラクタ、壁、天井、地面等)とプレイヤオブジェクトPO2とが接触した場合は、接触した他のオブジェクトの特性に応じてプレイヤオブジェクトPO2の移動速度および移動方向が変化(例えば、移動を停止、はね返される)する。
図6において、4つのプレイヤオブジェクトPO1〜PO4の全てに対して、プレイヤがタッチペン27を用いてタッチパネル13を「継続タッチ操作」している。ここで、「継続タッチ操作」とは、タッチパネル13を介して、プレイヤが全てのプレイヤオブジェクトPOを集合させたい位置をタッチし続けるようなタッチ操作をすることを示している。本実施形態においては、プレイヤがプレイヤオブジェクトPOを移動させたい仮想ゲーム世界内の位置(プレイヤオブジェクトPO上を除く)においてタッチパネル13に対してタッチオンしてからタッチオフするまで、タッチし続けている時間が所定の時間以上行われるタッチ操作が「継続タッチ操作」となる。図6の一例では、プレイヤが全てのプレイヤオブジェクトPO1〜PO4を集合させるために、集合させたい仮想ゲーム世界内の位置でタッチパネル13にタッチオン(タッチ位置TP)し、当該タッチオン位置におけるタッチ操作を続ける「継続タッチ操作」を行っている。
図6に示すような「継続タッチ操作」が行われた場合、「継続タッチ操作」されている仮想ゲーム世界の位置(典型的には、「継続タッチ操作」においてタッチパネル13がタッチ操作されている位置と重なる仮想ゲーム世界の位置)に第1集合目標オブジェクトTO1が表示される。そして、仮想ゲーム世界に存在する全てのプレイヤオブジェクトPO(図6の例では、4つのプレイヤオブジェクトPO1〜PO4)は、第1集合目標オブジェクトTO1(すなわち、タッチ位置TP)に向かって移動を開始する(図7参照)。なお、プレイヤが「継続タッチ操作」中にタッチ位置を変えた場合、当該タッチ位置の移動に応じて第1集合目標オブジェクトTO1の表示位置も変更され、全てのプレイヤオブジェクトPOが移動目標とする位置も第1集合目標オブジェクトTO1の表示位置の変更に応じて変更される。また、プレイヤがタッチパネル13からタッチオフして「継続タッチ操作」を終了した場合、第1集合目標オブジェクトTO1も即時または一段階(ワンクッション)置いて消滅する。
本実施形態においては、全てのプレイヤオブジェクトPOが第1集合目標オブジェクトTO1に集合する際、まずプレイヤオブジェクトPOは、第1集合目標オブジェクトTO1に近づくように仮想ゲーム世界におけるX軸方向(画面左右方向)に移動する(図7参照)。その後、プレイヤオブジェクトPOは、第1集合目標オブジェクトTO1のX軸方向の位置に対して一定の範囲内に到達すると、第1集合目標オブジェクトTO1に近づくように仮想ゲーム世界におけるY軸方向(画面上下方向)に移動(ジャンプ)する(図8参照)。そして、プレイヤオブジェクトPOは、第1集合目標オブジェクトTO1に対して所定の範囲内に到達すると、第1集合目標オブジェクトTO1に引っ付いて仮想ゲーム世界における移動を停止する(図9参照)。このような移動を各プレイヤオブジェクトPOが行うことによって、結果的に第1集合目標オブジェクトTO1が配置されている位置(すなわち、「継続タッチ操作」されている位置)に全ての各プレイヤオブジェクトPOが集合することになる。そして、第1集合目標オブジェクトTO1が消滅(すなわち、タッチパネル13からタッチオフして「継続タッチ操作」を終了)した場合、プレイヤオブジェクトPOが第1集合目標オブジェクトTO1に向かって移動する動作も終了する。また、第1集合目標オブジェクトTO1が消滅した場合、第1集合目標オブジェクトTO1に引っ付いていたプレイヤオブジェクトPOは、仮想ゲーム世界に設定された環境に応じて動作(例えば、仮想ゲーム世界の下方向に自由落下)する。
図10において、4つのプレイヤオブジェクトPO1〜PO4の全てに対して、プレイヤがタッチペン27を用いてタッチパネル13を「ダブルタッチ操作」している。ここで、「ダブルタッチ操作」とは、タッチパネル13を介して、プレイヤが全てのプレイヤオブジェクトPOを集合させたい位置をタッチオンして短時間でタッチオフする操作(タップ操作)を、所定の時間以内に2度行うタッチ操作を示している。本実施形態においては、プレイヤがプレイヤオブジェクトPOを移動させたい仮想ゲーム世界内の位置(プレイヤオブジェクトPO上を除く)に対するタップ操作が、所定の時間以内に2度行われた場合に「ダブルタッチ操作」となる。図10の一例では、プレイヤが全てのプレイヤオブジェクトPO1〜PO4を集合させるために、集合させたい仮想ゲーム世界内の位置(タッチ位置TP)を2度タップ操作する「ダブルタッチ操作」を行っている。
図10に示すような「ダブルタッチ操作」が行われた場合、「ダブルタッチ操作」された仮想ゲーム世界の位置(典型的には、「ダブルタッチ操作」においてタップ操作された位置と重なる仮想ゲーム世界の位置)に第2集合目標オブジェクトTO2が表示される。そして、仮想ゲーム世界に存在する全てのプレイヤオブジェクトPO(図10の例では、4つのプレイヤオブジェクトPO1〜PO4)は、第2集合目標オブジェクトTO2(すなわち、タッチ位置TP)に向かって移動を開始する(図11参照)。なお、第2集合目標オブジェクトTO2は、第1集合目標オブジェクトTO1と表示態様を区別するために、例えば相対的に大きく仮想ゲーム世界に表示される。また、プレイヤが「ダブルタッチ操作」をした後、第2集合目標オブジェクトTO2は、仮想ゲーム世界に所定時間表示され続ける。そして、第2集合目標オブジェクトTO2は、当該所定時間経過後、仮想ゲーム世界から消滅する。
本実施形態においては、全てのプレイヤオブジェクトPOが第2集合目標オブジェクトTO2に集合する際、まずプレイヤオブジェクトPOは、第2集合目標オブジェクトTO2に近づくように仮想ゲーム世界におけるX軸方向(画面左右方向)に移動する(図11参照)。ここで、第2集合目標オブジェクトTO2に近づく場合のプレイヤオブジェクトPOの移動速度は、第1集合目標オブジェクトTO1に近づく場合の移動速度より高速となるように設定される。その後、プレイヤオブジェクトPOは、第2集合目標オブジェクトTO2のX軸方向の位置に対して一定の範囲内に到達すると、第2集合目標オブジェクトTO2に近づくように仮想ゲーム世界におけるY軸方向(画面上下方向)に移動(ジャンプ)する(図12参照)。そして、プレイヤオブジェクトPOは、第2集合目標オブジェクトTO2に対して所定の範囲内に到達すると、第2集合目標オブジェクトTO2に引っ付いて仮想ゲーム世界における移動を停止する(図13参照)。このような移動を各プレイヤオブジェクトPOが行うことによって、結果的に第2集合目標オブジェクトTO2が配置されている位置(すなわち、「ダブルタッチ操作」された位置)に全ての各プレイヤオブジェクトPOが集合することになる。そして、第2集合目標オブジェクトTO2が消滅(すなわち、「ダブルタッチ操作」終了して所定時間経過後)した場合、プレイヤオブジェクトPOが第2集合目標オブジェクトTO2に向かって移動する動作も終了する。また、第2集合目標オブジェクトTO2が消滅した場合、第2集合目標オブジェクトTO2に引っ付いていたプレイヤオブジェクトPOは、仮想ゲーム世界に設定された環境に応じて動作(例えば、仮想ゲーム世界の下方向に自由落下)する。
このように、上述したように「継続タッチ操作」の場合も「ダブルタッチ操作」の場合も、全てのプレイヤオブジェクトPOを集合させる操作となる。しかしながら、「ダブルタッチ操作」の場合は、プレイヤオブジェクトPOの移動速度が相対的に高速となる利点と、プレイヤがタッチパネル13に対してタッチ操作していない間もプレイヤオブジェクトPOを集合させることができる利点がある。このように、プレイヤオブジェクトPOを集合させる場合に異なる態様が選択可能であるため、プレイヤは、そのときの操作状態やゲーム状態に応じて所望のタッチ操作を選択することが可能となる。
なお、上述した説明では、「ダブルタッチ操作」の場合は、プレイヤオブジェクトPOの移動速度が「継続タッチ操作」による移動速度より高速となるように設定したが、プレイヤオブジェクトPOの移動速度が「継続タッチ操作」による移動速度より低速となるように設定してもかまわない。
次に、図14〜図22を参照して、ゲーム装置1で実行されるゲームプログラムによる具体的な処理動作について説明する。なお、図14は、ゲームプログラムを実行することに応じて、メインメモリ32に記憶される各種データの一例を示す図である。図15は、当該ゲームプログラムを実行することによってゲーム装置1がゲーム処理する動作の一例を示す第1部分のフローチャートである。図16は、当該ゲームプログラムを実行することによってゲーム装置1がゲーム処理する動作の一例を示す第2部分のフローチャートである。図17は、当該ゲームプログラムを実行することによってゲーム装置1がゲーム処理する動作の一例を示す第3部分のフローチャートである。図18は、当該ゲームプログラムを実行することによってゲーム装置1がゲーム処理する動作の一例を示す第4部分のフローチャートである。図19は、当該ゲームプログラムを実行することによってゲーム装置1がゲーム処理する動作の一例を示す第5部分のフローチャートである。図20は、図17のステップ98および図19のステップ114で行われるはじき処理の詳細な動作の一例を示すサブルーチンである。図21は、図15のステップ66等で行われる集合処理の詳細な動作の一例を示すサブルーチンである。図22は、図18のステップ105および図19のステップ112で行われるダブルタッチ処理の詳細な動作の一例を示すサブルーチンである。なお、これらの処理を実行するためのプログラムは、ゲーム装置1に内蔵されるメモリ(例えば、保存用データメモリ34)やメモリカード28またはメモリカード29に含まれており、ゲーム装置1の電源がオンになったときに、メモリカードI/F36やメモリカードI/F37を介してメモリカード28やメモリカード29から、または内蔵メモリからメインメモリ32に読み出されて、CPU31によって実行される。
図14において、メインメモリ32には、内蔵メモリ、メモリカード28、またはメモリカード29から読み出されたプログラムや画像処理において生成される一時的なデータが記憶される。図14において、メインメモリ32のデータ記憶領域には、操作データDa、タッチ開始座標AデータDb、現在座標BデータDc、累積値データDd、移動対象データDe、移動速度データDf、移動方向データDg、プレイヤオブジェクト位置データDh、経過時間値データDi、ダブルタッチタイマデータDj、タッチモードデータDk、タッチ継続フラグデータDl、はじき無効フラグデータDm、はじき中フラグデータDn、ダブルタッチタイマフラグデータDo、ダブルタッチ中フラグデータDp、および画像データDq等が格納される。また、メインメモリ32のプログラム記憶領域には、情報処理プログラムを構成する各種プログラム群Paが記憶される。
操作データDaは、プレイヤがゲーム装置1を操作しているデータが格納される。操作データDaは、タッチパネル13をプレイヤがタッチしている画面座標系のタッチ位置を示すタッチ座標のデータを含んでいる。例えば、タッチ座標は、ゲーム装置1がゲーム処理する時間単位(例えば、1/60秒)毎に取得され、当該取得に応じて操作データDaに格納されて更新される。なお、プレイヤがタッチパネル13をタッチしていない場合、操作データDaにはNull値(空値)が格納される。
タッチ開始座標AデータDbは、タッチパネル13をプレイヤがタッチ操作する際、当該タッチ操作を開始した画面座標系のタッチ位置を示すタッチ座標のデータが格納される。現在座標BデータDcは、タッチパネル13をプレイヤがタッチ操作している場合において、当該タッチ操作行っている現在の画面座標系のタッチ位置を示すタッチ座標のデータが格納される。累積値データDdは、タッチパネル13をプレイヤがタッチ操作しているタッチ位置の変化量を、当該タッチ操作の期間中において累積した累積値を示すデータが格納される。
移動対象データDeは、仮想ゲーム世界に配置されたプレイヤオブジェクトPOのうち、タッチ操作に応じて移動対象となったプレイヤオブジェクトPOを示すデータが格納される。移動速度データDfは、タッチ操作に対応して移動対象となったプレイヤオブジェクトPOにおける仮想ゲーム世界の移動速度を示すデータが格納される。移動方向データDgは、タッチ操作に対応して移動対象となったプレイヤオブジェクトPOにおける仮想ゲーム世界の移動方向を示すデータが格納される。なお、移動速度データDfおよび移動方向データDgは、プレイヤオブジェクトPOにおける仮想ゲーム世界の移動速度および移動方向を示す移動ベクトルの形式で格納してもかまわない。プレイヤオブジェクト位置データDhは、プレイヤオブジェクトPOそれぞれが仮想ゲーム世界に配置される位置を示すデータが格納される。
経過時間値データDiは、タッチパネル13をプレイヤがタッチ操作する際、当該タッチ操作を開始してからの経過時間を示すデータが格納される。ダブルタッチタイマデータDjは、プレイヤが上記「ダブルタッチ操作」を行う際、1回目のタップ操作におけるタッチオフからの経過時間(ダブルタッチタイマ値)を示すデータが格納される。
タッチモードデータDkは、プレイヤがタッチパネル13をタッチ操作しているタッチモード(「はじき」、「集合」等)を示すデータが格納される。タッチ継続フラグデータDlは、プレイヤがタッチパネル13をタッチ操作している間においてオンに設定されるタッチ継続フラグを示すデータであり、最初のタッチオンか否かを判定したり、タッチオフしたときにタッチオフ直後か否かを判定したりするために用いられるデータが格納される。はじき無効フラグデータDmは、上記「はじき操作」が所定時間以上継続して行われた場合にオンに設定されるはじき無効フラグを示すデータが格納される。はじき中フラグデータDnは、上記「はじき操作」が行われて当該「はじき操作」に応じた移動処理が行われている間においてオンに設定されるはじき中フラグを示すデータが格納される。ダブルタッチタイマフラグデータDoは、プレイヤが上記「ダブルタッチ操作」を行う際、1回目のタップ操作におけるタッチオフからの2回目のタップ操作におけるタッチオフまでの間においてオンに設定されるダブルタッチタイマフラグを示すデータが格納される。ダブルタッチ中フラグデータDpは、上記「ダブルタッチ操作」が行われて当該「ダブルタッチ操作」に応じた移動処理が行われている間においてオンに設定されるダブルタッチ中フラグを示すデータが格納される。
画像データDqは、プレイヤオブジェクトPO、第1集合目標オブジェクトTO1、および第2集合目標オブジェクトTO2等のゲーム画像をゲーム装置1に表示するための画像データが格納される。
次に、図15を参照して、ゲーム装置1の動作について説明する。まず、ゲーム装置1の電源(電源ボタン14F)がONされると、CPU31によってブートプログラム(図示せず)が実行され、これにより内蔵メモリまたはメモリカード28やメモリカード29に格納されているゲームプログラムがメインメモリ32にロードされる。そして、当該ロードされたゲームプログラムがCPU31で実行されることによって、図15に示すステップ(図15〜図22では「S」と略称する)が実行される。
図15において、CPU31は、ゲーム処理の初期設定を行って(ステップ51)、処理を次のステップに進める。例えば、CPU31が上記ステップ51で行う初期設定として、メインメモリ32に格納されている各パラメータを所定の数値や状態に初期化する。例えば、CPU31は、タッチ継続フラグデータDl、はじき無効フラグデータDm、はじき中フラグデータDn、ダブルタッチタイマフラグデータDo、およびダブルタッチ中フラグデータDpにそれぞれ格納されているフラグを全てオフ(OFF)に設定する。また、上記ステップ51で行う初期設定として、CPU31は、仮想ゲーム世界の初期設定(仮想ゲーム空間や仮想ゲーム領域の設定、背景の設定、表示領域の設定、プレイヤオブジェクトPOを含む各オブジェクトの配置等)を行い、設定された表示領域に対応する仮想ゲーム世界を下側LCD12に表示する。
次に、CPU31は、プレイヤがタッチパネル13を操作することによって出力される操作データを取得して操作データDaを更新し(ステップ52)、処理を次のステップに進める。例えば、CPU31は、タッチパネル13をタッチしている画面座標系のタッチ位置を示すタッチ座標を取得して、操作データDaに記憶されたタッチ座標を更新する。なお、プレイヤがタッチパネル13をタッチしていない場合、操作データDaに記憶されているタッチ座標には、Null値が格納される。
次に、CPU31は、上記ステップ52で取得した操作データが、タッチパネル13へタッチ操作されていることを示すデータか否かを判断する(ステップ53)。例えば、CPU31は、操作データDaにタッチ座標が格納されているか否かによって、上記ステップ53の判断を行う。具体的には、CPU31は、操作データDaにタッチ座標が格納されていればタッチ操作がされていると判断し、操作データDaにNull値が格納されていればタッチ操作がされていないと判断する。そして、CPU31は、タッチ操作されている場合、次のステップ54に処理を進める。一方、CPU31は、タッチ操作されていない場合、次のステップ90(図17)に処理を進める。
ステップ54において、CPU31は、はじき無効フラグデータDmを参照して、はじき無効フラグがオフ(OFF)に設定されているか否かを判断する。そして、CPU31は、はじき無効フラグがオフ(OFF)に設定されている場合、次のステップ55に処理を進める。一方、CPU31は、はじき無効フラグがオン(ON)に設定されている場合、上記ステップ52に戻って処理を繰り返す。すなわち、後述のはじき無効フラグがオン(ON)に設定されている限り、ステップ55以降の処理が無効となる。
ステップ55において、CPU31は、ダブルタッチ中フラグデータDpが示すダブルタッチ中フラグをOFFに設定して、次のステップに処理を進める。
次に、CPU31は、タッチ継続フラグデータDlを参照して、タッチ継続フラグがオン(ON)に設定されているか否かを判断する(ステップ56)。そして、CPU31は、タッチ継続フラグがオン(ON)に設定されている場合、次のステップ57に処理を進める。一方、CPU31は、タッチ継続フラグがオフ(OFF)に設定されている場合、次のステップ70(図16)に処理を進める。なお、後述により明らかとなるが、プレイヤがタッチパネル13に最初にタッチオンした場合は、タッチ継続フラグがオフ(OFF)に設定されており、プレイヤが最初にタッチオンした場合を先に説明するために、ステップ70以降(図16)の説明を先に行う。
図16において、CPU31は、ダブルタッチタイマフラグデータDoを参照して、ダブルタッチタイマフラグがオン(ON)に設定されているか否かを判断する(ステップ70)。そして、CPU31は、ダブルタッチタイマフラグがオン(ON)に設定されている場合、次のステップ71に処理を進める。一方、CPU31は、ダブルタッチタイマフラグがオフ(OFF)に設定されている場合、次のステップ73に処理を進める。なお、後述により明らかとなるが、プレイヤがタッチパネル13に最初にタッチオンした場合は、ダブルタッチタイマフラグがオフ(OFF)に設定されており、プレイヤが最初にタッチオンした場合を先に説明するために、ステップ73以降の説明を先に行う。
ステップ73において、CPU31は、上記ステップ52で取得した最新のタッチ座標をタッチ開始座標Aに設定して、次のステップに処理を進める。例えば、CPU31は、操作データDaを参照して、最新のタッチ座標に対応する仮想ゲーム世界内のタッチ開始座標A(典型的には、タッチ座標と重なる仮想ゲーム世界内の座標であり、タッチ座標を仮想ゲーム世界内に透視変換した座標)を設定し、設定されたタッチ開始座標Aを用いてタッチ開始座標AデータDbを更新する。
次に、CPU31は、プレイヤオブジェクト位置データDhを参照して、プレイヤがプレイヤオブジェクトPO上をタッチ操作(タッチオン)しているか否かを判断する(ステップ74)。例えば、CPU31は、上記ステップ73で設定されたタッチ開始座標Aが、仮想ゲーム世界内に配置されたプレイヤオブジェクトPO上である場合(例えば、図3に示すタッチ位置TP1)、プレイヤがプレイヤオブジェクトPO上にタッチオンしたと判断する。そして、CPU31は、プレイヤオブジェクトPO上でタッチオンしている場合、次のステップ75に処理を進める。一方、CPU31は、プレイヤオブジェクトPO以外の仮想ゲーム世界内をタッチオンしている場合(例えば、図6および図10に示すタッチ位置TP)、次のステップ79に処理を進める。
ステップ75において、CPU31は、タッチモードを「はじき」に設定し、設定されたタッチモードを用いてタッチモードデータDkを更新して、次のステップに処理を進める。このように、プレイヤが最初にタッチオンした位置がプレイヤオブジェクトPO上である場合、タッチモードが「はじき」に設定される。
次に、CPU31は、上記ステップ74においてタッチオンされていると判断されたプレイヤオブジェクトPOを移動対象に設定し(ステップ76)、次のステップに処理を進める。例えば、CPU31は、上記ステップ73で設定されたタッチ開始座標Aが、仮想ゲーム世界内に配置されたプレイヤオブジェクトPOの何れかの上である場合、当該プレイヤオブジェクトPOのみを移動対象に設定し、設定されたプレイヤオブジェクトPOを示すデータを用いて移動対象データDeを更新する。このように、プレイヤが何れかのプレイヤオブジェクトPO上でタッチオンした場合(例えば、図3に示すプレイヤオブジェクトPO2上のタッチ位置TP1)、当該プレイヤオブジェクトPOのみ(例えば、図3に示すプレイヤオブジェクトPO2のみ)が移動対象として設定される。
次に、CPU31は、タッチ継続フラグをオン(ON)に設定し(ステップ77)、次のステップに処理を進める。例えば、CPU31は、タッチ継続フラグをオン(ON)に設定し、設定されたタッチ継続フラグを用いてタッチ継続フラグデータDlを更新して、次のステップに処理を進める。このように、タッチ継続フラグは、プレイヤがタッチパネル13に最初にタッチオンした時点でオン(ON)に設定される。
次に、CPU31は、経過時間値を初期化して(ステップ78)、次のステップ63(図15)に処理を進める。例えば、CPU31は、経過時間値データDiが示す経過時間値を0に初期化して、初期化された値を用いて経過時間値データDiを更新する。
一方、上記ステップ74においてプレイヤオブジェクトPO以外の仮想ゲーム世界内をタッチオンしていると判断した場合、CPU31は、タッチモードを「集合」に設定し、設定されたタッチモードを用いてタッチモードデータDkを更新して(ステップ79)、次のステップに処理を進める。このように、プレイヤが最初にタッチオンした位置がプレイヤオブジェクトPO以外の仮想ゲーム世界内の位置である場合(例えば、図6および図10に示すタッチ位置TP)、タッチモードが「集合」に設定される。
次に、CPU31は、仮想ゲーム世界内に配置されている全てのプレイヤオブジェクトPOを移動対象に設定し(ステップ80)、次のステップに処理を進める。
第1の例として、CPU31は、仮想ゲーム世界内に存在している全てのプレイヤオブジェクトPOを移動対象に設定し、設定されたプレイヤオブジェクトPOを示すデータを用いて移動対象データDeを更新する。なお、上述したように、仮想ゲーム世界が下側LCD12に表示される表示範囲より大きく設定されている場合、プレイヤが操作可能なプレイヤオブジェクトPOが当該表示範囲外の仮想ゲーム世界内に配置されている場合もあり得るため、上記第1の例の場合、下側LCD12に表示されていないプレイヤオブジェクトPOが移動対象となることもある。
第2の例として、CPU31は、下側LCD12に表示されている全てのプレイヤオブジェクトPOを移動対象に設定し、設定されたプレイヤオブジェクトPOを示すデータを用いて移動対象データDeを更新する。なお、上述したように、仮想ゲーム世界が下側LCD12に表示される表示範囲より大きく設定されている場合、プレイヤが操作可能なプレイヤオブジェクトPOが当該表示範囲外の仮想ゲーム世界内に配置されている場合もあり得るが、上記第2の例の場合、下側LCD12に表示されていないプレイヤオブジェクトPOは移動対象とならない。
第3の例として、CPU31は、仮想ゲーム世界におけるタッチ開始座標Aを中心とした所定の範囲内に存在する全てのプレイヤオブジェクトPOを移動対象に設定し、設定されたプレイヤオブジェクトPOを示すデータを用いて移動対象データDeを更新する。なお、上述したように、仮想ゲーム世界が下側LCD12に表示される表示範囲より大きく設定されている場合、タッチ開始座標Aを中心とした所定の範囲の一部が表示範囲の外に設定されることもあり得る。この場合、表示範囲の外に設定された上記所定の範囲の一部にプレイヤが操作可能なプレイヤオブジェクトPOが配置されていることもあり得るため、上記第3の例の場合も上記第1の例と同様に、下側LCD12に表示されていないプレイヤオブジェクトPOが移動対象となることもある。
第4の例として、仮想ゲーム世界に配置された複数のプレイヤオブジェクトPOが複数の種類に分類される場合、当該複数の種類のうち、一部の種類に属するプレイヤオブジェクトPOのみを移動対象に設定する。例えば、上記第4の例では、上記第1の例〜第3の例の何れかで設定された移動対象のうち、一部の種類に属するプレイヤオブジェクトPOのみが移動対象に設定されることになる。なお、上記第4の例において、移動対象として選択するプレイヤオブジェクトPOの種類については、常に特定の種類が選択されてもいいし、CPU31が自動的に選択してもいいし、プレイヤが操作ボタン14(例えば、方向入力ボタン14Aや操作ボタン14B〜14E)を操作することによって選択可能にしてもかまわない。このように、プレイヤがプレイヤオブジェクトPO以外の仮想ゲーム世界内にタッチオンした場合、仮想ゲーム世界に複数のプレイヤオブジェクトPOが存在していれば、上述した第1〜第4の例のような所定の条件を満足する複数のプレイヤオブジェクトPOが移動対象として設定されることになる。
次に、CPU31は、タッチ継続フラグをオン(ON)に設定し(ステップ81)、次のステップに処理を進める。例えば、CPU31は、タッチ継続フラグをオン(ON)に設定し、設定されたタッチ継続フラグを用いてタッチ継続フラグデータDlを更新して、次のステップに処理を進める。このように、タッチ継続フラグは、プレイヤがタッチパネル13に最初にタッチオンした時点でオン(ON)に設定される。
次に、CPU31は、経過時間値を初期化して(ステップ82)、次のステップ63(図15)に処理を進める。例えば、CPU31は、経過時間値データDiが示す経過時間値を0に初期化して、初期化された値を用いて経過時間値データDiを更新する。
図15に戻り、上記ステップ56においてタッチ継続フラグがオン(ON)に設定されている場合、CPU31は、経過時間値をインクリメントして(ステップ57)、次のステップに処理を進める。例えば、CPU31は、経過時間値データDiが示す経過時間値に1を加算して、加算された値を用いて経過時間値データDiを更新する。なお、上述したように、プレイヤがタッチパネル13に最初にタッチオンした時点でタッチ継続フラグがオンに設定されるため(ステップ77、ステップ81)、上記ステップ57以降の処理は、プレイヤがタッチパネル13にタッチオンした後に継続して行われるタッチ操作中の処理となる。
次に、CPU31は、タッチモードデータDkを参照して、タッチモードが「はじき」であるか否かを判断する(ステップ58)。そして、CPU31は、タッチモードが「はじき」である場合、次のステップ59に処理を進める。一方、CPU31は、タッチモードが「はじき」でない(例えば、タッチモードが「集合」である)場合、次のステップ64に処理を進める。
ステップ59において、CPU31は、一連のタッチ操作におけるタッチ位置の変化量を累積し、次のステップに処理を進める。まず、CPU31は、前回の処理で得られたタッチ位置と最新のタッチ位置との差分を算出する。例えば、CPU31は、タッチ開始座標AデータDbに格納されているタッチ開始座標A(タッチ開始直後の場合)または現在座標BデータDcに格納されている現在座標Bを前回の処理で得られたタッチ位置とし、操作データDaに格納されているタッチ座標を最新のタッチ位置として、上記差分を算出する。そして、CPU31は、累積値データDdに格納されている累積値に上記差分によって得られた差分値を加算して累積値を算出し、当該加算後の累積値を用いて累積値データDdを更新する。
次に、CPU31は、上記ステップ52で得られたタッチ座標を用いて現在座標Bを更新し(ステップ60)、次のステップに処理を進める。例えば、CPU31は、操作データDaに格納されているタッチ座標を新たな現在座標Bとして設定し、新たに設定された現在座標Bを用いて現在座標BデータDcを更新する。
次に、CPU31は、経過時間値データDiが示す経過時間値が第1時間以上であるか否かを判断する(ステップ61)。そして、CPU31は、経過時間値が第1時間以上である場合、はじき無効フラグをオン(ON)に設定してはじき無効フラグデータDmを更新し(ステップ62)、次のステップ63に処理を進める。一方、CPU31は、経過時間値が第1時間未満である場合、そのまま次のステップ63に処理を進める。なお、上記ステップ61で判定する第1時間は、上述した「はじき操作」が行われていると認識する最長時間に設定される。例えば、タッチパネル13に対する通常のドラッグ操作は、プレイヤにとって上記「はじき操作」と操作感覚が全く異なるものとなる。このようなドラッグ操作と「はじき操作」とを区別するために、「はじき操作」として認識できる条件としてタッチオンからタッチオフまでの最長時間を設定している。つまり、タッチオンからタッチオフまでの時間が最長時間より長い場合、プレイヤが「はじき操作」以外の操作(例えば、ドラッグ操作)をしていると判断し、はじき無効フラグをオン(ON)に設定する。そして、後述の説明により明らかとなるが、はじき無効フラグをオン(ON)に設定された場合、「はじき操作」に対応したゲーム処理とはならない。
このように、上記ステップ75でタッチモードが「はじき」に設定された後のタッチ操作中において、上記ステップ59〜ステップ61の処理が繰り返される。これによって、「はじき操作」を行っている際のタッチ操作中におけるタッチ位置の変化量が、順次累積される処理が行われる。
一方、上記ステップ58において、タッチモードが「集合」であると判断された場合、CPU31は、上記ステップ52で得られたタッチ座標を用いて現在座標Bを更新し(ステップ64)、次のステップに処理を進める。例えば、CPU31は、操作データDaに格納されているタッチ座標を新たな現在座標Bとして設定し、新たに設定された現在座標Bを用いて現在座標BデータDcを更新する。
次に、CPU31は、経過時間値データDiが示す経過時間値が第2時間以上であるか否かを判断する(ステップ65)。そして、CPU31は、経過時間値が第2時間以上である場合、次のステップ66に処理を進める。一方、CPU31は、経過時間値が第2時間未満である場合、次のステップ63に処理を進める。なお、上記ステップ65で判定する第2時間は、上述した「継続タッチ操作」が行われていると認識する最短時間に設定される。つまり、プレイヤオブジェクトPO上以外の仮想ゲーム世界に対してタッチオンされた後のタッチ操作が上記最短時間以上継続して行われた場合、プレイヤが「継続タッチ操作」を行っていると判断する。
ステップ66において、CPU31は、集合処理を行って、次のステップ63に処理を進める。以下、図21を参照して、上記ステップ66で行う集合処理の一例について説明する。
図21において、CPU31は、仮想ゲーム世界における現在座標Bの位置に第1集合目標オブジェクトTO1を仮想ゲーム世界に配置して下側LCD12に表示し(ステップ131)、次のステップに処理を進める。例えば、CPU31は、仮想ゲーム世界において、現在座標BデータDcに格納されている現在座標Bの位置に第1集合目標オブジェクトTO1に対応する画像を配置してゲーム画像を生成し(図6〜図9参照)、当該ゲーム画像を下側LCD12に表示する。この下側LCD12に対する表示制御処理によって、プレイヤが「継続タッチ操作」をしているタッチ位置TPに応じた位置(典型的には、プレイヤのタッチ位置と重なる仮想ゲーム世界の位置)に、第1集合目標オブジェクトTO1が表示される。
次に、CPU31は、現在設定されている移動対象の1つを選択して(ステップ132)、次のステップに処理を進める。上述したように、上記ステップ80(図16)の処理では、タッチモード「集合」において移動対象となるプレイヤオブジェクトPOが設定されて、当該移動対象を示すデータが移動対象データDeに格納されている。例えば、CPU31は、上記ステップ132において、移動対象データDeが示す移動対象のうち、何れか1つのプレイヤオブジェクトPOを処理対象として選択する。
次に、CPU31は、上記ステップ132で選択された移動対象が、仮想ゲーム世界のX軸方向(左右方向)に対して、第1集合目標オブジェクトTO1のX軸座標を基準とした一定の範囲内に到達しているか否かを判断する(ステップ133)。例えば、CPU31は、第1集合目標オブジェクトTO1のX軸座標を現在座標BデータDcが示す現在座標BのX軸座標とし、上記ステップ132で選択された移動対象となっているプレイヤオブジェクトPOが配置されているX軸座標をプレイヤオブジェクト位置データDhから取得して、当該X軸座標を比較することによって上記ステップ133の判断を行う。そして、CPU31は、上記ステップ132で選択された移動対象が第1集合目標オブジェクトTO1のX軸座標を基準とした一定の範囲内に到達していない場合、次のステップ134に処理を進める。一方、CPU31は、上記ステップ132で選択された移動対象が第1集合目標オブジェクトTO1のX軸座標を基準とした一定の範囲内に到達している場合、次のステップ135に処理を進める。
ステップ134において、CPU31は、仮想ゲーム世界のX軸方向に対して第1集合目標オブジェクトTO1に近づく方向に、上記ステップ132で選択された移動対象を所定距離だけ近づけて仮想ゲーム世界内で移動させて下側LCD12に表示し、次のステップ137に処理を進める。例えば、CPU31は、プレイヤオブジェクト位置データDhを参照して、上記ステップ132で選択された移動対象となっているプレイヤオブジェクトPOが配置されているX軸座標に所定値を加算、または当該X軸座標から所定値を減算することによって、当該移動対象を第1集合目標オブジェクトTO1に近づけた新たなX軸座標を算出する。そして、算出された新たなX軸座標を用いて、上記ステップ132で選択された移動対象となっているプレイヤオブジェクトPOに対応するプレイヤオブジェクト位置データDhを更新すると共に、当該プレイヤオブジェクトPOを当該新たなX軸座標に応じた仮想ゲーム世界の位置に移動させて表示する。
一方、ステップ135において、CPU31は、上記ステップ132で選択された移動対象が、仮想ゲーム世界のY軸方向(上下方向)に対して、第1集合目標オブジェクトTO1のY軸座標を基準とした一定の範囲内に到達しているか否かを判断する。例えば、CPU31は、第1集合目標オブジェクトTO1のY軸座標を現在座標BデータDcが示す現在座標BのY軸座標とし、上記ステップ132で選択された移動対象となっているプレイヤオブジェクトPOが配置されているY軸座標をプレイヤオブジェクト位置データDhから取得して、当該Y軸座標を比較することによって上記ステップ135の判断を行う。そして、CPU31は、上記ステップ132で選択された移動対象が第1集合目標オブジェクトTO1のY軸座標を基準とした一定の範囲内に到達していない場合、次のステップ136に処理を進める。一方、CPU31は、上記ステップ132で選択された移動対象が第1集合目標オブジェクトTO1のY軸座標を基準とした一定の範囲内に到達している場合、次のステップ137に処理を進める。
ステップ136において、CPU31は、仮想ゲーム世界のY軸方向に対して第1集合目標オブジェクトTO1に近づく方向に、上記ステップ132で選択された移動対象を所定距離だけ近づけて仮想ゲーム世界内で移動させて下側LCD12に表示し、次のステップ137に処理を進める。例えば、CPU31は、プレイヤオブジェクト位置データDhを参照して、上記ステップ132で選択された移動対象となっているプレイヤオブジェクトPOが配置されているY軸座標に所定値を加算、または当該Y軸座標から所定値を減算することによって、当該移動対象を第1集合目標オブジェクトTO1に近づけた新たなY軸座標を算出する。そして、算出された新たなY軸座標を用いて、上記ステップ132で選択された移動対象となっているプレイヤオブジェクトPOに対応するプレイヤオブジェクト位置データDhを更新すると共に、当該プレイヤオブジェクトPOを当該新たなY軸座標に応じた仮想ゲーム世界の位置に移動させて表示する。
このように、上記ステップ132〜ステップ136の処理が繰り返された場合、移動対象となったプレイヤオブジェクトPOは、X軸方向へ移動した後にY軸方向へ移動することによって第1集合目標オブジェクトTO1に近づくように移動する(図7〜図9参照)。なお、プレイヤが「継続タッチ操作」を終了してタッチパネル13からタッチオフした場合、仮想ゲーム世界から第1集合目標オブジェクトTO1が消滅して、第1集合目標オブジェクトTO1に向かって移動する移動制御も終了する。その後のプレイヤオブジェクトPOの移動制御については、仮想ゲーム世界に設定された環境に応じて動作(例えば、第1集合目標オブジェクトTO1の位置まで到達していたプレイヤオブジェクトPOを仮想ゲーム世界の下方向に自由落下)させてもいいし、CPU31による自動制御によって移動させてもいいし、移動させずに停止させたままにしてもかまわない。なお、プレイヤが「継続タッチ操作」を終了してタッチパネル13からタッチオフした後の移動制御を示す処理については、詳細な説明を省略する。
ステップ137において、CPU31は、現在設定されている移動対象の全てに対して、上記ステップ132〜ステップ136の処理が終了したか否かを判断する。そして、CPU31は、上記ステップ132〜ステップ136の処理が行われていない移動対象が残っている場合、上記ステップ132に戻って処理を繰り返す。一方、CPU31は、現在設定されている移動対象の全てに対して、上記ステップ132〜ステップ136の処理が行われた場合、当該サブルーチンによる処理を終了する。
図15に戻り、プレイヤがタッチパネル13をタッチしていない場合における処理について説明する。プレイヤがタッチパネル13をタッチしていない場合、すなわち、上記ステップ53において否定判定された場合、CPU31は、次のステップ90(図17)に処理を進める。
図17において、CPU31は、タッチ継続フラグデータDlを参照して、タッチ継続フラグがオン(ON)に設定されているか否かを判断する(ステップ90)。そして、CPU31は、タッチ継続フラグがオン(ON)に設定されている場合、次のステップ91に処理を進める。一方、CPU31は、タッチ継続フラグがオフ(OFF)に設定されている場合、次のステップ111(図19)に処理を進める。
ステップ91において、CPU31は、タッチ継続フラグをオフ(OFF)に設定してタッチ継続フラグデータDlを更新し、当該ステップ91以降の処理を進める。ここで、タッチ継続フラグは、プレイヤがタッチパネル13にタッチオンした時点でオン(ON)に設定されて(ステップ77、ステップ81)タッチ操作が継続している間は常にオン(ON)状態に維持されている。そして、プレイヤがタッチパネル13をタッチしていない場合においてタッチ継続フラグがオン(ON)に設定されていれば(ステップ90でYes)、上記ステップ91でタッチ継続フラグがオフ(OFF)に設定されて当該ステップ91以降の処理が行われる。つまり、タッチ継続フラグは、プレイヤがタッチパネル13からタッチオフした時点でのみオン(ON)からオフ(OFF)に変更されるものであり、ステップ91以降の処理もプレイヤがタッチパネル13からタッチオフした時点でのみ行われる処理となる。以下、プレイヤがタッチパネル13からタッチオフした時点で行われる処理(ステップ91以降の処理)について説明する。
上記ステップ91の処理の後、CPU31は、はじき無効フラグデータDmを参照して、はじき無効フラグがオン(ON)に設定されているか否かを判断する(ステップ92)。そして、CPU31は、はじき無効フラグがオフ(OFF)に設定されている場合、次のステップ93に処理を進める。一方、CPU31は、はじき無効フラグがオン(ON)に設定されている場合、はじき無効フラグをオフ(OFF)に変更してはじき無効フラグデータDmを更新し(ステップ99)、次のステップ63(図15)に処理を進める。
ステップ93において、CPU31は、タッチモードデータDkを参照して、タッチモードが「はじき」に設定されているか否かを判断する。そして、CPU31は、タッチモードが「はじき」に設定されている場合、次のステップ94に処理を進める。一方、CPU31は、タッチモードが「集合」に設定されている場合、次のステップ101(図18)に処理を進める。
ステップ94において、CPU31は、タッチ開始座標Aと現在座標Bとの距離が予め定められた閾値以上であるか否かを判断する。そして、CPU31は、タッチ開始座標Aと現在座標Bとの距離が予め定められた閾値以上である場合、次のステップ95に処理を進める。一方、CPU31は、タッチ開始座標Aと現在座標Bとの距離が予め定められた閾値未満である場合、次のステップ63(図15)に処理を進める。なお、上記ステップ94で用いられる閾値は、プレイヤが上記「はじき操作」を行ったか否かを判定するための値であり、タッチオンからタッチオフまでの距離が当該閾値より短い場合に「はじき操作」ではないと判定される。つまり、プレイヤが「はじき操作」を行う場合、上記閾値以上の距離だけタッチ操作され、かつ、タッチオンからタッチオフまでの時間が上記ステップ61で用いられている第1時間未満とする必要がある。これらの判定値は、ゲーム装置1に対する操作性を考慮して決定すればよい。そして、CPU31は、タッチ開始座標AデータDbが示すタッチ開始座標Aと現在座標BデータDcが示す現在座標Bとを用いて上記距離を算出し、上記閾値との比較を行って上記ステップ94の判断を行う。
ステップ95において、CPU31は、はじき中フラグをオン(ON)に設定してはじき中フラグデータDnを更新し、次のステップに処理を進める。このように、はじき中フラグは、プレイヤが「はじき操作」を行ったと判定された時点でオン(ON)に設定される。
次に、CPU31は、累積値データDdが示す累積値を用いて、一連の「はじき操作」におけるタッチ位置の変化量の平均値を算出し、当該平均値に応じて移動速度を決定して(ステップ96)、次のステップに処理を進める。例えば、CPU31は、累積値データDdが示す累積値を経過時間値データDiが示す経過時間値(経過フレーム数)で除算することによって、「はじき操作」におけるタッチ位置の変化量の平均値を算出する。そして、一例として、算出された平均値が対応する移動速度を、所定のデータテーブルから抽出することによって上記移動速度を決定し、当該決定された移動速度を用いて移動速度データDfを更新する。
例えば、図23に示すように、上記ステップ96で用いられるデータテーブルは、変化量の平均値に対応する移動速度が記述されている。具体的には、変化量の平均値が1〜2ドットである場合、移動速度が9.10ドット/フレームに設定される。また、変化量の平均値が3〜5ドットである場合、移動速度が11.80ドット/フレームに設定される。さらに、変化量の平均値が6ドット以上である場合、移動速度が14.95ドット/フレームに設定される。
次に、CPU31は、タッチ開始座標Aから現在座標Bへ向かう方向を移動方向に設定して(ステップ97)、次のステップに処理を進める。例えば、CPU31は、タッチ開始座標AデータDbが示すタッチ開始座標Aと現在座標BデータDcが示す現在座標Bとを用いて上記移動方向を設定し、設定された移動方向を用いて移動方向データDgを更新する。なお、移動方向データDgに格納される移動方向データの形式は、仮想ゲーム世界において上記移動方向を指す長さ1の方向ベクトルでもいいし、上記移動速度を長さとして上記移動方向を指す移動ベクトルでもかまわない。
次に、CPU31は、はじき処理を行って(ステップ98)、次のステップ63(図15)に処理を進める。以下、図20を参照して、上記ステップ98で行うはじき処理について説明する。
図20において、CPU31は、上記「はじき操作」の移動対象に対する移動速度および移動方向を設定し、当該移動速度および移動方向に基づいて当該移動対象を仮想ゲーム世界内で移動させて下側LCD12に表示し(ステップ121)、次のステップに処理を進める。例えば、CPU31は、当該はじき処理がタッチオフ直後で行われている場合、移動速度データDfが示す移動速度および移動方向データDgが示す移動方向をそのまま用いて、上記「はじき操作」の移動対象を移動させる。また、当該はじき処理がタッチオフ時点から1フレーム後以降に行われている場合、移動速度データDfが示す移動速度および移動方向データDgが示す移動方向を、重力加速度による自由落下等の、仮想ゲーム世界に設定された環境に応じてそれぞれ変化させ、変化させた移動速度および移動方向を用いて移動速度データDfおよび移動方向データDgを更新すると共に、変化させた移動速度および移動方向を用いて上記「はじき操作」の移動対象を移動させる。そして、CPU31は、移動対象となっているプレイヤオブジェクトPOの移動後の位置を用いて、プレイヤオブジェクト位置データDhを更新する。
次に、CPU31は、仮想ゲーム世界において、移動対象となっているプレイヤオブジェクトPOが他のオブジェクト(他のキャラクタ、壁、天井、地面等)と衝突したか否かを判断する(ステップ122)。そして、CPU31は、移動対象となっているプレイヤオブジェクトPOが他のオブジェクトと衝突した場合、次のステップ123に処理を進める。一方、CPU31は、移動対象となっているプレイヤオブジェクトPOが他のオブジェクトの何れとも衝突していない場合、当該サブルーチンによる処理を終了する。
ステップ123において、CPU31は、移動対象となっているプレイヤオブジェクトPOが仮想ゲーム世界内を移動する移動速度を0に設定して、次のステップに処理を進める。例えば、CPU31は、移動速度データDfが示している移動速度を0に設定して移動速度データDfを更新する。このように、移動対象となっているプレイヤオブジェクトPOにおける「はじき操作」に応じた移動が終了する。なお、当該プレイヤオブジェクトPOは、当該ステップの実行後においては、移動対象となっているプレイヤオブジェクトPOの移動速度および移動方向について仮想ゲーム世界に設定された環境(重力加速度等)を考慮しながら決定されたり、衝突した他のオブジェクトの特性(反発させる、移動を停止させる等)に応じて決定されたり、当該プレイヤオブジェクトPOをCPU31の思考に基づいて自動的に決定されたり等するが、これらの移動制御については詳細な説明を省略する。
次に、CPU31は、タッチ位置の変化量の累積値を初期化して(ステップ124)、次のステップに処理を進める。例えば、CPU31は、累積値データDdに格納されている累積値を0に初期化して、累積値データDdを更新する。
次に、CPU31は、はじき中フラグをオフ(OFF)に設定してはじき中フラグデータDnを更新し(ステップ125)、当該サブルーチンによる処理を終了する。このように、はじき中フラグは、プレイヤが「はじき操作」を行った時点でオン(ON)に設定され、当該「はじき操作」における移動対象が当該「はじき操作」に基づいた移動を終了した時点でオフ(OFF)に設定される。
図17に戻り、上記ステップ93においてタッチモードが「集合」に設定されていると判断された場合、CPU31は、次のステップ101(図18)に処理を進める。
図18において、CPU31は、ダブルタッチタイマフラグデータDoを参照して、ダブルタッチタイマフラグがオン(ON)に設定されているか否かを判断する(ステップ101)。そして、CPU31は、ダブルタッチタイマフラグがオン(ON)に設定されている場合、次のステップ102に処理を進める。一方、CPU31は、ダブルタッチタイマフラグがオフ(OFF)に設定されている場合、次のステップ108に処理を進める。なお、後述により明らかとなるが、ダブルタッチタイマフラグは、初期状態ではオフ(OFF)に設定されているが、プレイヤが行ったタップ操作が第3時間以内のタッチ操作であった場合にオン(ON)に設定される。以下、ダブルタッチタイマフラグが初期状態(すなわち、オフ(OFF);上記ステップ101でNo)の場合の処理を、先に説明する。
ステップ108において、CPU31は、経過時間値データDiが示す経過時間値が第3時間以内か否かを判断する。そして、CPU31は、経過時間値が第3時間以内である場合、次のステップ109に処理を進める。一方、CPU31は、経過時間値が第3時間より長い場合、次のステップ63(図15)に処理を進める。
ステップ109において、CPU31は、ダブルタッチタイマのカウントを開始する。例えば、CPU31は、ダブルタッチタイマデータDjが示すダブルタッチタイマ値を0に初期化してダブルタッチタイマデータDjを更新した後、ダブルタッチタイマ値のカウントを開始する。
次に、CPU31は、ダブルタッチタイマフラグをオン(ON)に設定してダブルタッチタイマフラグデータDoを更新し(ステップ110)、次のステップ63(図15)に処理を進める。
なお、上記ステップ108で判定する第3時間は、上述した「ダブルタッチ操作」において1回目のタップ操作が行われたタッチ操作時間を判定するためのものであり、当該1回目のタップ操作が行われたと認識する最長時間に設定される。つまり、タッチパネル13を当該第3時間より長い時間継続してタッチ操作された場合、上記「ダブルタッチ操作」における1回目のタップ操作としては認められないことになる。そして、1回目のタップ操作として認められた場合、ダブルタッチタイマのカウントを開始すると共に、ダブルタッチタイマフラグがオン(ON)に設定される。
ここで、上述したように、上記ステップ65における判定に用いる第2時間以上継続してタッチ操作された場合、「継続タッチ操作」が行われていると認識される。したがって、上記ステップ108における判定に用いる第3時間は、上記ステップ65における判定に用いる第2時間と同じまたは短い時間に設定される。
次に、図15および図16を参照して、上記「ダブルタッチ操作」における2回目のタップ操作が行われた場合について説明する。
2回目のタップ操作においてプレイヤがタッチパネル13にタッチオンした場合、1回目のタップ操作におけるタッチオフ時点で上記ステップ91(図17)が行われるためにタッチ継続フラグがオフ(OFF)に設定されている。したがって、2回目のタップ操作におけるタッチオン時点では、上記ステップ56(図15)で否定(No)の判定となる。そして、上記ステップ70(図16)において、ダブルタッチタイマフラグがオン(ON)に設定されていると判定され、CPU31は、次のステップ71に処理を進める。
ステップ71において、CPU31は、上記ステップ52で得られたタッチ座標を用いて現在座標Bを更新し、次のステップ72に処理を進める。例えば、CPU31は、操作データDaに格納されているタッチ座標を新たな現在座標Bとして設定し、新たに設定された現在座標Bを用いて現在座標BデータDcを更新する。このように、上記ステップ71において、2回目のタップ操作におけるタッチ位置が現在座標Bとして取得される。
次に、CPU31は、タッチ継続フラグをオン(ON)に設定し(ステップ72)、次のステップ63(図15)に処理を進める。例えば、CPU31は、タッチ継続フラグをオン(ON)に設定し、設定されたタッチ継続フラグを用いてタッチ継続フラグデータDlを更新する。このように、タッチ継続フラグは、プレイヤがタッチパネル13に2回目のタップ操作でタッチオンした時点でもオン(ON)に設定される。
次に、上記「ダブルタッチ操作」における2回目のタップ操作のタッチオフにおける処理について説明する。2回目のタップ操作においてプレイヤがタッチパネル13からタッチオフした場合、1回目のタップの際にタッチモードが「集合」に設定された状態が維持されており(上記ステップ79(図16))、タッチ継続フラグがオン(ON)に設定されている(上記ステップ72(図16))ため、上記ステップ90(図17)で肯定判定されて上記ステップ93(図17)で否定判定されることによって、ステップ101(図18)の処理が行われる。以下、図18を参照して、ステップ101以降の処理について説明する。
図18において、CPU31は、ダブルタッチタイマフラグデータDoを参照して、ダブルタッチタイマフラグがオン(ON)に設定されているか否かを判断する(ステップ101)。ここで、上記ステップ110の処理について説明したように、上記「ダブルタッチ操作」における1回目のタップ操作のタッチオフに対応して、ダブルタッチタイマフラグがオン(ON)に設定されている。したがって、上記「ダブルタッチ操作」における2回目のタップ操作のタッチオフ時点では、ダブルタッチタイマフラグがオン(ON)に設定されているために、CPU31は、次のステップ102に処理を進める。
ステップ102において、CPU31は、ダブルタッチタイマデータDjが示すダブルタッチタイマ値を参照して、当該ダブルタッチタイマ値が第4時間以内か否かを判断する。そして、CPU31は、ダブルタッチタイマ値が第4時間以内である場合、次のステップ103に処理を進める。一方、CPU31は、ダブルタッチタイマ値が第4時間より長い場合、次のステップ106に処理を進める。ここで、上述したように、ダブルタッチタイマ値は、上記「ダブルタッチ操作」における1回目のタップ操作のタッチオフに対応してカウントが開始されており(上記ステップ109)、当該タッチオフから2回目のタップ操作のタッチオフまでの時間をカウントしている。そして、上記ステップ102の判断処理で用いられる第4時間は、上述した「ダブルタッチ操作」において1回目のタップ操作のタッチオフから2回目のタップ操作のタッチオフまでの時間を判定するためのものであり、当該「ダブルタッチ操作」が行われたと認識する最長時間に設定される。つまり、1回目のタップ操作のタッチオフから2回目のタップ操作のタッチオフまでの時間が当該第4時間より長い場合(例えば、1回目のタップ操作から長い時間経過した後に2回目のタップ操作を行った場合等)、上記「ダブルタッチ操作」としては認められないことになる。
ステップ103において、CPU31は、タッチ開始座標Aと現在座標Bとの間の距離を算出し、当該距離が閾値以内か否かを判断する。そして、CPU31は、タッチ開始座標Aと現在座標Bとの間の距離が閾値以内である場合、次のステップ104に処理を進める。一方、CPU31は、タッチ開始座標Aと現在座標Bとの間の距離が閾値より長い場合、次のステップ106に処理を進める。例えば、上記ステップ103において、CPU31は、タッチ開始座標AデータDbが示すタッチ開始座標Aと現在座標BデータDcが示す現在座標Bとを用いて、仮想ゲーム世界におけるタッチ開始座標Aと現在座標Bとの間の距離を算出する。そして、タッチ開始座標Aと現在座標Bとの間の距離が予め定められた閾値より長いか否かを判断する。ここで、上記「ダブルタッチ操作」は、プレイヤがプレイヤオブジェクトPOを集合させたい仮想ゲーム世界内の位置を2度タップ操作するものであり、仮想ゲーム世界に対して同じ位置(図10に示すタッチ位置TP)が2度タッチ操作されるものである。したがって、1回目にタップ操作された位置と2回目にタップ操作された位置との間に大きな差(距離)がある場合、「ダブルタッチ操作」ではなく、別の位置をそれぞれタップ操作されたと認識する。しかしながら、厳密にプレイヤがタッチパネル13に対して全く同じ位置を2度タップ操作することは希であり、ある程度の誤差を想定する必要もある。このような背景から、上記ステップ103では、ある程度の距離内(すなわち、上記閾値以内)で2回のタップ操作が行われたか否かを判断するために、1回目にタップ操作された位置(タッチ開始座標A)と2回目にタップ操作された位置(現在座標B)との距離を用いて判定を行っている。そして、上記ステップ103で用いる閾値は、上記誤差を許容する範囲を示す距離の上限値として設定される。
ステップ104において、CPU31は、ダブルタッチ中フラグをオン(ON)に設定してダブルタッチ中フラグデータDpを更新し、次のステップ105に処理を進める。このように、プレイヤが「ダブルタッチ操作」を行ったと認識された場合、ダブルタッチ中フラグがオン(ON)に設定される。
次に、CPU31は、ダブルタッチ処理を行い(ステップ105)、ステップ63(図15)に処理を進める。以下、図22を参照して、上記ステップ105で行うダブルタッチ処理の一例について説明する。
図22において、CPU31は、仮想ゲーム世界における現在座標Bの位置に第2集合目標オブジェクトTO2を仮想ゲーム世界に配置して下側LCD12に表示し(ステップ141)、次のステップに処理を進める。例えば、CPU31は、仮想ゲーム世界において、現在座標BデータDcに格納されている現在座標Bの位置に第2集合目標オブジェクトTO2に対応する画像を配置してゲーム画像を生成し(図10〜図13参照)、当該ゲーム画像を下側LCD12に表示する。この下側LCD12に対する表示制御処理によって、プレイヤが「ダブルタッチ操作」したタッチ位置TPに応じた位置(典型的には、プレイヤのタッチ位置と重なる仮想ゲーム世界の位置)に、第2集合目標オブジェクトTO2が表示される。
次に、CPU31は、ダブルタッチタイマデータDjが示すダブルタッチタイマ値を参照して、当該ダブルタッチタイマ値が所定時間に到達したか否かを判断する(ステップ142)。そして、CPU31は、ダブルタッチタイマ値が第5時間に到達していない場合、次のステップ143に処理を進める。一方、CPU31は、ダブルタッチタイマ値が第5時間に到達している場合、次のステップ149に処理を進める。ここで、上述したように、ダブルタッチタイマ値は、上記「ダブルタッチ操作」における1回目のタップ操作のタッチオフに対応してカウントが開始されており(上記ステップ109)、当該タッチオフから現在までの時間をカウントしている。そして、上記ステップ142の判断処理で用いられる第5時間は、上述した「ダブルタッチ操作」に応じて仮想ゲーム世界に第2集合目標オブジェクトTO2を登場させる制限時間、すなわち「ダブルタッチ操作」に応じてプレイヤオブジェクトPOを移動させる制限時間を設けるためのものであり、当該「ダブルタッチ操作」に応じた移動処理を有効に作用させる制限時間に設定される。つまり、上記「ダブルタッチ操作」における1回目のタップ操作のタッチオフから現在までの時間が、当該第5時間に到達した場合、当該「ダブルタッチ操作」に応じたプレイヤオブジェクトPOの移動処理が終了する。
ステップ143において、CPU31は、現在設定されている移動対象の1つを選択して、次のステップに処理を進める。上述したように、上記ステップ80(図16)の処理では、タッチモード「集合」において移動対象となるプレイヤオブジェクトPOが設定されて、当該移動対象を示すデータが移動対象データDeに格納されている。例えば、CPU31は、上記ステップ143において、移動対象データDeが示す移動対象のうち、何れか1つのプレイヤオブジェクトPOを処理対象として選択する。
次に、CPU31は、上記ステップ143で選択された移動対象が、仮想ゲーム世界のX軸方向(左右方向)に対して、第2集合目標オブジェクトTO2のX軸座標を基準とした一定の範囲内に到達しているか否かを判断する(ステップ144)。例えば、CPU31は、第2集合目標オブジェクトTO2のX軸座標を現在座標BデータDcが示す現在座標BのX軸座標とし、上記ステップ143で選択された移動対象となっているプレイヤオブジェクトPOが配置されているX軸座標をプレイヤオブジェクト位置データDhから取得して、当該X軸座標を比較することによって上記ステップ144の判断を行う。そして、CPU31は、上記ステップ143で選択された移動対象が第2集合目標オブジェクトTO2のX軸座標を基準とした一定の範囲内に到達していない場合、次のステップ145に処理を進める。一方、CPU31は、上記ステップ143で選択された移動対象が第2集合目標オブジェクトTO2のX軸座標を基準とした一定の範囲内に到達している場合、次のステップ146に処理を進める。
ステップ145において、CPU31は、仮想ゲーム世界のX軸方向に対して第2集合目標オブジェクトTO2に近づく方向に、上記ステップ143で選択された移動対象を所定距離だけ近づけて仮想ゲーム世界内で移動させて下側LCD12に表示し、次のステップ148に処理を進める。例えば、CPU31は、プレイヤオブジェクト位置データDhを参照して、上記ステップ143で選択された移動対象となっているプレイヤオブジェクトPOが配置されているX軸座標に所定値を加算、または当該X軸座標から所定値を減算することによって、当該移動対象を第2集合目標オブジェクトTO2に近づけた新たなX軸座標を算出する。そして、算出された新たなX軸座標を用いて、上記ステップ143で選択された移動対象となっているプレイヤオブジェクトPOに対応するプレイヤオブジェクト位置データDhを更新すると共に、当該プレイヤオブジェクトPOを当該新たなX軸座標に応じた仮想ゲーム世界の位置に移動させて表示する。
一方、ステップ146において、CPU31は、上記ステップ143で選択された移動対象が、仮想ゲーム世界のY軸方向(上下方向)に対して、第2集合目標オブジェクトTO2のY軸座標を基準とした一定の範囲内に到達しているか否かを判断する。例えば、CPU31は、第2集合目標オブジェクトTO2のY軸座標を現在座標BデータDcが示す現在座標BのY軸座標とし、上記ステップ143で選択された移動対象となっているプレイヤオブジェクトPOが配置されているY軸座標をプレイヤオブジェクト位置データDhから取得して、当該Y軸座標を比較することによって上記ステップ146の判断を行う。そして、CPU31は、上記ステップ143で選択された移動対象が第2集合目標オブジェクトTO2のY軸座標を基準とした一定の範囲内に到達していない場合、次のステップ147に処理を進める。一方、CPU31は、上記ステップ143で選択された移動対象が第2集合目標オブジェクトTO2のY軸座標を基準とした一定の範囲内に到達している場合、次のステップ148に処理を進める。
ステップ147において、CPU31は、仮想ゲーム世界のY軸方向に対して第2集合目標オブジェクトTO2に近づく方向に、上記ステップ143で選択された移動対象を所定距離だけ近づけて仮想ゲーム世界内で移動させて下側LCD12に表示し、次のステップ148に処理を進める。例えば、CPU31は、プレイヤオブジェクト位置データDhを参照して、上記ステップ143で選択された移動対象となっているプレイヤオブジェクトPOが配置されているY軸座標に所定値を加算、または当該Y軸座標から所定値を減算することによって、当該移動対象を第2集合目標オブジェクトTO2に近づけた新たなY軸座標を算出する。そして、算出された新たなY軸座標を用いて、上記ステップ143で選択された移動対象となっているプレイヤオブジェクトPOに対応するプレイヤオブジェクト位置データDhを更新すると共に、当該プレイヤオブジェクトPOを当該新たなY軸座標に応じた仮想ゲーム世界の位置に移動させて表示する。
このように、上記ステップ143〜ステップ147の処理が繰り返された場合、移動対象となったプレイヤオブジェクトPOは、X軸方向へ移動した後にY軸方向へ移動することによって第2集合目標オブジェクトTO2に近づくように移動する(図11〜図13参照)。なお、ダブルタッチタイマ値が第5時間に到達した場合、仮想ゲーム世界から第2集合目標オブジェクトTO2が消滅して、第2集合目標オブジェクトTO2に向かって移動する移動制御も終了する。その後のプレイヤオブジェクトPOの移動制御については、仮想ゲーム世界に設定された環境に応じて動作(例えば、第2集合目標オブジェクトTO2の位置まで到達していたプレイヤオブジェクトPOを仮想ゲーム世界の下方向に自由落下)させてもいいし、CPU31による自動制御によって移動させてもかまわない。なお、第2集合目標オブジェクトTO2が消滅した後の移動制御を示す処理については、詳細な説明を省略する。
ステップ148において、CPU31は、現在設定されている移動対象の全てに対して、上記ステップ143〜ステップ147の処理が終了したか否かを判断する。そして、CPU31は、上記ステップ143〜ステップ147の処理が行われていない移動対象が残っている場合、上記ステップ143に戻って処理を繰り返す。一方、CPU31は、現在設定されている移動対象の全てに対して、上記ステップ143〜ステップ147の処理が行われた場合、当該サブルーチンによる処理を終了する。
一方、上記ステップ142でダブルタッチタイマ値が第5時間に到達していると判断された場合、CPU31は、ダブルタッチ中フラグをオフ(OFF)に設定してダブルタッチ中フラグデータDpを更新する(ステップ149)。次に、CPU31は、ダブルタッチタイマのカウントを停止してダブルタッチタイマデータDjの更新も停止する(ステップ150)。そして、CPU31は、ダブルタッチタイマフラグをオフ(OFF)に設定してダブルタッチタイマフラグデータDoを更新し(ステップ151)、当該サブルーチンによる処理を終了する。このように、「ダブルタッチ操作」に応じたプレイヤオブジェクトPOの移動制御が終了した場合、ダブルタッチ中フラグがオフ(OFF)に設定される。
図18に戻り、ダブルタッチタイマ値が第4時間より長い場合(ステップ102でNo)、またはタッチ開始座標Aと現在座標Bとの間の距離が閾値より長い場合(ステップ103でNo)、CPU31は、次のステップ106に処理を進める。すなわち、プレイヤがタッチパネル13に対して2度のタップ操作を行ったが、当該タッチ操作が「ダブルタッチ操作」として認められない場合、ステップ106以降の処理によって、これまで行われてきた「ダブルタッチ操作」に応じた処理を解除する。すなわち、CPU31は、ダブルタッチタイマのカウントを停止してダブルタッチタイマデータDjの更新も停止する(ステップ106)。そして、CPU31は、ダブルタッチタイマフラグをオフ(OFF)に設定してダブルタッチタイマフラグデータDoを更新し(ステップ107)、次のステップ63(図15)に処理を進める。
次に、プレイヤがタッチパネル13からタッチオフした時点で行われる処理(ステップ91(図17)以降の処理)が行われた後、プレイヤがタッチパネル13をタッチしていない場合における処理について説明する。プレイヤがタッチパネル13をタッチしていない場合、上記ステップ53(図15)において、CPU31は、次のステップ90(図17)に処理を進める。そして、上述したように、タッチ継続フラグがタッチオフ時点でオフ(OFF)に設定されているため、上記ステップ90において、CPU31は、次のステップ111(図19)に処理を進める。
図19において、CPU31は、ダブルタッチ中フラグデータDpが示すダブルタッチ中フラグがオン(ON)に設定されているか否かを判断する(ステップ111)。そして、CPU31は、ダブルタッチ中フラグがオン(ON)に設定されている場合、次のステップ112に処理を進める。一方、CPU31は、ダブルタッチ中フラグがオフ(OFF)に設定されている場合、次のステップ113に処理を進める。
ステップ112において、CPU31は、ダブルタッチ処理を行い、次のステップ113に処理を進める。なお、上記ステップ112で行うダブルタッチ処理は、図22を用いて説明した上記ステップ105の処理と同様であるため、詳細な説明を省略する。
ステップ113において、CPU31は、はじき中フラグデータDnが示すはじき中フラグがオン(ON)に設定されているか否かを判断する。そして、CPU31は、はじき中フラグがオン(ON)に設定されている場合、次のステップ114に処理を進める。一方、CPU31は、はじき中フラグがオフ(OFF)に設定されている場合、次のステップ63(図15)に処理を進める。
ステップ114において、CPU31は、はじき処理を行い、次のステップ63(図15)に処理を進める。なお、上記ステップ114で行うはじき処理は、図20を用いて説明した上記ステップ98の処理と同様であるため、詳細な説明を省略する。
次に、一旦、上記「はじき操作」としては認識されたものの、その後のタッチ操作によって「はじき操作」としては無効となった場合の処理について説明する。例えば、上述したように、タッチオンからタッチオフまでの時間が「はじき操作」として認識できる条件を満たさない場合、すなわち予め定められた「はじき操作」の最長時間より長い場合、プレイヤが「はじき操作」以外の操作をしていると判断され、はじき無効フラグがオン(ON)に設定される(ステップ62(図15))。このような場合、プレイヤがタッチパネル13をタッチ操作していても、上記ステップ54(図15)において否定の判断がされて上記ステップ52〜ステップ54の処理が繰り返されるため、本実施形態ではプレイヤオブジェクトPOに対する移動処理が行われない。
一方、はじき無効フラグがオン(ON)に設定された状態でプレイヤがタッチパネル13からタッチオフした場合、CPU31は、上記ステップ53で否定の判断を行い、タッチ継続フラグがオン(ON)に設定されているために上記ステップ90(図17)で肯定の判断を行う。そして、CPU31は、はじき無効フラグがオン(ON)に設定されているために上記ステップ92において肯定の判断を行って、次のステップ99に処理を進める。
ステップ99において、CPU31は、はじき無効フラグをオフ(OFF)に設定してはじき無効フラグデータDmを更新し、次のステップ63(図15)に処理を進める。このように、一旦、上記「はじき操作」としては認識されたものの、その後のタッチ操作によって「はじき操作」としては無効となるようなタッチ操作をした場合、プレイヤオブジェクトPOに対する移動処理は行われることはない。そして、プレイヤがタッチパネル13からタッチオフすることによってはじき無効フラグが初期化(オフ)され、プレイヤオブジェクトPOに対する移動処理における初期状態に復帰する。
図15に戻り、ステップ63において、CPU31は、ゲーム処理を終了するか否かを判断する。ゲーム処理を終了する条件としては、例えば、少なくとも1つのプレイヤオブジェクトPOが仮想ゲーム世界における所定の位置(ゴール地点など)に到達することによって現在ゲーム処理されているゲームステージがクリアされたことや、敵オブジェクトに少なくとも1つのプレイヤオブジェクトが接触することによってゲームオーバーとされたこと等の他に、プレイヤがゲーム処理を終了する操作を行ったこと等がある。CPU31は、ゲーム処理を終了しない場合、次のステップ67に処理を進める。一方、CPU31は、ゲーム処理を終了する場合、当該フローチャートによる処理を終了する。
ステップ67において、CPU31は、ダブルタッチタイマフラグデータDoを参照して、ダブルタッチタイマフラグがオン(ON)に設定されているか否かを判断する。そして、CPU31は、ダブルタッチタイマフラグがオン(ON)に設定されている場合、次のステップ68に処理を進める。一方、CPU31は、ダブルタッチタイマフラグがオフ(OFF)に設定されている場合、上記ステップ52に戻って処理を繰り返す。
ステップ68において、CPU31は、ダブルタッチタイマ値をインクリメントして、上記ステップ52に戻って処理を繰り返す。例えば、CPU31は、ダブルタッチタイマデータDjが示すダブルタッチタイマ値に1を加算して、加算された値を用いてダブルタッチタイマデータDjを更新する。なお、上述したように、上記「ダブルタッチ操作」における1回目のタップ操作のタッチオフに対応して、ダブルタッチタイマフラグがオン(ON)に設定され、上記ダブルタッチ処理が終了するまで、または上記「ダブルタッチ操作」が無効であると判定されるまでの間はダブルタッチタイマフラグがオン(ON)状態に維持されている。したがって、上記ステップ68の処理は、上記「ダブルタッチ操作」における1回目のタップ操作のタッチオフした後に継続して行われる「ダブルタッチ操作」中または当該「ダブルタッチ操作」に応じて行われるダブルタッチ処理中に行われる処理となる。すなわち、ダブルタッチタイマ値は、ダブルダッチタイマフラグがONの間、その値が単位時間毎にカウントされて更新されていく。
このように、本実施形態に係るゲーム装置1は、プレイヤがタッチパネル13にタッチオンした入力座標が何れかのプレイヤオブジェクトPOを指示している場合、当該プレイヤオブジェクトPOのみを操作対象としている。一方、ゲーム装置1は、プレイヤがタッチパネル13にタッチオンした入力座標が何れのプレイヤオブジェクトPOも指示していない場合、複数のプレイヤオブジェクトPOを操作対象としている。したがって、ゲーム装置1は、簡単なタッチ入力によって操作対象とするプレイヤオブジェクトPOを選択することができる。
なお、上述した説明では、「はじき操作」によって移動対象に設定されたプレイヤオブジェクトPOが、当該「はじき操作」におけるタッチオフ後に当該「はじき操作」に対応した移動を開始する態様を用いたが、他のタイミングで移動対象のプレイヤオブジェクトPOが移動を開始してもかまわない。例えば、「はじき操作」に対応する移動対象に設定された時点で、当該移動対象がプレイヤのタッチ位置に応じた仮想ゲーム世界の位置に逐次移動させてもかまわない。この場合、移動対象となったプレイヤオブジェクトPOは、「はじき操作」におけるタッチ位置に対応する仮想ゲーム世界の位置へ移動することになる。なお、移動対象となったプレイヤオブジェクトPOは、当該「はじき操作」におけるタッチオフ後も当該「はじき操作」によって設定された移動速度および移動方向(上記ステップ96、ステップ97)に基づいて移動するようにしてもよいし、当該タッチオフ後は移動を行わずに「はじき操作」におけるタッチ操作中のみ移動を行うようにしてもよい。
また、上述した説明では、プレイヤオブジェクトPO上にタッチオンしてからタッチオフまでの時間が第1時間未満であることを、「はじき操作」として認識する時間的条件とし、当該時間的条件を満たさない場合に「はじき操作」に応じた移動処理を行わない例を用いたが、タッチオンしてからタッチオフまでの時間に関わらずに移動処理を行ってもかまわない。すなわち、プレイヤオブジェクトPO上にタッチオンしてからタッチオフまでの時間が所定時間以上となったとしても、「はじき操作」が行われたと認識され、当該「はじき操作」に応じて移動対象のプレイヤオブジェクトPOを移動させてもかまわない。また、プレイヤオブジェクトPO上にタッチオンしてからタッチオフするまでの距離(すなわち、タッチ開始座標Aと現在座標Bとの距離)が閾値以上であることを、「はじき操作」として認識する距離的条件とし、当該距離的条件を満たさない場合に「はじき操作」に応じた移動処理を行わない例を用いたが、タッチオンからタッチオフまでの距離に関わらずに移動処理を行ってもかまわない。さらに、上記距離的条件は、他の値を「はじき操作」として認識するための距離的条件としてもかまわない。例えば、「はじき操作」中におけるタッチ位置変化量の累積値が閾値以上であることを、「はじき操作」として認識する距離的条件としてもかまわない。
また、上述した説明では、「はじき操作」中におけるタッチ位置変化量の平均値に応じて、当該「はじき操作」に対応する移動対象の移動速度を設定しているが、他の値に応じて移動速度を設定してもかまわない。例えば、プレイヤオブジェクトPO上にタッチオンしてからタッチオフするまでの距離(すなわち、タッチ開始座標Aと現在座標Bとの距離)に応じて、当該「はじき操作」に対応する移動対象の移動速度を設定してもかまわない。また、上述した説明では、図23に示すようなデータテーブルを用いて、「はじき操作」に対応する移動対象の移動速度を設定する例を用いたが、予め定められた計算式にタッチ位置変化量の平均値および/またはタッチ開始座標Aと現在座標Bとの距離を代入することによって、「はじき操作」に対応する移動速度を算出してもかまわない。
また、上述した説明では、「はじき操作」に応じて仮想ゲーム世界を移動する移動対象の移動速度および移動方向が、当該「はじき操作」に応じた移動を開始した後に仮想ゲーム世界に設定された環境に応じて変化していく例を用いたが、移動開始時点で設定された移動速度および移動方向のまま当該移動対象を移動させてもかまわない。この場合、「はじき操作」に応じて仮想ゲーム世界を移動する移動対象は、仮想ゲーム世界に配置された他のオブジェクト(他のキャラクタ、壁、天井、地面等)と接触したり衝突したりするまで、移動開始時点で設定された移動速度および移動方向を用いて移動することになる。また、「はじき操作」によって設定された移動対象を、当該「はじき操作」におけるタッチオフ位置に応じた仮想ゲーム世界の位置まで、移動開始時点で設定された移動速度および移動方向に応じて移動させてもかまわない。
また、上述した説明では、上記「継続タッチ操作」として認識されるために、タッチ操作を継続して行う時間が所定時間以上必要となるが、本発明はこのような処理に限定されない。例えば、プレイヤオブジェクトPO上以外となる仮想ゲーム世界に対応する位置にタッチオンした時点で上記「継続タッチ操作」が行われたと認識し、当該タッチオンされた仮想ゲーム世界の位置に向かって移動対象の移動を開始してもかまわない。
また、上記「継続タッチ操作」や「ダブルタッチ操作」は、プレイヤがタッチパネル13にタッチオンした入力座標が何れのプレイヤオブジェクトPOも指示していないことを条件として認識される。したがって、タッチオンした入力座標が、仮想ゲーム世界に配置された他のオブジェクト(他のキャラクタ(敵オブジェクト、石や木等の背景オブジェクト等)、壁、天井、地面等)を示す場合であっても、上記「継続タッチ操作」や「ダブルタッチ操作」として認識される条件を満たすことになる。しかしながら、タッチオンした入力座標が、仮想ゲーム世界に配置された他のオブジェクトを示す場合、上記「継続タッチ操作」や「ダブルタッチ操作」としては無効(すなわち、上記「継続タッチ操作」や「ダブルタッチ操作」として認識される条件を満たさない)としてもかまわない。また、タッチオンした入力座標が、下側LCD12に表示された仮想ゲーム世界以外の領域を示す場合であっても、上記「継続タッチ操作」や「ダブルタッチ操作」としては有効(すなわち、上記「継続タッチ操作」や「ダブルタッチ操作」として認識される条件を満たす)にしてもかまわない。この場合、タッチオンした入力座標が示す位置が仮想ゲーム世界以外の領域であっても、下側LCD12に仮想ゲーム世界の一部が表示されている場合等では当該入力座標が示す位置に相当する仮想ゲーム世界における位置(典型的には、下側LCD12には表示されていない仮想ゲーム世界内の位置)が算出可能である。したがって、算出された仮想ゲーム世界の位置を集合処理の目標とすれば、プレイヤオブジェクトPOに対する同様の移動制御が可能となる。
また、上述した説明では、上記「継続タッチ操作」中にタッチ位置が移動した場合、当該タッチ位置の移動に応じて第1集合目標オブジェクトTO1の表示位置も移動するために、移動対象の移動目標も変化する。しかしながら、一例として、第1集合目標オブジェクトTO1の表示位置は、「継続タッチ操作」に応じて最初に出現した仮想ゲーム世界の位置に固定してもかまわない。この場合、「継続タッチ操作」中にタッチ位置が移動した場合であっても、「継続タッチ操作」が有効と判定された時点におけるタッチ位置や当該「継続タッチ操作」においてタッチオンした位置に応じた仮想ゲーム世界内の位置に、移動対象の移動目標が固定されることになる。また、他の例として、最初に出現した第1集合目標オブジェクトTO1の表示位置を基準として予め設定された範囲から外れる位置まで、上記「継続タッチ操作」中にタッチ位置が移動した場合、当該「継続タッチ操作」を無効としてもかまわない。
また、上述した説明では、上記ステップ105およびステップ112で行われるダブルタッチ処理は、ダブルタッチタイマ値が所定時間に到達するまで継続して行われるが、当該継続中に他のタッチ操作が行われた場合に当該ダブルタッチ処理も終了する。しかしながら、ダブルタッチ処理継続中において、他のタッチ操作が行われた場合であっても当該タッチ操作を無効として当該ダブルタッチ処理を優先させて継続してもかまわない。
また、上述した説明では、1回目のタップ操作におけるタッチオフから2回目のタップ操作におけるタッチオフまでの時間(ダブルタッチタイマ値)が第4時間以内であることを、上記「ダブルタッチ操作」として認識する時間的条件としているが、他の時間を「ダブルタッチ操作」の時間的認識条件としてもかまわない。第1の例として、1回目のタップ操作におけるタッチオンから2回目のタップ操作におけるタッチオフまでの時間が第4時間以内であることを、上記「ダブルタッチ操作」として認識する時間的条件とする。第2の例として、1回目のタップ操作におけるタッチオンから2回目のタップ操作におけるタッチオンまでの時間が第4時間以内であることを、上記「ダブルタッチ操作」として認識する時間的条件とする。第3の例として、1回目のタップ操作におけるタッチオフから2回目のタップ操作におけるタッチオンまでの時間が第4時間以内であることを、上記「ダブルタッチ操作」として認識する時間的条件とする。
また、上述した説明では、上記「ダブルタッチ操作」において2回目のタップ操作のタッチオフ位置が示す仮想ゲーム世界の位置が移動対象の移動目標となるが、他の位置を移動目標としてもかまわない。例えば、「ダブルタッチ操作」において、1回目のタップ操作のタッチオン位置、1回目のタップ操作のタッチオフ位置、および2回目のタップ操作のタッチオン位置の何れか1つが示す仮想ゲーム世界の位置を、移動対象の移動目標としてもかまわない。また、1回目のタップ操作のタッチオン位置または1回目のタップ操作のタッチオフ位置と、2回目のタップ操作のタッチオン位置または2回目のタップ操作のタッチオフ位置とを平均した位置(中間点)が示す仮想ゲーム世界の位置を、移動対象の移動目標としてもかまわない。また、上記「ダブルタッチ操作」は、プレイヤが全てのプレイヤオブジェクトPOを集合させたい位置に、タップ操作を所定の時間以内に2度行うことによって成立する操作であるが、成立条件は2度のタップ操作に限られない。例えば、プレイヤが全てのプレイヤオブジェクトPOを集合させたい位置に、タップ操作を所定の時間以内に3度以上行うことによって「ダブルタッチ操作」が成立するような条件(いわゆる「トリプルタッチ操作」以上)としてもかまわない。
また、上述した説明では、プレイヤのタッチ操作に応じて選択されたプレイヤオブジェクトPOが移動する例を用いたが、当該タッチ操作に応じて選択されたプレイヤオブジェクトPOが他の動作を行ってもかまわない。第1の例として、プレイヤがタッチパネル13にタッチオンした入力座標が何れかのプレイヤオブジェクトPOを指示する場合、その後のスライド操作におけるタッチ位置の方向または所定の方向へ、指示されたプレイヤオブジェクトPOが別のオブジェクトを移動させる。一方、プレイヤがタッチパネル13にタッチオンした入力座標が何れのプレイヤオブジェクトPOも指示しない場合、タッチ位置への方向へ、全てのプレイヤオブジェクトPOがそれぞれ別のオブジェクトを移動させる。例えば、指示されたプレイヤオブジェクトPOが弾や光線等の射出オブジェクトを上記方向へ射出するゲームや、ボール等のオブジェクトを上記方向へ投げる、蹴る、打つ、飛ばす等の球技を行う等、様々なゲームに適用可能である。第2の例として、プレイヤがタッチパネル13にタッチオンした入力座標が何れかのプレイヤオブジェクトPOを指示する場合、指示されたプレイヤオブジェクトPOが向く方向(例えば、正面方向)が、その後のスライド操作におけるタッチ位置の方向または所定の方向に変化する。一方、プレイヤがタッチパネル13にタッチオンした入力座標が何れのプレイヤオブジェクトPOも指示しない場合、全てのプレイヤオブジェクトPOが向く方向が、タッチ位置への方向または所定の方向に変化する。第3の例として、プレイヤがタッチパネル13にタッチオンした入力座標が何れかのプレイヤオブジェクトPOを指示する場合、指示されたプレイヤオブジェクトPOの表示態様(例えば、色(色相、明度、彩度)、大きさ、模様、強調/非強調、表示/非表示等)が変化する。一方、プレイヤがタッチパネル13にタッチオンした入力座標が何れのプレイヤオブジェクトPOも指示しない場合、全てのプレイヤオブジェクトPOの表示態様が変化する。
また、上述した実施形態では、「継続タッチ操作」および「ダブルタッチ操作」に応じて、移動対象の移動目標となる位置にオブジェクト(第1集合目標オブジェクトTO1、第2集合目標オブジェクトTO2)を表示している。これによって、プレイヤは、タッチ操作に応じて現時点で設定されている移動目標の位置を正確に把握することができる。しかしながら、このような効果を期待しない場合、移動対象の移動目標となる位置にオブジェクトを表示しなくてもかまわない。
また、上述した実施形態では、2画面分の液晶表示部の一例として、物理的に分離された下側LCD12および上側LCD22を互いに上下に配置した場合(上下2画面の場合)を説明した。しかしながら、2画面分の表示画面の構成は、他の構成でもかまわない。例えば、下側ハウジング11の一方主面に下側LCD12および上側LCD22を左右に配置してもかまわない。また、下側LCD12と横幅が同じで縦の長さが2倍のサイズからなる縦長サイズのLCD(すなわち、物理的には1つで、表示サイズが縦に2画面分あるLCD)を下側ハウジング11の一方主面に配設して、2つの画像(例えば、撮像画像と操作説明画面を示す画像等)を上下に表示(すなわち上下の境界部分無しに隣接して表示)するように構成してもよい。また、下側LCD12と縦幅が同じで横の長さが2倍のサイズからなる横長サイズのLCDを下側ハウジング11の一方主面に配設して、横方向に2つの画像を左右に表示(すなわち左右の境界部分無しに隣接して表示)するように構成してもよい。すなわち、物理的に1つの画面を2つに分割して使用することにより2つの画像を表示してもかまわない。いずれの画像の形態に対しても、上述した下側LCD12に表示していたまた、物理的に1つの画面を2つに分割して使用することにより上記2つの画像を表示する場合、当該画面全面にタッチパネル13を配設してもかまわない。
また、上述した実施例では、ゲーム装置1にタッチパネル13が一体的に設けられているが、ゲーム装置とタッチパネルとを別体にして構成しても、本発明を実現できることは言うまでもない。また、上側LCD22の上面にタッチパネル13を設けて上側LCD22に上述した下側LCD12に表示していた表示画像を表示しても良い。さらに、上記実施例では表示画面を2つ(下側LCD12、上側LCD22)を設けたが、表示画面は1つであってもかまわない。すなわち、上記実施例において、上側LCD22を設けず単に下側LCD12のみを表示画面としてタッチパネル13を設けるように構成してもよい。また、上記実施例において、下側LCD12を設けずに上側LCD22の上面にタッチパネル13を設けて、上述した下側LCD12に表示していた表示画像を上側LCD22に表示しても良い。
また、上記実施例では、座標入力を実現するゲーム装置1の入力手段としてタッチパネル13を用いたが、他のポインティングデバイスを用いてもかまわない。ここで、ポインティングデバイスは、画面上での入力位置や座標を指定する入力装置であり、例えば、マウス、トラックパッド、トラックボール、ペンタブレット、ジョイスティック等を入力手段として使用し、入力手段から出力される出力値から計算された画面座標系の位置情報を用いれば、本発明を同様に実現することができる。なお、マウス等のポインティングデバイスの場合、タッチ状態と非タッチ状態とをクリックボタンのオンオフに対応させ、マウス等から出力される出力値から座標を計算する処理を情報処理装置等で行えばよい。
また、ゲームコントローラをプレイヤが把持してゲームを楽しむ据置型のゲーム装置の場合、他の態様のポインティングデバイスも考えられる。例えば、ゲームコントローラのハウジングに固設されたカメラを、上記ポインティングデバイスとして利用することも可能である。この場合、ゲームコントローラのハウジングで指し示した位置の変化に応じてカメラが撮像する撮像画像が変化する。したがって、この撮像画像を解析することにより、表示画面に対して上記ハウジングで指し示した座標を算出することができる。
この場合、上記ハウジングで指し示した位置を示す座標を、上述した処理におけるタッチ座標として取り扱えば本発明を実現することが可能である。ただし、タッチパネル入力におけるタッチオンまたはタッチオフ等の入力有無判定については、上記座標入力とは異なった上記ゲームコントローラからの他の入力の有無や変化によって代用する。第1の例として、上記ゲームコントローラに設けられた操作ボタンの押下(例えば、Aボタンを押下しているときタッチオン)しているか否かによって、上記タッチオンまたはタッチオフの判定を代用する。第2の例では、上記ゲームコントローラが2つのハウジングで構成されている。そして、これら2つのハウジングは、上記カメラが搭載されている一方ハウジングと、他方のハウジングの動きに応じた信号を出力する加速度センサ等の検出部が固設された当該他方のハウジングとで構成される。この場合、他方のハウジングの動き(例えば、ハウジングを所定方向に傾けているときにタッチオン)に応じて、上記タッチオンまたはタッチオフの判定を代用する。第3の例では、上記ゲームコントローラのハウジングにマイク等の音声入力手段が設けられている。この場合、プレイヤが所定の音声を発したときにタッチオンおよびタッチオフが切り替わる判定で代用する。
また、上記実施例では、携帯型のゲーム装置1や据置型のゲーム装置を用いて説明したが、一般的なパーソナルコンピュータ等の情報処理装置で本発明の情報処理プログラムを実行して、本発明を実現してもかまわない。
また、上述したゲーム装置1の形状や、それに設けられている各種操作ボタン14やタッチパネル13の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述したゲーム処理で用いられる処理順序、設定値、判定に用いられる値等は、単なる一例に過ぎず他の順序や値であっても、本発明を実現できることは言うまでもない。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。