<第1実施例>
図1を参照して、この発明の第1実施例であるタッチパネルを用いた入力装置は、ゲーム装置10に適用される。このゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。このLCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
操作スイッチ20は、方向指示スイッチ(十字スイッチ)20a,スタートスイッチ20b、セレクトスイッチ20c、動作スイッチ(Aボタン)20d、動作スイッチ(Bボタン)20e、動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rを含む。スイッチ20a,20bおよび20cは、下側ハウジング16bの一方主面であり、LCD14の左側に配置される。また、スイッチ20dおよび20eは、下側ハウジング16bの一方主面であり、LCD14の右側に配置される。さらに、スイッチ20Lおよびスイッチ20Rは、それぞれ、下側ハウジング16bの上端(天面)の一部であり、上側ハウジング16aとの連結部以外に当該連結部を挟むように、左右に配置される。
方向指示スイッチ20aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、プレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。スタートスイッチ20bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止(Pause)したりする等に用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
動作スイッチ20dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ20eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。
動作スイッチ20L(左押しボタン)および動作スイッチ20R(右押しボタン)は、プッシュボタンで構成され、左押しボタン(Lボタン)20Lおよび右押しボタン(Rボタン)20Rは、Aボタン20dおよびBボタン20eと同様の操作に用いることができ、また、Aボタン20dおよびBボタン20eの補助的な操作に用いることができる。
また、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル22は、その上面をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり、撫でたり、触れたり(以下、単に「押圧する」という。)することにより操作すると、スティック24等の操作位置の座標を検出して、検出した座標(検出座標)に対応する座標データを出力する。
なお、この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出精度も表示画面に対応して256dot×192dotとしてあるが、タッチパネル22の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
たとえば、LCD12にはゲーム画面が表示され、LCD14には文字情報やアイコン等を含む操作画面が表示される。したがって、プレイヤはスティック24等でタッチパネル22を操作することにより、LCD14の操作画面に表示される文字情報やアイコン等によるコマンドを選択したり、LCD12に表示されるゲーム画面(マップ)のスクロール(徐々に移動表示)方向を指示したりする等することができる。また、ゲームの種類によっては、その他各種の入力指示、たとえばLCD14に表示されたアイコンの選択または操作、座標入力指示等に用いることもできる。
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の上面にタッチパネル22が設けられるので、2画面(LCD12,14)と2系統の操作部(20,22)を有する構成となるのである。
また、この実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)近傍に設けられる収納部(収納穴)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要もない。
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
なお、図1では表現できないが、下側ハウジング16bの音抜き孔18と対応する位置であり、この下側ハウジング16bの内部にはスピーカ32(図2参照)が設けられる。
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるととともに、RAM48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出カインターフエース回路(以下、「I/F回路」という。)54およびLCDコントローラ60が接続される。
コネコタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
ROM28aは、ゲーム装置10で実行すべきゲーム(仮想ゲーム)のためのゲームプログラム、画像(キャラクタ画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)データおよびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データを記憶(セーブ)する。
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶されたゲームプログラム、画像データおよび音データ等をRAM48にロードし、ロードしたゲームプログラムを実行する。また、CPUコア42は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM48に記憶しつつゲーム処理を実行する。
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM48に記憶(ロード)される。
ただし、メモリカード28のROM28aには、ゲーム以外の他のアプリケーションについてのプログラムおよび当該アプリケーションの実行に必要な画像データが記憶される。また、必要に応じて、音(音楽)データが記憶されてもよい。かかる場合には、ゲーム装置10では、当該アプリケーションが実行される。
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従ってゲーム画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU50およびGPU52のそれぞれに与える。
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:キャラクタデータやテクスチャ等のデータ)は、GPU50およびGPU52が、それぞれ、第1のVRAM56および第2のVRAM58にアクセスして取得する。なお、CPUコア42は、描画に必要な画像データをGPU50およびGPU52を介して第1のVRAM56および第2のVRAM58に書き込む。GPU50はVRAM56にアクセスして描画のためのゲーム画像データを作成し、GPU52はVRAM58にアクセスして描画のためのゲーム画像データを作成する。
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、GPU50によって作成されたゲーム画像データをLCD12に出力し、GPU52によって作成されたゲーム画像データをLCD14に出力する。また、LCDコントローラ60は、レジスタ62のデータ値が「1」である場合には、GPU50によって作成されたゲーム画像データをLCD14に出力し、GPU52によって作成されたゲーム画像データをLCD12に出力する。
I/F回路54には、操作スイッチ20,タッチパネル22およびスピーカ32が接続される。ここで、操作スイッチ20は、上述したスイッチ20a,20b,20c,20d,20e,20Lおよび20Rであり、操作スイッチ20が操作されると、対応する操作信号(操作データ)がI/F回路54を介してCPUコア42に入力される。また、タッチパネル22からの座標データがI/F回路54を介してCPUコア42に入力される。さらに、CPUコア42は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬制音)などのゲームに必要な音データをRAM48から読み出し、I/F回路54を介してスピーカ32から出力する。
図2に示すように、ゲーム装置10は構成されるが、この発明の入力装置としては、少なくともLCD14、タッチパネル22、メモリカード28(厳密には、ROM28a)、CPUコア42、RAM48、GPU52、I/F回路54、VRAM58およびLCDコントローラ60によって構成される。
上述したように、この実施例のゲーム装置10では、LCD14上にタッチパネル22を備えることにより、タッチパネル22を用いて、入力操作を行うことができる。以下、タッチパネル22を用いた入力操作について説明するが、分かり易くするため、アルファベットキー等のボタン図柄をLCD14に表示し、当該ボタン図柄を操作(押圧)することにより指示されたアルファベットの文字をLCD12に表示する場合について説明することにする。また、図3以降では、簡単のため、ゲーム装置10のうち、LCD12およびLCD14のみを図示し、他の部分については図示を省略することにする。ただし、LCD14上にはタッチパネル22が配置されているものとする。
図3を参照して、LCD12には、指示されたアルファベットの文字を表示するための入力画面100が表示される。この入力画面100には、カーソル102が表示され、カーソル102は指示があったアルファベットの文字についての表示位置(入力位置)を示す。また、LCD14には、入力操作を行うためのボタン図柄が表示された操作画面110が表示される。この操作画面110には、シフトキーについてのボタン図柄112が表示されるとともに、アルファベットの小文字についてのボタン図柄114が表示される。この実施例では、アルファベットの小文字“q”,“w”,“e”,“a”,“s”,“d”,“z”,“x”,“c”についてのボタン図柄114a,114b,114c,114d,114e,114f,114g,114h,114iが表示される。以下、単にボタン図柄114と言う場合には、ボタン図柄114a〜114iのすべてを含む。
なお、この実施例では、簡単のため、一部のアルファベットのボタン図柄114a〜114iのみが表示されるように示してあるが、他のアルファベットのボタン図柄も表示される。たとえば、スクロール等の表示切替により、他のアルファベットのボタン図柄が表示されるようにすればよい。
また、図4に示すように、図3に示したボタン図柄114a〜114iの表示位置(表示領域)のそれぞれに対応して、タッチパネル22には、ボタン図柄114a〜114iについての入力有効領域(説明の便宜上、「第1入力有効領域」という。)120aが設定される。ここで、入力有効領域は、プレイヤの入力操作が有効であるか否かを判断するための領域をいう。また、入力有効領域の設定とは、当該領域を指定(規定)するための座標データを設定(この実施例では、RAM48に記憶)することを意味する。この実施例では、入力有効領域が四角形の単純な形状であるため、対角に位置する2つの頂点の座標(たとえば、左上角の座標と右下角の座標)のみを記憶すればよい。なお、入力有効領域の形状が複雑な場合は、当該領域内に含まれるすべての座標データを記憶するようにしてもよい。以下、同様である。第1入力有効領域120aを規定する座標データは、LCD14に表示したボタン図柄114a〜114iのそれぞれの表示領域に対応するタッチパネル22上の位置を示す座標データであり、タッチパネル22のdotに対応する。
したがって、プレイヤがボタン図柄114a〜114iのいずれか1つをスティック24等で押圧すると、タッチパネル22は、押圧された点(1点)に対応する座標データをI/F回路54およびバス44を介してCPUコア42に入力する。一方、CPUコア42は、タッチパネル22からの座標データを検出すると、当該座標データがRAM48に記憶された座標データ(第1入力有効領域120aの座標データ)と一致するか否かを判断する。この判断結果に基づいて、CPUコア42は、ボタン図柄114の入力操作の有無および入力操作のあったボタン図柄114a,114b,…,114iの種類を判別する。
また、図4に示すように、タッチパネル22には、第1入力有効領域120aとは異なる第2入力有効領域120bが設定される。この第2入力有効領域120bでは、図3からも分かるように、第1入力有効領域120aとは異なり、LCD14の対応する位置にボタン図柄が表示されていない。第2入力有効領域120bは、第1入力有効領域120aが設定されたアルファベットの小文字(以下、「英小文字」という場合がある。)に対応するアルファベットの大文字(以下、「英大文字」という場合がある。)についての入力有効領域である。
たとえば、汎用のコンピュータに接続される(或いは一体的に設けられる)キーボードの入力方法と同様に、この実施例のタッチパネル22を用いた入力操作では、シフトキーのボタン図柄112を押圧しながら所望のアルファベットの小文字についてのボタン図柄114a,114b,…,114iを押圧すると、当該アルファベットの大文字を入力することができる。つまり、第2入力有効領域120bは、このアルファベットの大文字を入力可能にするために設定される。
タッチパネル22では、通常、2つの箇所(2点)が押圧されると、押圧された2点を結ぶ直線の中心点の座標データが出力される。したがって、ボタン図柄112とボタン図柄114a〜114iのいずれか1つとが押圧されると、その中心点の座標データが出力されるのである。当該操作に対応してアルファベットの大文字を入力できるように、第2入力有効領域120bは、ボタン図柄112とボタン図柄114a〜114iのそれぞれとを結ぶ直線の中点に設定される。具体的には、第2入力有効領域120bには、アルファベットの大文字“Q”,“W”,“E”,“A”,“S”,“D”,“Z”,“X”,“C”についての入力有効領域が含まれる。
なお、図4では、第1入力有効領域120aおよび第2入力有効領域120bを可視表示してあるが、これは設定された入力有効領域の位置ないし範囲を分かり易く示すためであり、実際には、上述したように、入力有効領域を規定する座標データがRAM48に記憶されるだけであり、プレイヤが見ることはできない。
図5は、LCD12およびLCD14の表示および入力操作の一例を示す図解図である。なお、図5(図6以降も同様。)においては、タッチパネル22に設定された第2入力有効領域120bも示してあるが、上述したように、実際には画面に表示されることはなく、プレイヤには見えない。また、第1入力有効領域120aは、図面の都合上、省略してある。以下、同様である。
この図5は、たとえば、プレイヤが右手の人指し指で“q”のボタン図柄114a(図3参照)を押圧し、これに応じて、入力画面100が更新された状態を示している。このように、1点を入力(1点入力)した場合には、対応する座標データがタッチパネル22から入力され、CPUコア42は、入力された座標データに基づいて入力操作を判断する。入力操作の判断については上述したとおりである。ここでは、CPUコア42は、英小文字“q”の入力操作があったと判断する。次に、CPUコア42は、英小文字“q”の表示処理をGPU50に指示する。GPU50は、図3において、カーソル102が示す位置に英小文字“q”を表示するための画面データを、VRAM56に記憶された画像データを用いて生成する。生成された画面データは、LCDコントローラ60によってLCD12に表示される。このとき、カーソル102の位置は、英小文字“q”を入力した後の入力位置を示す位置に移動(更新)される。
図6は、LCD12およびLCD14の表示および入力操作の他の例を示す図解図である。この図6は、プレイヤが、左手の人指し指でシフトキーのボタン図柄112を押圧するとともに、右手の人指し指で英小文字“x”のボタン図柄114h(図3参照)を押圧し、英小文字“q”に続いて英大文字“X”が表示画面100に表示された状態を示している。このように、2点を入力(2点入力)した場合には、当該2点を結ぶ直線の中点についての座標データがタッチパネル22から入力される。図6に示すように、ここでは、第2入力有効領域120b内の“X”の入力有効領域内の座標データが入力され、CPUコア42は、英大文字“X”の入力操作があったと判断する。次に、CPUコア42は、英大文字“X”の表示処理をGPU50に指示する。GPU50は、図5において、カーソル102が示す位置に英大文字“X”を表示するための画面データを、VRAM56に記憶された画像データを用いて生成する。生成された画面データは、LCDコントローラ60によってLCD12に表示される。このとき、カーソル102の位置は、英大文字“X”を入力した後の入力位置を示す位置に移動(更新)される。
以上のようにして、1点入力により、英小文字を入力することができ、また、2点入力により、英大文字を入力することができる。
図7は、LCD12およびLCD14の表示および入力操作のその他の例を示す図解図である。この図7は、たとえば、プレイヤが左手の人指し指でシフトキーのボタン図柄112を押圧した後に、同じく左手の人指し指で第2入力有効領域120b内の英大文字“X”(図7では、プレイヤの指で隠れている。)についての入力有効領域を押圧した状態を示している。つまり、1点入力により、第2入力有効領域120bが押圧されている。このような場合には、正しい操作方法とは言えないため、英大文字“X”の入力操作を受けつけてしまうと、プレイヤの所望でない文字がLCD12に表示されてしまうことになる。これを回避するためには、1点入力と2点入力とを正確に判別(判断)する必要がある。
このような1点入力と2点入力とを判別する方法としては、連続する2つの座標データが一定の時間内であり、かつ一定の距離以上離れている場合には、今回の座標データを2点入力によるものと判断し、連続する2つの座標データが一定の時間外または一定の距離未満である場合には、それぞれの座標データを1点入力によるものと判断する方法がある。
しかし、このような方法では、一定の時間内であり、かつ一定の距離以上離れて、1点入力を2度行った場合であっても、2点入力と誤判断してしまうという問題ある。
そこで、この実施例では、プレイヤがタッチパネル22から手(指)を離したか否か、すなわち、タッチパネル22から座標データの入力があるか否かをも判断することにより、1点入力と2点入力とを正確に判別するようにしてある。
簡単に説明すると、CPUコア42は、タッチパネル22から座標データが入力されるか否かを画像更新期間(この実施例では、1フレーム=1/60秒)において、一定時間(この実施例では、1/4フレーム)毎に検出する。CPUコア42は、タッチパネル22から座標データの入力がある場合には、入力フラグをオンするとともに、その座標データ(検出座標)を記憶する。一方、タッチパネル22から座標データの入力がない場合には、入力フラグをオフするとともに、座標データなしを記憶する。
入力フラグの変化および座標データの変化に基づいて、CPUコア42は、1点入力または2点入力を判別する。以下、具体的に説明する。図8(A)および図8(B)は、いずれも、1フレーム期間において、検出座標が(x,y)から(x´,y´)に変化した場合の入力フラグの変化を示すタイミングチャートである。ただし、検出座標(x,y)と検出座標(x´,y´)とは、一定距離以上離れているものとする。
図8(A)では、検出座標が(x,y)から(x´,y´)に変化する途中で、入力フラグがオフとなっており、1フレーム期間の途中で、座標データが検出されていない状態が存在する。このことは、プレイヤがタッチパネル22から手(指)を離したことを意味している。したがって、このような場合には、1点入力と判断される。
一方、図8(B)では、検出座標が(x,y)から(x´,y´)に変化する途中であっても、入力フラグは常にオンであり、1フレーム期間の途中で、座標データが検出されていない状態は存在しない。このことは、プレイヤがタッチパネル22から手(指)を離していないことを意味する。したがって、このような場合には、2点入力と判断される。
図9はメモリカード28に設けられるROM28aのメモリマップを示す。このメモリマップは、上述したような英小文字や英大文字を入力するアプリケーションについてのプログラム等を記憶する。具体的には、図9を参照して、ROM28aは、プログラム記憶領域70、画像データ記憶領域72および入力有効領域座標データ記憶領域74を含む。プログラム記憶領域70には、座標データ検出プログラム70a、入力フラグ検出プログラム70b、座標変化判別プログラム70c、入力フラグ判別プログラム70d、入力状態判断プログラム70e、入力有効領域設定プログラム70fおよびボタン図柄表示制御プログラム70gが記憶される。
座標データ検出プログラム70aは、タッチパネル22から入力される座標データを、1フレーム期間内の1/4フレーム毎に検出するためのプログラムである。入力フラグ検出プログラム70bは、座標データ検出プログラム70aの検出結果に基づいて、入力フラグをオンまたはオフし、その情報をRAM48の入力フラグ記憶領域80(図11参照)に書き込むためのプログラムである。座標変化判別プログラム70cは、前回の検出座標(座標データ)と今回の検出座標(座標データ)とを比較し、検出座標に変化があるかどうかを判別するためのプログラムである。
入力フラグ判別プログラム70dは、前回の入力フラグと今回の入力フラグとを比較し、入力フラグの状態(オン/オフ)に変化があるかどうかを判別するためのプログラムである。入力状態判断プログラム70eは、入力状態(1点入力または2点入力)を判断し、判断結果に応じて、後述する1点入力フラグ84aおよび2点入力フラグ84b(図11参照)をオン/オフするためのプログラムである。入力有効領域設定プログラム70fは、第1入力有効領域120aおよび第2入力有効領域120bを設定するためのプログラムであり、この実施例では、後述する入力有効領域座標データ記憶領域74に記憶される座標データを、各英小文字と各英大文字とに対応して、RAM48に記憶する。ボタン図柄表示制御プログラム70gは、後述するシフトキー図柄データ72a、アルファベットキー図柄データ72bのようなボタン図柄データを用いて、LCD14にボタン図柄112およびボタン図柄114を表示するためのプログラムである。
なお、図示は省略するが、プログラム記憶領域70には、画面データを生成するための画像生成プログラムや生成した画面データを表示制御するための画像表示プログラム等も記憶される。
画像データ記憶領域72には、シフトキー図柄データ72a、アルファベットキー図柄データ72bおよび英(小,大)文字データ72cが記憶される。シフトキー図柄データ72aは、シフトキーのボタン図柄112を表示するための図柄データである。この実施例では、図3等に示したように、ボタン図柄112は、形状が長方形であり、その内部に“シフト”の文字が描画される。アルファベットキー図柄データ72bは、アルファベットキーのボタン図柄114を表示するための図柄データある。この実施例では、英小文字についての図柄データであり、ボタン図柄114は、形状が正方形であり、その内部に“q”,“w”,“e”,…,“i”の文字が描画される。上述したように、図3等では、アルファベットの一部のみを示したが、アルファベットの“a”から“z”までのすべてについての図柄データが記憶される。英(小,大)文字データ72cは、英小文字および英大文字についてのフォントデータであり、プレイヤの入力に応じて、英小文字や英大文字をLCD12に表示するために用いられる。
入力有効領域座標データ記憶領域74には、シフトキー、アルファベットの小文字およびアルファベットの大文字のそれぞれについての入力有効領域の座標データが記憶される。上述したように、この実施例では、LCD14とタッチパネル22の解像度は同じであるため、ボタン図柄114の表示領域(表示位置)の座標データと入力有効領域の座標データとは一致する。つまり、入力有効領域についての座標データは、ボタン図柄112およびボタン図柄114をLCD14に表示する場合にも参照されるのである。
なお、この実施例では、ボタン図柄112には入力有効領域は設定されないため、シフトキーについての座標データは、シフトキーのボタン図柄112を表示するためにのみ利用される。
具体的には、図10に示すように、各キー(ボタン)に対応して、入力有効領域の座標データが記憶される。たとえば、英小文字“a”の入力有効領域として、(Xa1,Ya1),(Xan,Yan)が記憶される。2つの座標を結ぶ直線を対角線とする正方形が英小文字“a”の入力有効領域である。また、英小文字“a”のボタン図柄の表示位置でもある。詳細な説明は省略するが、他の英小文字についても同様である。また、英大文字“A”入力有効領域として、((Xsh1+Xa1)/2,(Ysh1+Ya1)/2)),((Xshn+Xan)/2,(Yshn+Yan)/2))が記憶される。これは、上述したように、シフトキーと英小文字キーとの中点位置が当該英小文字に対応する英大文字キーの入力有効領域となるためである。この2つの座標を結ぶ直線を対角線とする正方形が英大文字“A”の入力有効領域である。詳細な説明は省略するが、他の英大文字についても同様である。
なお、上述したように、シフトキーについては、座標(Xsh1,Ysh1),(Xshn,Yshn)が記憶され、この2つの座標を結ぶ直線を対角線とする長方形がシフトキーの表示位置である。
図11はRAM48のメモリマップを示す。この図11を参照して、RAM48は、入力フラグ記憶領域80、検出座標記憶領域82、入力状態記憶領域84および入力有効領域記憶領域86を含む。入力フラグ記憶領域80には、前回の入力フラグについての状態データ80aと今回の入力フラグについての状態データ80bが記憶される。たとえば、入力フラグ記憶領域80は、少なくとも2ビットのシフトレジスタで構成され、入力フラグの状態が判定される毎に各ビットのデータ値が更新される。入力フラグがオンであれば、対応するビットにはデータ値“1”が記憶され、入力フラグがオフであれば、対応するビットにはデータ値“0”が記憶される。
検出座標記憶領域82には、前回の検出座標のデータ82aおよび今回の検出座標のデータ82bが記憶され、上述した座標データ検出プログラム70aに従って更新される。入力状態記憶領域84には、1点入力フラグ84aおよび2点入力フラグ84bが記憶される。入力状態判断プログラム70eに従って1点入力が判断されると、1点入力フラグ84aはオンされ、このとき2点入力フラグ84bはオフされる。一方、入力状態判断プログラム70eに従って2点入力が判断されると、2点入力フラグ84bはオンされ、このとき1点入力フラグ84aはオフされる。そして、入力有効領域86には、上述したように、入力有効領域設定プログラム70fに従って、英小文字の入力有効領域120aの座標データと英大文字の入力有効領域120bの座標データとが、各英小文字と各英大文字とに対応して記憶される。
なお、図示は省略するが、上述したように、RAM48には、ROM28aからプログラムや画像データ等が一度に全部、または順次的かつ部分的にロードされるとともに、当該プログラムの処理等に必要な他のフラグやデータなども記憶される。
図12は図2に示したCPUコア42の全体処理を示すフロー図である。この図12を参照して、CPUコア42は全体処理を開始すると、ステップS1で、初期設定を実行する。たとえば、初期設定では、RAM48内の各種フラグを初期化したり、VRAM56,58を初期化したりするなどする。
続くステップS3では、第2LCDすなわちLCD14へのボタン図柄112,114の表示処理を実行する。具体的には、CPUコア42は、GPU52にボタン図柄112,114の表示処理の実行を指示し、これに応じて、GPU52は、VRAM58からボタン図柄112,114についての画像データを取得して画面データを生成する。その後、CPUコア42の指示に従って、LCDコントローラ60がGPU52によって生成された画面データをLCD14に出力する。したがって、図3等に示した操作画面データ110がLCD14に表示される。
次にステップS5では、各アルファベットキーの表示領域に対応して、タッチパネル22に各英小文字の入力有効領域(第1入力有効領域120a)を設定する。図11では省略したが、ROM28aに記憶された入力有効領域を規定する2つの座標データを参照して、第1入力有効領域120aについての座標データが各英小文字に対応してRAM48に記憶される。続く、ステップS7では、シフトキーと各アルファベットキーとの中間位置に、大文字の入力有効領域(第2入力有効領域120b)を設定する。図11では省略したが、ROM28aに記憶された各英大文字の入力有効領域を規定する2つの座標データを参照して、第2入力有効領域120bについての座標データが各英大文字に対応してRAM48に記憶される。
続いて、ステップS9では、後述する座標検出処理(1)を実行し(図13および図14参照)、ステップS11では、表示更新処理を実行する。このステップS11では、CPUコア42は、LCDコントローラ60を制御して、座標検出処理(1)において生成された画面データをLCD12に出力する。これにより、図3等に示した入力画面100がLCD12に表示される。
そして、ステップS13では、キー入力(入力操作)が終了したかどかを判断する。つまり、プレイヤが操作スイッチ20を操作して、入力終了を指示したかどうかを判断する。ステップS13で“NO”であれば、つまりキー入力が終了していなければ、そのままステップS9に戻る。一方、ステップS13で“YES”であれば、つまりキー入力が終了すれば、全体処理を終了する。
図13に示すように、CPUコア42は座標検出処理(1)を開始すると、ステップS21で、入力フラグ検出回数nを“1”に設定する(n=1)。次のステップS23では、タッチパネル入力があるかどうかを判断する。つまり、タッチパネル22から座標データが入力されたかどうかを判断する。ここで、タッチパネル入力がなければ、“NO”となり、ステップS25で、入力フラグをオフして、図14に示すステップ53に進む。しかし、タッチパネル入力があれば、“YES”となり、ステップS27で、入力フラグをオンして、ステップS29で、タッチパネル22から入力された座標データを検出する。
続いて、ステップS31では、RAM48を参照して、前回の座標データがあるかどうかを判断する。ステップS31で“NO”であれば、つまり前回の座標データがなければ、図14に示すステップS41に進む。一方、ステップS31で“YES”であれば、つまり前回の座標データがあれば、ステップS33で、座標変化があるかどうかを判断する。具体的には、前回の座標データと今回の座標データとを比較し、異なるかどうかを判断する。
ステップS33で“NO”であれば、つまり座標変化がなければ、そのままステップS53に進む。一方、ステップS33で“YES”であれば、つまり座標変化があれば、ステップS35で、変化量が所定値以上であるかどうかを判断する。ステップS35で“NO”であれば、つまり変化量が所定値以上でなければ、そのままステップS53に進む。しかし、ステップS35で“YES”であれば、つまり変化量が所定値以上であれば、図14に示すステップS37で、前回2点入力と判断されたかどうかを判断する。つまり、RAM48に記憶される2点入力フラグ84bがオンかどうかを判断する。
なお、変化量が所定値以上であるかどうかを判断するようにするのは、いわゆるドラッグ操作のような1点入力の連続操作を誤って2点入力と判断しないようにするためである。以下、同様である。
ステップS37で“YES”であれば、つまり2点入力フラグ84bがオンであれば、前回2点入力と判断されたと判断して、そのままステップS41に進む。一方、ステップS37で“NO”であれば、つまり1点入力フラグ84aがオンであれば、前回1点入力と判断されたと判断し、ステップS39で、前回の入力フラグはオフかどうかを判断する。具体的には、RAM48を参照して、前回の入力フラグの状態データ80aがオフを示すかどうかを判断する。
ステップS39で“YES”であれば、つまり状態データ80aがオフを示す場合には、前回の入力フラグはオフであると判断し、ステップS41で、1点入力フラグ84aをオンする。このとき、2点入力フラグ84bをオフする。そして、次のステップS43で、検出座標がアルファベットキーすなわち英小文字についての第1入力有効領域120a(ボタン図柄114)を指示しているかどうかを判断する。ステップS43で“NO”であれば、つまり英小文字についての第1入力有効領域120aを指示していない場合には、文字入力でないと判断して、そのままステップS53に進む。一方、ステップS43で“YES”であれば、つまり英小文字についての第1入力有効領域120aを指示している場合には、ステップS45で、対応する英小文字を表示セットして、ステップS53に進む。具体的には、ステップS45では、対応する英小文字の表示処理をGPU50に指示し、これに応じて、GPU50がVRAM56にアクセスして当該英小文字を含む画面データを生成する。
一方、ステップS39で“NO”であれば、つまり状態データ80aがオンを示す場合には、前回の入力フラグはオンであると判断し、ステップS47で、2点入力フラグ84bをオンする。このとき、1点入力フラグ84aをオフする。そして、次のステップS49で、検出座標が大文字入力有効領域すなわち第2入力有効領域120bを指示しているかどうかを判断する。ステップS49で“NO”であれば、つまり第2入力有効領域120bを指示していない場合には、文字入力でないと判断して、そのままステップS53に進む。しかし、ステップS49で“YES”であれば、つまり第2入力有効領域120bを指示している場合には、ステップS51で、対応する英大文字を表示セットして、ステップS53に進む。具体的には、ステップS51では、対応する英大文字の表示処理をGPU50に指示し、これに応じて、GPU50がVRAM56にアクセスして当該英大文字を含む画面データを生成する。
ステップS53では、検出回数nが“4”であるかどうかを判断する。つまり、ここでは、1フレーム期間が経過したかどうかを判断する。ステップS53で“NO”であれば、つまりn=4でなければ、ステップS55で、検出回数nをインクリメントして(n=n+1)、図13に示したステップS23に戻る。一方、ステップS53で“YES”であれば、つまりn=4であれば、座標検出処理(1)をリターンする。
なお、座標検出処理(1)では、ステップS23からS55までの処理のスキャンタイムが1/4フレームに相当するため、1フレーム期間内の一定時間毎にタッチパネル22からの入力が検出される(S23)。
第1実施例によれば、1フレーム期間内の一定時間毎にタッチパネルからの入力があるかどうかを判断し、その入力の有無に基づいて入力状態を判断するので、1点入力または2点入力を正確に判断することができる。
なお、第1実施例では、携帯型のゲーム装置にタッチパネルを用いた入力装置を適用した場合についてのみ説明したが、当該入力装置は銀行のATMやPDAのような小型PC等の電子機器にも適用できることは言うまでもない。
<第2実施例>
第2実施例のゲーム装置10は、シフトキーが押圧されたときに、アルファベットのボタン図柄114を変更するとともに、第2入力有効領域120bを設定するようにした以外は、第1実施例のゲーム装置10と同じであるため、重複した説明は省略する。これは、2点入力と判断された場合であっても、操作方法が正しくなければ、英大文字が表示(入力)されるのを回避するためである。すなわち、第1実施例では、英小文字のボタン図柄114を押圧した後に、シフトキーのボタン図柄112を押圧した場合であっても、2点入力と判断して、英大文字を入力することができるためである。
図15は、LCD12およびLCD14の表示例を示す図解図である。この図15に示すように、第2実施例では、LCD12には入力画面100が表示され、LCD14にはシフトキーのボタン図柄112および英小文字のボタン図柄114を含む操作画面110が表示される。また、図16に示すように、プレイヤがボタン図柄112を押圧していない状態では、タッチパネル22には、第1入力有効領域120aが設定され、また、シフトキーのボタン図柄112に対応して、入力有効領域(説明の便宜上、「第3入力有効領域」という。)120cが設定される。ただし、この状態では、第1実施例で説明した第2入力有効領域120bは設定されていない。後で詳細に説明するが、第2入力有効領域120bは、シフトキーのボタン図柄112が英小文字のボタン図柄114よりも先に押圧されたときに設定される。
図17は、第2実施例におけるLCD12およびLCD14の表示および操作の一例を示す図解図である。この図17は、プレイヤが左手の人指し指でシフトキーのボタン図柄112を押圧し、これに応じて、英小文字のボタン図柄114に代えて英大文字のボタン図柄114´が表示されるとともに、第2入力有効領域120bがタッチパネル22に設定された状態を示す。ボタン図柄114´は、図15に示した英小文字のボタン図柄114a,114b,…114iのそれぞれに対応して、図17に示すように、英大文字“Q”,“W”,“E”,“A”,“S”,“D”,“Z”,“X”,“C”についてのボタン図柄114´a,114´b,114´c,114´d,114´e,114´f,114´g,114´h,114´iを示している。また、図17では、英小文字“q”が既に入力された入力画面100がLCD12に表示される。
図17に示す状態において、図18に示すように、プレイヤがさらに右手の人指し指で英大文字“E”のボタン図柄114´c(図17参照)を押圧すると、2点入力が判断され、このときタッチパネル22から入力される座標データがCPUコア42によって検出される。すると、CPUコア42は、検出した座標データから第2入力有効領域120b内の入力有効領域を特定し、当該入力有効領域に対応する英大文字“E”を表示セットする。表示方法の詳細は、第1実施例で説明した場合と同じであるため、重複した説明は省略する。したがって、LCD12には、英小文字“q”に続いて英大文字“E”が入力された入力画面100が表示される。
また、図19は、図15に示す状態において、プレイヤが右手の人指し指で、英小文字“c”のボタン図柄114i(図3参照)を押圧し、当該英小文字“c”を入力した入力画面100がLCD12に表示された状態を示す。この図19に示す状態において、図20に示すように、プレイヤがさらに左手の人指し指で、シフトキーのボタン図柄112を押圧した場合には、シフトキーのボタン図柄112が最初に押圧されていないため、第2入力有効領域120bは設定されない。したがって、第2入力有効領域120b内の座標データが入力されたとしても、第2入力有効領域120bの座標データがRAM48に設定されていないため、このような入力操作は無効となる。つまり、操作方法が正しくないため、誤って英大文字が入力画面100に表示されることはない。
この第2実施例におけるROM28aのメモリマップが図21に示される。この図21に示すメモリマップは、第1実施例において説明したメモリマップ(図9)とほぼ同じであるため、異なる部分についてのみ説明することにする。図21を参照して、プログラム記憶領域70には、上述したプログラム70a〜70gに加えて、1点入力位置判別処理プログラム70hおよび2点入力位置判別処理プログラム70iが記憶される。
1点入力位置判別処理プログラム70hは、入力状態判断プログラム70eに従って1点入力が判断された場合に、検出座標に基づいて1点入力の入力操作を判別するためのプログラムである。2点入力位置判別処理プログラム70iは、入力状態判断プログラム70eに従って2点入力が判断された場合に、検出座標に基づいて2点入力の入力操作を判別するためのプログラムである。
ただし、第2実施例では、入力有効領域設定プログラム70fは、第1入力有効領域120aを設定するとともに、第3入力有効領域120cを設定し、また、シフトキーのボタン図柄112が最初に押圧されたときのみ、第2入力有効領域120bを設定する点が、第1実施例とは異なる。
画像データ記憶領域72に記憶されるデータは、第1実施例とほぼ同じであり、アルファベットキーの図柄データ72bに、さらに英大文字キー図柄のデータが記憶される。この英大文字キー図柄のデータは、英小文字キー図柄のデータとほぼ同じであり、その図柄は、正方形の形状であり、その内部に該当する英大文字(“A”〜“Z”)が記述される。入力有効領域座標データ記憶領域74もまた、第1実施例と同じである。第1実施例と異なるのは、シフトキーに対応して記憶される座標データが第3入力有効領域120cの設定に用いられる点である。
この第2実施例では、図2に示したCPUコア42が図22に示すフロー図に従って全体処理を実行する。ただし、第1実施例の図12に示した全体処理と同じ処理については簡単に説明することにする。CPUコア42は、全体処理を開始すると、ステップS61で、初期設定を実行する。次のステップS63では、LCD14へのボタン図柄表示処理を実行する。続くステップS65では、シフトキーと各アルファベットキー(各英小文字キー)との表示領域に対応して、タッチパネル22に、シフトキーと各英小文字キーとの入力有効領域(第1入力有効領域120aおよび第3入力有効領域120c)を設定する。
続いて、ステップS67では、後述する座標検出処理(2)を実行し(図23および図24参照)、ステップS69で、表示更新処理を実行する。そして、ステップS71で、キー入力終了かどうかを判断する。ステップS71で“NO”であれば、つまりキー入力終了でなければ、ステップS67に戻る。しかし、ステップS71で“YES”であれば、つまりキー入力終了であれば、全体処理を終了する。
図23および図24は、図22のステップS67において実行される座標検出処理(2)を示すフロー図である。なお、この座標検出処理(2)では、第1実施例の図13および図14に示した座標検出処理(1)と同じ処理については、簡単に説明することにする。図23を参照して、CPUコア42は、座標検出処理(2)を開始すると、ステップS81で、入力フラグ検出回数nに“1”を設定する(n=1)。続くステップS83では、タッチパネル入力があるかどうか判断する。
ステップS83で“YES”であれば、つまりタッチパネル入力があれば、ステップS85で、入力フラグをオンし、ステップS87で、座標データを検出する。次のステップS89では、前回の座標データ(検出座標のデータ82a)があるかどうかを判断する。ステップS89で“NO”であれば、つまり前回の座標データがなければ、図24に示すステップS105に進む。一方、ステップS89で“YES”であれば、つまり前回の座標データがあれば、ステップS91で、座標変化があるかどうかを判断する。座標変化がなければ、“NO”となり、図24に示すステップS113に進む。しかし、座標変化があれば、“YES”となり、ステップS93で、変化量が所定値以上であるかどうかを判断する。変化量が所定値未満であれば、“NO”となり、そのままステップS113に進む。一方、変化量が所定値以上であれば、“YES”となり、図24に示すステップS101に進む。
一方、ステップS83で“NO”であれば、つまりタッチパネル入力がなければ、ステップS95で、入力フラグをオフし、ステップS97で、大文字入力有効領域(第2入力有効領域120b)が設定されているかどうかを判断する。ステップS97で“NO”であれば、大文字入力有効領域が設定されていなければ、そのままステップS113に進む。一方、ステップS97で“YES”であれば、つまり大文字入力有効領域が設定されていれば、ステップS99で、後述する入力有効領域設定処理(2)を実行して(図28参照)、ステップ113に進む。
図24に示すように、ステップS101では、前回2点入力と判断されたかどうかを判断する。ステップS101で“YES”であれば、つまり前回2点入力と判断されたと判断すると、そのままステップS105に進む。一方、ステップS101で“NO”であれば、つまり前回1点入力と判断されたと判断すると、ステップS103で、前回の入力フラグがオフであるかどうかを判断する。ステップS103で“YES”であれば、つまり前回の入力フラグがオフであれば、ステップS105に進む。
ステップS105では、1点入力フラグをオンし、ステップS107で、後述する1点入力位置判別処理を実行して(図25参照)、ステップS113に進む。しかし、ステップS103で“NO”であれば、つまり前回の入力フラグがオンであれば、ステップS109で、2点入力フラグをオンし、ステップS111で、後述する2点入力位置判別処理を実行して(図27参照)、ステップS113に進む。
ステップS113では、n=4かどうかを判断する。n=4でなければ、“NO”となり、ステップS115で、検出回数nを1加算して、図23に示したステップS83に戻る。しかし、n=4であれば、座標検出処理(2)をリターンする。
図25は、図24に示したステップS107で実行される1点入力位置判別処理を示すフロー図である。この図25を参照して、ステップS121で、検出座標がシフトキーを指示するかどうかを判断する。つまり、タッチパネル22から入力された座標データが、シフトキーに設定されている第3入力有効領域120cに含まれるか否かを判断する。ステップS121で“YES”であれば、つまり検出座標がシフトキーを指示する場合には、ステップS123で、入力有効領域設定処理(1)を実行して(図26参照)、1点入力位置判別処理をリターンする。
しかし、ステップS121で“NO”であれば、つまり検出座標がシフトキーを指示していなければ、ステップS125で、検出座標がアルファベットキーを指示しているかどうかを判断する。ステップS125で“NO”であれば、つまり検出座標がアルファベットキーを指示していない場合には、そのまま1点入力位置判別処理をリターンする。一方、ステップS125で“YES”であれば、つまり検出座標がアルファベットキーを指示している場合には、ステップS127で、検出座標に対応する入力有効領域を有する英小文字を第1LCD(LCD12)に表示セットして、1点入力位置判別処理をリターンする。つまり、ステップS127では、検出した座標データが含まれる第1表示有効領域120aに対応する英小文字を含む画面データの作成を、GPU50に指示する。
図26は、図25に示したステップS123で実行される入力有効領域設定処理(1)を示すフロー図である。この図26を参照して、CPUコア42は、入力有効領域設定処理(1)を開始すると、ステップS131で、シフトキーと各アルファベットキーとの中間座標位置に、各アルファベットの大文字の入力有効領域(第2入力有効領域120b)を設定する。続くステップS133では、各アルファベットキーの表示領域に対応して設定されている英小文字の入力有効領域(第1入力有効領域120a)をリセット(クリア)する。そして、ステップS135では、各アルファベットキーに表示されている小文字を大文字に表示セットして、入力有効領域設定処理(1)をリターンする。つまり、ステップS135では、ボタン図柄114に代えてボタン図柄114´を表示するための画面データの生成を、GPU52に指示する。
図27は、図24に示したステップS111において実行される2点入力位置判別処理を示すフロー図である。この図27を参照して、CPUコア42は、2点入力位置判別処理を開始すると、ステップS141で、大文字入力有効領域(第2入力有効領域120b)が設定されているかどうかを判断する。ステップS141で“NO”であれば、つまり大文字入力有効領域が設定されていない場合には、そのまま2点入力位置判別処理をリターンする。一方、ステップS141で“YES”であれば、つまり大文字入力有効領域が設定されている場合には、ステップS143で、検出座標が大文字入力有効領域を指示しているかどうかを判断する。つまり、タッチパネル22から入力された座標データが第2入力有効領域120bに含まれるかどうかを判断する。
ステップS143で“NO”であれば、つまり検出座標が大文字入力有効領域を指示していない場合には、そのままステップS147に進む。一方、ステップS143で“YES”であれば、つまり検出座標が大文字入力有効領域を指示している場合には、ステップS145で、検出座標に対応する英大文字を第1LCD(LCD12)に表示セットして、ステップS147に進む。つまり、検出した座標データを含む第2入力有効領域120b内の入力有効領域に対応する英大文字を特定し、当該英大文字を含む画面データの表示処理をGPU50に指示する。ステップS147では、入力有効領域設定処理(2)を実行して(図28参照)、2点入力位置判別処理をリターンする。
図28は、図23のステップS99および図27のステップS147で実行される入力有効領域設定処理(2)を示すフロー図である。この図28を参照して、CPUコア42は入力有効領域設定処理(2)を開始すると、ステップS151で、大文字入力有効領域(第2入力有効領域120b)をリセットする。続くステップS153では、各アルファベットキーの表示領域に対応して、小文字入力有効領域(第1入力有効領域120a)を設定する。そして、ステップS155では、各アルファベットキーに表示されている大文字を小文字に表示セットして、入力有効領域設定処理(2)をリターンする。つまり、ステップS155では、ボタン図柄114´に代えてボタン図柄114を表示するための画面データの生成を、GPU52に指示する。
第2実施例によれば、第1実施例と同様に、1点入力と2点入力とを正確に判別することができる。また、シフトキーが最初に押されたときにのみ、第2入力有効領域を設定するので、誤操作による入力処理が実行されるのを防止することができる。
<第3実施例>
第3実施例のゲーム装置10は、タッチパネル22を用いて、ゲーム装置10で実行されるゲームについての入力操作を行うようにした以外は、第1実施例と同じであるため、重複した説明は省略することにする。
ゲーム装置10で実行されるゲームは、たとえば、プレイヤキャラクタが味方キャラクタを引き連れて、仮想ゲーム空間内を移動(探検)し、所定のアイテムを収集して、最終的な目的を達成するものである。また、仮想ゲーム空間内には、敵キャラクタが存在し、プレイヤキャラクタは、プレイヤの操作に従って、味方キャラクタを指示して、当該敵キャラクタと戦闘する。
図29には、当該ゲームについての入力操作を実行するための操作画面200の一例が示される。この操作画面200は、LCD14に表示される。また、操作画面200には、プレイヤキャラクタ202、複数(ここでは、4体)の味方キャラクタ202aおよび敵キャラクタ204が表示されるとともに、味方キャラクタの操作キー(味方キャラクタ操作キー)の4つのボタン図柄212が表示される。
また、敵キャラクタ204およびボタン図柄212の表示領域の位置に対応して、タッチパネル22(図29では省略)に、第1入力有効領域220aが設定される。さらに、タッチパネル22には、敵キャラクタ204と各ボタン図柄212との間に、第2入力有効領域220bが設定される。
なお、図29に示すように、敵キャラクタ204に対応して設定される第1入力有効領域220aは、当該敵キャラクタ204の形状や大きさに拘わらず、当該敵キャラクタ204を囲む四角形で決定される。
たとえば、プレイヤは、左手の人指し指で“1”のボタン図柄212を押圧し、右手の人指し指で敵キャラクタ204を押圧すると、2つの押圧点を結ぶ直線の中心点についての座標データ(2点入力による座標データ)がCPUコア42で検出される。CPUコア42は、検出した座標データが第2入力有効領域220bの“1”についての入力有効領域に含まれると判断すると、プレイヤキャラクタ202が、“1”に対応する味方キャラクタ202aを敵キャラクタ204に投げつけるような演出を表現する操作画面200を表示する。
なお、図示は省略するが、LCD12にも、LCD14と同様の画面(ゲーム画面)が表示されるが、当該ゲーム画面にはボタン図柄212は表示されない。
また、図示は省略するが、たとえば、1点入力によりLCD14(タッチパネル22)上の所望の位置を指定(指示)した場合には、プレイヤキャラクタ202を当該所望の位置に移動させることができる。
また、第3実施例のROM28aのメモリマップは図30のように示される。このメモリマップは、第1実施例の図9に示したメモリマップとほぼ同じであるため、異なる点について説明することにする。図30に示すように、ROM28aのプログラム記憶領域70には、プログラム70a〜70gに加えて、さらに、ゲームメイン処理プログラム70j、キャラクタ(図柄)移動制御プログラム70k、キャラクタ画像生成プログラム70mおよび2点入力位置算出プログラム70nが記憶される。
ゲームメイン処理プログラム70jは、ゲーム装置10(CPUコア42)によって実行される仮想ゲームのメイン処理のためのプログラムである。キャラクタ(図柄)移動制御プログラム70kは、プレイヤの操作に従ってプレイヤキャラクタ202や味方キャラクタ202aを仮想空間内で移動させ、または、プレイヤの操作によらないで味方キャラクタ202aや敵キャラクタ204を仮想空間内で移動させるためのプログラムである。キャラクタ画像生成プログラム70mは、後述するキャラクタ画像データ720bを用いて、ゲームに登場するプレイヤキャラクタ202、味方キャラクタ202aおよび敵キャラクタなどのキャラクタ画像を生成するためのプログラムである。そして、2点入力位置算出プログラム70nは、敵キャラクタ204の移動に従って第2入力有効領域220bの設定位置(座標)を算出(変更)するためのプログラムである。
また、画像データ記憶領域72には、図9に示したデータ72a〜72cに代えて、味方キャラクタ操作キー図柄データ720aおよびキャラクタ画像データ720bが記憶される。味方キャラクタ操作キー図柄データ720aは、操作画面200に表示されるボタン図柄212についての図柄のデータである。図29では、ボタン図柄212の一例を示したが、形状や表示内容は、当該ゲームの開発者等によって任意に設定可能である。キャラクタ画像データ720bは、上述したプレイヤキャラクタ202、味方キャラクタ202aおよび敵キャラクタ204についての画像データ(ポリゴンデータやテクスチャデータ)である。
図示は省略するが、入力有効領域座標データ記憶領域74には、第1実施例に示した内容とは異なり、敵キャラクタ204および各ボタン図柄212に対応して設定される第1入力有効領域220aについての座標データが記憶されるとともに、敵キャラクタ204と各ボタン図柄212との間に設定される第2入力有効領域220bについての座標データが記憶される。ただし、敵キャラクタ204は、ゲームの進行に従ってその位置が移動されるため、入力有効領域座標データ記憶領域74に記憶される第1入力有効領域220aと第2入力有効領域220bとの座標データは、ゲーム開始(再開)時にのみ用いられ、その後は、ゲームの進行に従って、2点入力位置算出プログラム70nを実行することにより変更(計算)される。
第3実施例においては、図2に示したCPUコア42が図31に示すようなゲーム処理のフロー図を実行する。なお、第1実施例の図12に示した全体処理と同じ処理については、簡単に説明することにする。図31を参照して、CPUコア42は、ゲーム処理を開始すると、ステップS161で、初期設定を実行する。次のステップS163では、第2LCD(LCD14)にプレイヤキャラクタ202、味方キャラクタ202a、敵キャラクタ204および味方キャラクタ操作指示ボタン(ボタン図柄212)を含む操作画面200の表示処理を実行する。
続くステップS165では、敵キャラクタ204の表示位置と各味方キャラクタ操作指示ボタン(ボタン図柄212)の表示位置とから中間位置を算出する。次のステップS167では、ステップS165において算出された中間位置に攻撃用入力有効領域すなわち第2入力有効領域220bを設定する。ただし、ゲーム開始当初では、ステップS165では、計算処理を実行することなく、そのままステップS167に進み、ステップS167で、入力有効領域座標データ記憶領域74に記憶される座標データに従って、第2入力有効領域220bを設定する。
続いて、ステップS169では、後述する座標検出処理(3)(図32および図33参照)を実行し、ステップS171で、操作画面表示更新処理を実行する。このステップS171では、ステップS169で検出された座標データに基づいてプレイヤキャラクタ202や味方キャラクタ202aを表示制御するとともに、ゲームプログラム(ゲームメイン処理プログラム70j)およびプレイヤの操作に応じて敵キャラクタ204を移動制御する。次のステップS173では、その他の処理を実行する。詳細な説明は省略するが、このステップS173では、たとえば、LCD12に表示されるゲーム画面を更新したり、ゲーム音楽(BGM)を再生したり、必要に応じて、ゲームデータのバックアップ処理を実行したりする。そして、ステップS175では、ゲーム終了かどうかを判断する。ここでは、ゲームオーバになったり、プレイヤからゲーム終了の指示が入力されたりしたかどうかを判断する。ステップS175で“NO”であれば、つまりゲーム終了でなければ、ステップS165に戻る。一方、ステップS175で“YES”であれば、つまりゲーム終了であれば、ゲーム処理を終了する。
図32および図33は、図31に示したステップS169の座標検出処理(3)を示すフロー図である。なお、第1実施例の図13および図14に示した座標検出処理(1)と同様の処理については、簡単に説明することにする。図32を参照して、CPUコア42は座標検出処理(3)を開始すると、ステップS181で、入力フラグ検出回数nに“1”を設定する(n=1)。次のステップS183では、タッチパネル入力があるかどうかを判断する。ステップS183で“NO”であれば、つまりタッチパネル入力がなければ、ステップS185で、入力フラグをオフして、図33に示すステップS211に進む。
一方、ステップS183で“YES”であれば、つまりタッチパネル入力があれば、ステップS187で、入力フラグをオンし、ステップS189で、座標データを検出する。次のステップS191では、前回の座標データがあるかどうかを判断する。ステップS191で“NO”であれば、つまり前回の座標データがない場合には、図33に示すステップS201に進む。一方、ステップS191で“YES”であれば、つまり前回の座標データがある場合には、ステップS193で、座標変化があるかどうかを判断する。
ステップS193で“NO”であれば、つまり座標変化がない場合には、そのままステップS211に進む。一方、ステップS193で“YES”であれば、つまり座標変化がある場合には、ステップS195で、変化量が所定値以上かどうかを判断する。ステップS195で“NO”であれば、つまり変化量が所定値未満であれば、そのままステップS211に進む。一方、ステップS195で“YES”であれば、つまり変化量が所定値以上であれば、図33に示すステップS197で、前回2点入力と判断されたかどうかを判断する。
ステップS197で“YES”であれば、つまり前回2点入力と判断されていた場合には、そのままステップS201に進む。しかし、ステップS197で“NO”であれば、つまり前回1点入力と判断されていた場合には、ステップS199で、前回の入力フラグがオフであるかどうかを判断する。ステップS199で“YES”であれば、つまり前回の入力フラグがオフであれば、ステップ201に進んで、1点入力フラグをオンする。そして、次のステップ203で、検出された座標データが示す座標位置にプレイヤキャラクタ202を移動させるように表示セットして、ステップS211に進む。しかし、ステップS199で“NO”であれば、つまり前回の入力フラグがオンであれば、ステップS205で、2点入力フラグをオンし、ステップS207で、検出座標が第2入力有効領域220bを指示しているかどうかを判断する。
ステップS207で“NO”であれば、つまり検出座標が第2入力有効領域220bを指示していない場合には、そのままステップS211に進む。一方、ステップS207で“YES”であれば、つまり検出座標が第2入力有効領域220bを指示している場合には、ステップS209で、指示された攻撃用入力有効領域(第2入力有効領域220b)に対応する味方キャラクタ202aが敵キャラクタ204に攻撃を行うように表示セットして、ステップS211に進む。
そして、ステップS211では、n=4かどうかを判断する。ステップS211で“NO”であれば、つまりn=4でなければ、ステップS213で、検出回数nをインクリメントして(n=n+1)、図32に示したステップS183に戻る。一方、ステップS211で“YES”であれば、つまりn=4であれば、座標検出処理(3)をリターンする。
第3実施例によれば、ゲームの入力操作においても、1点入力および2点入力を正確に判断することができる。
また、タッチパネルを用いた入力装置を操作することにより、ゲームをプレイできるので、ゲームの面白さを増大させることができる。
なお、第3実施例においても、第2実施例に示した場合と同様に、最初にボタン図柄212が操作されたときに、第2入力有効領域220bを設定するようにすることもできる。