オブジェクト制御プログラムおよびオブジェクト制御装置
【構成】 ゲーム装置10は、第1LCD16および第2LCD18を含み、第2LCD18上にはタッチパネル22が設けられる。第1LCD16には、敵オブジェクト(112、114)が表示される。一方、第2LCD18には、タッチ操作することにより生成された描画オブジェクト(122)が表示される。描画オブジェクト(122)が生成されると、タッチ操作の軌跡に基づく移動経路に従って、当該描画オブジェクト(122)が移動される。描画オブジェクト(122)が敵オブジェクト(112、114)に当ると、当該敵オブジェクト(112、114)にダメージが与えられる。
【効果】 簡単な操作で複雑なオブジェクトを生成し、複雑な経路に従って移動させるので、ゲームへの興味を増大させることができる。
【効果】 簡単な操作で複雑なオブジェクトを生成し、複雑な経路に従って移動させるので、ゲームへの興味を増大させることができる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明はオブジェクト制御プログラムおよびオブジェクト制御装置に関し、特にたとえば、プレイヤの操作に従ってオブジェクトを発生および移動させる、オブジェクト制御プログラムおよびオブジェクト制御装置に関する。
【背景技術】
【0002】
この種のゲーム装置の一例が特許文献1に開示されている。この特許文献1のオブジェクト制御装置では、プレイヤがタッチオンすると、タッチオンした位置に弾オブジェクトが発生され、さらに、タッチオンのまま画面下方向にスライドすると、弾オブジェクトの尾ひれが発生する。その後、プレイヤが、タッチオフすると、弾オブジェクトが画面上方に移動される。弾オブジェクトが敵キャラクタに衝突すると、たとえば、当該弾オブジェクトの攻撃力が当該敵キャラクタの耐久力を超えている場合には、当該敵オブジェクトが消滅する。
【特許文献1】特開2007−34634号[G06F 3/14,A63F 13/00,G06T 13/00]
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかし、特許文献1に開示されたオブジェクト制御装置では、弾オブジェクトを任意のタッチ位置で発生されることができるが、弾オブジェクトの形状は縦長の棒状に固定的に決定される。また、弾オブジェクトは、基本的には、画面下方から真上方向に移動するだけである。つまり、弾オブジェクトは、直線的に移動するだけである。したがって、弾オブジェクトの移動を簡単に予測することができるため、ゲームが単調になってしまう。このため、ゲームにすぐに飽きてしまう怖れがある。
【0004】
それゆえに、この発明の主たる目的は、新規な、オブジェクト制御プログラムおよびオブジェクト制御装置を提供することである。
【0005】
また、この発明の他の目的は、ゲームへの興味を増大させることができる、オブジェクト制御プログラムおよびオブジェクト制御装置を提供することができる。
【課題を解決するための手段】
【0006】
第1の発明は、オブジェクト制御プログラムであって、コンピュータを、入力検出手段、オブジェクト生成手段、およびオブジェクト移動手段として機能させる。入力検出手段は、プレイヤの操作入力を検出する。オブジェクト生成手段は、入力検出手段によって検出された操作入力に従って第1オブジェクトを生成する。そして、オブジェクト移動手段は、オブジェクト生成手段によって生成された第1オブジェクトを、入力検出手段によって検出された操作入力に基づく移動経路に従って移動させる。
【0007】
第1の発明によれば、プレイヤの操作入力に従ってオブジェクトが生成され、その操作入力に基づく移動経路に従ってオブジェクトが移動するので、簡単な操作で複雑な形状のオブジェクトを生成することができ、しかも複雑な移動経路に従ってオブジェクトを移動させることができる。つまり、戦略を立ててオブジェクトを生成する必要があるため、ゲームへの興味を増大することができる。
【0008】
第2の発明は、第1の発明に従属し、移動方向決定手段は、オブジェクト生成手段によって第1オブジェクトを生成する場合の入力検出手段によって検出された操作入力が示す軌跡に基づいて、当該第1オブジェクトが移動する際の移動方向を決定する。オブジェクト移動手段は、移動方向決定手段によって決定された移動方向を用いて決定される移動経路に従って第1オブジェクトを移動させる。
【0009】
第2の発明によれば、プレイヤの操作入力の軌跡によって第1オブジェクトが生成されるとともに、その軌跡に基づいて決定される移動方向を用いて移動経路が決定されるので、移動経路を考慮しながら第1オブジェクトを描画する必要がある。このように、オブジェクトを描画するだけでなく、その移動をも考慮するので、ゲームが単調になり難く、面白味を増大させることができる。
【0010】
第3の発明は、第1または第2の発明に従属し、プレイヤの操作入力は、表示手段の表示面の座標を指示する座標データである。オブジェクト生成手段は、複数の座標データが示す座標を時系列に従って線分で連結することにより、第1オブジェクトを生成する。つまり、プレイヤによって線画のオブジェクトが生成される。
【0011】
第3の発明によれば、線を引くだけでオブジェクトを生成できるので、複雑な形状のオブジェクトであっても、簡単な操作で生成することができる。
【0012】
第4の発明は、第3の発明に従属し、オブジェクト生成手段は、時間的に連続する座標間の距離に応じて線分の太さを変化させる。たとえば、時間的に連続する座標間の距離が短い場合には、線分の太さが太くされ、逆に、時間的に連続する座標間の距離が長い場合には、線分の太さが細くされる。ただし、太さを逆に設定してもよい。
【0013】
第4の発明によれば、プレイヤの操作の仕方によってオブジェクトを構成する線分の太さを変えるので、簡単な操作で複雑な形状のオブジェクトを生成することができる。
【0014】
第5の発明は、第3または第4の発明に従属し、オブジェクト制御プログラムは、時間的に連続する座標間の距離が一定距離未満である状態が継続するとき、現時点においてオブジェクト生成手段によって生成された第1オブジェクトの複製を、入力検出手段によって検出された現時点までの操作入力に基づく移動経路に従って移動させる複製移動手段としてコンピュータをさらに機能させる。
【0015】
第5の発明によれば、オブジェクトの生成途中で、現時点における当該オブジェクトの移動経路を知ることができるので、オブジェクトの生成を継続するか、終了するかなどを容易に決定することができる。
【0016】
第6の発明は、第1ないし第5の発明に従属し、オブジェクト移動制御手段は、所定の条件を満たすとき、第1オブジェクトの移動速度を変化させる。たとえば、特定の操作が実行されたり、特定のイベントが発生したりした場合に、第1オブジェクトの移動速度が速くされたり、遅くされたりする。
【0017】
第6の発明によれば、オブジェクトの移動速度を変化させるので、速度によって移動経路も変化される。つまり、オブジェクトの移動経路が予測し難いので、ゲームが単純または単調になり難い。
【0018】
第7の発明は、第6の発明に従属し、プレイヤの操作入力は、表示手段の表示面の座標を指示する座標データである。オブジェクト制御プログラムは、コンピュータを、条件判断手段としてさらに機能させる。条件判断手段は、所定の条件を満たすか否かを、複数の座標データが示す座標の変化に基づいて判断する。
【0019】
第7の発明によれば、プレイヤの操作入力による座標の変化で所定の条件を満たすか否かを判断するので、たとえば、第1オブジェクトを描画する際の操作入力に基づいて所定の条件を満たすか否かを判断することができる。
【0020】
第8の発明は、第1ないし第7の発明に従属し、仮想空間には、第1オブジェクトとは異なる第2オブジェクトが存在する。衝撃手段は、オブジェクト移動手段によって移動された第1オブジェクトが第2オブジェクトに当ったとき、少なくとも当該第2オブジェクトに衝撃を与える。
【0021】
第8の発明によれば、第1オブジェクトによって第2オブジェクトを攻撃するので、その攻撃の戦略を立てつつ第1オブジェクトを描画する必要があるため、仮想ゲームが単調でなく、面白い。
【0022】
第9の発明は、プレイヤの操作入力を検出する入力検出手段、入力検出手段によって検出された操作入力に従ってオブジェクトを生成するオブジェクト生成手段、およびオブジェクト生成手段によって生成されたオブジェクトを、入力検出手段によって検出された操作入力に基づく移動経路に従って移動させるオブジェクト移動手段を備える、オブジェクト制御装置である。
【0023】
第9の発明においても、第1の発明と同様に、ゲームへの興味を増大させることができる。
【発明の効果】
【0024】
この発明によれば、プレイヤの操作に従ったオブジェクトが生成され、当該オブジェクトがその操作の軌跡に基づいて移動されるので、簡単な操作で複雑な形状のオブジェクトを生成することができ、しかも複雑な経路に従ってオブジェクトを移動させることができる。つまり、移動経路を考慮しながらオブジェクトを生成するので、ゲームへの興味を増大させることができる。
【0025】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0026】
【図1】図1はこの発明のゲーム装置の外観構成の一実施例を示す図解図である。
【図2】図2は図1に示すゲーム装置を折り畳んだ状態の上面図および左側面図を示す図解図である。
【図3】図3は図1に示すゲーム装置の電気的な構成を示すブロック図である。
【図4】図4は図1に示すゲーム装置のLCDに表示されるゲーム画面の例を示す図解図である。
【図5】図5は描画オブジェクトの例および描画オブジェクトの軌跡に基づく方向ベクトルの生成方法を説明するための図解図である。
【図6】図6は図1に示すゲーム装置のLCDに表示されるゲーム画面の他の例の一部を示す図解図である。
【図7】図7は図3に示すメインメモリのメモリマップの例を示す図解図である。
【図8】図8は図7に示す太さデータに従う線の太さテーブルおよびオブジェクトデータに従うオブジェクトの情報の例を示す図解図である。
【図9】図9は図3に示すCPUのゲーム全体処理の一部を示すフロー図である。
【図10】図10は図3に示すCPUのゲーム全体処理の他の一部であって、図9に後続するフロー図である。
【図11】図11は図3に示すCPUのゲーム全体処理のその他の一部であって、図10に後続するフロー図である。
【図12】図12は図3に示すCPUの弾く速度の算出処理のフロー図である。
【図13】図13は他の実施例のCPUのゲーム全体処理の一部を示すフロー図である。
【図14】図14は他の実施例のCPUのゲーム全体処理の他の一部を示すフロー図である。
【発明を実施するための形態】
【0027】
図1を参照して、この発明の一実施例であるゲーム装置10は、上側ハウジング12および下側ハウジング14を含み、上側ハウジング12と下側ハウジング14とは、開閉可能(折り畳み可能)に連結されている。図1の例では、上側ハウジング12および下側ハウジング14は、それぞれ横長の長方形の板状に形成され、互いの長辺部分で回動可能に連結されている。つまり、この実施例のゲーム装置10は、折り畳み型の携帯ゲーム装置であり、図1には、当該ゲーム装置10を開いた状態(開状態)で示してある。ゲーム装置10は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
【0028】
通常、ユーザは、開状態でゲーム装置10を使用する。また、ユーザは、ゲーム装置10を使用しない場合には閉状態で保管する。ただし、ゲーム装置10は、上記閉状態および開状態のみでなく、上側ハウジング12と下側ハウジング14とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング12を下側ハウジング14に対して任意の角度で静止させることができる。
【0029】
なお、ゲーム装置10は、後述するカメラ(32,34)を搭載しており、当該カメラ(32,34)によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりする撮像装置としても機能する。
【0030】
図1に示すように、上側ハウジング12には第1LCD16が設けられ、下側ハウジング14には第2LCD18が設けられる。第1LCD16および第2LCD18は、横長形状であり、それぞれの長辺方向が上側ハウジング12および下側ハウジング14の長辺方向と一致するように配置される。たとえば、第1LCD16および第2LCD18の解像度は、256(横)×192(縦)画素(ドット)に設定される。
【0031】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。また、ゲーム装置10は、任意の解像度の表示装置を利用することができる。
【0032】
図1および図2に示すように、下側ハウジング14には、入力装置として、各操作ボタン20a−20kが設けられる。この各操作ボタン20a−20kのうち、方向入力ボタン20a、操作ボタン20b、操作ボタン20c、操作ボタン20d、操作ボタン20e、電源ボタン20f、スタートボタン20g、およびセレクトボタン20hは、下側ハウジング14の第2LCD18が設けられる側の面(内側の面)に配置される。具体的には、方向入力ボタン20aおよび電源ボタン20fは、第2LCD18の左側に配置され、操作ボタン20b−20e,20gおよび20hは、第2LCD18の右側に配置される。また、上側ハウジング12と下側ハウジング14とを折り畳んだときには、操作ボタン20a−20hはゲーム装置10の内部に収められる。
【0033】
方向入力ボタン(十字キー)20aは、ディジタルジョイスティックとして機能し、プレイヤオブジェクトの移動方向を指示したり、カーソルを移動させたりするなどに用いられる。各操作ボタン20b−20eは、プッシュボタンであり、たとえば、プレイヤオブジェクトに任意の動作をさせたり、決定やキャンセルを実行したりする等に用いられる。電源ボタン20fは、プッシュボタンであり、ゲーム装置10の主電源をオン/オフするために用いられる。スタートボタン20gは、プッシュボタンであり、ゲームを中断(ポーズ)したり、開始(再開)したりするために用いられる。セレクトボタン20hは、プッシュボタンであり、ゲームモードやメニューの選択等に用いられる。
【0034】
図1においては、操作ボタン20i−20kを省略したが、図2(A)に示すように、操作ボタン(Lボタン)20iは、下側ハウジング14の上側面の左端部に設けられ、操作ボタン(Rボタン)20jは、下側ハウジング14の上側面の右端部に設けられる。また、図2(B)に示すように、音量ボタン20kは、下側ハウジング14の左側面に設けられる。
【0035】
なお、図2(A)は、ゲーム装置10を折り畳んだ状態で、上面(上ハウジング12)側から見た図であり、図2(B)は、同じくゲーム装置10を折り畳んだ状態で、左側面から見た図である。
【0036】
Lボタン20iおよびRボタン20jは、プッシュボタンであり、操作ボタン20b−20eと同様の操作に用いたり、それらの操作ボタン20b−20eの補助的な操作に用いたりすることができる。また、この実施例では、Lボタン20iおよびRボタン20jは、撮影指示の操作(シャッター操作)を行うために用いることもできる。音量ボタン20kは、2つのプッシュボタンを用いて構成され、図示しない2つのスピーカ(右スピーカおよび左スピーカ)から出力される音の大きさを調整するために用いられる。この実施例では、音量ボタン20kには、2つの押圧部を含む操作部が設けられ、各押圧部に対応して上記のプッシュボタンが設けられる。したがって、一方の押圧部を押すと音量が大きくされ、他方の押圧部を押すと音量が小さくされる。たとえば、押圧部を押し続けると、音量が次第に大きくされたり、次第に小さくされたりする。
【0037】
図1に戻って、ゲーム装置10は、操作ボタン20a−20kとは別の入力装置として、さらにタッチパネル22を備えている。タッチパネル22は、第2LCD18の画面上を覆うように装着されている。この実施例では、タッチパネル22は、たとえば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル22は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、この実施例では、タッチパネル22として、たとえば第2LCD18の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル22の解像度と第2LCD18の解像度とが一致している必要はない。
【0038】
また、下側ハウジング14の右側面には、挿入口(図1に示す破線)が設けられている。挿入口は、タッチパネル22に対する操作を行うために用いられるタッチペン24を収納することができる。通常、タッチパネル22に対する入力は、タッチペン24を用いて行われるが、タッチペン24に限らずユーザの指でタッチパネル22を操作することも可能である。したがって、たとえば、タッチペン24を用いない場合には、タッチペン24の挿入口および収納部を設ける必要はない。
【0039】
また、下側ハウジング14の右側面には、メモリカード26を収納するための挿入口(図1では、二点鎖線で示している)が設けられている。この挿入口の内側には、ゲーム装置10とメモリカード26とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード26は、たとえばSDカードであり、コネクタに着脱自在に装着される。このメモリカード26は、たとえば、ゲーム装置10によって撮像された画像を記憶(保存)したり、他の装置で生成(撮像)ないし記憶された画像をゲーム装置10に読み込んだりするために用いられる。
【0040】
さらに、下側ハウジング14の上側面には、メモリカード28を収納するための挿入口(図1では、一点鎖線で示している)が設けられている。この挿入口の内側にも、ゲーム装置10とメモリカード28とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード28は、情報処理プログラムおよび必要なデータなどを記録した記録媒体であり、下側ハウジング14に設けられた挿入口に着脱自在に装着される。
【0041】
また、上側ハウジング12と下側ハウジング14との連結部(ヒンジ)の左端部分には、インジケータ30が設けられる。このインジケータ30は、3つのLED30a,30b,30cによって構成される。ここで、ゲーム装置10は、他の機器との間で無線通信を行うことが可能であり、第1LED30aは、無線通信が確立している場合に点灯する。第2LED30bは、ゲーム装置10の充電中に点灯する。第3LED30cは、ゲーム装置10の主電源がオンである場合に点灯する。したがって、インジケータ30(LED30a−30c)によって、ゲーム装置10の通信確立状況、充電状況、および主電源のオン/オフ状況をユーザに通知することができる。
【0042】
上述したように、上側ハウジング12には、第1LCD16が設けられる。この実施例では、第2LCD18を覆うように、タッチパネル22を設けているが、第1LCD16を覆うように、タッチパネル22を設けてもよい。または、第1LCD16および第2LCD18のそれぞれを覆うように、2つのタッチパネル22を設けるようにしてもよい。たとえば、第2LCD18には、各操作ボタン20a−20kやタッチパネル22の役割ないし操作方法をユーザに教えるための操作説明画面やゲーム画面が表示される。
【0043】
また、上側ハウジング12には、2つのカメラ(内側カメラ32および外側カメラ34)が設けられる。図1に示すように、内側カメラ32は、上側ハウジング12と下側ハウジング14との連結部付近であり、第1LCD16が設けられる側の面に、この第1LCD16の表示面とその撮影面とが平行または面一になるように取り付けられる。一方、外側カメラ34は、図2(A)に示すように、内側カメラ32が取り付けられる面とは反対側の面、すなわち、上側ハウジング12の外側の面(ゲーム装置10が閉状態となった場合に外側となる面であり、図1に示す上側ハウジング12の背面)に取り付けられる。ただし、図1においては、外側カメラ34を破線で示してある。
【0044】
したがって、内側カメラ32は、上側ハウジング12の内側の面が向く方向を撮像することが可能であり、外側カメラ34は、内側カメラ32の撮像方向の逆方向、すなわち、上側ハウジング12の外側の面が向く方向を撮像することが可能である。このように、この実施例では、内側カメラ32および外側カメラ34の撮像方向が互いに逆方向となるように、それら2つのカメラ32,34が設けられる。たとえば、ゲーム装置10を把持したユーザは、このゲーム装置10側からユーザの方を見た景色(たとえば、当該ユーザを含む)を内側カメラ32で撮像することができるとともに、ゲーム装置10側からユーザとは反対側の方向を見た景色や他のユーザを外側カメラ34で撮像することができる。
【0045】
なお、上記連結部付近の内側の面には、音声入力装置としてマイク84(図3参照)が収納されている。そして、上記連結部付近の内側の面には、マイク84がゲーム装置10外部の音を検知できるように、そのマイク84用の孔36が形成される。マイク84を収納する位置およびマイク84用の孔36の位置は必ずしも上記連結部である必要はなく、たとえば下側ハウジング14にマイク84を収納し、マイク84の収納位置に対応させて下側ハウジング14にマイク84用の孔36を設けるようにしてもよい。
【0046】
また、上側ハウジング12の外側の面には、外側カメラ34の近傍に第4LED38(図1では、破線で示す)が取り付けられる。第4LED38は、内側カメラ32または外側カメラ34によって撮影が行われた(シャッターボタンが押下された)時点で点灯する。また、内側カメラ32または外側カメラ34によって動画が撮影される場合には、第4LED38は、撮影の間点灯し続ける。つまり、第4LED38を点灯することによって、ゲーム装置10による撮影が行われた(行われている)ことを撮影対象者や周囲に通知することができる。
【0047】
また、上側ハウジング12には、第1LCD16の両側に、音抜き孔40が形成される。この音抜き孔40に対応する位置であり、上側ハウジング12の内部には、上述したスピーカが収納されている。音抜き孔40は、スピーカからの音をゲーム装置10の外部に放出するための孔である。
【0048】
以上に説明したように、上側ハウジング12には、画像を撮像するための構成である内側カメラ32および外側カメラ34と、主として、撮影された画像(撮影画像)およびゲーム画面を表示するための表示手段である第1LCD16とが設けられる。一方、下側ハウジング14には、ゲーム装置10に対する操作入力を行うための入力装置(操作ボタン20(20a−20k)およびタッチパネル22)と、主として、操作画面およびゲーム画面を表示するための表示手段である第2LCD18とが設けられる。したがって、ゲーム装置10は、2つの画面(16,18)および2系統の操作部(20,22)を備えている。
【0049】
図3は、この実施例のゲーム装置10の電気的な構成を示すブロック図である。図3に示すように、ゲーム装置10は、CPU50、メインメモリ52、メモリ制御回路54、保存用データメモリ56、プリセットデータ用メモリ58、メモリカードインターフェース(メモリカードI/F)60、メモリカードI/F62、無線通信モジュール64、ローカル通信モジュール66、リアルタイムクロック(RTC)68、電源回路70、およびインターフェース回路(I/F回路)72、第1GPU(Graphics Processing Unit)74、第2GPU76、第1VRAM(Video RAM)78、第2VRAM80、およびLCDコントローラ82等の電子部品を備えている。これらの電子部品(回路コンポーネント)は、電子回路基板上に実装されて、下側ハウジング14(または上側ハウジング12でもよい)内に収納される。
【0050】
CPU50は、所定のプログラムを実行するための情報処理手段である。この実施例では、所定のプログラムは、ゲーム装置10内のメモリ(たとえば保存用データメモリ56)やメモリカード26および/または28に記憶されており、CPU50は、当該所定のプログラムを実行することによって、後述する情報処理を実行する。
【0051】
なお、CPU50によって実行されるプログラムは、ゲーム装置10内のメモリに予め記憶していてもよいし、メモリカード26および/または28から取得してもよいし、他の機器と通信することによって当該他の機器から取得してもよい。
【0052】
CPU50には、メインメモリ52、メモリ制御回路54、およびプリセットデータ用メモリ58が接続される。また、メモリ制御回路54には、保存用データメモリ56が接続される。メインメモリ52は、CPU50のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ52は、上記情報処理に用いられる各種データを記憶(一時記憶)したり、外部(メモリカード26および28や他の機器等)から取得されるプログラムを記憶したりする。この実施例では、メインメモリ52として、たとえばPSRAM(Pseudo−SRAM)を用いる。保存用データメモリ56は、CPU50によって実行されるプログラムや内側カメラ32および外側カメラ34によって撮像された画像のデータ等を記憶(保存)するための記憶手段である。この保存用データメモリ56は、不揮発性の記憶媒体によって構成されており、たとえば、NAND型フラッシュメモリを用いることができる。メモリ制御回路54は、CPU50の指示に従って、保存用データメモリ56に対するデータの読み出しおよび書き込みを制御する。プリセットデータ用メモリ58は、ゲーム装置10において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ58としては、SPI(Serial Peripheral Interface)バスによってCPU50と接続されるフラッシュメモリを用いることができる。
【0053】
メモリカードI/F60および62は、それぞれCPU50に接続される。メモリカードI/F60は、コネクタに装着されたメモリカード26に対するデータの読み出しおよび書き込みを、CPU50の指示に応じて行う。また、メモリカードI/F62は、コネクタに装着されたメモリカード28に対するデータの読み出しおよび書き込みを、CPU50の指示に応じて行う。この実施例では、内側カメラ32および外側カメラ34によって撮像された画像に対応する画像データや他の装置から受信された画像データがメモリカード26に書き込まれたり、メモリカード26に記憶された画像データがメモリカード26から読み出されて保存用データメモリ56に記憶されたり、他の装置へ送信されたりする。また、メモリカード28に記憶された各種プログラムが、CPU50によって読み出されて実行されたりする。
【0054】
なお、ゲームプログラムなどの情報処理プログラムは、メモリカード28等の外部記憶媒体を通じてゲーム装置10に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置10に供給されてもよい。また、情報処理プログラムは、ゲーム装置10内部の不揮発性記憶装置に予め記録されていてもよい。さらに、情報処理プログラムを記憶する情報記憶媒体としては、上記不揮発性記憶装置に限らず、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
【0055】
無線通信モジュール64は、たとえばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール66は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール64およびローカル通信モジュール66は、CPU50に接続される。CPU50は、無線通信モジュール64を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール66を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【0056】
また、CPU50には、RTC68および電源回路70が接続される。RTC68は、時間をカウントしてCPU50に出力する。たとえば、CPU50は、RTC68によって計時された時間に基づいて、日付および現在時刻等を計算することもできる。電源回路70は、ゲーム装置10が有する電源(典型的には電池であり、下側ハウジング14に収納される)から供給される電力を制御し、ゲーム装置10の各回路コンポーネントに電力を供給する。
【0057】
また、ゲーム装置10は、マイク84およびアンプ86を備えている。マイク84およびアンプ86は、それぞれI/F回路72に接続される。マイク84は、ゲーム装置10に向かって発声ないし発生されたユーザの音声ないし音(拍手や手拍子など)を検知して、当該音声ないし音を示す音声信号をI/F回路72に出力する。アンプ86は、I/F回路72から与えられる音声信号を増幅してスピーカ(図示せず)に与える。I/F回路72は、CPU50に接続される。
【0058】
また、タッチパネル22は、I/F回路72に接続される。I/F回路72は、マイク84およびアンプ86(スピーカ)の制御を行う音声制御回路と、タッチパネル22の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル22からの信号に基づいて所定の形式のタッチ位置データを生成してCPU50に出力する。たとえば、タッチ位置データは、タッチパネル22の入力面に対して入力が行われた位置の座標を示すデータである。
【0059】
なお、タッチパネル制御回路は、タッチパネル22からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。CPU50は、I/F回路72を介して、タッチ位置データを取得することにより、タッチパネル22に対して入力が行われた位置を知ることができる。
【0060】
操作ボタン20は、上記の各操作ボタン20a−20kによって構成され、CPU50に接続される。操作ボタン20からCPU50へは、各操作ボタン20a−20kに対する入力状況(押下されたか否か)を示す操作データが出力される。CPU50は、操作ボタン20からの操作データを取得し、取得した操作データに応じた処理を実行する。
【0061】
内側カメラ32および外側カメラ34は、それぞれCPU50に接続される。内側カメラ32および外側カメラ34は、CPU50の指示に応じて画像を撮像し、撮像した画像に対応する画像データをCPU50に出力する。この実施例では、CPU50は、内側カメラ32および外側カメラ34のいずれか一方に対して撮像指示を行い、撮像指示を受けたカメラ(32,34)が画像を撮像して画像データをCPU50に送る。
【0062】
第1GPU74には、第1VRAM78が接続され、第2GPU76には、第2VRAM80が接続される。第1GPU74は、CPU50からの指示に応じて、メインメモリ52に記憶されている表示画像を生成するためのデータに基づいて第1の表示画像を生成し、第1VRAM78に描画する。第2GPU76は、同様にCPU50からの指示に応じて第2の表示画像を生成し、第2VRAM80に描画する。第1VRAM78および第2VRAM80は、LCDコントローラ82に接続されている。
【0063】
LCDコントローラ82は、レジスタ82aを含む。レジスタ82aは、CPU50からの指示に応じて、「0」または「1」の値を記憶する。LCDコントローラ82は、レジスタ82aの値が「0」である場合には、第1VRAM78に描画された第1の表示画像を第2LCD18に出力し、第2VRAM80に描画された第2の表示画像を第1LCD16に出力する。また、レジスタ82aの値が「1」である場合には、第1VRAM78に描画された第1の表示画像を第1LCD16に出力し、第2VRAM80に描画された第2の表示画像を第2LCD18に出力する。
【0064】
図4は、この実施例の仮想ゲームをプレイする場合のゲーム画面100の一例を示す。ゲーム画面100は、上画面110および下画面120によって構成される。図4からも分かるように、上画面110が第1LCD16に表示され、下画面120が第2LCD18に表示される。ゲーム画面100は、図示は省略するが、2次元ないし3次元の仮想空間を仮想カメラで撮影した画像である。また、仮想空間は、たとえば、上画面110および下画面120の表示領域よりも広い範囲に設定されており、後述するオブジェクト(112、114、116、122)は、この仮想空間内に存在(移動)する。
【0065】
なお、図4に示すゲーム画面100では、簡単のため、背景を省略してある。
【0066】
上画面110には、雲を模した敵のオブジェクト(敵オブジェクト)112および敵オブジェクト114が表示される。下画面120には、プレイヤがタッチペン24を用いて描画(生成)したオブジェクト(描画オブジェクト)122が表示される。
【0067】
図面では分かり難いが、この実施例の仮想ゲームでは、プレイヤのタッチ操作によって生成された描画オブジェクト122が、そのタッチ操作の軌跡に基づく移動経路に従って移動される。描画オブジェクト122が敵オブジェクト112、114に当たると、当該敵オブジェクト112、114にダメージ(攻撃力)を与えることができる。また、描画オブジェクト122によって与えられるダメージが、敵オブジェクト112、114のライフ(耐久力)を超えると、当該敵オブジェクト112、114は消滅される。図示は省略するが、この実施例では、描画オブジェクト122と同じ或いは略同じ形状(大きさ)の当り判定のポリゴンが設定される。ただし、当り判定のポリゴンは無色透明である。
【0068】
また、描画オブジェクト122と敵オブジェクト112、114とが最初に当ったことが判定されたとき、その当った部分が描画オブジェクト122の先端部分(図4の点線で囲む部分)である場合にのみ、敵オブジェクト112、114にダメージを与えるようにしてある。これは、描画オブジェクト122のどの部分が最初に当っても良いことにすると、敵オブジェクト112、114を容易に攻撃できてしまうからである。たとえば、先端部分は、描画オブジェクト122を描画する際の描画開始位置を含み、これに連続する所定の長さ(5〜10ドットの長さ)分である。
【0069】
なお、この実施例では、描画オブジェクト122の先端部分から敵オブジェクト112、114などに当った場合にのみ、当該敵オブジェクト112、114にダメージを与えるようにしてあるが、これに限定される必要はない。描画オブジェクト122がどの部分から敵オブジェクト112、114に当っても、当該敵オブジェクト112、114にダメージを与えるようにしてもよい。たとえば、これらをゲームレベルに応じて使い分けてもよい。
【0070】
たとえば、すべての敵オブジェクト112、114を制限時間(または制限攻撃回数)以内で消滅させることに成功すると、ゲームクリアとなる。一方、すべての敵オブジェクト112、114を消滅させる前に、制限時間(または制限攻撃回数)を超えてしまうと、ゲームオーバとなる。
【0071】
ここで、描画オブジェクト122の生成方法および移動制御について説明する。たとえば、プレイヤが、タッチペン24を用いてタッチ操作を開始すると、つまりタッチオフの状態からタッチオンの状態に変化すると、タッチパネル22で検出される座標データのサンプリングが開始される。ただし、単なる手振れを排除するために、前回検出された座標データが示す座標からの距離d1が一定距離L1(たとえば、3ドット)以下である場合には、今回の座標データはサンプリングされない。
【0072】
サンプリングは、タッチ操作が終了するまで、つまりタッチオンの状態からタッチオフの状態になるまで継続される。また、座標データのサンプリングに並行して、描画オブジェクト122が生成(描画)される。具体的には、時間的に連続する2つの座標が線(線分)で連結される。ただし、時間的に連続する2つの座標間の距離d1によって、その2つの座標間を連結する線(線分)の太さが可変的に設定される。2つの座標間の距離dは、数1に従って算出される。ただし、一方の座標を(x1,y1)とし、他方の座標を(x2,y2)とする。以下、座標間の距離dを算出する場合について同じである。
【0073】
[数1]
d=√{(x1−x2)2+(y1−y2)2}
この実施例では、距離d1が短い場合(3ドット以上8ドット未満)には、線の太さが太い(5ドット)に設定される。また、距離が普通(中程度)の場合(8ドット以上12ドット未満)には、線の太さが普通(3ドット)に設定される。さらに、距離d1が長い場合(12ドット以上)には、線の太さが細い(1ドット)に設定される。また、線の太さによって、敵オブジェクト112、114に与えるダメージ(攻撃力)の大きさが異なる。この実施例では、線が太い程、敵オブジェクト112、114に与えるダメージが大きい。
【0074】
なお、この実施例では、距離d1が短い程、線の太さを太くし、ダメージを大きくするようにしてあるが、逆にしてもよい。つまり、距離d1が短い程、線の太さを細くし、ダメージを小さくするようにしてもよい。
【0075】
このようにして、タッチ操作が無くなるまで、座標データのサンプリングおよび描画オブジェクト122の生成が行われる。ただし、サンプリングされた座標データの総数が最大値(たとえば、200)に達すると、強制的に、描画オブジェクト122の生成が終了される。
【0076】
描画オブジェクト122の生成を終了すると、描画オブジェクト122は移動を開始する。この実施例では、描画オブジェクト122は、自身の軌跡に基づく移動経路に従って移動する。ただし、描画オブジェクト122を構成するすべての座標を用いて、移動経路を決定すると、処理が膨大になってしまうため、この実施例では、一部の座標を用いて移動経路を決定する。このため、描画開始位置の座標から順に検索して、直前の座標との距離d2が一定距離L2(たとえば、10ドット)以下の座標を除去するようにしてある。つまり、直前の座標と距離d2が一定距離L2を超える座標のみが抽出されるのである。そして、抽出された複数の座標に基づいて、描画オブジェクト122を移動させる方向を決定するベクトル(方向ベクトル)が算出される。ただし、この実施例では、下画面120に描画した描画オブジェクト122によって上画面110に存在する敵オブジェクト112、114を攻撃するため、描画オブジェクト122の軌跡に基づく移動経路をその描画オブジェクト122の末尾から描画するように、描画オブジェクト122の方向ベクトルが順次決定される。
【0077】
具体的には、描画開始位置の座標から描画終了位置の座標までにおいて、n個の座標が抽出された場合に、方向ベクトルVhは数2に従って算出される。
【0078】
[数2]
Vh=座標n−2−座標n
ただし、n番目の座標nを始点とし、n−2番目の座標n−2を終点とする方向ベクトルVhは、nを1減算する毎に算出される。したがって、たとえば、図5(A)に示すような描画オブジェクト122について、点P1から点P9までの座標n(n=1、2、…、9)が抽出された場合には、図5(B)に示すような7つの方向ベクトルV1−V7が得られる。具体的には、1番目の方向ベクトルV1は、点P9を始点とし、点P7を終点とする。2番目の方向ベクトルV2は、点P8を始点とし、点P6を終点とする。3画番目の方向ベクトルV3は、点P7を始点とし、点P5を終点とする。同様にして、7番目(最後)のベクトルV7まで数2に従って算出されるのである。
【0079】
なお、方向ベクトルVhはその方向のみが用いられるため、各ベクトルを自身の大きさで割ることにより、大きさが1の単位ベクトルで表してもよい。
【0080】
この実施例では、描画オブジェクト122は、決定した方向ベクトルVhが示す方向に、それぞれ、一定の移動速度A(数3参照)で所定フレーム(この実施例では、3フレーム)分移動する。ただし、フレームは画面更新単位時間(1/60秒)である。移動中に、描画オブジェクト122がゲーム画面100(第1LCD16および第2LCD18)の外に出てしまった場合には、描画オブジェクト122の移動は終了される。しかし、描画オブジェクト122の一部でもゲーム画面100に表示されている場合には、移動を継続し、最後の方向ベクトルVhに従う移動が終了した後は、ゲーム画面100の外に出るまで、最後の方向ベクトルVhの方向に移動し続ける。
【0081】
[数3]
移動速度A=基準速度A0+弾き速度α
ただし、基準速度A0は、プログラマないし開発者によって予め設定された速度であり、経験的に得られた数値に設定される。また、弾き速度αは、数4で与えられる。
【0082】
[数4]
弾き速度α=最大距離dmax×定数C
ただし、定数Cは、試験等によって経験的に得られた数値に設定される。
【0083】
ここで、弾き速度αについて説明する。この実施例では、上述したように、描画オブジェクト122を生成するが、描画オブジェクト122の生成(描画)を終了するときに、プレイヤがタッチペン24によってタッチパネル22を弾くように、タッチオフすると、それによって、移動速度Aが速くされる。
【0084】
したがって、この実施例では、タッチ操作が終了されると、弾き操作があった否かを検出して、弾き操作があった場合には、それに応じた弾き速度αを数4に従って算出して、移動速度Aに反映するようにしてある。ただし、弾き操作が無いと判断された場合には、弾き速度α=0となる。
【0085】
具体的には、サンプリングされた座標データが示す座標を末尾から時間的に前に順次検出し、直前の座標との間の距離d3を順次算出する。また、距離d3が一定距離L3(3ドット)以下であるかどうかを判断し、距離d3が一定距離L3以下となる場合の座標(点)を弾く操作の開始位置とみなす。そして、弾く操作の開始位置から描画オブジェクト122の末尾の点(描画終了位置)までの間において、最大の距離d3(最大距離dmax)を抽出し、数4に従って弾き速度αを算出する。また、このとき、弾く操作の開始位置から末尾までの座標に対応する座標データが排除される。これは、弾く操作は、描画オブジェクト122を描画(生成)するための操作とは別個の操作と考えているためである。したがって、弾く方向は描画オブジェクト122の移動方向に影響を与えない。
【0086】
また、弾き操作によって弾き速度αが加算されると、描画オブジェクト122が1フレームの間に移動する距離が長くなる。したがって、弾き操作が有る場合は、弾き操作が無い場合の移動経路を少し拡大した移動経路に従って描画オブジェクト122が移動されることになる。
【0087】
なお、詳細な説明は省略するが、弾き操作は描画オブジェクト122の描画を終了するときに実行されるため、サンプリングされた座標のうちの末尾の点の座標から時間的に前の所定数(たとえば、20)の点の座標までを用いて弾き操作の有無が検出され、弾き操作が有る場合に、弾き速度αが算出される。
【0088】
たとえば、図6に示すように、他のゲーム画面100では、上画面110に表示される敵オブジェクト112、114を防護するように、複数のブロックオブジェクト116が配置される。上述したように、描画オブジェクト122の先端部分が敵オブジェクト112、114に当たらなければ、敵オブジェクト112、114にダメージを与えることができない。したがって、敵オブジェクト112にダメージを与えたい場合には、たとえば、縦長の棒状の描画オブジェクト122を生成し、2つのブロックオブジェクト116の間から敵オブジェクト112を攻撃する必要がある。また、敵オブジェクト114にダメージを与えたい場合には、たとえば、不等号(<,>)記号のような描画オブジェクト122を生成し、横方向から敵オブジェクト114を攻撃する必要がある。したがって、プレイヤは、敵オブジェクト112、114を攻撃する際の描画オブジェクト122の移動経路を計算しながら、当該描画オブジェクト122を生成するのである。
【0089】
なお、ブロックオブジェクト116は、描画オブジェクト122が当ることによって消滅するようにしてもよいし、消滅しないようにしてもよい。いずれの場合であっても、上述したように、制限時間(制限攻撃回数)以内に、すべての敵オブジェクト112、114を倒さなければゲームクリアとならない。また、図示は省略するが、敵オブジェクト112、114は、コンピュータ(CPU50)の制御によって、ゲーム画面100(ゲーム空間)内で移動することもある。
【0090】
図7は図3に示したメインメモリ52のメモリマップ520の例を示す図解図である。図3に示すように、メインメモリ52は、プログラム記憶領域522およびデータ記憶領域524を含む。プログラム記憶領域522は、情報処理プログラムとしてのゲームプログラムを記憶し、ゲームプログラムは、メイン処理プログラム522a、画像生成プログラム522b、画像表示プログラム522c、オブジェクト描画プログラム522d、弾き速度算出プログラム522e、オブジェクト移動プログラム522fおよび当り判定プログラム522gなどによって構成される。
【0091】
メイン処理プログラム522aは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム522bは、画像データ524bやオブジェクトデータ524dを用いて、第1LCD16および第2LCD18にゲーム画面(100など)を表示するためのゲーム画像データを生成するためのプログラムである。画像表示プログラム522cは、画像生成プログラム522bに従って生成されたゲーム画像データを、ゲーム画面(100など)として第1LCD16および第2LCD18に表示するためのプログラムである。
【0092】
オブジェクト描画プログラム522dは、プレイヤのタッチ操作に従って入力される座標データに基づいて生成されたオブジェクトデータ524dに従って描画オブジェクト122の画像データを生成する。つまり、オブジェクト描画プログラム522dは、座標データがサンプリングされる度に、今回の座標データが示す座標と直前の座標データが示す座標とを、それらの2つの座標間の距離d1に応じた太さの線分で結ぶ。
【0093】
弾き速度算出プログラム522eは、オブジェクトデータ524の末尾の座標データから一定数の座標データを用いて、弾き操作の有無を検出するとともに、弾き操作が有る場合に、最大距離dmaxに基づいて、弾き速度αを算出するためのプログラムである。
【0094】
オブジェクト移動プログラム522fは、描画オブジェクト122をゲーム画面100(ゲーム空間)において移動させるためのプログラムである。具体的には、オブジェクト移動プログラム522fは、オブジェクトデータ524dを参照して、上述したように、描画開始位置から描画終了位置までのすべての座標から、直前の座標との距離d2が一定距離L2(10ドット)を超える座標のみを抽出し、方向ベクトルVh(オブジェクト移動方向データ524f)を算出する。また、オブジェクト移動プログラム522fは、弾き速度算出プログラム522eに従って算出された弾き速度αを用いて、描画オブジェクト122の移動速度A(オブジェクト移動速度データ524g)を数3に従って算出する。そして、オブジェクト移動プログラム522fは、算出した方向ベクトルVhと、算出した移動速度Aとに従って描画オブジェクト122を移動させる。
【0095】
当り判定プログラム522gは、敵オブジェクト112、114やブロックオブジェクト116と、描画オブジェクト122との当りを判定する。ただし、上述したように、最初に、描画オブジェクト122の先端部分が、敵オブジェクト112、114に当った場合にのみ、当該敵オブジェクト112、114にダメージを与えることができる。
【0096】
なお、図示は省略するが、プログラム記憶領域522には、音出力プログラムやバックアッププログラムも記憶される。音出力プログラムは、ゲームオブジェクトの音声(擬声音)、効果音、音楽のような、ゲームに必要な音を出力するためのプログラムである。バックアッププログラムは、ゲームイベントやプレイヤの指示に従って、ゲームデータ(途中データや結果データ)をメモリカード26や保存用データメモリ56に保存(セーブ)するためのプログラムである。
【0097】
データ記憶領域524には、入力データバッファ524aが設けられる。この入力データバッファ524aは、操作ボタン20からの操作データおよびタッチパネル22からの座標データを時系列に従って記憶(一時記憶)するために設けられる。
【0098】
また、データ記憶領域524には、画像データ524b、太さデータ524c、オブジェクトデータ524d、当り判定データ524e、オブジェクト移動方向データ524f、オブジェクト移動速度データ524gが記憶される。
【0099】
画像データ524bは、ゲーム画像データを生成するためのポリゴンデータやテクスチャデータなどのデータである。太さデータ524cは、描画オブジェクト122の線(線分)の太さを決定するためのテーブルデータある。図8(A)には、太さデータ524cに従う線の太さテーブルが示される。具体的には、線の太さに対応して、ドット数およびダメージ(攻撃力)が記載される。この実施例では、3種類の太さ(細い、普通、太い)の各々に対応して、ドット数(1、3、5)が記載されるとともに、敵オブジェクト112、114に与えるダメージの数値(敵オブジェクトの耐久力を減算する数値)が記載される。ただし、これは一例であり、限定される必要はない。太さは2種類以上であれば、4種類以上に分類されてもよい。
【0100】
図7に戻って、オブジェクトデータ524dは、描画オブジェクト122についての情報を示すデータであり、プレイヤのタッチ操作による座標データをサンプリングするとともに、座標間の距離d1に応じてそれらを連結する線(線分)の太さを判別することによって生成される。図8(B)に示すように、オブジェクトデータ524dに従うオブジェクトの情報は、サンプル数に対応して、サンプリングした座標および線の太さが記載される。
【0101】
サンプル数は、座標データをサンプリングした順番に従って付されるシリアルな番号である。座標は、サンプリングされた座標データが示す座標(XY座標)である。ただし、詳細な説明は省略するが、第2LCD18の解像度とタッチパネル22の検出精度とは同じに設定され、また、これらの座標系は同じに設定される。したがって、タッチパネル22によって検出された座標データに従う座標は、そのまま第2LCD18上の座標として使用することができる。
【0102】
ただし、この実施例では、第2LCD18およびタッチパネル22の横方向がX軸方向であり、縦方向がY軸方向である。図1において、第2LCD18およびタッチパネル22の座標系における原点Oは、第2LCD18およびタッチパネル22の左頂点に設定され、X軸のプラス方向は図1における右方向であり、Y軸のプラス方向は図1における下方向である。
【0103】
また、太さは、上述したように、今回サンプリングされた座標データが示す座標と、直前にサンプリングされた座標データが示す座標との距離に応じて決定される。この太さに応じた線の太さ(ドット数)が図8(A)に示した線の太さテーブルから取得される。ただし、最初(サンプル数=1)の座標では、直前の座標が存在しないため、太さは判別されていない。
【0104】
図7に戻って、当り判定データ524eは、描画オブジェクト122が生成された際に、当該描画オブジェクト122と同じ或いは略同じ形状(大きさ)の透明のポリゴンで構成されるデータである。したがって、描画オブジェクト122が移動すると、これに従って当り判定のポリゴンも移動する。
【0105】
オブジェクト移動方向データ524fは、オブジェクト移動プログラム522fに従って生成されるベクトルVhについてのデータである。オブジェクト移動速度データ524gは、オブジェクト移動プログラム522fに従って算出される移動速度Aについてのデータである。
【0106】
なお、図示は省略するが、データ記憶領域524には、ゲームに必要な音を生成するための音(音楽)データが記憶されたり、ゲーム処理に必要なカウタン(タイマ)やフラグなどが設けられたりする。
【0107】
図9ないし図11は、図3に示したCPU50のゲーム全体処理を示すフロー図である。図9に示すように、CPU50は、ゲーム全体処理を開始すると、ステップS1で、ゲーム画面を表示する。図示は省略するが、ここでは、CPU50は、敵オブジェクト112、114および背景画像が描画されたゲーム画面を生成および表示する。つまり、描画オブジェクト122の存在しないゲーム画面が表示される。ただし、ブロックオブジェクト116が描画される場合もある。
【0108】
なお、図示は省略するが、ゲームが開始されたときに、制限時間をカウントするためのタイマがスタートされる。ただし、攻撃回数を制限する場合には、攻撃回数をカウントするカウンタがリセットされる。
【0109】
次のステップS3では、描画開始かどうかを判断する。つまり、CPU50は、タッチオフの状態からタッチオンの状態に変化したかどうかを判断する。具体的には、CPU50は、入力データバッファ524aに座標データが入力されたかどうかを判断する。ステップS3で“NO”であれば、つまり描画開始でなければ、そのまま同じステップS3に戻る。一方、ステップS3で“YES”であれば、つまり描画開始であれば、ステップS5でサンプリングを開始する。ここでは、CPU50は、最初に入力された座標データを描画開始位置の座標データとしてデータ記憶領域524に記憶する。つまり、オブジェクトデータ524d(オブジェクトの情報)の生成が開始されるのである。
【0110】
続くステップS7では、距離d1が一定距離L1(3ドット)以上であるかどうかを判断する。ここでは、CPU50は、入力データバッファ524aに時系列に従って記憶された座標データを順次参照し、直前にサンプリングした座標データが示す座標と現在参照している座標データが示す座標との距離d1を数1に従って算出し、当該距離d1が一定距離L1以上であるかどうかを判断する。
【0111】
ステップS7で“NO”であれば、つまり距離d1が一定距離L1以上でなければ、そのまま同じステップS7に戻る。つまり、距離d1が一定距離L1未満についての座標データをサンプリングしないことにより、単なる手振れによる座標データを排除しているのである。つまり、不要なデータによってメモリが圧迫されるのを回避してある。一方、ステップS7で“YES”であれば、つまり一定距離L1以上移動すれば、ステップS9で、現在参照している座標データをサンプリングする。つまり、CPU50は、現在参照している座標データをオブジェクトデータ524dに追加する。そして、ステップS11で、2つの座標間をその距離d1に応じた太さの線分で連結する。ここでは、CPU50は、今回サンプリングした座標と直前にサンプリングした座標とを、それらの座標間の距離d1に応じて太さテーブルで決定される太さ(ドット数)の線分で連結するのである。
【0112】
続いて、ステップS13では、描画を終了したかどうかを判断する。ここでは、CPU50は、タッチオンの状態からタッチオフの状態に変化したかどうかを判断する。具体的には、CPU50は、入力データバッファ524aへの座標データの入力が無くなったかどうかを判断するのである。ステップS13で“NO”であれば、つまり描画を終了していなければ、ステップS15で、座標データのサンプル数が最大数(200)を超えたかどうかを判断する。
【0113】
ステップS15で“YES”であれは、つまり座標データのサンプル数が最大数を超えれば、そのままステップS19に進む。図示は省略するが、ステップS15で“YES”の場合には、弾く速度αが0に設定された後に、ステップS19に進む。一方、ステップS15で“NO”であれば、つまり座標データのサンプル数が最大数を超えていなければ、そのままステップS7に戻る。
【0114】
また、ステップS13で“YES”であれば、つまり描画終了であれば、ステップS17で、後述する弾く速度の算出処理(図12参照)を実行して、ステップS19に進む。ステップS19では、移動速度Aを数3に従って算出する。
【0115】
続いて、ステップS21では、直前の座標との距離d2が一定距離L2(10ドット)以下の座標を除去する。つまり、CPU50は、オブジェクトデータ524dが示すオブジェクトの情報から方向ベクトルVhを生成するための座標を抽出しているのである。次のステップS23では、変数nに座標の総数を設定する。ここでは、CPU50は、ステップS21の処理によって除去されなかった座標の総数を設定するのである。
【0116】
図10に示すように、次のステップS25では、方向ベクトルVhを算出する。上述したように、Vhは数2に従って算出される。続くステップS27では、変数kに初期値を設定する(k=3)。この実施例では、方向ベクトルVhが示す方向に、描画オブジェクト122を、3フレーム分移動させるため、そのフレーム数をカウントするために変数kが設けられる。
【0117】
次のステップS29では、1フレーム分描画オブジェクト122を移動させる。ここでは、ステップS25で算出された方向ベクトルVhに、ステップS19で算出された移動速度Aによって決定される1フレーム分の移動距離だけ、描画オブジェクト122が移動される。そして、ステップS31で、移動後の位置において、敵オブジェクト112、114と描画オブジェクト122との当りが判定される。
【0118】
なお、当りの判定方法は、本願発明の本質的な内容ではなく、しかも既に周知であるため、詳細な説明は省略することにする。
【0119】
続いて、ステップS33では、敵に当ったかどうかを判断する。ステップS33で“NO”であれば、つまり敵に当っていない場合には、ステップS41に進む。一方、ステップS33で“YES”であれば、つまり敵に当った場合には、ステップS35で、その敵オブジェクト112、114の耐久力を、描画オブジェクト122の先端部分の太さに応じたダメージだけ減算する。図示は省略するが、このとき描画オブジェクト122によるダメージが、敵オブジェクト112、114の耐久力を上回る場合には、当該敵オブジェクト112、114はゲーム画面100(ゲーム空間)から消滅される。
【0120】
なお、図示は省略するが、上述したように、描画オブジェクト122の先端部分から敵オブジェクト112、114に当った場合にのみ、当該敵オブジェクト112、114にダメージを与えるようにしてあるため、描画オブジェクト122の先端部分以外の部分から敵オブジェクト112、114に当った場合には、敵オブジェクト112、114にダメージを与えずに、ステップS41に進む。
【0121】
また、図示は省略するが、描画オブジェクト122の先端部分からブロックオブジェクト116に当った場合には、当該ブロックオブジェクト116が消滅されることもある。
【0122】
そして、ステップS37で、すべての敵が消滅したかどうかを判断する。つまり、CPU50は、ゲーム画面100(ゲーム空間)において、すべての敵オブジェクト112、114が消滅したかどうかを判断する。ステップS37で“NO”であれば、つまりゲーム画面100(ゲーム空間)に、少なくとも1つの敵オブジェクト112、114が存在する場合には、ステップS41に進む。一方、ステップS37で“YES”であれば、つまりゲーム画面100(ゲーム空間)において、すべての敵オブジェクト112、114が消滅すれば、ステップS39で、ゲームクリア処理を実行して、ゲーム全体処理を終了する。たとえば、ステップS39では、ゲームをクリアしたことを表現するゲーム画面が表示されたり、ゲームをクリアしたことを表現する効果音や音楽が出力されたりする。
【0123】
ステップS41では、制限時間(たとえば、60秒)を超えたかどうかを判断する。つまり、CPU50は、ゲーム開始からの時間が制限時間を超えたかどうかを判断するのである。ただし、攻撃回数を制限する場合には、ここで、攻撃制限回数を超えたかどうかが判断される。また、攻撃回数は、後述するように、ステップS53の処理を終えて、ステップS3に戻る際に、1加算される。さらに、ゲーム開始からの時間と攻撃回数との両方に制限を設けて、いずれか一方でも制限を超える場合には、ゲームオーバとなるようにしてもよい。
【0124】
ステップS41で“NO”であれば、つまり制限時間を超えていなければ、図11に示すステップS45に進む。一方、ステップS41で“YES”であれば、つまり制限時間を超えていれば、ステップS43で、ゲームオーバ処理を実行して、ゲーム全体処理を終了する。たとえば、ステップSS43では、ゲームオーバになったことを表現するゲーム画面が表示されたり、ゲームオーバになったことを表現する効果音や音楽が出力されたりする。
【0125】
図11に示すように、ステップS45では、変数kを1減算し(k=k−1)、ステップS47では、変数kが0(k=0)であるかどうかを判断する。つまり、CPU50は、方向ベクトルVhの方向に、3フレーム分描画オブジェクト122を移動させたかどうかを判断するのである。
【0126】
ステップS47で“NO”であれば、つまり変数kが0でなければ、図10に示したステップS29に戻る。一方、ステップS47で“YES”であれば、つまり変数kが0であれば、ステップS49で、変数nを1減算して(n=n−1)、ステップS51で、変数nが1である(n=1)かどうかを判断する。つまり、CPU50は、方向ベクトルVhに従う描画オブジェクト122の移動を終了したかどうかを判断する。ステップS51で“NO”であれば、つまり変数nが1でなければ、ステップS25に戻って、次の方向ベクトルVhを算出する。一方、ステップS51で“YES”であれば、つまり変数nが1であれば、ステップS53で、ゲーム画面100外に出るまで、描画オブジェクト122を移動させる。ただし、ステップS53では、描画オブジェクト122は、最後に算出された方向ベクトルVhの方向に、移動速度Aで移動される。
【0127】
なお、図示は省略したが、ステップS29で、描画オブジェクト122を移動させた場合に、描画オブジェクト122のすべてがゲーム画面100外に出てしまった場合には、描画オブジェクト122をすべての方向ベクトルVhに従って移動させていない場合であっても、描画オブジェクト122を消滅させて、ステップS3に戻る。
【0128】
図12は、図9に示したステップS17の弾く速度の算出処理のフロー図である。図12に示すように、CPU50は、弾く速度の算出処理を開始すると、ステップS71で、変数pに座標総数を設定する。ここでは、CPU50は、オブジェクトデータ524dに含まれる座標の総数mを変数pに設定するのである。次にステップS73で、p番目の座標とp−1番目の座標との距離d3を算出し、ステップS75で、ステップS73で算出した距離d3をメインメモリ52の作業領域(図示せず)に記憶(一時記憶)する。
【0129】
続いて、ステップS77では、距離d3が一定距離L3(この実施例では、3ドット)以下であるかどうかを判断する。ステップS77で“NO”であれば、つまり距離d3が一定距離L3を超えている場合には、ステップS79で、変数pを1減算し(p=p−1)、ステップS81で、変数pが座標総数−20になったかどうかを判断する。つまり、サンプリングしたすべての座標のうち、末尾の座標から20サンプル分の座標について、弾く操作の有無の判断処理を終了したかどうかを判断する。
【0130】
ステップS81で“NO”であれば、つまり変数pが座標総数−20でなければ、そのままステップS73に戻る。一方、ステップS81で“YES”であれば、つまり変数pが座標総数−20であれば、弾く操作が無いと判断して、ステップS83で、弾く速度αに0を設定して、ゲーム全体処理にリターンする。
【0131】
また、ステップS77で“YES”であれば、つまり距離d3が一定距離L3以下であれば、ステップS85で、p番目の座標を弾く操作の開始位置とみなす。続くステップS87では、弾く操作の開始位置と末尾の座標との間で、最大距離dmaxを取得する。つまり、CPU50は、メインメモリ52の作業領域に記憶した複数の距離d3のうちの最大値を取得する。
【0132】
次のステップS89では、最大距離dmaxを用いて、数4に従って弾く速度αを算出する。そして、ステップS91で、弾く操作の開始位置から末尾の座標までの座標をオブジェクトデータ524dから削除して、ゲーム全体処理にリターンする。
【0133】
この実施例によれば、プレイヤのタッチ操作に従って描画オブジェクトが生成され、生成された描画オブジェクトがそのタッチ操作の軌跡に基づいて決定される経路に従って移動されるので、簡単な操作で複雑なオブジェクトを生成し、当該オブジェクトを複雑な経路に従って移動させることができる。したがって、戦略を立てて描画オブジェクトを生成する必要があるため、ゲームへの興味を増大させることができる。
【0134】
他の実施例のゲーム装置10は、描画オブジェクト122を描画(生成)している間に、一定時間以上、タッチ位置の座標が変化しない場合には、現時点までに生成された描画オブジェクト122の複製を、その軌跡に基づく移動経路に従って移動させるようにした以外は、上述の実施例と同じであるため、重複した記載については省略することにする。
【0135】
図示は省略するが、たとえば、描画オブジェクト122の複製は、当該描画オブジェクト122を半透明で表したオブジェクト(複製オブジェクト)である。この複製オブジェクトは、現時点において、描画オブジェクト122がどのように移動するかを、つまり描画オブジェクトの移動経路を、プレイヤに教示するためのものである。したがって、複製オブジェクトについては、敵オブジェクト112、114やブロックオブジェクト116との当りを判定する必要はないため、当り判定のポリゴンは設定されない。
【0136】
また、複製オブジェクトは、タッチ位置の座標が一定時間以上変化しない場合に、移動を開始するため、弾き操作による速度の増加は無い。
【0137】
具体的には、図9−図11に示したゲーム全体処理に、図13および図14に示す複製オブジェクトの移動処理が追加される。なお、複製オブジェクトの移動処理は、描画オブジェクト122の移動処理と略同じであるため、同じ処理については簡単に説明することにする。
【0138】
図13に示すように、ステップS7で“NO”であれば、つまり一定距離L1以上移動していなければ、ステップS101で、停止カウンタがカウント中であるかどうかを判断する。停止カウンタは、タッチ位置が停止している時間をカウントするためのカウンタ(タイマ)であり、図示は省略するが、メインメモリ52のデータ記憶領域524に設定される。ステップS101で“YES”であれば、つまり停止カウンタがカウント中であれば、そのままステップS105に進む。一方、ステップS101で“NO”であれば、つまり停止カウンタがカウント中でなければ、ステップS103で、停止カウンタのカウントを開始して、ステップS105に進む。ただし、ステップS103では、停止カウンタがリセットおよびスタートされる。
【0139】
ステップS105では、停止時間が一定時間(たとえば、3秒)を超えたかどうかを判断する。つまり、CPU50は、停止カウンタのカウント値が一定時間を超えたかどうかを判断するのである。ステップS105で“NO”であれば、つまり停止時間が一定時間以下であれば、そのままステップS7に戻る。一方、ステップS105で“YES”であれば、つまり停止時間が一定時間を超えれば、ステップS107で、停止カウンタのカウント停止を指示して、図14に示すステップS109に進む。
【0140】
なお、図示は省略するが、ステップS7で“YES”と判断された場合にも、停止カウンタのカウントが停止される。
【0141】
図14に示すように、ステップS109では、直前の座標との距離が一定距離L2以下の座標を除去する。次のステップS111では、変数nに座標の総数を設定する。続いて、ステップS113では、方向ベクトルVhを算出する。そして、ステップS115で、変数kに初期値(3)を設定する。
【0142】
次のステップS117では、1フレーム分複製オブジェクトを移動させる。ただし、移動速度Aは、予め設定された基準速度A0である。次にステップS119では、変数kを1減算する。そして、変数kが0であるかどうかを判断する。ステップS121で“NO”であれば、そのままステップS117に戻る。一方、ステップS121で“YES”であれば、ステップS123で、変数nを1減算する。
【0143】
そして、ステップS125で、変数nが1であるかどうかを判断する。ステップS125で“NO”であれば、そのままステップS113に戻る。一方、ステップS125で“YES”であれば、ステップS127で、画面外に出るまで複製オブジェクトを移動させて、ステップS7に戻る。
【0144】
他の実施例によれば、所定の条件の下に、複製オブジェクトを移動させて、予め描画オブジェクトの移動経路を知ることができるので、そのままタッチオフしたり、描画オブオブジェクトの描画を継続したり、弾き操作を実行したりするなど、戦略を立てて敵オブジェクトを攻撃することができる。したがって、ゲームへの興味をさらに増大させることができる。
【0145】
なお、上述の実施例では、弾き操作が有った場合には、それによって描画オブジェクトの速度を速くするようにしたが、速度を遅くするようにしてもよい。
【0146】
また、上述の実施例では、弾き操作が有った場合に、その弾き操作における最大距離に基づいて加算する速度を算出するようにしたが、これに限定される必要はない。たとえば、いずれかの操作スイッチ20を押下したり、仮想ゲームにおいて所定のイベントが発生したりした場合に、描画オブジェクトの移動速度を速くしてもよい。また、加算する速度は、一定値に決定していてもよい。
【0147】
さらに、上述の実施例では、オブジェクト制御装置の一例として、携帯型のゲーム装置についてのみ説明したが、これに限定される必要はない。たとえば、タッチパネル、コンピュータマウスまたはペンタブレットのようなポインティングデバイスを有する、またはそのようなポインティングデバイスが接続された、据置型のゲーム装置、パーソナルコンピュータ、PDA、ゲーム機能を有する携帯電話機のような他のオブジェクト制御装置にも本願発明を適用することができる。ただし、タッチパネル以外のポインティングデバイスを設ける場合には、ポインティングデバイスによる指示位置を示す必要があるため、マウスポインタのような指示画像がゲーム画面上に表示される。
【0148】
さらにまた、ゲーム装置の構成は実施例のものに限定される必要はない。たとえば、カメラは、1つでもよく、無くてもよい。また、タッチパネルを2つのLCD上に設けてもよい。
【符号の説明】
【0149】
10 …ゲーム装置
12,14 …ハウジング
16,18 …LCD
20 …操作ボタン
22 …タッチパネル
24 …タッチペン
26,28 …メモリカード
32,34 …カメラ
50 …CPU
52 …メインメモリ
54 …メモリ制御回路
56 …保存用データメモリ
58 …プリセットデータ用メモリ
60,62 …メモリカードI/F
64 …無線通信モジュール
66 …ローカル通信モジュール
68 …RTC
70 …電源回路
72 …I/F回路
74,76 …GPU
78,80 …VRAM
82 …LCDコントローラ
84 …マイク
【技術分野】
【0001】
この発明はオブジェクト制御プログラムおよびオブジェクト制御装置に関し、特にたとえば、プレイヤの操作に従ってオブジェクトを発生および移動させる、オブジェクト制御プログラムおよびオブジェクト制御装置に関する。
【背景技術】
【0002】
この種のゲーム装置の一例が特許文献1に開示されている。この特許文献1のオブジェクト制御装置では、プレイヤがタッチオンすると、タッチオンした位置に弾オブジェクトが発生され、さらに、タッチオンのまま画面下方向にスライドすると、弾オブジェクトの尾ひれが発生する。その後、プレイヤが、タッチオフすると、弾オブジェクトが画面上方に移動される。弾オブジェクトが敵キャラクタに衝突すると、たとえば、当該弾オブジェクトの攻撃力が当該敵キャラクタの耐久力を超えている場合には、当該敵オブジェクトが消滅する。
【特許文献1】特開2007−34634号[G06F 3/14,A63F 13/00,G06T 13/00]
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかし、特許文献1に開示されたオブジェクト制御装置では、弾オブジェクトを任意のタッチ位置で発生されることができるが、弾オブジェクトの形状は縦長の棒状に固定的に決定される。また、弾オブジェクトは、基本的には、画面下方から真上方向に移動するだけである。つまり、弾オブジェクトは、直線的に移動するだけである。したがって、弾オブジェクトの移動を簡単に予測することができるため、ゲームが単調になってしまう。このため、ゲームにすぐに飽きてしまう怖れがある。
【0004】
それゆえに、この発明の主たる目的は、新規な、オブジェクト制御プログラムおよびオブジェクト制御装置を提供することである。
【0005】
また、この発明の他の目的は、ゲームへの興味を増大させることができる、オブジェクト制御プログラムおよびオブジェクト制御装置を提供することができる。
【課題を解決するための手段】
【0006】
第1の発明は、オブジェクト制御プログラムであって、コンピュータを、入力検出手段、オブジェクト生成手段、およびオブジェクト移動手段として機能させる。入力検出手段は、プレイヤの操作入力を検出する。オブジェクト生成手段は、入力検出手段によって検出された操作入力に従って第1オブジェクトを生成する。そして、オブジェクト移動手段は、オブジェクト生成手段によって生成された第1オブジェクトを、入力検出手段によって検出された操作入力に基づく移動経路に従って移動させる。
【0007】
第1の発明によれば、プレイヤの操作入力に従ってオブジェクトが生成され、その操作入力に基づく移動経路に従ってオブジェクトが移動するので、簡単な操作で複雑な形状のオブジェクトを生成することができ、しかも複雑な移動経路に従ってオブジェクトを移動させることができる。つまり、戦略を立ててオブジェクトを生成する必要があるため、ゲームへの興味を増大することができる。
【0008】
第2の発明は、第1の発明に従属し、移動方向決定手段は、オブジェクト生成手段によって第1オブジェクトを生成する場合の入力検出手段によって検出された操作入力が示す軌跡に基づいて、当該第1オブジェクトが移動する際の移動方向を決定する。オブジェクト移動手段は、移動方向決定手段によって決定された移動方向を用いて決定される移動経路に従って第1オブジェクトを移動させる。
【0009】
第2の発明によれば、プレイヤの操作入力の軌跡によって第1オブジェクトが生成されるとともに、その軌跡に基づいて決定される移動方向を用いて移動経路が決定されるので、移動経路を考慮しながら第1オブジェクトを描画する必要がある。このように、オブジェクトを描画するだけでなく、その移動をも考慮するので、ゲームが単調になり難く、面白味を増大させることができる。
【0010】
第3の発明は、第1または第2の発明に従属し、プレイヤの操作入力は、表示手段の表示面の座標を指示する座標データである。オブジェクト生成手段は、複数の座標データが示す座標を時系列に従って線分で連結することにより、第1オブジェクトを生成する。つまり、プレイヤによって線画のオブジェクトが生成される。
【0011】
第3の発明によれば、線を引くだけでオブジェクトを生成できるので、複雑な形状のオブジェクトであっても、簡単な操作で生成することができる。
【0012】
第4の発明は、第3の発明に従属し、オブジェクト生成手段は、時間的に連続する座標間の距離に応じて線分の太さを変化させる。たとえば、時間的に連続する座標間の距離が短い場合には、線分の太さが太くされ、逆に、時間的に連続する座標間の距離が長い場合には、線分の太さが細くされる。ただし、太さを逆に設定してもよい。
【0013】
第4の発明によれば、プレイヤの操作の仕方によってオブジェクトを構成する線分の太さを変えるので、簡単な操作で複雑な形状のオブジェクトを生成することができる。
【0014】
第5の発明は、第3または第4の発明に従属し、オブジェクト制御プログラムは、時間的に連続する座標間の距離が一定距離未満である状態が継続するとき、現時点においてオブジェクト生成手段によって生成された第1オブジェクトの複製を、入力検出手段によって検出された現時点までの操作入力に基づく移動経路に従って移動させる複製移動手段としてコンピュータをさらに機能させる。
【0015】
第5の発明によれば、オブジェクトの生成途中で、現時点における当該オブジェクトの移動経路を知ることができるので、オブジェクトの生成を継続するか、終了するかなどを容易に決定することができる。
【0016】
第6の発明は、第1ないし第5の発明に従属し、オブジェクト移動制御手段は、所定の条件を満たすとき、第1オブジェクトの移動速度を変化させる。たとえば、特定の操作が実行されたり、特定のイベントが発生したりした場合に、第1オブジェクトの移動速度が速くされたり、遅くされたりする。
【0017】
第6の発明によれば、オブジェクトの移動速度を変化させるので、速度によって移動経路も変化される。つまり、オブジェクトの移動経路が予測し難いので、ゲームが単純または単調になり難い。
【0018】
第7の発明は、第6の発明に従属し、プレイヤの操作入力は、表示手段の表示面の座標を指示する座標データである。オブジェクト制御プログラムは、コンピュータを、条件判断手段としてさらに機能させる。条件判断手段は、所定の条件を満たすか否かを、複数の座標データが示す座標の変化に基づいて判断する。
【0019】
第7の発明によれば、プレイヤの操作入力による座標の変化で所定の条件を満たすか否かを判断するので、たとえば、第1オブジェクトを描画する際の操作入力に基づいて所定の条件を満たすか否かを判断することができる。
【0020】
第8の発明は、第1ないし第7の発明に従属し、仮想空間には、第1オブジェクトとは異なる第2オブジェクトが存在する。衝撃手段は、オブジェクト移動手段によって移動された第1オブジェクトが第2オブジェクトに当ったとき、少なくとも当該第2オブジェクトに衝撃を与える。
【0021】
第8の発明によれば、第1オブジェクトによって第2オブジェクトを攻撃するので、その攻撃の戦略を立てつつ第1オブジェクトを描画する必要があるため、仮想ゲームが単調でなく、面白い。
【0022】
第9の発明は、プレイヤの操作入力を検出する入力検出手段、入力検出手段によって検出された操作入力に従ってオブジェクトを生成するオブジェクト生成手段、およびオブジェクト生成手段によって生成されたオブジェクトを、入力検出手段によって検出された操作入力に基づく移動経路に従って移動させるオブジェクト移動手段を備える、オブジェクト制御装置である。
【0023】
第9の発明においても、第1の発明と同様に、ゲームへの興味を増大させることができる。
【発明の効果】
【0024】
この発明によれば、プレイヤの操作に従ったオブジェクトが生成され、当該オブジェクトがその操作の軌跡に基づいて移動されるので、簡単な操作で複雑な形状のオブジェクトを生成することができ、しかも複雑な経路に従ってオブジェクトを移動させることができる。つまり、移動経路を考慮しながらオブジェクトを生成するので、ゲームへの興味を増大させることができる。
【0025】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0026】
【図1】図1はこの発明のゲーム装置の外観構成の一実施例を示す図解図である。
【図2】図2は図1に示すゲーム装置を折り畳んだ状態の上面図および左側面図を示す図解図である。
【図3】図3は図1に示すゲーム装置の電気的な構成を示すブロック図である。
【図4】図4は図1に示すゲーム装置のLCDに表示されるゲーム画面の例を示す図解図である。
【図5】図5は描画オブジェクトの例および描画オブジェクトの軌跡に基づく方向ベクトルの生成方法を説明するための図解図である。
【図6】図6は図1に示すゲーム装置のLCDに表示されるゲーム画面の他の例の一部を示す図解図である。
【図7】図7は図3に示すメインメモリのメモリマップの例を示す図解図である。
【図8】図8は図7に示す太さデータに従う線の太さテーブルおよびオブジェクトデータに従うオブジェクトの情報の例を示す図解図である。
【図9】図9は図3に示すCPUのゲーム全体処理の一部を示すフロー図である。
【図10】図10は図3に示すCPUのゲーム全体処理の他の一部であって、図9に後続するフロー図である。
【図11】図11は図3に示すCPUのゲーム全体処理のその他の一部であって、図10に後続するフロー図である。
【図12】図12は図3に示すCPUの弾く速度の算出処理のフロー図である。
【図13】図13は他の実施例のCPUのゲーム全体処理の一部を示すフロー図である。
【図14】図14は他の実施例のCPUのゲーム全体処理の他の一部を示すフロー図である。
【発明を実施するための形態】
【0027】
図1を参照して、この発明の一実施例であるゲーム装置10は、上側ハウジング12および下側ハウジング14を含み、上側ハウジング12と下側ハウジング14とは、開閉可能(折り畳み可能)に連結されている。図1の例では、上側ハウジング12および下側ハウジング14は、それぞれ横長の長方形の板状に形成され、互いの長辺部分で回動可能に連結されている。つまり、この実施例のゲーム装置10は、折り畳み型の携帯ゲーム装置であり、図1には、当該ゲーム装置10を開いた状態(開状態)で示してある。ゲーム装置10は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
【0028】
通常、ユーザは、開状態でゲーム装置10を使用する。また、ユーザは、ゲーム装置10を使用しない場合には閉状態で保管する。ただし、ゲーム装置10は、上記閉状態および開状態のみでなく、上側ハウジング12と下側ハウジング14とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング12を下側ハウジング14に対して任意の角度で静止させることができる。
【0029】
なお、ゲーム装置10は、後述するカメラ(32,34)を搭載しており、当該カメラ(32,34)によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりする撮像装置としても機能する。
【0030】
図1に示すように、上側ハウジング12には第1LCD16が設けられ、下側ハウジング14には第2LCD18が設けられる。第1LCD16および第2LCD18は、横長形状であり、それぞれの長辺方向が上側ハウジング12および下側ハウジング14の長辺方向と一致するように配置される。たとえば、第1LCD16および第2LCD18の解像度は、256(横)×192(縦)画素(ドット)に設定される。
【0031】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。また、ゲーム装置10は、任意の解像度の表示装置を利用することができる。
【0032】
図1および図2に示すように、下側ハウジング14には、入力装置として、各操作ボタン20a−20kが設けられる。この各操作ボタン20a−20kのうち、方向入力ボタン20a、操作ボタン20b、操作ボタン20c、操作ボタン20d、操作ボタン20e、電源ボタン20f、スタートボタン20g、およびセレクトボタン20hは、下側ハウジング14の第2LCD18が設けられる側の面(内側の面)に配置される。具体的には、方向入力ボタン20aおよび電源ボタン20fは、第2LCD18の左側に配置され、操作ボタン20b−20e,20gおよび20hは、第2LCD18の右側に配置される。また、上側ハウジング12と下側ハウジング14とを折り畳んだときには、操作ボタン20a−20hはゲーム装置10の内部に収められる。
【0033】
方向入力ボタン(十字キー)20aは、ディジタルジョイスティックとして機能し、プレイヤオブジェクトの移動方向を指示したり、カーソルを移動させたりするなどに用いられる。各操作ボタン20b−20eは、プッシュボタンであり、たとえば、プレイヤオブジェクトに任意の動作をさせたり、決定やキャンセルを実行したりする等に用いられる。電源ボタン20fは、プッシュボタンであり、ゲーム装置10の主電源をオン/オフするために用いられる。スタートボタン20gは、プッシュボタンであり、ゲームを中断(ポーズ)したり、開始(再開)したりするために用いられる。セレクトボタン20hは、プッシュボタンであり、ゲームモードやメニューの選択等に用いられる。
【0034】
図1においては、操作ボタン20i−20kを省略したが、図2(A)に示すように、操作ボタン(Lボタン)20iは、下側ハウジング14の上側面の左端部に設けられ、操作ボタン(Rボタン)20jは、下側ハウジング14の上側面の右端部に設けられる。また、図2(B)に示すように、音量ボタン20kは、下側ハウジング14の左側面に設けられる。
【0035】
なお、図2(A)は、ゲーム装置10を折り畳んだ状態で、上面(上ハウジング12)側から見た図であり、図2(B)は、同じくゲーム装置10を折り畳んだ状態で、左側面から見た図である。
【0036】
Lボタン20iおよびRボタン20jは、プッシュボタンであり、操作ボタン20b−20eと同様の操作に用いたり、それらの操作ボタン20b−20eの補助的な操作に用いたりすることができる。また、この実施例では、Lボタン20iおよびRボタン20jは、撮影指示の操作(シャッター操作)を行うために用いることもできる。音量ボタン20kは、2つのプッシュボタンを用いて構成され、図示しない2つのスピーカ(右スピーカおよび左スピーカ)から出力される音の大きさを調整するために用いられる。この実施例では、音量ボタン20kには、2つの押圧部を含む操作部が設けられ、各押圧部に対応して上記のプッシュボタンが設けられる。したがって、一方の押圧部を押すと音量が大きくされ、他方の押圧部を押すと音量が小さくされる。たとえば、押圧部を押し続けると、音量が次第に大きくされたり、次第に小さくされたりする。
【0037】
図1に戻って、ゲーム装置10は、操作ボタン20a−20kとは別の入力装置として、さらにタッチパネル22を備えている。タッチパネル22は、第2LCD18の画面上を覆うように装着されている。この実施例では、タッチパネル22は、たとえば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル22は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、この実施例では、タッチパネル22として、たとえば第2LCD18の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル22の解像度と第2LCD18の解像度とが一致している必要はない。
【0038】
また、下側ハウジング14の右側面には、挿入口(図1に示す破線)が設けられている。挿入口は、タッチパネル22に対する操作を行うために用いられるタッチペン24を収納することができる。通常、タッチパネル22に対する入力は、タッチペン24を用いて行われるが、タッチペン24に限らずユーザの指でタッチパネル22を操作することも可能である。したがって、たとえば、タッチペン24を用いない場合には、タッチペン24の挿入口および収納部を設ける必要はない。
【0039】
また、下側ハウジング14の右側面には、メモリカード26を収納するための挿入口(図1では、二点鎖線で示している)が設けられている。この挿入口の内側には、ゲーム装置10とメモリカード26とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード26は、たとえばSDカードであり、コネクタに着脱自在に装着される。このメモリカード26は、たとえば、ゲーム装置10によって撮像された画像を記憶(保存)したり、他の装置で生成(撮像)ないし記憶された画像をゲーム装置10に読み込んだりするために用いられる。
【0040】
さらに、下側ハウジング14の上側面には、メモリカード28を収納するための挿入口(図1では、一点鎖線で示している)が設けられている。この挿入口の内側にも、ゲーム装置10とメモリカード28とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード28は、情報処理プログラムおよび必要なデータなどを記録した記録媒体であり、下側ハウジング14に設けられた挿入口に着脱自在に装着される。
【0041】
また、上側ハウジング12と下側ハウジング14との連結部(ヒンジ)の左端部分には、インジケータ30が設けられる。このインジケータ30は、3つのLED30a,30b,30cによって構成される。ここで、ゲーム装置10は、他の機器との間で無線通信を行うことが可能であり、第1LED30aは、無線通信が確立している場合に点灯する。第2LED30bは、ゲーム装置10の充電中に点灯する。第3LED30cは、ゲーム装置10の主電源がオンである場合に点灯する。したがって、インジケータ30(LED30a−30c)によって、ゲーム装置10の通信確立状況、充電状況、および主電源のオン/オフ状況をユーザに通知することができる。
【0042】
上述したように、上側ハウジング12には、第1LCD16が設けられる。この実施例では、第2LCD18を覆うように、タッチパネル22を設けているが、第1LCD16を覆うように、タッチパネル22を設けてもよい。または、第1LCD16および第2LCD18のそれぞれを覆うように、2つのタッチパネル22を設けるようにしてもよい。たとえば、第2LCD18には、各操作ボタン20a−20kやタッチパネル22の役割ないし操作方法をユーザに教えるための操作説明画面やゲーム画面が表示される。
【0043】
また、上側ハウジング12には、2つのカメラ(内側カメラ32および外側カメラ34)が設けられる。図1に示すように、内側カメラ32は、上側ハウジング12と下側ハウジング14との連結部付近であり、第1LCD16が設けられる側の面に、この第1LCD16の表示面とその撮影面とが平行または面一になるように取り付けられる。一方、外側カメラ34は、図2(A)に示すように、内側カメラ32が取り付けられる面とは反対側の面、すなわち、上側ハウジング12の外側の面(ゲーム装置10が閉状態となった場合に外側となる面であり、図1に示す上側ハウジング12の背面)に取り付けられる。ただし、図1においては、外側カメラ34を破線で示してある。
【0044】
したがって、内側カメラ32は、上側ハウジング12の内側の面が向く方向を撮像することが可能であり、外側カメラ34は、内側カメラ32の撮像方向の逆方向、すなわち、上側ハウジング12の外側の面が向く方向を撮像することが可能である。このように、この実施例では、内側カメラ32および外側カメラ34の撮像方向が互いに逆方向となるように、それら2つのカメラ32,34が設けられる。たとえば、ゲーム装置10を把持したユーザは、このゲーム装置10側からユーザの方を見た景色(たとえば、当該ユーザを含む)を内側カメラ32で撮像することができるとともに、ゲーム装置10側からユーザとは反対側の方向を見た景色や他のユーザを外側カメラ34で撮像することができる。
【0045】
なお、上記連結部付近の内側の面には、音声入力装置としてマイク84(図3参照)が収納されている。そして、上記連結部付近の内側の面には、マイク84がゲーム装置10外部の音を検知できるように、そのマイク84用の孔36が形成される。マイク84を収納する位置およびマイク84用の孔36の位置は必ずしも上記連結部である必要はなく、たとえば下側ハウジング14にマイク84を収納し、マイク84の収納位置に対応させて下側ハウジング14にマイク84用の孔36を設けるようにしてもよい。
【0046】
また、上側ハウジング12の外側の面には、外側カメラ34の近傍に第4LED38(図1では、破線で示す)が取り付けられる。第4LED38は、内側カメラ32または外側カメラ34によって撮影が行われた(シャッターボタンが押下された)時点で点灯する。また、内側カメラ32または外側カメラ34によって動画が撮影される場合には、第4LED38は、撮影の間点灯し続ける。つまり、第4LED38を点灯することによって、ゲーム装置10による撮影が行われた(行われている)ことを撮影対象者や周囲に通知することができる。
【0047】
また、上側ハウジング12には、第1LCD16の両側に、音抜き孔40が形成される。この音抜き孔40に対応する位置であり、上側ハウジング12の内部には、上述したスピーカが収納されている。音抜き孔40は、スピーカからの音をゲーム装置10の外部に放出するための孔である。
【0048】
以上に説明したように、上側ハウジング12には、画像を撮像するための構成である内側カメラ32および外側カメラ34と、主として、撮影された画像(撮影画像)およびゲーム画面を表示するための表示手段である第1LCD16とが設けられる。一方、下側ハウジング14には、ゲーム装置10に対する操作入力を行うための入力装置(操作ボタン20(20a−20k)およびタッチパネル22)と、主として、操作画面およびゲーム画面を表示するための表示手段である第2LCD18とが設けられる。したがって、ゲーム装置10は、2つの画面(16,18)および2系統の操作部(20,22)を備えている。
【0049】
図3は、この実施例のゲーム装置10の電気的な構成を示すブロック図である。図3に示すように、ゲーム装置10は、CPU50、メインメモリ52、メモリ制御回路54、保存用データメモリ56、プリセットデータ用メモリ58、メモリカードインターフェース(メモリカードI/F)60、メモリカードI/F62、無線通信モジュール64、ローカル通信モジュール66、リアルタイムクロック(RTC)68、電源回路70、およびインターフェース回路(I/F回路)72、第1GPU(Graphics Processing Unit)74、第2GPU76、第1VRAM(Video RAM)78、第2VRAM80、およびLCDコントローラ82等の電子部品を備えている。これらの電子部品(回路コンポーネント)は、電子回路基板上に実装されて、下側ハウジング14(または上側ハウジング12でもよい)内に収納される。
【0050】
CPU50は、所定のプログラムを実行するための情報処理手段である。この実施例では、所定のプログラムは、ゲーム装置10内のメモリ(たとえば保存用データメモリ56)やメモリカード26および/または28に記憶されており、CPU50は、当該所定のプログラムを実行することによって、後述する情報処理を実行する。
【0051】
なお、CPU50によって実行されるプログラムは、ゲーム装置10内のメモリに予め記憶していてもよいし、メモリカード26および/または28から取得してもよいし、他の機器と通信することによって当該他の機器から取得してもよい。
【0052】
CPU50には、メインメモリ52、メモリ制御回路54、およびプリセットデータ用メモリ58が接続される。また、メモリ制御回路54には、保存用データメモリ56が接続される。メインメモリ52は、CPU50のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ52は、上記情報処理に用いられる各種データを記憶(一時記憶)したり、外部(メモリカード26および28や他の機器等)から取得されるプログラムを記憶したりする。この実施例では、メインメモリ52として、たとえばPSRAM(Pseudo−SRAM)を用いる。保存用データメモリ56は、CPU50によって実行されるプログラムや内側カメラ32および外側カメラ34によって撮像された画像のデータ等を記憶(保存)するための記憶手段である。この保存用データメモリ56は、不揮発性の記憶媒体によって構成されており、たとえば、NAND型フラッシュメモリを用いることができる。メモリ制御回路54は、CPU50の指示に従って、保存用データメモリ56に対するデータの読み出しおよび書き込みを制御する。プリセットデータ用メモリ58は、ゲーム装置10において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ58としては、SPI(Serial Peripheral Interface)バスによってCPU50と接続されるフラッシュメモリを用いることができる。
【0053】
メモリカードI/F60および62は、それぞれCPU50に接続される。メモリカードI/F60は、コネクタに装着されたメモリカード26に対するデータの読み出しおよび書き込みを、CPU50の指示に応じて行う。また、メモリカードI/F62は、コネクタに装着されたメモリカード28に対するデータの読み出しおよび書き込みを、CPU50の指示に応じて行う。この実施例では、内側カメラ32および外側カメラ34によって撮像された画像に対応する画像データや他の装置から受信された画像データがメモリカード26に書き込まれたり、メモリカード26に記憶された画像データがメモリカード26から読み出されて保存用データメモリ56に記憶されたり、他の装置へ送信されたりする。また、メモリカード28に記憶された各種プログラムが、CPU50によって読み出されて実行されたりする。
【0054】
なお、ゲームプログラムなどの情報処理プログラムは、メモリカード28等の外部記憶媒体を通じてゲーム装置10に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置10に供給されてもよい。また、情報処理プログラムは、ゲーム装置10内部の不揮発性記憶装置に予め記録されていてもよい。さらに、情報処理プログラムを記憶する情報記憶媒体としては、上記不揮発性記憶装置に限らず、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
【0055】
無線通信モジュール64は、たとえばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール66は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール64およびローカル通信モジュール66は、CPU50に接続される。CPU50は、無線通信モジュール64を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール66を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【0056】
また、CPU50には、RTC68および電源回路70が接続される。RTC68は、時間をカウントしてCPU50に出力する。たとえば、CPU50は、RTC68によって計時された時間に基づいて、日付および現在時刻等を計算することもできる。電源回路70は、ゲーム装置10が有する電源(典型的には電池であり、下側ハウジング14に収納される)から供給される電力を制御し、ゲーム装置10の各回路コンポーネントに電力を供給する。
【0057】
また、ゲーム装置10は、マイク84およびアンプ86を備えている。マイク84およびアンプ86は、それぞれI/F回路72に接続される。マイク84は、ゲーム装置10に向かって発声ないし発生されたユーザの音声ないし音(拍手や手拍子など)を検知して、当該音声ないし音を示す音声信号をI/F回路72に出力する。アンプ86は、I/F回路72から与えられる音声信号を増幅してスピーカ(図示せず)に与える。I/F回路72は、CPU50に接続される。
【0058】
また、タッチパネル22は、I/F回路72に接続される。I/F回路72は、マイク84およびアンプ86(スピーカ)の制御を行う音声制御回路と、タッチパネル22の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル22からの信号に基づいて所定の形式のタッチ位置データを生成してCPU50に出力する。たとえば、タッチ位置データは、タッチパネル22の入力面に対して入力が行われた位置の座標を示すデータである。
【0059】
なお、タッチパネル制御回路は、タッチパネル22からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。CPU50は、I/F回路72を介して、タッチ位置データを取得することにより、タッチパネル22に対して入力が行われた位置を知ることができる。
【0060】
操作ボタン20は、上記の各操作ボタン20a−20kによって構成され、CPU50に接続される。操作ボタン20からCPU50へは、各操作ボタン20a−20kに対する入力状況(押下されたか否か)を示す操作データが出力される。CPU50は、操作ボタン20からの操作データを取得し、取得した操作データに応じた処理を実行する。
【0061】
内側カメラ32および外側カメラ34は、それぞれCPU50に接続される。内側カメラ32および外側カメラ34は、CPU50の指示に応じて画像を撮像し、撮像した画像に対応する画像データをCPU50に出力する。この実施例では、CPU50は、内側カメラ32および外側カメラ34のいずれか一方に対して撮像指示を行い、撮像指示を受けたカメラ(32,34)が画像を撮像して画像データをCPU50に送る。
【0062】
第1GPU74には、第1VRAM78が接続され、第2GPU76には、第2VRAM80が接続される。第1GPU74は、CPU50からの指示に応じて、メインメモリ52に記憶されている表示画像を生成するためのデータに基づいて第1の表示画像を生成し、第1VRAM78に描画する。第2GPU76は、同様にCPU50からの指示に応じて第2の表示画像を生成し、第2VRAM80に描画する。第1VRAM78および第2VRAM80は、LCDコントローラ82に接続されている。
【0063】
LCDコントローラ82は、レジスタ82aを含む。レジスタ82aは、CPU50からの指示に応じて、「0」または「1」の値を記憶する。LCDコントローラ82は、レジスタ82aの値が「0」である場合には、第1VRAM78に描画された第1の表示画像を第2LCD18に出力し、第2VRAM80に描画された第2の表示画像を第1LCD16に出力する。また、レジスタ82aの値が「1」である場合には、第1VRAM78に描画された第1の表示画像を第1LCD16に出力し、第2VRAM80に描画された第2の表示画像を第2LCD18に出力する。
【0064】
図4は、この実施例の仮想ゲームをプレイする場合のゲーム画面100の一例を示す。ゲーム画面100は、上画面110および下画面120によって構成される。図4からも分かるように、上画面110が第1LCD16に表示され、下画面120が第2LCD18に表示される。ゲーム画面100は、図示は省略するが、2次元ないし3次元の仮想空間を仮想カメラで撮影した画像である。また、仮想空間は、たとえば、上画面110および下画面120の表示領域よりも広い範囲に設定されており、後述するオブジェクト(112、114、116、122)は、この仮想空間内に存在(移動)する。
【0065】
なお、図4に示すゲーム画面100では、簡単のため、背景を省略してある。
【0066】
上画面110には、雲を模した敵のオブジェクト(敵オブジェクト)112および敵オブジェクト114が表示される。下画面120には、プレイヤがタッチペン24を用いて描画(生成)したオブジェクト(描画オブジェクト)122が表示される。
【0067】
図面では分かり難いが、この実施例の仮想ゲームでは、プレイヤのタッチ操作によって生成された描画オブジェクト122が、そのタッチ操作の軌跡に基づく移動経路に従って移動される。描画オブジェクト122が敵オブジェクト112、114に当たると、当該敵オブジェクト112、114にダメージ(攻撃力)を与えることができる。また、描画オブジェクト122によって与えられるダメージが、敵オブジェクト112、114のライフ(耐久力)を超えると、当該敵オブジェクト112、114は消滅される。図示は省略するが、この実施例では、描画オブジェクト122と同じ或いは略同じ形状(大きさ)の当り判定のポリゴンが設定される。ただし、当り判定のポリゴンは無色透明である。
【0068】
また、描画オブジェクト122と敵オブジェクト112、114とが最初に当ったことが判定されたとき、その当った部分が描画オブジェクト122の先端部分(図4の点線で囲む部分)である場合にのみ、敵オブジェクト112、114にダメージを与えるようにしてある。これは、描画オブジェクト122のどの部分が最初に当っても良いことにすると、敵オブジェクト112、114を容易に攻撃できてしまうからである。たとえば、先端部分は、描画オブジェクト122を描画する際の描画開始位置を含み、これに連続する所定の長さ(5〜10ドットの長さ)分である。
【0069】
なお、この実施例では、描画オブジェクト122の先端部分から敵オブジェクト112、114などに当った場合にのみ、当該敵オブジェクト112、114にダメージを与えるようにしてあるが、これに限定される必要はない。描画オブジェクト122がどの部分から敵オブジェクト112、114に当っても、当該敵オブジェクト112、114にダメージを与えるようにしてもよい。たとえば、これらをゲームレベルに応じて使い分けてもよい。
【0070】
たとえば、すべての敵オブジェクト112、114を制限時間(または制限攻撃回数)以内で消滅させることに成功すると、ゲームクリアとなる。一方、すべての敵オブジェクト112、114を消滅させる前に、制限時間(または制限攻撃回数)を超えてしまうと、ゲームオーバとなる。
【0071】
ここで、描画オブジェクト122の生成方法および移動制御について説明する。たとえば、プレイヤが、タッチペン24を用いてタッチ操作を開始すると、つまりタッチオフの状態からタッチオンの状態に変化すると、タッチパネル22で検出される座標データのサンプリングが開始される。ただし、単なる手振れを排除するために、前回検出された座標データが示す座標からの距離d1が一定距離L1(たとえば、3ドット)以下である場合には、今回の座標データはサンプリングされない。
【0072】
サンプリングは、タッチ操作が終了するまで、つまりタッチオンの状態からタッチオフの状態になるまで継続される。また、座標データのサンプリングに並行して、描画オブジェクト122が生成(描画)される。具体的には、時間的に連続する2つの座標が線(線分)で連結される。ただし、時間的に連続する2つの座標間の距離d1によって、その2つの座標間を連結する線(線分)の太さが可変的に設定される。2つの座標間の距離dは、数1に従って算出される。ただし、一方の座標を(x1,y1)とし、他方の座標を(x2,y2)とする。以下、座標間の距離dを算出する場合について同じである。
【0073】
[数1]
d=√{(x1−x2)2+(y1−y2)2}
この実施例では、距離d1が短い場合(3ドット以上8ドット未満)には、線の太さが太い(5ドット)に設定される。また、距離が普通(中程度)の場合(8ドット以上12ドット未満)には、線の太さが普通(3ドット)に設定される。さらに、距離d1が長い場合(12ドット以上)には、線の太さが細い(1ドット)に設定される。また、線の太さによって、敵オブジェクト112、114に与えるダメージ(攻撃力)の大きさが異なる。この実施例では、線が太い程、敵オブジェクト112、114に与えるダメージが大きい。
【0074】
なお、この実施例では、距離d1が短い程、線の太さを太くし、ダメージを大きくするようにしてあるが、逆にしてもよい。つまり、距離d1が短い程、線の太さを細くし、ダメージを小さくするようにしてもよい。
【0075】
このようにして、タッチ操作が無くなるまで、座標データのサンプリングおよび描画オブジェクト122の生成が行われる。ただし、サンプリングされた座標データの総数が最大値(たとえば、200)に達すると、強制的に、描画オブジェクト122の生成が終了される。
【0076】
描画オブジェクト122の生成を終了すると、描画オブジェクト122は移動を開始する。この実施例では、描画オブジェクト122は、自身の軌跡に基づく移動経路に従って移動する。ただし、描画オブジェクト122を構成するすべての座標を用いて、移動経路を決定すると、処理が膨大になってしまうため、この実施例では、一部の座標を用いて移動経路を決定する。このため、描画開始位置の座標から順に検索して、直前の座標との距離d2が一定距離L2(たとえば、10ドット)以下の座標を除去するようにしてある。つまり、直前の座標と距離d2が一定距離L2を超える座標のみが抽出されるのである。そして、抽出された複数の座標に基づいて、描画オブジェクト122を移動させる方向を決定するベクトル(方向ベクトル)が算出される。ただし、この実施例では、下画面120に描画した描画オブジェクト122によって上画面110に存在する敵オブジェクト112、114を攻撃するため、描画オブジェクト122の軌跡に基づく移動経路をその描画オブジェクト122の末尾から描画するように、描画オブジェクト122の方向ベクトルが順次決定される。
【0077】
具体的には、描画開始位置の座標から描画終了位置の座標までにおいて、n個の座標が抽出された場合に、方向ベクトルVhは数2に従って算出される。
【0078】
[数2]
Vh=座標n−2−座標n
ただし、n番目の座標nを始点とし、n−2番目の座標n−2を終点とする方向ベクトルVhは、nを1減算する毎に算出される。したがって、たとえば、図5(A)に示すような描画オブジェクト122について、点P1から点P9までの座標n(n=1、2、…、9)が抽出された場合には、図5(B)に示すような7つの方向ベクトルV1−V7が得られる。具体的には、1番目の方向ベクトルV1は、点P9を始点とし、点P7を終点とする。2番目の方向ベクトルV2は、点P8を始点とし、点P6を終点とする。3画番目の方向ベクトルV3は、点P7を始点とし、点P5を終点とする。同様にして、7番目(最後)のベクトルV7まで数2に従って算出されるのである。
【0079】
なお、方向ベクトルVhはその方向のみが用いられるため、各ベクトルを自身の大きさで割ることにより、大きさが1の単位ベクトルで表してもよい。
【0080】
この実施例では、描画オブジェクト122は、決定した方向ベクトルVhが示す方向に、それぞれ、一定の移動速度A(数3参照)で所定フレーム(この実施例では、3フレーム)分移動する。ただし、フレームは画面更新単位時間(1/60秒)である。移動中に、描画オブジェクト122がゲーム画面100(第1LCD16および第2LCD18)の外に出てしまった場合には、描画オブジェクト122の移動は終了される。しかし、描画オブジェクト122の一部でもゲーム画面100に表示されている場合には、移動を継続し、最後の方向ベクトルVhに従う移動が終了した後は、ゲーム画面100の外に出るまで、最後の方向ベクトルVhの方向に移動し続ける。
【0081】
[数3]
移動速度A=基準速度A0+弾き速度α
ただし、基準速度A0は、プログラマないし開発者によって予め設定された速度であり、経験的に得られた数値に設定される。また、弾き速度αは、数4で与えられる。
【0082】
[数4]
弾き速度α=最大距離dmax×定数C
ただし、定数Cは、試験等によって経験的に得られた数値に設定される。
【0083】
ここで、弾き速度αについて説明する。この実施例では、上述したように、描画オブジェクト122を生成するが、描画オブジェクト122の生成(描画)を終了するときに、プレイヤがタッチペン24によってタッチパネル22を弾くように、タッチオフすると、それによって、移動速度Aが速くされる。
【0084】
したがって、この実施例では、タッチ操作が終了されると、弾き操作があった否かを検出して、弾き操作があった場合には、それに応じた弾き速度αを数4に従って算出して、移動速度Aに反映するようにしてある。ただし、弾き操作が無いと判断された場合には、弾き速度α=0となる。
【0085】
具体的には、サンプリングされた座標データが示す座標を末尾から時間的に前に順次検出し、直前の座標との間の距離d3を順次算出する。また、距離d3が一定距離L3(3ドット)以下であるかどうかを判断し、距離d3が一定距離L3以下となる場合の座標(点)を弾く操作の開始位置とみなす。そして、弾く操作の開始位置から描画オブジェクト122の末尾の点(描画終了位置)までの間において、最大の距離d3(最大距離dmax)を抽出し、数4に従って弾き速度αを算出する。また、このとき、弾く操作の開始位置から末尾までの座標に対応する座標データが排除される。これは、弾く操作は、描画オブジェクト122を描画(生成)するための操作とは別個の操作と考えているためである。したがって、弾く方向は描画オブジェクト122の移動方向に影響を与えない。
【0086】
また、弾き操作によって弾き速度αが加算されると、描画オブジェクト122が1フレームの間に移動する距離が長くなる。したがって、弾き操作が有る場合は、弾き操作が無い場合の移動経路を少し拡大した移動経路に従って描画オブジェクト122が移動されることになる。
【0087】
なお、詳細な説明は省略するが、弾き操作は描画オブジェクト122の描画を終了するときに実行されるため、サンプリングされた座標のうちの末尾の点の座標から時間的に前の所定数(たとえば、20)の点の座標までを用いて弾き操作の有無が検出され、弾き操作が有る場合に、弾き速度αが算出される。
【0088】
たとえば、図6に示すように、他のゲーム画面100では、上画面110に表示される敵オブジェクト112、114を防護するように、複数のブロックオブジェクト116が配置される。上述したように、描画オブジェクト122の先端部分が敵オブジェクト112、114に当たらなければ、敵オブジェクト112、114にダメージを与えることができない。したがって、敵オブジェクト112にダメージを与えたい場合には、たとえば、縦長の棒状の描画オブジェクト122を生成し、2つのブロックオブジェクト116の間から敵オブジェクト112を攻撃する必要がある。また、敵オブジェクト114にダメージを与えたい場合には、たとえば、不等号(<,>)記号のような描画オブジェクト122を生成し、横方向から敵オブジェクト114を攻撃する必要がある。したがって、プレイヤは、敵オブジェクト112、114を攻撃する際の描画オブジェクト122の移動経路を計算しながら、当該描画オブジェクト122を生成するのである。
【0089】
なお、ブロックオブジェクト116は、描画オブジェクト122が当ることによって消滅するようにしてもよいし、消滅しないようにしてもよい。いずれの場合であっても、上述したように、制限時間(制限攻撃回数)以内に、すべての敵オブジェクト112、114を倒さなければゲームクリアとならない。また、図示は省略するが、敵オブジェクト112、114は、コンピュータ(CPU50)の制御によって、ゲーム画面100(ゲーム空間)内で移動することもある。
【0090】
図7は図3に示したメインメモリ52のメモリマップ520の例を示す図解図である。図3に示すように、メインメモリ52は、プログラム記憶領域522およびデータ記憶領域524を含む。プログラム記憶領域522は、情報処理プログラムとしてのゲームプログラムを記憶し、ゲームプログラムは、メイン処理プログラム522a、画像生成プログラム522b、画像表示プログラム522c、オブジェクト描画プログラム522d、弾き速度算出プログラム522e、オブジェクト移動プログラム522fおよび当り判定プログラム522gなどによって構成される。
【0091】
メイン処理プログラム522aは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム522bは、画像データ524bやオブジェクトデータ524dを用いて、第1LCD16および第2LCD18にゲーム画面(100など)を表示するためのゲーム画像データを生成するためのプログラムである。画像表示プログラム522cは、画像生成プログラム522bに従って生成されたゲーム画像データを、ゲーム画面(100など)として第1LCD16および第2LCD18に表示するためのプログラムである。
【0092】
オブジェクト描画プログラム522dは、プレイヤのタッチ操作に従って入力される座標データに基づいて生成されたオブジェクトデータ524dに従って描画オブジェクト122の画像データを生成する。つまり、オブジェクト描画プログラム522dは、座標データがサンプリングされる度に、今回の座標データが示す座標と直前の座標データが示す座標とを、それらの2つの座標間の距離d1に応じた太さの線分で結ぶ。
【0093】
弾き速度算出プログラム522eは、オブジェクトデータ524の末尾の座標データから一定数の座標データを用いて、弾き操作の有無を検出するとともに、弾き操作が有る場合に、最大距離dmaxに基づいて、弾き速度αを算出するためのプログラムである。
【0094】
オブジェクト移動プログラム522fは、描画オブジェクト122をゲーム画面100(ゲーム空間)において移動させるためのプログラムである。具体的には、オブジェクト移動プログラム522fは、オブジェクトデータ524dを参照して、上述したように、描画開始位置から描画終了位置までのすべての座標から、直前の座標との距離d2が一定距離L2(10ドット)を超える座標のみを抽出し、方向ベクトルVh(オブジェクト移動方向データ524f)を算出する。また、オブジェクト移動プログラム522fは、弾き速度算出プログラム522eに従って算出された弾き速度αを用いて、描画オブジェクト122の移動速度A(オブジェクト移動速度データ524g)を数3に従って算出する。そして、オブジェクト移動プログラム522fは、算出した方向ベクトルVhと、算出した移動速度Aとに従って描画オブジェクト122を移動させる。
【0095】
当り判定プログラム522gは、敵オブジェクト112、114やブロックオブジェクト116と、描画オブジェクト122との当りを判定する。ただし、上述したように、最初に、描画オブジェクト122の先端部分が、敵オブジェクト112、114に当った場合にのみ、当該敵オブジェクト112、114にダメージを与えることができる。
【0096】
なお、図示は省略するが、プログラム記憶領域522には、音出力プログラムやバックアッププログラムも記憶される。音出力プログラムは、ゲームオブジェクトの音声(擬声音)、効果音、音楽のような、ゲームに必要な音を出力するためのプログラムである。バックアッププログラムは、ゲームイベントやプレイヤの指示に従って、ゲームデータ(途中データや結果データ)をメモリカード26や保存用データメモリ56に保存(セーブ)するためのプログラムである。
【0097】
データ記憶領域524には、入力データバッファ524aが設けられる。この入力データバッファ524aは、操作ボタン20からの操作データおよびタッチパネル22からの座標データを時系列に従って記憶(一時記憶)するために設けられる。
【0098】
また、データ記憶領域524には、画像データ524b、太さデータ524c、オブジェクトデータ524d、当り判定データ524e、オブジェクト移動方向データ524f、オブジェクト移動速度データ524gが記憶される。
【0099】
画像データ524bは、ゲーム画像データを生成するためのポリゴンデータやテクスチャデータなどのデータである。太さデータ524cは、描画オブジェクト122の線(線分)の太さを決定するためのテーブルデータある。図8(A)には、太さデータ524cに従う線の太さテーブルが示される。具体的には、線の太さに対応して、ドット数およびダメージ(攻撃力)が記載される。この実施例では、3種類の太さ(細い、普通、太い)の各々に対応して、ドット数(1、3、5)が記載されるとともに、敵オブジェクト112、114に与えるダメージの数値(敵オブジェクトの耐久力を減算する数値)が記載される。ただし、これは一例であり、限定される必要はない。太さは2種類以上であれば、4種類以上に分類されてもよい。
【0100】
図7に戻って、オブジェクトデータ524dは、描画オブジェクト122についての情報を示すデータであり、プレイヤのタッチ操作による座標データをサンプリングするとともに、座標間の距離d1に応じてそれらを連結する線(線分)の太さを判別することによって生成される。図8(B)に示すように、オブジェクトデータ524dに従うオブジェクトの情報は、サンプル数に対応して、サンプリングした座標および線の太さが記載される。
【0101】
サンプル数は、座標データをサンプリングした順番に従って付されるシリアルな番号である。座標は、サンプリングされた座標データが示す座標(XY座標)である。ただし、詳細な説明は省略するが、第2LCD18の解像度とタッチパネル22の検出精度とは同じに設定され、また、これらの座標系は同じに設定される。したがって、タッチパネル22によって検出された座標データに従う座標は、そのまま第2LCD18上の座標として使用することができる。
【0102】
ただし、この実施例では、第2LCD18およびタッチパネル22の横方向がX軸方向であり、縦方向がY軸方向である。図1において、第2LCD18およびタッチパネル22の座標系における原点Oは、第2LCD18およびタッチパネル22の左頂点に設定され、X軸のプラス方向は図1における右方向であり、Y軸のプラス方向は図1における下方向である。
【0103】
また、太さは、上述したように、今回サンプリングされた座標データが示す座標と、直前にサンプリングされた座標データが示す座標との距離に応じて決定される。この太さに応じた線の太さ(ドット数)が図8(A)に示した線の太さテーブルから取得される。ただし、最初(サンプル数=1)の座標では、直前の座標が存在しないため、太さは判別されていない。
【0104】
図7に戻って、当り判定データ524eは、描画オブジェクト122が生成された際に、当該描画オブジェクト122と同じ或いは略同じ形状(大きさ)の透明のポリゴンで構成されるデータである。したがって、描画オブジェクト122が移動すると、これに従って当り判定のポリゴンも移動する。
【0105】
オブジェクト移動方向データ524fは、オブジェクト移動プログラム522fに従って生成されるベクトルVhについてのデータである。オブジェクト移動速度データ524gは、オブジェクト移動プログラム522fに従って算出される移動速度Aについてのデータである。
【0106】
なお、図示は省略するが、データ記憶領域524には、ゲームに必要な音を生成するための音(音楽)データが記憶されたり、ゲーム処理に必要なカウタン(タイマ)やフラグなどが設けられたりする。
【0107】
図9ないし図11は、図3に示したCPU50のゲーム全体処理を示すフロー図である。図9に示すように、CPU50は、ゲーム全体処理を開始すると、ステップS1で、ゲーム画面を表示する。図示は省略するが、ここでは、CPU50は、敵オブジェクト112、114および背景画像が描画されたゲーム画面を生成および表示する。つまり、描画オブジェクト122の存在しないゲーム画面が表示される。ただし、ブロックオブジェクト116が描画される場合もある。
【0108】
なお、図示は省略するが、ゲームが開始されたときに、制限時間をカウントするためのタイマがスタートされる。ただし、攻撃回数を制限する場合には、攻撃回数をカウントするカウンタがリセットされる。
【0109】
次のステップS3では、描画開始かどうかを判断する。つまり、CPU50は、タッチオフの状態からタッチオンの状態に変化したかどうかを判断する。具体的には、CPU50は、入力データバッファ524aに座標データが入力されたかどうかを判断する。ステップS3で“NO”であれば、つまり描画開始でなければ、そのまま同じステップS3に戻る。一方、ステップS3で“YES”であれば、つまり描画開始であれば、ステップS5でサンプリングを開始する。ここでは、CPU50は、最初に入力された座標データを描画開始位置の座標データとしてデータ記憶領域524に記憶する。つまり、オブジェクトデータ524d(オブジェクトの情報)の生成が開始されるのである。
【0110】
続くステップS7では、距離d1が一定距離L1(3ドット)以上であるかどうかを判断する。ここでは、CPU50は、入力データバッファ524aに時系列に従って記憶された座標データを順次参照し、直前にサンプリングした座標データが示す座標と現在参照している座標データが示す座標との距離d1を数1に従って算出し、当該距離d1が一定距離L1以上であるかどうかを判断する。
【0111】
ステップS7で“NO”であれば、つまり距離d1が一定距離L1以上でなければ、そのまま同じステップS7に戻る。つまり、距離d1が一定距離L1未満についての座標データをサンプリングしないことにより、単なる手振れによる座標データを排除しているのである。つまり、不要なデータによってメモリが圧迫されるのを回避してある。一方、ステップS7で“YES”であれば、つまり一定距離L1以上移動すれば、ステップS9で、現在参照している座標データをサンプリングする。つまり、CPU50は、現在参照している座標データをオブジェクトデータ524dに追加する。そして、ステップS11で、2つの座標間をその距離d1に応じた太さの線分で連結する。ここでは、CPU50は、今回サンプリングした座標と直前にサンプリングした座標とを、それらの座標間の距離d1に応じて太さテーブルで決定される太さ(ドット数)の線分で連結するのである。
【0112】
続いて、ステップS13では、描画を終了したかどうかを判断する。ここでは、CPU50は、タッチオンの状態からタッチオフの状態に変化したかどうかを判断する。具体的には、CPU50は、入力データバッファ524aへの座標データの入力が無くなったかどうかを判断するのである。ステップS13で“NO”であれば、つまり描画を終了していなければ、ステップS15で、座標データのサンプル数が最大数(200)を超えたかどうかを判断する。
【0113】
ステップS15で“YES”であれは、つまり座標データのサンプル数が最大数を超えれば、そのままステップS19に進む。図示は省略するが、ステップS15で“YES”の場合には、弾く速度αが0に設定された後に、ステップS19に進む。一方、ステップS15で“NO”であれば、つまり座標データのサンプル数が最大数を超えていなければ、そのままステップS7に戻る。
【0114】
また、ステップS13で“YES”であれば、つまり描画終了であれば、ステップS17で、後述する弾く速度の算出処理(図12参照)を実行して、ステップS19に進む。ステップS19では、移動速度Aを数3に従って算出する。
【0115】
続いて、ステップS21では、直前の座標との距離d2が一定距離L2(10ドット)以下の座標を除去する。つまり、CPU50は、オブジェクトデータ524dが示すオブジェクトの情報から方向ベクトルVhを生成するための座標を抽出しているのである。次のステップS23では、変数nに座標の総数を設定する。ここでは、CPU50は、ステップS21の処理によって除去されなかった座標の総数を設定するのである。
【0116】
図10に示すように、次のステップS25では、方向ベクトルVhを算出する。上述したように、Vhは数2に従って算出される。続くステップS27では、変数kに初期値を設定する(k=3)。この実施例では、方向ベクトルVhが示す方向に、描画オブジェクト122を、3フレーム分移動させるため、そのフレーム数をカウントするために変数kが設けられる。
【0117】
次のステップS29では、1フレーム分描画オブジェクト122を移動させる。ここでは、ステップS25で算出された方向ベクトルVhに、ステップS19で算出された移動速度Aによって決定される1フレーム分の移動距離だけ、描画オブジェクト122が移動される。そして、ステップS31で、移動後の位置において、敵オブジェクト112、114と描画オブジェクト122との当りが判定される。
【0118】
なお、当りの判定方法は、本願発明の本質的な内容ではなく、しかも既に周知であるため、詳細な説明は省略することにする。
【0119】
続いて、ステップS33では、敵に当ったかどうかを判断する。ステップS33で“NO”であれば、つまり敵に当っていない場合には、ステップS41に進む。一方、ステップS33で“YES”であれば、つまり敵に当った場合には、ステップS35で、その敵オブジェクト112、114の耐久力を、描画オブジェクト122の先端部分の太さに応じたダメージだけ減算する。図示は省略するが、このとき描画オブジェクト122によるダメージが、敵オブジェクト112、114の耐久力を上回る場合には、当該敵オブジェクト112、114はゲーム画面100(ゲーム空間)から消滅される。
【0120】
なお、図示は省略するが、上述したように、描画オブジェクト122の先端部分から敵オブジェクト112、114に当った場合にのみ、当該敵オブジェクト112、114にダメージを与えるようにしてあるため、描画オブジェクト122の先端部分以外の部分から敵オブジェクト112、114に当った場合には、敵オブジェクト112、114にダメージを与えずに、ステップS41に進む。
【0121】
また、図示は省略するが、描画オブジェクト122の先端部分からブロックオブジェクト116に当った場合には、当該ブロックオブジェクト116が消滅されることもある。
【0122】
そして、ステップS37で、すべての敵が消滅したかどうかを判断する。つまり、CPU50は、ゲーム画面100(ゲーム空間)において、すべての敵オブジェクト112、114が消滅したかどうかを判断する。ステップS37で“NO”であれば、つまりゲーム画面100(ゲーム空間)に、少なくとも1つの敵オブジェクト112、114が存在する場合には、ステップS41に進む。一方、ステップS37で“YES”であれば、つまりゲーム画面100(ゲーム空間)において、すべての敵オブジェクト112、114が消滅すれば、ステップS39で、ゲームクリア処理を実行して、ゲーム全体処理を終了する。たとえば、ステップS39では、ゲームをクリアしたことを表現するゲーム画面が表示されたり、ゲームをクリアしたことを表現する効果音や音楽が出力されたりする。
【0123】
ステップS41では、制限時間(たとえば、60秒)を超えたかどうかを判断する。つまり、CPU50は、ゲーム開始からの時間が制限時間を超えたかどうかを判断するのである。ただし、攻撃回数を制限する場合には、ここで、攻撃制限回数を超えたかどうかが判断される。また、攻撃回数は、後述するように、ステップS53の処理を終えて、ステップS3に戻る際に、1加算される。さらに、ゲーム開始からの時間と攻撃回数との両方に制限を設けて、いずれか一方でも制限を超える場合には、ゲームオーバとなるようにしてもよい。
【0124】
ステップS41で“NO”であれば、つまり制限時間を超えていなければ、図11に示すステップS45に進む。一方、ステップS41で“YES”であれば、つまり制限時間を超えていれば、ステップS43で、ゲームオーバ処理を実行して、ゲーム全体処理を終了する。たとえば、ステップSS43では、ゲームオーバになったことを表現するゲーム画面が表示されたり、ゲームオーバになったことを表現する効果音や音楽が出力されたりする。
【0125】
図11に示すように、ステップS45では、変数kを1減算し(k=k−1)、ステップS47では、変数kが0(k=0)であるかどうかを判断する。つまり、CPU50は、方向ベクトルVhの方向に、3フレーム分描画オブジェクト122を移動させたかどうかを判断するのである。
【0126】
ステップS47で“NO”であれば、つまり変数kが0でなければ、図10に示したステップS29に戻る。一方、ステップS47で“YES”であれば、つまり変数kが0であれば、ステップS49で、変数nを1減算して(n=n−1)、ステップS51で、変数nが1である(n=1)かどうかを判断する。つまり、CPU50は、方向ベクトルVhに従う描画オブジェクト122の移動を終了したかどうかを判断する。ステップS51で“NO”であれば、つまり変数nが1でなければ、ステップS25に戻って、次の方向ベクトルVhを算出する。一方、ステップS51で“YES”であれば、つまり変数nが1であれば、ステップS53で、ゲーム画面100外に出るまで、描画オブジェクト122を移動させる。ただし、ステップS53では、描画オブジェクト122は、最後に算出された方向ベクトルVhの方向に、移動速度Aで移動される。
【0127】
なお、図示は省略したが、ステップS29で、描画オブジェクト122を移動させた場合に、描画オブジェクト122のすべてがゲーム画面100外に出てしまった場合には、描画オブジェクト122をすべての方向ベクトルVhに従って移動させていない場合であっても、描画オブジェクト122を消滅させて、ステップS3に戻る。
【0128】
図12は、図9に示したステップS17の弾く速度の算出処理のフロー図である。図12に示すように、CPU50は、弾く速度の算出処理を開始すると、ステップS71で、変数pに座標総数を設定する。ここでは、CPU50は、オブジェクトデータ524dに含まれる座標の総数mを変数pに設定するのである。次にステップS73で、p番目の座標とp−1番目の座標との距離d3を算出し、ステップS75で、ステップS73で算出した距離d3をメインメモリ52の作業領域(図示せず)に記憶(一時記憶)する。
【0129】
続いて、ステップS77では、距離d3が一定距離L3(この実施例では、3ドット)以下であるかどうかを判断する。ステップS77で“NO”であれば、つまり距離d3が一定距離L3を超えている場合には、ステップS79で、変数pを1減算し(p=p−1)、ステップS81で、変数pが座標総数−20になったかどうかを判断する。つまり、サンプリングしたすべての座標のうち、末尾の座標から20サンプル分の座標について、弾く操作の有無の判断処理を終了したかどうかを判断する。
【0130】
ステップS81で“NO”であれば、つまり変数pが座標総数−20でなければ、そのままステップS73に戻る。一方、ステップS81で“YES”であれば、つまり変数pが座標総数−20であれば、弾く操作が無いと判断して、ステップS83で、弾く速度αに0を設定して、ゲーム全体処理にリターンする。
【0131】
また、ステップS77で“YES”であれば、つまり距離d3が一定距離L3以下であれば、ステップS85で、p番目の座標を弾く操作の開始位置とみなす。続くステップS87では、弾く操作の開始位置と末尾の座標との間で、最大距離dmaxを取得する。つまり、CPU50は、メインメモリ52の作業領域に記憶した複数の距離d3のうちの最大値を取得する。
【0132】
次のステップS89では、最大距離dmaxを用いて、数4に従って弾く速度αを算出する。そして、ステップS91で、弾く操作の開始位置から末尾の座標までの座標をオブジェクトデータ524dから削除して、ゲーム全体処理にリターンする。
【0133】
この実施例によれば、プレイヤのタッチ操作に従って描画オブジェクトが生成され、生成された描画オブジェクトがそのタッチ操作の軌跡に基づいて決定される経路に従って移動されるので、簡単な操作で複雑なオブジェクトを生成し、当該オブジェクトを複雑な経路に従って移動させることができる。したがって、戦略を立てて描画オブジェクトを生成する必要があるため、ゲームへの興味を増大させることができる。
【0134】
他の実施例のゲーム装置10は、描画オブジェクト122を描画(生成)している間に、一定時間以上、タッチ位置の座標が変化しない場合には、現時点までに生成された描画オブジェクト122の複製を、その軌跡に基づく移動経路に従って移動させるようにした以外は、上述の実施例と同じであるため、重複した記載については省略することにする。
【0135】
図示は省略するが、たとえば、描画オブジェクト122の複製は、当該描画オブジェクト122を半透明で表したオブジェクト(複製オブジェクト)である。この複製オブジェクトは、現時点において、描画オブジェクト122がどのように移動するかを、つまり描画オブジェクトの移動経路を、プレイヤに教示するためのものである。したがって、複製オブジェクトについては、敵オブジェクト112、114やブロックオブジェクト116との当りを判定する必要はないため、当り判定のポリゴンは設定されない。
【0136】
また、複製オブジェクトは、タッチ位置の座標が一定時間以上変化しない場合に、移動を開始するため、弾き操作による速度の増加は無い。
【0137】
具体的には、図9−図11に示したゲーム全体処理に、図13および図14に示す複製オブジェクトの移動処理が追加される。なお、複製オブジェクトの移動処理は、描画オブジェクト122の移動処理と略同じであるため、同じ処理については簡単に説明することにする。
【0138】
図13に示すように、ステップS7で“NO”であれば、つまり一定距離L1以上移動していなければ、ステップS101で、停止カウンタがカウント中であるかどうかを判断する。停止カウンタは、タッチ位置が停止している時間をカウントするためのカウンタ(タイマ)であり、図示は省略するが、メインメモリ52のデータ記憶領域524に設定される。ステップS101で“YES”であれば、つまり停止カウンタがカウント中であれば、そのままステップS105に進む。一方、ステップS101で“NO”であれば、つまり停止カウンタがカウント中でなければ、ステップS103で、停止カウンタのカウントを開始して、ステップS105に進む。ただし、ステップS103では、停止カウンタがリセットおよびスタートされる。
【0139】
ステップS105では、停止時間が一定時間(たとえば、3秒)を超えたかどうかを判断する。つまり、CPU50は、停止カウンタのカウント値が一定時間を超えたかどうかを判断するのである。ステップS105で“NO”であれば、つまり停止時間が一定時間以下であれば、そのままステップS7に戻る。一方、ステップS105で“YES”であれば、つまり停止時間が一定時間を超えれば、ステップS107で、停止カウンタのカウント停止を指示して、図14に示すステップS109に進む。
【0140】
なお、図示は省略するが、ステップS7で“YES”と判断された場合にも、停止カウンタのカウントが停止される。
【0141】
図14に示すように、ステップS109では、直前の座標との距離が一定距離L2以下の座標を除去する。次のステップS111では、変数nに座標の総数を設定する。続いて、ステップS113では、方向ベクトルVhを算出する。そして、ステップS115で、変数kに初期値(3)を設定する。
【0142】
次のステップS117では、1フレーム分複製オブジェクトを移動させる。ただし、移動速度Aは、予め設定された基準速度A0である。次にステップS119では、変数kを1減算する。そして、変数kが0であるかどうかを判断する。ステップS121で“NO”であれば、そのままステップS117に戻る。一方、ステップS121で“YES”であれば、ステップS123で、変数nを1減算する。
【0143】
そして、ステップS125で、変数nが1であるかどうかを判断する。ステップS125で“NO”であれば、そのままステップS113に戻る。一方、ステップS125で“YES”であれば、ステップS127で、画面外に出るまで複製オブジェクトを移動させて、ステップS7に戻る。
【0144】
他の実施例によれば、所定の条件の下に、複製オブジェクトを移動させて、予め描画オブジェクトの移動経路を知ることができるので、そのままタッチオフしたり、描画オブオブジェクトの描画を継続したり、弾き操作を実行したりするなど、戦略を立てて敵オブジェクトを攻撃することができる。したがって、ゲームへの興味をさらに増大させることができる。
【0145】
なお、上述の実施例では、弾き操作が有った場合には、それによって描画オブジェクトの速度を速くするようにしたが、速度を遅くするようにしてもよい。
【0146】
また、上述の実施例では、弾き操作が有った場合に、その弾き操作における最大距離に基づいて加算する速度を算出するようにしたが、これに限定される必要はない。たとえば、いずれかの操作スイッチ20を押下したり、仮想ゲームにおいて所定のイベントが発生したりした場合に、描画オブジェクトの移動速度を速くしてもよい。また、加算する速度は、一定値に決定していてもよい。
【0147】
さらに、上述の実施例では、オブジェクト制御装置の一例として、携帯型のゲーム装置についてのみ説明したが、これに限定される必要はない。たとえば、タッチパネル、コンピュータマウスまたはペンタブレットのようなポインティングデバイスを有する、またはそのようなポインティングデバイスが接続された、据置型のゲーム装置、パーソナルコンピュータ、PDA、ゲーム機能を有する携帯電話機のような他のオブジェクト制御装置にも本願発明を適用することができる。ただし、タッチパネル以外のポインティングデバイスを設ける場合には、ポインティングデバイスによる指示位置を示す必要があるため、マウスポインタのような指示画像がゲーム画面上に表示される。
【0148】
さらにまた、ゲーム装置の構成は実施例のものに限定される必要はない。たとえば、カメラは、1つでもよく、無くてもよい。また、タッチパネルを2つのLCD上に設けてもよい。
【符号の説明】
【0149】
10 …ゲーム装置
12,14 …ハウジング
16,18 …LCD
20 …操作ボタン
22 …タッチパネル
24 …タッチペン
26,28 …メモリカード
32,34 …カメラ
50 …CPU
52 …メインメモリ
54 …メモリ制御回路
56 …保存用データメモリ
58 …プリセットデータ用メモリ
60,62 …メモリカードI/F
64 …無線通信モジュール
66 …ローカル通信モジュール
68 …RTC
70 …電源回路
72 …I/F回路
74,76 …GPU
78,80 …VRAM
82 …LCDコントローラ
84 …マイク
【特許請求の範囲】
【請求項1】
オブジェクト制御プログラムであって、
コンピュータを、
プレイヤの操作入力を検出する入力検出手段、
入力検出手段によって検出された操作入力に従って第1オブジェクトを生成するオブジェクト生成手段、および
オブジェクト生成手段によって生成された第1オブジェクトを、入力検出手段によって検出された操作入力に基づく移動経路に従って移動させるオブジェクト移動手段として機能させる、オブジェクト制御プログラム。
【請求項2】
オブジェクト生成手段によって第1オブジェクトを生成する場合の入力検出手段によって検出された操作入力が示す軌跡に基づいて、当該第1オブジェクトが移動する際の移動方向を決定する移動方向決定手段としてコンピュータをさらに機能させ、
オブジェクト移動手段は、移動方向決定手段によって決定された移動方向を用いて決定される移動経路に従って第1オブジェクトを移動させる、請求項1記載のオブジェクト移動制御プログラム。
【請求項3】
プレイヤの操作入力は、表示手段の表示面の座標を指示する座標データであり、
オブジェクト生成手段は、複数の座標データが示す座標を時系列に従って線分で連結することにより、第1オブジェクトを生成する、請求項1または2記載のオブジェクト制御プログラム。
【請求項4】
オブジェクト生成手段は、時間的に連続する座標間の距離に応じて線分の太さを変化させる、請求項3記載のオブジェクト制御プログラム。
【請求項5】
時間的に連続する座標間の距離が一定距離未満である状態が継続するとき、現時点においてオブジェクト生成手段によって生成された第1オブジェクトの複製を、入力検出手段によって検出された現時点までの操作入力に基づく移動経路に従って移動させる複製移動手段としてコンピュータをさらに機能させる、請求項3または4記載のオブジェクト制御プログラム。
【請求項6】
オブジェクト移動制御手段は、所定の条件を満たすとき、第1オブジェクトの移動速度を変化させる、請求項1ないし5のいずれかに記載のオブジェクト制御プログラム。
【請求項7】
プレイヤの操作入力は、表示手段の表示面の座標を指示する座標データであり、
所定の条件を満たすか否かを、複数の座標データが示す座標の変化に基づいて判断する条件判断手段としてさらに機能させる、請求項6記載のオブジェクト制御プログラム。
【請求項8】
仮想空間には、第1オブジェクトとは異なる第2オブジェクトが存在し、
オブジェクト移動手段によって移動された第1オブジェクトが第2オブジェクトに当ったとき、少なくとも当該第2オブジェクトに衝撃を与える衝撃手段としてコンピュータをさらに機能させる、請求項1ないし7のいずれかに記載のオブジェクト制御プログラム。
【請求項9】
プレイヤの操作入力を検出する入力検出手段、
入力検出手段によって検出された操作入力に従ってオブジェクトを生成するオブジェクト生成手段、および
オブジェクト生成手段によって生成されたオブジェクトを、入力検出手段によって検出された操作入力に基づく移動経路に従って移動させるオブジェクト移動手段を備える、オブジェクト制御装置。
【請求項1】
オブジェクト制御プログラムであって、
コンピュータを、
プレイヤの操作入力を検出する入力検出手段、
入力検出手段によって検出された操作入力に従って第1オブジェクトを生成するオブジェクト生成手段、および
オブジェクト生成手段によって生成された第1オブジェクトを、入力検出手段によって検出された操作入力に基づく移動経路に従って移動させるオブジェクト移動手段として機能させる、オブジェクト制御プログラム。
【請求項2】
オブジェクト生成手段によって第1オブジェクトを生成する場合の入力検出手段によって検出された操作入力が示す軌跡に基づいて、当該第1オブジェクトが移動する際の移動方向を決定する移動方向決定手段としてコンピュータをさらに機能させ、
オブジェクト移動手段は、移動方向決定手段によって決定された移動方向を用いて決定される移動経路に従って第1オブジェクトを移動させる、請求項1記載のオブジェクト移動制御プログラム。
【請求項3】
プレイヤの操作入力は、表示手段の表示面の座標を指示する座標データであり、
オブジェクト生成手段は、複数の座標データが示す座標を時系列に従って線分で連結することにより、第1オブジェクトを生成する、請求項1または2記載のオブジェクト制御プログラム。
【請求項4】
オブジェクト生成手段は、時間的に連続する座標間の距離に応じて線分の太さを変化させる、請求項3記載のオブジェクト制御プログラム。
【請求項5】
時間的に連続する座標間の距離が一定距離未満である状態が継続するとき、現時点においてオブジェクト生成手段によって生成された第1オブジェクトの複製を、入力検出手段によって検出された現時点までの操作入力に基づく移動経路に従って移動させる複製移動手段としてコンピュータをさらに機能させる、請求項3または4記載のオブジェクト制御プログラム。
【請求項6】
オブジェクト移動制御手段は、所定の条件を満たすとき、第1オブジェクトの移動速度を変化させる、請求項1ないし5のいずれかに記載のオブジェクト制御プログラム。
【請求項7】
プレイヤの操作入力は、表示手段の表示面の座標を指示する座標データであり、
所定の条件を満たすか否かを、複数の座標データが示す座標の変化に基づいて判断する条件判断手段としてさらに機能させる、請求項6記載のオブジェクト制御プログラム。
【請求項8】
仮想空間には、第1オブジェクトとは異なる第2オブジェクトが存在し、
オブジェクト移動手段によって移動された第1オブジェクトが第2オブジェクトに当ったとき、少なくとも当該第2オブジェクトに衝撃を与える衝撃手段としてコンピュータをさらに機能させる、請求項1ないし7のいずれかに記載のオブジェクト制御プログラム。
【請求項9】
プレイヤの操作入力を検出する入力検出手段、
入力検出手段によって検出された操作入力に従ってオブジェクトを生成するオブジェクト生成手段、および
オブジェクト生成手段によって生成されたオブジェクトを、入力検出手段によって検出された操作入力に基づく移動経路に従って移動させるオブジェクト移動手段を備える、オブジェクト制御装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2011−177203(P2011−177203A)
【公開日】平成23年9月15日(2011.9.15)
【国際特許分類】
【出願番号】特願2010−41530(P2010−41530)
【出願日】平成22年2月26日(2010.2.26)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成23年9月15日(2011.9.15)
【国際特許分類】
【出願日】平成22年2月26日(2010.2.26)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]