(57)【要約】      （修正有）【課題】入力座標の直線とオブジェクトとの距離に応じてオブジェクトの移動速度を変化させることができるので、オブジェクトの移動を多様に制御する。【解決手段】移動制御装置はオブジェクト１０４の移動を操作するためのポインティングデバイスを含む。前回の入力座標ｆ０と今回の入力座標ｆ１とを結ぶ直線とオブジェクト１０４の中心点Ｂ０との距離ｃＤが算出される。当該距離ｃＤに基づいてオブジェクト１０４の速度が算出されて、オブジェクト１０４の移動が制御される。【選択図】図７
2008295483.tif 000002
【特許請求の範囲】
【請求項１】
少なくともプレイヤによって操作される操作オブジェクトを画面に表示する表示手段と当該表示手段の画面上の位置を指示するためのポインティングデバイスとを備える移動制御装置のコンピュータにおいて実行される移動制御プログラムであって、
前記ポインティングデバイスによって指示される前記画面上の位置を示す入力座標を所定時間毎に検出する入力座標検出ステップ、
前記入力座標検出ステップによって検出された前回の入力座標と今回の入力座標とを結ぶ直線と、前記操作オブジェクトとの距離を算出する距離算出ステップ、
前記距離算出ステップによって算出された距離に基づいて前記操作オブジェクトの移動速度を算出する移動速度算出ステップ、および
前記移動速度算出ステップによって算出された移動速度に基づいて前記操作オブジェクトを移動させる移動処理ステップを前記コンピュータに実行させる、移動制御プログラム。
【請求項２】
前記移動速度算出ステップは、前記距離が小さいほど前記移動速度を大きくする、請求項１記載の移動制御プログラム。
【請求項３】
前記直線上の点のうち、前記操作オブジェクトの基準点に最も近い点を算出する最近点算出ステップをさらに前記コンピュータに実行させ、
前記距離算出ステップは、前記最近点算出ステップによって算出された最近点と、前記操作オブジェクトの基準点との距離を算出する、請求項１記載の移動制御プログラム。
【請求項４】
前記操作オブジェクトは円形のオブジェクトであり、
前記前回の入力座標から前記今回の入力座標への入力方向と前記円形のオブジェクトの半径とに基づいて設定される領域と、前記前回の入力座標と前記今回の入力座標とを結ぶ入力線分とが交わるか否かを判別する当たり判別ステップを前記コンピュータにさらに実行させ、
前記移動速度算出ステップは、前記当たり判別ステップによって前記領域と前記入力線分とが交わることが判別されたとき、前記距離に基づいて前記円形のオブジェクトの移動速度を算出する、請求項３記載の移動制御プログラム。
【請求項５】
前記移動速度算出ステップは、前記入力座標検出ステップによって検出された前回の入力座標と今回の入力座標の差分を算出する差分算出ステップを含んでいて、さらに前記差分に基づいて前記操作オブジェクトの移動速度を算出する、請求項１記載の移動制御プログラム。
【請求項６】
少なくともプレイヤによって操作される操作オブジェクトを画面に表示する表示手段と当該表示手段の画面上の位置を指示するためのポインティングデバイスとを備え、前記ポインティングデバイスによる入力によって前記操作オブジェクトの移動を制御する移動制御装置であって、
前記ポインティングデバイスによって指示される前記画面上の位置を示す入力座標を所定時間毎に検出する入力座標検出手段、
前記入力座標検出手段によって検出された前回の入力座標と今回の入力座標とを結ぶ直線と、前記操作オブジェクトとの距離を算出する距離算出手段、
前記距離算出手段によって算出された距離に基づいて前記操作オブジェクトの移動速度を算出する移動速度算出手段、および
前記移動速度算出手段によって算出された移動速度に基づいて前記操作オブジェクトを移動させる移動処理手段を備える、移動制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は移動制御プログラムおよび移動制御装置に関し、特にたとえばポインティングデバイスからの入力に基づいて画面に表示されたオブジェクトの移動を制御するための移動制御プログラムおよび移動制御装置に関する。
【背景技術】
【０００２】
従来、タッチパネル等のポインティングデバイスからの入力に基づいて画面に表示されているオブジェクトの移動を制御するものが知られている。
【０００３】
例えば、特許文献１に記載された技術では、タッチパネルから最初に検出した位置座標が操作オブジェクトの表示領域に含まれるか否かが判断され、最初に検出した位置座標が表示領域に含まれる場合には、その入力に応じて操作オブジェクトが移動される。具体的には、タッチパネルへの連続入力時間が計測され、連続入力時間が短いほど初速度が速くなるようにオブジェクトの移動速度が算出される。また、タッチパネルへの入力開始時点の位置座標のデータ（始点）と、入力終了時点の位置座標のデータ（終点）が検出され、始点と終点の差が算出されて、差が大きいほど初速度が速くなるように（またはその逆にすることも可）オブジェクトの移動速度が算出される。
【０００４】
また、特許文献２に記載された技術では、タッチパネル上の任意の位置でストローク操作（タッチパネル上をなでるような操作）を行うことによって、操作オブジェクトが移動される。具体的には、ストローク操作の長さに基づいてオブジェクトの移動速度が算出される。たとえば、タッチ座標の差分が所定の閾値を超えるか否かが判別され、オブジェクトが停止しているときに、差分が所定の閾値を超える場合には、新速度が一定速度Ａに決定され、差分が所定の閾値以下である場合には、新速度は０に決定される。また、オブジェクトが移動中に、差分が所定の閾値以下である場合には、新速度は一定速度Ａから一定の減速度Ｂよりも大きい減速度（Ｂ＋α）を減算することによって算出され、差分が所定の閾値を越える場合には、新速度が一定速度Ａに決定される。
【特許文献１】特開２００５−１９３００６号公報
【特許文献２】特開２００６−１４９６６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記特許文献１および２の技術は、２つの入力座標を結ぶ直線と操作対象となるオブジェクトとの距離に基づいてオブジェクトの移動速度を決定するものではなかった。
【０００６】
また、特許文献１の技術では、オブジェクトをタッチして移動制御のための操作をする必要がある。画面上に多くのオブジェクトを表示する場合、個々のオブジェクトの大きさが小さくなるので、各オブジェクトをポインティングデバイスで指示し難くなり、操作性が良くないという問題がある。
【０００７】
一方、特許文献２の技術では、オブジェクトにタッチすることなく、タッチパネル上の任意の位置でストローク操作をすることによって、オブジェクトを移動させることができる。オブジェクトが１つの場合にはこのような移動制御を適用可能であるが、複数の操作オブジェクトが存在する場合には適用することができない。
【０００８】
それゆえに、この発明の主たる目的は、新規な移動制御プログラムおよび移動制御装置を提供することである。
【０００９】
この発明の他の目的は、オブジェクトの移動を多様に制御することのできる移動制御プログラムおよび移動制御装置を提供することである。
【００１０】
この発明の他の目的は、オブジェクトの移動制御のための操作性が良い移動制御プログラムおよび移動制御装置を提供することである。
【課題を解決するための手段】
【００１１】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【００１２】
第１の発明は、少なくともプレイヤによって操作される操作オブジェクトを画面に表示する表示手段と当該表示手段の画面上の位置を指示するためのポインティングデバイスとを備える移動制御装置のコンピュータにおいて実行される移動制御プログラムである。この移動制御プログラムは、入力座標検出ステップ、距離算出ステップ、移動速度算出ステップ、および移動処理ステップをコンピュータに実行させる。入力座標検出ステップは、ポインティングデバイスによって指示される画面上の位置を示す入力座標を所定時間毎に検出する。距離算出ステップは、入力座標検出ステップによって検出された前回の入力座標と今回の入力座標とを結ぶ直線と、操作オブジェクトとの距離を算出する。移動速度算出ステップは、距離算出ステップによって算出された距離に基づいて操作オブジェクトの移動速度を算出する。移動処理ステップは、移動速度算出ステップによって算出された移動速度に基づいて操作オブジェクトを移動させる。
【００１３】
第１の発明では、移動制御装置（１０）は、表示手段（１２、１４）およびポインティングデバイス（２４）含む。移動制御プログラムは、移動制御装置のコンピュータ（３４）に以下に説明するステップを実行させ、画面に表示された操作オブジェクト（１０４）の移動をポインティングデバイスの入力によって制御する。入力座標検出ステップ（Ｓ９、Ｓ４３、Ｓ４５）では、画面上の指示位置を示す入力座標が所定時間ごとに検出される。距離算出ステップ（Ｓ５３、Ｓ５５）では、前回検出された入力座標（ｆ０）と今回検出された入力座標（ｆ１）とを結ぶ直線と、操作オブジェクトとの距離（ｃＤ）が算出される。たとえば、操作オブジェクトの基準点（中心点Ｂ０）から垂下した線と入力座標の直線と交点（ｃ）が算出され、当該交点と基準点との距離が算出されてよい。移動速度算出ステップ（Ｓ６５）では、算出された距離に基づいて操作オブジェクトの移動速度（ｖ１）が算出される。たとえば、現在の移動速度ベクトル（ｖ０）と、距離に応じた入力ベクトルとを合成することによって、移動速度ベクトルを算出するようにしてよい。移動処理ステップ（Ｓ１９）では、算出された移動速度に基づいて操作オブジェクトが移動される。
【００１４】
第１の発明によれば、入力座標の直線と操作オブジェクトとの距離に基づいて、移動速度を算出するようにしたので、当該距離に応じて操作オブジェクトの移動速度を変化させることができ、したがって、操作オブジェクトの移動を多様に制御することができる。
【００１５】
第２の発明は、第１の発明に従属する移動制御プログラムであって、移動速度算出ステップは、距離が小さいほど移動速度を大きくする。
【００１６】
第２の発明によれば、入力座標の直線と操作オブジェクトとの距離が小さいほど操作オブジェクトの移動速度を大きくすることができるので、操作オブジェクトの移動制御にリアリティを与えることができる。
【００１７】
第３の発明は、第１の発明に従属する移動制御プログラムであって、最近点算出ステップをさらにコンピュータに実行させる。最近点算出ステップは、直線上の点のうち、操作オブジェクトの基準点に最も近い点を算出する。距離算出ステップは、最近点算出ステップによって算出された最近点と、操作オブジェクトの基準点との距離を算出する。
【００１８】
第３の発明では、最近点算出ステップ（Ｓ５３）では、入力座標の直線上の点のうち、操作オブジェクトの基準点に最も近い点（ｃ）が算出される。操作オブジェクトの基準点はたとえば中心点や重心点等であり、ゲーム空間において当該基準点の位置に操作オブジェクトは配置される。距離算出ステップでは、最近点と基準点との距離が算出される。
【００１９】
第３の発明によれば、入力座標の直線と操作オブジェクトの基準点との最短距離に基づいて、移動速度を算出することができるので、ポインティングデバイスによって指示される位置が操作オブジェクトをどの程度正確に捉えているかに応じて、操作オブジェクトの移動速度を変化させることができる。
【００２０】
第４の発明は、第３の発明に従属する移動制御プログラムであって、操作オブジェクトは円形のオブジェクトであり、当たり判別ステップをコンピュータにさらに実行させる。当たり判別ステップは、前回の入力座標から今回の入力座標への入力方向と円形のオブジェクトの半径とに基づいて設定される領域と、前回の入力座標と今回の入力座標とを結ぶ入力線分とが交わるか否かを判別する。移動速度算出ステップは、当たり判別ステップによって領域と入力線分とが交わることが判別されたとき、距離に基づいて円形のオブジェクトの移動速度を算出する。
【００２１】
第４の発明では、操作オブジェクトは円形のオブジェクトである。当該円形のオブジェクトには、その半径（ｒ）とプレイヤによる入力方向に基づいて、当たり判定領域が設けられる。具体的には、当たり判定ステップ（Ｓ５９、Ｓ６１）では、前回の入力座標から今回の入力座標への入力方向と半径とに基づいて設定される領域と、入力線分とが交わるか否かが判定される。この当たり判定は、入力方向に垂直な方向の当たり判定と、入力方向の当たり判定とに分けて行われるようにしてよい。また、入力方向に垂直な方向の有効領域と入力方向の有効領域の広さが異なるように設定されてもよい。移動速度算出ステップでは、領域と入力線分とが交わるときに、距離に基づいて移動速度が算出される。
【００２２】
第４の発明では、円形オブジェクトの半径とプレイヤによる入力方向に応じて設定される有効領域上の入力が行われたときのみ、当該オブジェクトの移動を操作することができる。
【００２３】
第５の発明は、第１の発明の移動制御プログラムであって、移動速度算出ステップは、入力座標検出ステップによって検出された前回の入力座標と今回の入力座標の差分を算出する差分算出ステップを含んでいて、さらに差分に基づいて操作オブジェクトの移動速度を算出する。
【００２４】
第５の発明では、移動速度を算出する際には、前回の入力座標と今回の入力座標との差分（ｆ１−ｆ０）が算出される。移動速度は、距離と当該差分とに基づいて算出される。
【００２５】
第５の発明によれば、入力座標の直線と操作オブジェクトとの距離に加えて、入力座標の差分に基づいて操作オブジェクトの移動速度を算出するので、操作オブジェクトの移動をより多様に制御することができ、移動のリアリティを増すことができる。
【００２６】
第６の発明は、少なくともプレイヤによって操作される操作オブジェクトを画面に表示する表示手段と当該表示手段の画面上の位置を指示するためのポインティングデバイスとを備え、ポインティングデバイスによる入力によって操作オブジェクトの移動を制御する移動制御装置である。移動制御装置は、入力座標検出手段、距離算出手段、移動速度算出手段、および移動処理手段を備える。入力座標検出手段は、ポインティングデバイスによって指示される画面上の位置を示す入力座標を所定時間毎に検出する。距離算出手段は、入力座標検出手段によって検出された前回の入力座標と今回の入力座標とを結ぶ直線と、操作オブジェクトとの距離を算出する。移動速度算出手段は、距離算出手段によって算出された距離に基づいて操作オブジェクトの移動速度を算出する。移動処理手段は、移動速度算出手段によって算出された移動速度に基づいて操作オブジェクトを移動させる。
【００２７】
第６の発明は、上述の第１の発明の移動制御プログラムに対応する移動制御装置であり、第１の発明と同様な効果を奏する。
【発明の効果】
【００２８】
この発明によれば、入力座標を結ぶ直線と操作オブジェクトとの距離に基づいて算出される移動速度で操作オブジェクトを移動させることができるので、当該距離に応じて操作オブジェクトの移動速度を変化させることができる。つまり、操作オブジェクトの移動を多様に制御することができる。
【００２９】
また、距離に基づいて移動速度を算出するので、複数の操作オブジェクトが存在する場合であっても、入力座標を結ぶ直線と個々の操作オブジェクトとの距離に基づいて、操作オブジェクトの移動速度を制御することができる。したがって、オブジェクトの移動制御のための操作性が良い。
【００３０】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００３１】
図１を参照して、この発明の実施例である移動制御装置１０は、ゲーム装置の形態で実現される。なお、移動制御装置１０はパーソナルコンピュータ、携帯情報端末、携帯電話機など他の形態で実現されてもよい。
【００３２】
移動制御装置すなわちゲーム装置１０は、第１の液晶表示器（ＬＣＤ）１２および第２のＬＣＤ１４を含む。ＬＣＤ１２およびＬＣＤ１４は、所定の配置位置となるようにハウジング１６に収納される。この実施例では、ハウジング１６は、上側ハウジング１６ａと下側ハウジング１６ｂとによって構成され、ＬＣＤ１２は上側ハウジング１６ａに収納され、ＬＣＤ１４は下側ハウジング１６ｂに収納される。したがって、ＬＣＤ１２とＬＣＤ１４とは縦（上下）に並ぶように近接して配置される。
【００３３】
なお、この実施例では、表示器としてＬＣＤを用いるようにしてあるが、ＬＣＤに代えて、ＥＬ(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【００３４】
図１からも分かるように、上側ハウジング１６ａは、ＬＣＤ１２の平面形状よりも少し大きな平面形状を有し、一方主面からＬＣＤ１２の表示面を露出するように開口部が形成される。一方、下側ハウジング１６ｂの平面形状およびサイズも上側ハウジング１６ａと同等に選ばれ、横方向の略中央部にＬＣＤ１４の表示面を露出するように開口部が形成される。下側ハウジング１６ｂの右側面には電源スイッチ１８が設けられる。
【００３５】
また、上側ハウジング１６ａには、ＬＣＤ１２を挟んで左右に、スピーカ３６ａおよび３６ｂ（図２）のための音抜き孔２０ａおよび２０ｂが形成される。
【００３６】
上側ハウジング１６ａと下側ハウジング１６ｂとは、上側ハウジング１６ａの下辺（下端）と下側ハウジング１６ｂの上辺（上端）の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、ＬＣＤ１２の表示面とＬＣＤ１４の表示面とが対面するように、上側ハウジング１６ａを回動させて折りたたんでおけば、ＬＣＤ１２の表示面およびＬＣＤ１４の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング１６ａと下側ハウジング１６ｂとは、回動可能に連結せずに、それらを一体的（固定的）に設けたハウジング１６を形成するようにしてもよい。
【００３７】
そして、上側ハウジング１６ａと下側ハウジング１６ｂとの連結部の中央には、マイク（図示せず）のためのマイク孔２０ｃが形成される。マイクから取り込んだ音、音声または息などによる音声信号に基づいてゲーム処理を行うことが可能である。
【００３８】
また、下側ハウジング１６ｂには、操作スイッチ２２（２２ａ，２２ｂ，２２ｃ，２２ｄ，２２ｅ，２２Ｌおよび２２Ｒ）が設けられる。
【００３９】
操作スイッチ２２は、方向指示スイッチ（十字スイッチ）２２ａ，スタートスイッチ２２ｂ、セレクトスイッチ２２ｃ、動作スイッチ（Ａボタン）２２ｄ、動作スイッチ（Ｂボタン）２２ｅ、動作スイッチ（Ｘボタン）２２ｆ、動作スイッチ（Ｙボタン）２２ｇ、動作スイッチ（Ｌボタン）２２Ｌおよび動作スイッチ（Ｒボタン）２２Ｒを含む。スイッチ２２ａは、下側ハウジング１６ｂの一方主面であり、ＬＣＤ１４の左側に配置される。その他のスイッチ２２ｂ−２２ｇは、下側ハウジング１６ｂの一方主面であり、ＬＣＤ１４の右側に配置される。さらに、動作スイッチ２２Ｌおよび２２Ｒは、それぞれ下側ハウジング１６ｂの上端面の左右角部に配置される。なお、動作スイッチ２２Ｌおよび２２Ｒは下側ハウジング１６ｂの背面に設けられており、図１のような正面視では連結部の背後に隠れているので破線で示されている。
【００４０】
方向指示スイッチ２２ａは、ディジタルジョイスティックとして機能し、４つの押圧部の１つを操作することによって、ユーザないしプレイヤによって操作可能なプレイヤオブジェクト(またはプレイヤキャラクタ)の進行方向（移動方向）を指示したり、カーソルの進行方向を指示したりする等に用いられる。また、各押圧部には、特定の役割を割り当てることができ、４つの押圧部の１つを操作することによって、割り当てられた役割を指示（指定）することができる。
【００４１】
スタートスイッチ２２ｂは、プッシュボタンで構成され、ゲームを開始（再開）したり、一時停止(Pause)したりする等に用いられる。また、セレクトスイッチ２２ｃは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【００４２】
動作スイッチ２２ｄすなわちＡボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤオブジェクトに打つ（パンチ）、投げる、つかむ（取得）、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(ＲＰＧ)やシミュレーションＲＰＧにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ２２ｅすなわちＢボタンは、プッシュボタンで構成され、セレクトスイッチ２２ｃで選択したゲームモードの変更やＡボタン２２ｄで決定したアクションの取り消し等のために用いられる。
【００４３】
動作スイッチ２２ｆすなわちＸボタン、および動作スイッチ２２ｇすなわちＹボタンは、プッシュボタンで構成され、Ａボタン２２ｄとＢボタン２２ｅだけでは、ゲーム進行ができないときに、補助的な操作に用いられる。ただし、Ｘボタン２２ｆおよびＹボタン２２ｇは、Ａボタン２２ｄおよびＢボタン２２ｅと同様の操作に用いることも可能である。もちろん、ゲームプレイにおいてＸボタン２２ｆとＹボタン２２ｇとを必ずしも使用しなくてよい。
【００４４】
動作スイッチ２２Ｌ（左押しボタン）および動作スイッチ２２Ｒ（右押しボタン）は、プッシュボタンで構成され、左押しボタン（Ｌボタン）２２Ｌおよび右押しボタン（Ｒボタン）２２Ｒは、Ａボタン２２ｄおよびＢボタン２２ｅと同様の操作に用いることができ、また、Ａボタン２２ｄおよびＢボタン２２ｅの補助的な操作に用いることができる。さらに、Ｌボタン２２ＬおよびＲボタン２２Ｒは、方向スイッチ２２ａ、Ａボタン２２ｄ，Ｂボタン２２ｅ，Ｘボタン２２ｆ，Ｙボタン２２ｇに割り当てられた役割を、他の役割に変更することができる。
【００４５】
また、ＬＣＤ１４の上面には、タッチパネル２４が装着される。タッチパネル２４としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル２４は、その上面をスティック２６ないしはペン（スタイラスペン）或いは指（以下、これらを「スティック２６等」という場合がある。）で、押圧したり、撫でたり、触れたりすることにより操作（タッチ入力）すると、スティック２６等の操作位置の座標を検出して、当該検出座標に対応する座標データを出力する。
【００４６】
なお、この実施例では、ＬＣＤ１４（ＬＣＤ１２も同じ、または略同じ。）の表示面の解像度は２５６ｄｏｔ×１９２ｄｏｔである。タッチパネル２４の検出精度も表示画面に対応して２５６ｄｏｔ×１９２ｄｏｔとしてあるが、タッチパネル２４の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
【００４７】
ＬＣＤ１２およびＬＣＤ１４には異なるゲーム画面が表示されてもよい。たとえば、レースゲームでは一方のＬＣＤに運転席からの視点による画面を表示し、他方のＬＣＤにレース（コース）全体の画面を表示することができる。また、ＲＰＧでは、一方のＬＣＤにマップやプレイヤオブジェクト等のキャラクタを表示し、他方のＬＣＤにプレイヤオブジェクトが所有するアイテムを表示することができる。さらに、一方のＬＣＤにプレイヤオブジェクトやノンプレイヤオブジェクトなどを含むゲーム画面を表示し、他方のＬＣＤに当該プレイヤオブジェクトやノンプレイヤオブジェクトに関する情報を含む他のゲーム画面または当該プレイヤオブジェクトを操作するための操作画面を表示することができる。さらには、２つのＬＣＤ１２およびＬＣＤ１４を合わせて１つの画面として用いることにより、プレイヤオブジェクトが倒さなければならない巨大な怪物（敵オブジェクト）を表示することもできる。
【００４８】
したがって、プレイヤはスティック２６等でタッチパネル２４を操作することにより、ＬＣＤ１４の画面に表示されるプレイヤオブジェクト、敵オブジェクト、アイテムオブジェクト、操作オブジェクトなどの画像を指示（操作）したり、コマンドを選択（入力）したりすることができる。また、仮想ゲーム空間（３次元ゲーム空間）に設けられる仮想カメラ（視点）の方向（視線の向き）を変化させたり、ゲーム画面（マップ）のスクロール(徐々に移動表示)方向を指示したりすることもできる。
【００４９】
なお、ゲームの種類によっては、タッチパネル２４を用いることにより、その他の入力指示も可能である。たとえば、ＬＣＤ１４において文字，数字，記号等を手書き入力することができる。
【００５０】
このように、ゲーム装置１０は、２画面分の表示部となるＬＣＤ１２およびＬＣＤ１４を有し、いずれか一方（この実施例では、ＬＣＤ１４）の上面にタッチパネル２４が設けられるので、２画面（１２，１４）と２系統の操作部（２２，２４）とを有する構成になっている。
【００５１】
なお、この実施例では、第１のＬＣＤ１２と第２のＬＣＤ１４とを縦方向に並べて配置するようにしているが、２つのＬＣＤの配置は適宜に変更され得る。他の実施例では、第１のＬＣＤ１２と第２のＬＣＤ１４とを横方向に並べて配置するようにしてもよい。
【００５２】
また、この実施例では、２つのＬＣＤを設けるようにしていたが、表示手段としてのＬＣＤの数は適宜変更され得る。他の実施例では、縦長形状の１つのＬＣＤを設けて、表示領域を上下に分けて、２つのゲーム画面をそれぞれの表示領域に表示するようにしてもよいし、あるいは、横長形状の１つのＬＣＤを設けて、表示領域を左右に分割し、２つゲーム画面をそれぞれの表示領域に表示するようにしてもよい。
【００５３】
また、スティック２６は、たとえば下側ハウジング１６ｂに設けられる収納部（図示せず）に収納することができ、必要に応じて取り出される。ただし、スティック２６を設けない場合には、その収納部も設ける必要はない。
【００５４】
さらに、ゲーム装置１０はメモリカード（またはカートリッジ）２８を含み、このメモリカード２８は着脱自在であり、下側ハウジング１６ｂの上端面に設けられる挿入部３０（図１では点線で示す）に挿入される。図１では省略するが、挿入部３０の奥部には、メモリカード２８の挿入方向先端部に設けられるコネクタと接合するためのコネクタ３２（図２参照）が設けられており、したがって、メモリカード２８が挿入部３０に挿入されると、コネクタ同士が接合され、ゲーム装置１０のＣＰＵコア３４（図２参照）がメモリカード２８にアクセス可能となる。
【００５５】
なお、図１では表現できないが、上側ハウジング１６ａの音抜き孔２０ａおよび２０ｂと対応する位置であり、この上側ハウジング１６ａの内部にはスピーカ３６ａおよび３６ｂ（図２参照）が設けられる。
【００５６】
また、図１では省略するが、たとえば、下側ハウジング１６ｂにおいて、その裏面には電池収容ボックスが設けられ、下端面（底面）には、音量スイッチおよびイヤフォンジャックなどが設けられ、上端面（天面）には、外部拡張コネクタなどが設けられる。
【００５７】
図２はゲーム装置１０の電気的な構成を示すブロック図である。図２を参照して、ゲーム装置１０は電子回路基板３８を含み、この電子回路基板３８には上述のＣＰＵコア３４等の回路コンポーネントが実装される。ＣＰＵコア３４は、バス４０を介して前述のコネクタ３２に接続されるととともに、ＲＡＭ４２、第１のグラフィック処理ユニット（ＧＰＵ）４４、第２のＧＰＵ４６、入出カインターフエース回路（以下、「Ｉ／Ｆ回路」という。）４８、ＬＣＤコントローラ５０および無線通信部５８に接続される。
【００５８】
コネクタ３２には、上述したように、メモリカード２８が着脱自在に接続される。メモリカード２８は、ＲＯＭ２８ａおよびＲＡＭ２８ｂを含み、図示は省略するが、ＲＯＭ２８ａおよびＲＡＭ２８ｂは、互いにバスで接続され、さらに、コネクタ３２と接合されるコネクタ（図示せず）に接続される。したがって、上述したように、ＣＰＵコア３４は、ＲＯＭ２８ａおよびＲＡＭ２８ｂにアクセスすることができる。
【００５９】
ＲＯＭ２８ａは、ゲーム装置１０で実行すべきゲームのためのゲームプログラム、画像データ（文字やオブジェクトの画像、背景画像、アイテム画像、アイコン（ボタン）画像、メッセージ画像など）およびゲームに必要な音（音楽）のデータ（音データ）等を予め記憶する。ＲＡＭ（バックアップＲＡＭ）２８ｂは、そのゲームの途中データやゲームの結果データなどを記憶（セーブ）する。セーブ用メモリとしてはフラッシュメモリなどが用いられてよい。
【００６０】
ＲＡＭ４２は、バッファメモリないしはワーキングメモリとして使用される。つまり、ＣＰＵコア３４は、メモリカード２８のＲＯＭ２８ａに記憶されたプログラム、画像データおよび音データ等をＲＡＭ４２にロードし、ロードしたプログラムを実行する。また、ＣＰＵコア３４は、ゲームの進行に応じて一時的に生成するデータ（ゲームデータやフラグデータ）をＲＡＭ４２に記憶しつつゲーム処理を実行する。
【００６１】
なお、ゲームプログラム、画像データおよび音データ等は、ＲＯＭ２８ａから一度に全部、または部分的かつ順次的に読み出され、ＲＡＭ４２に記憶される。
【００６２】
ただし、ゲーム装置１０ではゲーム以外の他のアプリケーションが実行されてよく、この場合、メモリカード２８のＲＯＭ２８ａには、当該アプリケーションについてのプログラムおよび画像データ等の必要なデータが記憶されてよい。また、必要に応じて、音（音楽）データが記憶されてもよい。
【００６３】
ＧＰＵ４４およびＧＰＵ４６は、それぞれ、描画手段の一部を形成し、たとえばシングルチップＡＳＩＣで構成され、ＣＰＵコア３４からのグラフィックスコマンド（作画命令）を受け、そのグラフィックスコマンドに従って画像データを生成する。ただし、ＣＰＵコア３４は、グラフィックスコマンドに加えて、画像データの生成に必要な画像生成プログラム（ゲームプログラムに含まれる。）をＧＰＵ４４およびＧＰＵ４６のそれぞれに与える。
【００６４】
また、ＧＰＵ４４には、第１のビデオＲＡＭ（以下、「ＶＲＡＭ」という。）５２が接続され、ＧＰＵ４６には、第２のＶＲＡＭ５４が接続される。ＧＰＵ４４およびＧＰＵ４６が作画コマンドを実行するにあたって必要なデータ（画像データ：ポリゴンやテクスチャ等のデータ）は、ＧＰＵ４４およびＧＰＵ４６が、それぞれ、第１のＶＲＡＭ５２および第２のＶＲＡＭ５４にアクセスして取得する。
【００６５】
なお、ＣＰＵコア３４は、描画に必要な画像データをＧＰＵ４４およびＧＰＵ４６を介して第１のＶＲＡＭ５２および第２のＶＲＡＭ５４に書き込む。ＧＰＵ４４はＶＲＡＭ５２にアクセスして描画のための画像データを作成し、ＧＰＵ４６はＶＲＡＭ５４にアクセスして描画のための画像データを作成する。
【００６６】
ＶＲＡＭ５２およびＶＲＡＭ５４は、ＬＣＤコントローラ５０に接続される。ＬＣＤコントローラ５０はレジスタ５６を含み、レジスタ５６はたとえば１ビットで構成され、ＣＰＵコア３４の指示によって「０」または「１」の値（データ値）を記憶する。ＬＣＤコントローラ５０は、レジスタ５６のデータ値が「０」である場合には、ＧＰＵ４４によって作成された画像データをＬＣＤ１２に出力し、ＧＰＵ４６によって作成された画像データをＬＣＤ１４に出力する。また、ＬＣＤコントローラ５０は、レジスタ５６のデータ値が「１」である場合には、ＧＰＵ４４によって作成された画像データをＬＣＤ１４に出力し、ＧＰＵ４６によって作成された画像データをＬＣＤ１２に出力する。
【００６７】
なお、ＬＣＤコントローラ５０は、ＶＲＡＭ５２およびＶＲＡＭ５４から直接画像データを読み出したり、ＧＰＵ４４およびＧＰＵ４６を介してＶＲＡＭ５２およびＶＲＡＭ５４から画像データを読み出したりする。
【００６８】
Ｉ／Ｆ回路４８には、操作スイッチ２２，タッチパネル２４およびスピーカ３６ａ，３６ｂが接続される。ここで、操作スイッチ２２は、上述したスイッチ２２ａ，２２ｂ，２２ｃ，２２ｄ，２２ｅ，２２ｇ，２２Ｌおよび２２Ｒであり、操作スイッチ２２が操作されると、対応する操作信号（操作データ）がＩ／Ｆ回路４８を介してＣＰＵコア３４に入力される。また、タッチパネル２４からの座標データがＩ／Ｆ回路４８を介してＣＰＵコア３４に入力される。さらに、ＣＰＵコア３４は、ゲーム音楽（ＢＧＭ）、効果音またはゲームキャラクタの音声（擬制音）などのゲームに必要な音データをＲＡＭ４２から読み出し、Ｉ／Ｆ回路４８を介してスピーカ３６ａ，３６ｂから当該音を出力する。
【００６９】
無線通信部５８は他のゲーム装置１０や通信機器との間で無線によってデータを送受信するための通信手段である。なお、この実施例で示すゲーム装置１０が送受信する微弱電波は、電波法による規制のかからない強度に設定されている。ＣＰＵコア３４がゲームデータやコマンドなどのデータを無線通信部５８に与えると、無線通信部５８は、相手方へのデータを無線信号に変調してアンテナから送信する。また、無線通信部５８は、相手方からの無線信号を同じアンテナで受信してデータに復調し、当該データをＣＰＵコア３４に与える。この無線通信部５８を介して、ゲーム装置１０は、他のゲーム装置１０との間でデータを通信して通信ゲームを実行することが可能である。また、ゲーム装置１０は、無線通信部５８を介してネットワークに接続することができ、ネットワーク上のサーバからプログラムやデータをダウンロードしたり、ネットワークを介して他のゲーム装置１０と通信したりすることが可能である。
【００７０】
このゲーム装置１０では、ＬＣＤ１４に表示される操作オブジェクトの移動がタッチパネル２４の入力に応じて制御される。具体的には、タッチパネル２４の入力座標が所定時間ごとに検出され、前回検出された入力座標と今回検出された入力座標とを結ぶ直線と操作オブジェクトとの距離が算出される。この算出された距離に基づいて操作オブジェクトの移動速度が算出されて、操作オブジェクトの移動が制御される。
【００７１】
このような移動制御は、様々なゲーム、アプリケーションにおいて適用することができる。図３にはこの移動制御が適用されたゲームの画面の一例が示される。このゲームは魚飼育ゲームである。ＬＣＤ１２に表示される上画面は、魚１００および藻１０２などが生息する水中の様子を示す。一方、ＬＣＤ１４に表示される下画面は、プレイヤの入力画面であり、この画面には、ボール１０４および泡１０６が表示される。ボール１０４が操作オブジェクトである。プレイヤには、複数種類のボール１０４のうち同一種類の所定数のボール１０４を泡１０６内に移動させることが要求される。たとえば、色が赤、緑、青の３種類のボール１０４が準備されている。各ボール１０４には、位置、移動速度、および移動方向などの初期値が与えられており、それぞれの速度および方向で移動している。
【００７２】
なお、ボール１０４の反発係数は１に設定されており、ボール１０４同士の衝突の際に考慮される。また、ゲーム画面として表示される固定領域（表示領域）外にボール１０４が出た場合、当該ボール１０４は、表示領域外に設けられている円形の壁で正反射する。この際に移動速度が初期速度にリセットされ、当該ボール１０４は表示領域に戻ってくるようになっている。
【００７３】
プレイヤは、スティック２６等によってタッチパネル２４上でボール１０４を撫でるような操作（スティック２６等をタッチパネル２４上でスライドさせる操作）をすることによって、ボール１０４の移動に影響を与えて、泡１０６内にボール１０４を移動させる。このボール１０４の移動が、上述のようなボール１０４と入力座標の直線との距離に基づいて制御されることになる。
【００７４】
なお、このゲームでは、ボール１０４が泡１０６に接触すると、当該ボール１０４は泡１０６内に吸い込まれる。プレイヤの入力等によって外部から所定の力が働かない限り、ボール１０４は泡１０６内に留まる。泡１０６に同じ色の所定数（この実施例では３個）のボール１０４を集めることに成功した場合、当該泡１０６およびボール１０４が無数の細かい泡に変化して、これらの細かい泡が上画面に移動し、これによって、ＬＣＤ１２のゲーム画面に対して、ボール１０４の色に対応する所定の効果が与えられることになる。具体的には、赤のボール１０４の場合、魚１００の色が綺麗になったり、魚１００の種類が増えたりする。緑のボール１０４の場合、藻１０２の色が綺麗になったり、藻１０２が大きくなったりする。また、青のボール１０４の場合、水の色が綺麗になる。
【００７５】
この実施例では、入力をボール１０４の移動に反映するかどうかを、当たり判定によって判定するようにしている。図４には当たり判定領域が示される。この実施例の操作対象であるボール１０４は円形のオブジェクトであり、当たり判定領域はオブジェクトの半径ｒに基づいて設定される。さらに、当たり判定領域は、入力方向、すなわち、前回の入力座標から今回の入力座標への方向にも基づいて設定される。プレイヤは、直感的にボール１０４を移動させたい方向に向けてスティック２６等を移動させるので、当たり判定領域を入力方向に基づいて設定することによって、プレイヤによる入力の有効無効を適切に判断することができるとともに、プレイヤによる入力を移動制御に適切に使用することができる。
【００７６】
具体的には、図４に示すように、入力方向に垂直な方向に関しては、半径ｒに遊びａが持たせられ、つまり、オブジェクトの中心から両方向に距離ｒ＋ａまでの範囲が有効にされる。遊びａは定数であり、たとえば０．１ｒ程度に設定されてよい。これによって、オブジェクト上を直接撫でるような入力でなく、オブジェクトをかすめるような入力であっても有効にすることができ、操作を行い易くすることができる。なお、他の実施例では、遊びａを設けないようにしてもよい。
【００７７】
一方、入力方向に関しては、この実施例では、オブジェクトの中心から両方向に距離ｒまでの範囲が有効にされる。したがって、この実施例の当たり判定領域は、図４に示すような矩形領域となる。
【００７８】
この実施例では、前回の入力座標と今回の入力座標とを結ぶ線分が、この当たり判定領域に交わるとき、当該入力は有効にされる。つまり、タッチパネル２４によってボール１０４上を指示するような操作が行われたときのみ、ボール１０４の移動を操作することができる。この当たり判定領域は、ボール１０４よりもやや大きい領域であるので、操作性を向上できる。たとえば、ボール１０４の表示領域外に相当する矩形領域の角の部分に入力が行われていても、当該入力を有効にして、ボール１０４の移動を制御することができる。
【００７９】
なお、前回の入力座標と今回の入力座標とを結ぶ線分を「入力線分」と呼び、前回の入力座標と今回の入力座標とを結ぶ直線を「入力直線」と呼ぶものとする。
【００８０】
この実施例では、入力線分が当たり判定領域と交わるか否かの判定は、入力方向に垂直な方向の判定と、入力方向の判定とに分けて行われる。
【００８１】
入力方向に垂直な方向の当たり判定を説明するための図解図が図５に示される。この当たり判定は、ボール１０４と入力直線との距離に基づいて行われる。点ｆ０は前フレームで検出されたタッチ位置（前回の入力座標）を示し、点ｆ１は現フレームで検出されたタッチ位置（今回の入力座標）を示す。Ｖｆは点ｆ０と点ｆ１を結ぶベクトルを示し、ｔはベクトルＶｆを正規化した単位ベクトルである。点Ｂ０はボール１０４の基準点としての中心点の位置を示し、Ｖｐは点ｆ０と点Ｂ０とを結ぶベクトルを示す。点ｃは、ｆ０とｆ１とを結ぶ直線(入力直線)に対して点Ｂ０から下ろした垂線の足であり、つまり、入力直線と点Ｂ０を通る垂線との交点であり、点ｃの座標は、次の数１によって算出される。
［数１］
ｃ＝ｆ０＋ｔ＊（Ｖｐ・ｔ）
なお、Ｖｐ・ｔは、ベクトルＶｐとベクトルｔの内積を示す。点ｃは、入力直線上の点のうち、ボール１４の中心点Ｂ０との最も近い点である。
【００８２】
ボール１４の中心点Ｂ０と点ｃとの距離ｃＤが、入力直線とボール１４との距離であり、この距離ｃＤを用いて、入力方向に垂直な方向の当たり判定が行われる。つまり、ｃＤ＜ｒ＋ａであるか否かが判定される。
【００８３】
また、入力方向の当たり判定を説明するための図解図が図６に示される。この入力方向の当たり判定は、ベクトルＶｐとベクトルｔの内積を示すＬの値に基づいて行われる。入力線分が入力方向において判定領域と交わるためには、図６（Ａ）に示すように、点ｆ０は、ボール１０４の中心点Ｂ０から入力方向に距離ｒまでの位置に存在する必要がある。このｆ０の限界のとき、内積Ｌ（＝Ｖｐ・ｔ）の値は−ｒである。また、図６（Ｂ）に示すように、点ｆ１は、ボール１０４の中心点Ｂ０から入力方向の逆方向に距離ｒまでの位置に存在する必要がある。このｆ１の限界のとき、内積Ｌの値は、半径ｒとベクトルＶｆの大きさとの和（ｒ＋｜Ｖｆ｜）である。したがって、図６（Ｃ）に示すように、入力方向の当たり判定では、−ｒ＜Ｌ＜ｒ＋｜Ｖｆ｜であるか否かが判定される。
【００８４】
図７に示すように、入力線分が判定領域と交わると判定される場合には、ボール１０４の移動速度が、入力直線とボール１０４との距離ｃＤに基づいて算出される。現在のフレームにおけるボール１０４の移動速度がｖ０であるとき、次のフレームにおけるボール１０４の移動速度ｖ１は、次の数２に従って算出される。
［数２］
ｖ１＝ｖ０＋（ｆ１−ｆ０）＊ｋ＊（（ｒ＋ａ−ｃＤ）／（ｒ＋ａ））
ここで、ｋは定数（０＜ｋ＜１）であり、適宜な値に設定される。
【００８５】
このように、ボール１０４と入力直線との距離ｃＤが小さいほど、つまり、プレイヤによる入力がボール１０４の中心を捉えているほど、入力によって移動速度に与える影響が大きくされる。たとえば、ボール１０４が移動している方向に入力が行われる場合、距離ｃＤが小さいほど、移動速度ｖ１を大きくすることができる。このように、入力直線とボール１０４との距離に応じて移動速度を変化させることができ、ボール１０４の移動を多様に制御することができる。また、距離ｃＤが短いほど、つまり、入力線分がボール１０４の中心に近いほど、入力の影響を大きくすることができるので、移動制御にリアリティを与えることができる。
【００８６】
また、入力直線上のボール１０４の中心点Ｂ０から最も近い点ｃが算出され、当該最近点ｃと中心点Ｂ０との距離ｃＤに基づいて、ボール１０４の移動速度が算出される。つまり、入力直線とボール１０４の中心点Ｂ０との最短距離に基づいて、移動速度を算出することができるので、タッチパネル２４を用いて指示される位置がボール１０４をどの程度正確に捉えているかに応じて、ボール１０４の移動速度を変化させることができる。
【００８７】
また、移動速度ｖ１は、入力座標の差分（ｆ１−ｆ０）にも基づいて算出される。したがって、入力の方向および入力（スライドさせる操作）の素早さや大きさによって、ボール１０４の移動を多様に制御することができ、移動のリアリティを増すことができる。
【００８８】
図８にはメモリマップのうちプログラム記憶領域２００が示されている。なお、図８にはプログラム記憶領域２００の一部が示されており、プログラム記憶領域２００には、たとえば音出力プログラムのような処理に必要な他のプログラムも記憶される。
【００８９】
記憶領域２０２にはゲーム処理プログラムが記憶される。ゲーム処理プログラムは、このゲームのメインルーチンを処理するためのプログラムである。記憶領域２０４には入力座標検出プログラムが記憶される。入力座標検出プログラムはタッチパネル２４を用いてプレイヤに指示された画面上の位置を示す入力座標を検出するためのプログラムである。このプログラムによって、所定時間（たとえば１フレーム）ごとに入力座標が検出される。
【００９０】
記憶領域２０６には速度変更プログラムが記憶される。速度変更プログラムは入力に応じてオブジェクトの移動速度を変更するためのプログラムである。上述のように、入力線分がオブジェクトの当たり判定領域と交わるか否かが判定され、交わる場合には、入力直線とオブジェクトとの距離に基づいて移動速度が算出される。記憶領域２０８にはオブジェクト移動処理プログラムが記憶される。このプログラムは、移動速度に基づいてオブジェクトの移動を制御するためのプログラムである。記憶領域２１０には画像表示プログラムが記憶される。このプログラムは、図３に示すようなゲーム画面を生成して表示するためのプログラムである。
【００９１】
記憶領域２１２には得点処理プログラムが記憶される。得点処理プログラムは、プレイヤの得点を算出するためのプログラムである。この実施例では、泡１０６に同一種類の所定数のボール１０４が集められたとき、当該ボール１０４の色の得点が算出される。そして、当該色の点数に応じて、ゲーム画面に変化が与えられる。具体的には、赤色の点数に基づいて、魚１００の色が綺麗にされたり、魚１００の種類が増やされたりする。緑色の点数に基づいて、藻１０２の色が綺麗にされたり、藻１０２が大きくされたりする。また、青色の点数に基づいて、水の色が綺麗にされる。なお、他の実施例では、単に各色の点数を画面上に表示するようにしてもよい。
【００９２】
図９にはメモリマップのうちデータ記憶領域２２０が示されている。なお、図９にはデータ記憶領域２２０の一部が示されており、データ記憶領域２２０には処理に必要な他のデータも記憶される。
【００９３】
記憶領域２２２は入力座標記憶領域であり、入力座標検出プログラムによって検出された入力座標が記憶される。具体的には、現在のフレームで検出された位置を示す点ｆ１の座標（今回の入力座標）、および前のフレームで検出された位置を示す点ｆ０の座標（前回の入力座標）などが記憶される。
【００９４】
記憶領域２２４にはタッチオンフラグが記憶される。タッチオンフラグはタッチパネル２４で入力が行われているか否かを示すフラグである。タッチオンフラグは、入力座標が検出されるとき、オンに設定され、入力座標が検出されていないとき、オフに設定される。
【００９５】
記憶領域２２６はオブジェクトデータ記憶領域であり、ボールオブジェクト１０４、泡オブジェクト１０６、魚オブジェクト１００、藻オブジェクト１０２のような各種オブジェクトに関するデータが記憶される。
【００９６】
具体的には、ゲーム空間に存在する複数個のボールオブジェクト１０４のオブジェクトデータが記憶されている。ボールオブジェクト１０４のオブジェクトデータは、速度、位置、画像指定、および半径等に関するデータを含む。速度データは当該ボール１０４の移動速度を示す。移動速度には所定の初期値が設定される。速度変更プログラムに従って、入力に応じて移動速度が算出されたときには、当該算出された速度に更新される。位置データはゲーム空間における当該ボール１０４の位置を示す。この実施例では、中心点Ｂ０の座標が記憶される。オブジェクト移動処理プログラムに従って移動されたときには、移動後の位置に更新される。画像指定データは、当該ボール１０４の表示に使用する画像データを指定するためのデータである。この実施例では、赤、緑、青色の３種類のボール１０４が準備されるので、３種類のいずれかを示すデータが記憶される。したがって、この実施例の画像指定データは当該ボール１０４の属性ないし種類を示す属性データでもある。半径データは当該ボール１０４の半径ｒを示す。
【００９７】
また、ゲーム空間に存在する複数個の泡オブジェクト１０６のオブジェクトデータが記憶されている。泡オブジェクト１０６のオブジェクトデータは、位置、半径、および所有ボール等に関するデータを含む。位置データはゲーム空間における当該泡１０６の位置を示す。この実施例では、図３に示すように、泡１０４は円形のオブジェクトであり、その中心点の座標が記憶される。半径データは当該泡１０６の半径を示す。所有ボールデータは、当該泡１０６内に含まれているボール１０４に関する情報であり、たとえば、泡１０６内のボール１０４の個数および識別情報などが記憶される。
【００９８】
なお、魚オブジェクト１００および藻オブジェクト１０２などのような他のオブジェクトについても、図示は省略されるが、オブジェクトデータとして、位置、色、種類などの必要な情報が記憶される。
【００９９】
記憶領域２２８には得点データが記憶される。得点処理プログラムに従って赤、緑、青の得点が算出されてこの記憶領域２２８に記憶される。記憶領域２３０には画像データが記憶される。各種オブジェクトの画像データ、背景の画像データなどが記憶される。
【０１００】
図１０にはゲーム装置１０の動作の一例が示される。処理を開始すると、ステップＳ１で、ＣＰＵコア３４は初期設定を実行する。これによって、各種変数やフラグなどに初期値が設定される。
【０１０１】
次に、ステップＳ３で、ＣＰＵコア３４は入力座標が検出されたか否かをタッチパネル２４からのデータに基づいて判定する。ステップＳ３で“ＹＥＳ”であれば、ステップＳ５で、ＣＰＵコア３４は記憶領域２２４のタッチオンフラグをオンにする。一方、ステップＳ３で“ＮＯ”であれば、ＣＰＵコア３４はステップＳ７で記憶領域２２４のタッチオンフラグをオフにする。
【０１０２】
続くステップＳ９で、ＣＰＵコア３４は記憶領域２２２に入力座標を記憶する。具体的には、記憶領域２２２の現在のフレームの位置として記憶されている情報が前のフレームの位置として記憶される。さらに、入力座標が検出された場合、入力座標が現在のフレームの位置として記憶される。入力座標が検出されていない場合、入力無しを示す情報が現在のフレームの位置として記憶される。
【０１０３】
ステップＳ１１で、ＣＰＵコア３４は記憶領域２２４のタッチオンフラグがオンである否かを判断する。“ＹＥＳ”の場合、ステップＳ１３で、ＣＰＵコア３４は前回の入力座標が存在するか否かを記憶領域２２２の入力座標データに基づいて判断する。ステップＳ１３で“ＹＥＳ”の場合、プレイヤによって移動のための操作が行われたものとみなして、ＣＰＵコア３４はステップＳ１５でオブジェクト速度変更処理を実行する。このオブジェクト速度変更処理の動作は、後述される図１１に詳細に示される。
【０１０４】
ステップＳ１５を終了し、またはステップＳ１１もしくはＳ１３で“ＮＯ”の場合には、ＣＰＵコア３４は、ステップＳ１７でゲーム画像表示処理を実行する。これによって、図３に示すようなゲーム画面がＧＰＵ４４および４６等を用いて生成されて、ＬＣＤ１２および１４に表示される。
【０１０５】
ステップＳ１９では、ＣＰＵコア３４はオブジェクト移動処理を実行する。これによって、各オブジェクトが移動される。各ボールオブジェクト１０４の位置は、記憶領域２２６に記憶された現在の位置と移動速度とに基づいて算出されて、更新される。プレイヤが移動のための操作をしている場合には、ステップＳ１５のオブジェクト速度変更処理によって変更された移動速度に基づいて、ボールオブジェクト１０４が移動制御される。したがって、次のフレームのステップＳ１７の処理によって、ボールオブジェクト１０４がプレイヤの操作を反映した位置に移動されたゲーム画面が表示されることとなる。
【０１０６】
続くステップＳ２１では、ＣＰＵコア３４は泡１０６内にボール１０４が存在するか否を判断する。具体的には、各泡１０６の位置および半径、各ボール１０４の位置および半径などの情報に基づいて、各泡１０６と各ボール１０４との当たり判定が行われる。なお、泡１０６と当たったボール１０４の位置は、当該泡１０６内の位置に変更され、また、当該ボール１０４の移動速度はゼロに変更される。さらに、当該ボール１０４と当たった泡１０６の所有ボールとして、当該ボール１０４の識別情報が記憶される。
【０１０７】
ステップＳ２１で“ＹＥＳ”の場合、ＣＰＵコア３４はステップＳ２３で泡１０６内のボール１０４の属性がすべて同一であるか否かを判断する。具体的には、各泡１０６の所有ボールとして記憶された識別情報に対応するボール１０４の画像指定データを参照して、すべて同じ画像指定であるか否かを判断する。
【０１０８】
ステップＳ２３で“ＹＥＳ”の場合、ＣＰＵコア３４はステップＳ２５で当該泡１０６内のボール１０４の数が所定個数であるか否かを判断する。具体的には、各泡１０６の所有ボールデータに記憶された識別情報の数が所定個数であるか否かを判断する。
【０１０９】
ステップＳ２５で“ＹＥＳ”の場合、ＣＰＵコア３４はステップＳ２７で得点加算処理を実行する。具体的には、当該泡１０６内に集められたボール１０４の属性（色）ごとの得点を算出し、記憶領域２２８に記憶する。なお、このフロー図では省略されるが、各オブジェクトには、得点処理に応じた変更が行われる。たとえば、泡１０６内に集められた所定個数の同一属性のボール１０４は消滅されるので、それらのオブジェクトデータは記憶領域２２６から削除される。また、赤色の得点が加算された場合、当該赤色の得点に基づいて、魚オブジェクト１００の色が変更されたり、種類が増やされたりする。緑色の得点が加算された場合、当該緑色の得点に基づいて、藻オブジェクト１０２の色が変更されたり、サイズが変更されたりする。また、青色の得点が加算された場合、当該青色の得点に基づいて、水の色が変更される。
【０１１０】
ステップＳ２１、Ｓ２３もしくはＳ２５で“ＮＯ”の場合、またはステップＳ２７を終了すると、ＣＰＵコア３４はステップＳ２９で、ゲーム終了であるか否かを判断する。ゲーム終了条件は、たとえば、所定の操作スイッチ２２の操作によって、または下画面に表示される終了アイコンがタッチされることによって、プレイヤがゲーム終了を指示したことや、ゲーム開始から所定時間経過したこと等であってよい。
【０１１１】
ステップＳ２９で“ＮＯ”の場合、処理はステップＳ３に戻る。したがって、次のフレームで、ステップＳ３からの処理が繰返される。一方、ステップＳ２９で“ＹＥＳ”の場合、このゲーム処理が終了される。
【０１１２】
図１１には、図１０のステップＳ１５のオブジェクト速度変更処理の動作の一例が示される。この処理を開始すると、ステップＳ４１で、ＣＰＵコア３４は、ボールオブジェクト１０４を指定するための変数ｉに初期値１を設定する。この変数ｉの値に対応するボールオブジェクト１０４に対して、続くステップＳ４３からＳ６５までの速度変更のための処理が実行される。
【０１１３】
ステップＳ４３では、ＣＰＵコア３４は、前フレームのタッチ位置を示す点ｆ０の座標を入力座標記憶領域２２２から読み出す。ステップＳ４５では、ＣＰＵコア３４は現フレームのタッチ位置を示す点ｆ１の座標を入力座標記憶領域２２２から読み出す。そして、ステップＳ４７で、ＣＰＵコア３４は前フレームのタッチ位置ｆ０と現フレームのタッチ位置ｆ１とを結ぶベクトルＶｆを算出する。また、ステップＳ４９で、ＣＰＵコア３４は、ベクトルＶｆを正規化してその単位ベクトルｔを算出する。
【０１１４】
続いて、ステップＳ５１で、ＣＰＵコア３４は、点ｆ０から現在のボール１０４の中心Ｂ０へのベクトルＶｐを算出する。なお、ボール１０４の中心Ｂ０は、変数ｉに対応するボール１０４の位置であり、記憶領域２２６から読み出される。
【０１１５】
ステップＳ５３では、ＣＰＵコア３４は点ｆ０と点ｆ１とを結ぶ直線ｆ１−ｆ０と、点Ｂ０との最も近い点ｃを算出する。点ｃの座標は上述の数１に従って算出される。そして、ステップＳ５５で、ＣＰＵコア３４は点Ｂ０と点ｃとの距離ｃＤを算出する。また、ステップＳ５７で、ＣＰＵコア３４はベクトルＶｐと単位ベクトルｔとの内積Ｌを算出する。
【０１１６】
続くステップＳ５９およびＳ６１で、変数ｉに対応するボール１０４に設定される当たり判定領域とプレイヤによる入力線分（点ｆ０と点ｆ１を結ぶ線分）との交わりが判定される。具体的には、ステップＳ５９で、ＣＰＵコア３４は、入力方向に垂直な方向の当たり判定を実行し、つまり、ｃＤ＜ｒ＋ａが成立するか否かを判断する。ｒは変数ｉに対応するボール１０４の半径であり、記憶領域２２６から読み出される。ａは遊び領域の長さであり、この実施例では半径ｒの１０％であり、半径ｒに基づいて算出される。
【０１１７】
ステップＳ５９で“ＹＥＳ”の場合、ＣＰＵコア３４は、ステップＳ６１で入力方向の当たり判定を実行し、つまり、−ｒ＜Ｌ＜ｒ＋｜Ｖｆ｜が成立するか否かを判断する。ステップＳ６１で“ＹＥＳ”の場合、入力方向と半径ｒとに基づいて設定される当たり判定領域と、入力線分とが交わるので、当該入力に応じて当該ボール１０４の移動速度を変更する。
【０１１８】
具体的には、まずステップＳ６３で、ＣＰＵコア３４は現在のボール１０４の速度ｖ０を、つまり、変数ｉに対応するボール１０４の速度を記憶領域２２６から読み出す。そして、ステップＳ６５で、ＣＰＵコア３４は次のフレームの速度ｖ１を算出する。速度ｖ１は、上述の数２に従って算出され、記憶領域２２６に記憶される。
【０１１９】
ステップＳ６５を終了し、または、ステップＳ５９もしくはＳ６１で“ＮＯ”の場合、ＣＰＵコア３４はステップＳ６７で変数ｉをインクリメントする。これによって、速度変更の対象を別のボール１０４に変更する。そして、ステップＳ６９で、ＣＰＵコア３４は変数ｉが所定値ｉｍａｘに等しいか否かを判断する。所定値ｉｍａｘは、ゲーム空間または表示領域内に現在存在しているボール１０４の総数より１だけ大きい値である。ステップＳ６９で“ＮＯ”の場合には、処理はステップＳ４３に戻り、更新された変数ｉに対応するボール１０４に対しての、速度変更のための処理を実行する。一方、ステップＳ６９で“ＹＥＳ”の場合、つまり、全てのボール１０４を対象に、速度変更のための処理を実行し終わった場合には、このオブジェクト速度変更処理を終了し、処理は図１０のステップＳ１７に戻る。
【０１２０】
この実施例によれば、入力座標を結ぶ直線とボールオブジェクト１０４との距離ｃＤに基づいて算出される移動速度ｖ１で、ボールオブジェクト１０４を移動させることができる。このように、ボールオブジェクト１０４と入力直線との距離ｃＤに応じてボールオブジェクト１０４の移動速度を変化させることができ、したがって、ボールオブジェクト１０４の移動を多様に制御することができる。
【０１２１】
また、距離ｃＤに基づいて移動速度ｖ１を算出するので、複数のボールオブジェクト１０４が存在する場合であっても、入力直線と個々のボールオブジェクト１０４との距離ｃＤに基づいて、各ボールオブジェクト１０４の移動速度を制御することができる。したがって、ボールオブジェクト１０４の移動制御のための操作性が良い。
【０１２２】
なお、上述の実施例では、図６に示すように、入力方向の当たり判定領域として、ボールオブジェクト１０４の中心Ｂ０から両側に半径ｒまでの範囲を設定するようにしていた。しかし、他の実施例では、入力方向の当たり判定領域をより広い範囲に設定するようにしてもよい。たとえば、図１２に示すように、ボール１０４の中心Ｂ０から両側に２ｒの範囲を有効領域とするようにしてもよい。この場合、入力方向の当たり判定では、−２ｒ＜Ｌ＜２ｒ＋｜Ｖｆ｜が成立するか否かが判断される。プレイヤがボール１０４を移動させようと入力を行う場合、ボール１０４の表示領域に比べてより広い範囲をスティック２６等でなでる傾向があることが考えられる。したがって、入力方向の当たり判定領域を広く設定することによって、より多くの入力を有効なものにすることができ、操作性をより向上することができる。なお、入力方向の限界を設けないようにすることも考えられ、このような場合、ボールオブジェクト１０４から離れた位置の入力であっても、入力方向の垂直な方向の判定領域内の入力であれば（つまり、入力直線が判定領域に交われば）、当該入力に応じてボールオブジェクト１０４の移動を制御することができ、操作がより簡単になる。
【０１２３】
また、上述の各実施例では、入力線分または入力直線が当たり判定領域と交わることが条件であった。しかし、他の実施例では、当たり判定を行わず、つまり、入力線分（または入力直線）と判定領域との交わりを条件とせずに、単に入力直線とボールオブジェクト１０４との距離に基づいて、ボールオブジェクト１０４の移動速度を算出するようにしてもよい。このような場合の速度算出の一例が図１３に示される。図１３では点ｆ０と点ｆ１を結ぶ入力線分は、ボールオブジェクト１０４の表示領域、図４または図１２に示すような当たり判定領域などと交わらない位置に存在している。このような場合であっても、ボール１０４の中心点Ｂ０と入力直線との距離ｃＤを算出し、当該距離ｃＤに基づいて、ボール１０４の移動速度を算出する。ボール１０４の次フレームの速度ｖ１は、たとえば次の数３に従って算出される。
［数３］
ｖ１＝ｖ０＋（ｆ１−ｆ０）＊ｋ＊（１／ｃＤ）
なお、定数ｋは数２における値と異なる値に設定されてよい。
【０１２４】
距離ｃＤが小さいほど、つまり、入力がボール１０４の中心に近い場所で行われるほど、ボール１０４の移動に、より大きな影響を与えることができる。また、ボール１０４と入力の交わりが必要とされないので、複数のボール１０４の移動を一度に操作することも可能になる。各ボール１０４の速度は、各ボール１０４と入力直線との各距離に基づいて算出されるので、複数のボール１０４のそれぞれの移動速度を１度の入力で様々に変化させることができる。このように、ボール１０４の移動を多様に制御することができる。
【０１２５】
また、上述の図１３実施例では、入力直線とボール１０４の中心点Ｂ０との距離ｃＤに基づいて、つまり、入力方向に垂直な方向における距離に基づいて、移動速度を算出するようにしていた。しかし、他の実施例では、入力方向における入力線分とボール１０４の中心点Ｂ０との距離をさらに考慮するようにしてもよい。たとえば、中心点Ｂ０から入力線分に垂下した線が、入力線分に交わらないとき、入力方向における入力線分と中心点Ｂ０との距離にさらに基づいて、移動速度を算出してよい。
【０１２６】
具体的には、図１４（Ａ）に示すように、点ｆ０が中心点Ｂ０よりも入力方向側に存在するとき（つまり、内積Ｌ＜０のとき）、次のフレームの速度ｖ１は、たとえば数４に従って算出される。一方、点ｆ１が中心点Ｂ０よりも入力方向の反対側に存在するとき（つまり、内積Ｌ＞｜Ｖｆ｜のとき）、次のフレームの速度ｖ１は、たとえば数５に従って算出される。
［数４］
ｖ１＝ｖ０＋（ｆ１−ｆ０）＊ｋ＊（１／ｃＤ）＊（１／｜Ｌ｜）
［数５］
ｖ１＝ｖ０＋（ｆ１−ｆ０）＊ｋ＊（１／ｃＤ）＊（１／（Ｌ−｜Ｖｆ｜））
いずれの場合も、入力線分が入力方向において中心点Ｂ０から離れるほど、ボール１０４の移動に与える影響を小さくすることができる。
【０１２７】
なお、上述の各実施例では、操作対象は、円形のオブジェクトであったが、オブジェクトの形状は円形に限られず、適宜変更され得る。たとえば、四角形、三角形のような多角形やその他の形状であってよい。入力直線とオブジェクトとの距離の算出の基準点となる位置は、操作オブジェクトの中心点Ｂ０に限られず、任意の位置に設定されてよく、たとえば重心であってよい。また、当たり判定領域を規定する距離ｒの値などは、基準点の位置、オブジェクトの形状およびサイズ等を考慮して適宜に設定される。
【０１２８】
また、上述の各実施例では、プレイヤが画面上の任意の位置を指示するためのポインティングデバイスとしてタッチパネル２４を用いたが、他の実施例では、ペンタブレット、タッチパッド、コンピュータマウスのような他のポインティングデバイスを用いることも可能である。ただし、画面上の指示位置を示すためのマウスポインタのような指示画像を表示する必要がある。
【図面の簡単な説明】
【０１２９】
【図１】図１はこの発明の移動制御装置の一実施例を示す図解図である。
【図２】図２は図１に示す移動制御装置の電気的な構成を示すブロック図である。
【図３】図３はゲーム画面の一例を示す図解図である。
【図４】図４はオブジェクトに設定される当たり判定領域の一例を示す図解図である。
【図５】図５は入力方向に垂直な方向の当たり判定を説明するための図解図である。
【図６】図６は入力方向の当たり判定を説明するための図解図である。
【図７】図７は移動速度の算出を説明するための図解図である。
【図８】図８はメモリマップのうちプログラム記憶領域を示す図解図である。
【図９】図９はメモリマップのうちデータ記憶領域を示す図解図である。
【図１０】図１０は移動制御装置の動作の一例を示すフロー図である。
【図１１】図１１は図１０に示すオブジェクト速度変更処理の一例を示すフロー図である。
【図１２】図１２は入力方向の当たり判定の変形例を示す図解図である。
【図１３】図１３は他の実施例の移動速度の算出を説明するための図解図である。
【図１４】図１４は他の実施例の移動速度の算出を説明するための図解図である。
【符号の説明】
【０１３０】
１０  …移動制御装置
１２，１４  …ＬＣＤ
１６，１６ａ，１６ｂ  …ハウジング
２２  …操作スイッチ
２４  …タッチパネル
２６  …スティック
２８  …メモリカード
２８ａ  …ＲＯＭ
２８ｂ，４２  …ＲＡＭ
３４  …ＣＰＵコア
３６ａ，３６ｂ  …スピーカ
４４，４６  …ＧＰＵ
４８  …Ｉ／Ｆ回路
５０  …ＬＣＤコントローラ
５２，５４  …ＶＲＡＭ
１０４  …操作オブジェクト
【図１】
2008295483.tif 000003
【図２】
2008295483.tif 000004
【図３】
2008295483.tif 000005
【図４】
2008295483.tif 000006
【図５】
2008295483.tif 000007
【図６】
2008295483.tif 000008
【図７】
2008295483.tif 000009
【図８】
2008295483.tif 000010
【図９】
2008295483.tif 000011
【図１０】
2008295483.tif 000012
【図１１】
2008295483.tif 000013
【図１２】
2008295483.tif 000014
【図１３】
2008295483.tif 000015
【図１４】
2008295483.tif 000016