図1を参照して、この発明の一実施例であるゲーム装置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の検出面の検出精度は、LCD14の表示面の解像度よりも低くてもよく、高くてもよい。
LCD12およびLCD14には異なるゲーム画像(ゲーム画面)を表示することができる。たとえば、一方のLCD(たとえば、LCD12)にゲームをプレイするためのゲーム画面を表示し、他方のLCD(たとえば、LCD14)に当該ゲームを操作するための文字情報を入力したり、アイコンを指示したりするためのゲーム画面(操作画面)を表示することができる。したがって、プレイヤはスティック24等でタッチパネル22を操作することにより、LCD14の画面上で、文字情報(コマンド)を入力したり、アイコン(或いは所定の画像)を指示したりすることができる。
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の上面にタッチパネル22が設けられるので、2画面(12,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に記憶(ロード)される。
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に出力する。
なお、LCDコントローラ60は、VRAM56およびVRAM58から直接ゲーム画像データを読み出したり、GPU50およびGPU52を介してVRAM56およびVRAM58からゲーム画像データを読み出したりする。
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から出力する。
図3は、この実施例のゲーム装置10のLCD12に表示されるゲーム画面200およびLCD14に表示されるゲーム画面220の例を示す図解図である。図3に示すように、ゲーム画面200では、この実施例の仮想ゲームの3次元仮想空間(ゲーム空間)のうち、少なくともプレイヤキャラクタ202を含む一部の領域(範囲)が表示される。図3に示すように、たとえば、プレイヤキャラクタ202は、ゲーム画面200の中央から右寄りに表示され、プレイヤキャラクタ202に対面するように、敵キャラクタ204がゲーム画面200の中央から左寄りに表示される。また、ゲーム画面200では、森林等の背景オブジェクトも表示される。さらに、ゲーム画面200の上部には、メッセージ表示領域206が設けられる。ここでは、メッセージ表示領域206には、後述するゲーム画面220を用いた記号の入力(手書き入力)を促すメッセージ(たとえば、「魔法の記号を書いてください」)が表示される。さらにまた、ゲーム画面200の下部には、記号サンプル表示領域208が設けられる。詳細な図示は省略するが、記号サンプル表示領域208の各マス目には、入力可能な記号(以下、「サンプル記号」ということがある。)が表示される(図4(B)参照)。
また、ゲーム画面220ないし操作画面(入力画面)には、候補表示領域222、手書き入力領域224および記号表示領域226が設けられる。候補表示領域222は、記号列を入力する場合に、入力すべき記号の候補を表示するための領域であり、ゲーム画面220の中央から右寄りに設けられる。手書き入力領域224は、プレイヤがスティック24を用いて記号を手書き(入力)するための領域であり、ゲーム画面220の中央から左寄りに設けられる。記号表示領域226は、プレイヤが手書きした記号を表示するための領域であり、ゲーム画面220の中央上部に設けられる。
なお、図示は省略するが、記号表示領域226には、次に入力される(表示すべき)文字の表示位置を示すカーソル(指示画像)も表示される。以下に示す図4ないし図7においても同じである。
たとえば、プレイヤキャラクタ202と敵キャラクタ204との戦闘場面において、プレイヤキャラクタ202に所望の攻撃(魔法、技など)を実行させるために、プレイヤは、コマンド(または、呪文、暗号、パスワードなど)を手書きで入力する。戦闘場面で実行可能な攻撃すなわち入力可能なコマンドは、プレイヤキャラクタ202の種類やレベルに応じて複数用意(決定)されており、たとえば、各コマンドは1つの記号または2つ以上の記号を含む記号列で表される。以下、図4ないし図7を用いて、コマンド(記号または記号列)の入力方法について説明することにする。
図4(A)には、コマンド(記号または記号列)を入力する場面(ここでは、戦闘場面)になったときに、LCD14に表示されるゲーム画面220が示される。また、図4(B)には、プレイヤが入力可能な記号列の例として、第1記号列、第2記号列および第3記号列が示される。また、図4(B)には、プレイヤが入力可能な記号の例として、第1記号、第2記号、第3記号、連続入力開始記号および連続入力終了記号が示される。図4(B)から分かるように、第1記号列、第2記号列および第3記号列は、第1記号、第2記号および第3記号の各々を少なくとも1つ含んでいる。第1記号、第2記号および第3記号が図3に示したゲーム画面200の記号サンプル表示領域208に表示される記号である。ただし、連続入力開始記号および連続入力終了記号も記号サンプル表示領域208に表示される。ここで、連続入力開始記号は、記号列を入力することを決定(確定)したことを示す記号であり、連続入力終了記号は記号列の入力を終了したことを示す記号であり、いずれの記号も記号列(コマンド)には含まれない。つまり、連続入力開始記号と連続入力終了記号との間に入力された2以上の記号の配列が記号列である。
たとえば、図4(A)に示すゲーム画面200において、プレイヤがスティック24を用いて手書き入力領域224に所望の記号を入力する。ここで、図4(B)からも分かるように、入力可能な記号(サンプル記号)はすべて一筆書き可能である。したがって、この実施例では、プレイヤが記号を入力したか否かは、タッチ入力の状態(タッチオン状態またはタッチオフ状態)の変化によって検出するようにしてある。具体的には、タッチオフ状態からタッチオン状態に変化すると、記号の入力を開始したと判断し、その後、再びタッチオフ状態に変化すると、記号の入力を終了したと判断する。記号の入力開始(タッチオン)から入力終了(タッチオフ)までに、タッチパネル22から入力される座標データを時系列で記憶しておき、複数の座標データが示す座標(タッチ座標)によって形成される軌跡に基づいて、プレイヤが記述(描画)した記号を判定する。記号の判定方法は、後で詳細に説明するため、ここでは詳細な説明は省略する。
入力された記号が第1記号、第2記号または第3記号として判定されると、判定された記号(コマンド)に設定された攻撃をプレイヤキャラクタ202に実行させる。ただし、記号に設定された攻撃に必要なマジックポイントが、現在のプレイヤキャラクタ202のマジックポイント以下である場合に、当該攻撃を実行することができる。一方、記号に設定された攻撃に必要なマジックポイントが、現在のプレイヤキャラクタ202のマジックポイントを超える場合には、当該攻撃を実行することはできない。
プレイヤキャラクタ202が敵キャラクタ204を攻撃すると、敵キャラクタ204の生命力(ヒットポイント)が当該攻撃に応じて減算される。また、このとき、攻撃に必要なマジックポイントが、プレイヤキャラクタ202の現在のマジックポイントから減算される。つまり、プレイヤキャラクタ202および敵キャラクタ204に関するパラメータが変化されるのである。
そして、敵キャラクタ204のヒットポイントが無くなると、プレイヤキャラクタ202は戦闘に勝利し、次の面ないしステージに進む。一方、戦闘において、敵キャラクタ204はプレイヤキャラクタ202を攻撃するため、プレイヤキャラクタ202のヒットポイントが無くなると、プレイヤキャラクタ202は戦闘に敗退し、ゲームオーバとなる。
また、プレイヤが連続入力開始記号を入力し、これが判定されると、記号列の入力が開始される。たとえば、図4(B)に示す第1記号列、第2記号列および第3記号列のいずれかを入力することができると仮定し、記号列の入力方法について説明する。図5(A)は、連続入力すなわち記号列の入力が開始され、1番目の記号を入力する前のゲーム画面220を示す。上述したように、ここでは、第1記号列、第2記号列または第3記号列を入力することができるため、これらの記号列が設定(用意)される。したがって、図4(B)からよく分かるように、1番目に入力可能な記号は第1記号または第3記号である。このため、図5(A)に示すゲーム画面220では、候補表示領域222に、第1記号および第3記号が表示される。
ここで、図5(B)に示すように、プレイヤが、ゲーム画面220の手書き入力領域224に第3記号を入力したと仮定する。記号の入力開始および入力終了がタッチ状態で判別される点は上述した通りである。以下、同様である。記号の入力が終了すると、入力された記号が判定される。入力された記号が第3記号として判定されると、図6(A)に示すように、1番目の記号として第3記号が記号表示領域226に表示される。なお、この図6(A)は2番目の記号の入力前のゲーム画面220を示す。この図6(A)に示すゲーム画面220では、候補表示領域222に、2番目に入力すべき記号が表示される。つまり、2番目の記号の入力候補が表示される。
上述したように、この実施例では、第1記号列、第2記号列または第3記号列を入力することができ、1番目の文字として、第3記号が入力されているため、第1記号列は入力可能な記号列の候補から除外される。したがって、図6(A)に示すゲーム画面220を表示するとき、第2記号列および第3記号列が入力可能な記号列として設定(再設定)される。また、第2記号列および第3記号列の2番目の記号が入力可能な記号すなわち入力候補の記号として、候補表示領域222に表示される。ここでは、図6(A)に示すように、第1記号および第2記号が表示される。
なお、図6(A)に示すように、プレイヤの入力した記号が判定され、記号表示領域226に表示されると、手書き入力領域224に表示された(書かれた)記号は消去(リセット)され、次の記号を入力可能な状態にされる。このことは、2番目以降に入力された記号が判定され、記号表示領域226に表示された場合も同様である。
図6(B)に示すように、プレイヤが2番目の記号を手書き入力領域224に入力すると、入力した記号が判定される。ここでは、たとえば、第1記号が判定される。したがって、図7に示すように、記号表示領域226では、1番目の記号(ここでは、第3記号)に続いて第1記号が表示される。このとき、手書き入力領域224はリセットされる。また、2番目の記号が入力されることにより、第2記号列は入力可能な記号列の候補から除外され、3番目の記号を入力する際には、つまり図7に示すゲーム画面220が表示された時点においては、第3記号列のみが設定される。したがって、図7からもよく分かるように、候補表示領域222には、第3記号列の3番目の記号すなわち第3記号のみが表示される。
図示は省略するが、次に、プレイヤは、第3記号を入力し、さらに、第3記号列の4番目の記号すなわち第2記号を入力し、連続入力終了記号を入力することにより、第3記号列の入力を終了する。なお、3番目の記号および4番目の記号が入力され、判定されると、それぞれ、記号表示領域226に表示される。また、3番目の記号が入力され、判定された後には、4番目の記号を入力すべく第2記号が候補表示領域222に表示されたゲーム画面220が表示される。
このように、記号が入力される度に、入力可能な記号列の候補が削減されるため、プレイヤは入力し易く、しかも記号列の入力にかかる処理を軽減することができる。
記号列(ここでは、第3記号列)の入力を終了すると、記号列が判定され、判定された記号列(コマンド)に応じた攻撃が実行される。ただし、記号列は、記号表示領域226に表示された記号の配列を検出し、該当する配列の記号列が存在するか否かを判定する。ここで、記号列を判定するようにしてあるのは、制限時間が経過してしまい、記号列の最後の記号まで入力できないことがあるからである。なお、図示等は省略するが、ゲーム処理をいたずらに遅延させないために、記号列を入力する場合の制限時間(最大時間)が予め設定され、記号列の入力開始から当該制限時間はカウントされる。したがって、たとえば、所望の記号列を最後まで入力できない場合には、プレイヤキャラクタ202は、自身の攻撃ターンであっても、攻撃できなかったり、攻撃ミスしたりするような演出をすることができる。ただし、途中まで入力された記号または記号列による攻撃を実行するようにしてもよい。かかる場合には、記号列が長くなるにつれて、より高度な(ヒットポイントの高い)攻撃を実行するような演出にすることができる。
なお、現在のプレイヤキャラクタ202のマジックポイントが記号列に対応する攻撃に必要なマジックポイント以上であることが必要である点は、記号に対応する攻撃を実行する場合と同じである。また、ヒットポイントに応じて、プレイヤキャラクタ202や敵キャラクタ204が死滅等する点は、上述した場合と同じである。
さらに、入力された記号が、第1記号、第2記号、第3記号、連続入力開始記号および連続入力終了記号のいずれにも該当しないと判定された場合には、誤入力と判断し、再度記号を入力させるようにしてある。
図8は図2に示すRAM48のメモリマップを示す図解図である。この図8を参照して、RAM48はプログラム記憶領域70およびデータ記憶領域72を含む。プログラム記憶領域70にはゲームプログラムが記憶される。このゲームプログラムは、ゲーム初期設定プログラム70a、ゲームメイン処理プログラム70b、タッチオン/タッチオフ検出プログラム70c、タッチ軌跡一時記プログラム70d、入力可能記号読み出しプログラム70e、記号入力判定プログラム70f、記号列設定プログラム70g、入力候補記号表示制御プログラム70h、入力記号列判定プログラム70i、攻撃処理プログラム70j、プレイヤキャラクタ表示制御プログラム70kおよび敵キャラクタ表示制御プログラム70mなどによって構成される。
ゲーム初期設定プログラム70aは、この実施例の仮想ゲーム(たとえば、RPG)の初期設定をするためのプログラムである。具体的には、仮想ゲームを始めから開始する場合には、プレイヤキャラクタ202の初期位置を設定したり、各種フラグや各種レジスタに初期値に設定したり、メモリ(RAM48のバッファ領域)をクリアしたりなどする。また、仮想ゲームを前回の続きから開始する場合には、バックアップデータをロードし、前回の続きとなるプレイヤキャラクタ202の現在位置を設定したり、バックアップしておいた値を各種フラグや各種レジスタに設定したりする。
ゲームメイン処理プログラム70bは、この仮想ゲームのメインルーチンを処理するためのプログラムである。タッチオン/タッチオフ検出プログラム70cは、タッチパネル22を用いたタッチ操作(タッチ入力)の有無を検出するためのプログラムである。具体的には、プログラム70cは、タッチパネル22にタッチしていない(タッチオフ)状態からタッチパネル22にタッチする(タッチオン)状態への変化を検出する。また、プログラム70cは、タッチオン状態からタッチオフ状態への変化も検出する。さらに、プログラム70cは、後述するタッチオンフラグ72a(図9参照)を成立(オン)/不成立(オフ)させる。
タッチ軌跡一時記憶プログラム70dは、プレイヤがドラッグ(スライド)操作する間に、一定時間(この実施例では、1フレーム(画面更新単位時間:1/60秒))毎に検出されるタッチ座標(座標データ)をバッファ領域(後述するタッチ入力データ一時記憶領域72b)に時系列に従って記憶するためのプログラムである。また、プログラム70dは、上述したタッチオン/タッチオフ検出プログラム70cに従って、タッチオフ状態からタッチオン状態への変化が検出されたときにタッチ座標の記憶を開始し、タッチオン状態からタッチオフ状態への変化が検出されたときにタッチ座標の記憶を終了する。ただし、バッファ領域に一時記憶したタッチ座標は、次回のタッチ座標の記憶を開始するとき、または、タッチ座標の記憶を終了し、後述する記号入力判定プログラム70fによる記号入力の判定後に、消去される。
入力可能記号読み出しプログラム70eは、記号を入力するモード(この実施例では、戦闘場面)において、プレイヤが入力可能な記号を読み出し、画面表示するためのプログラム70eである。言い換えると、入力可能記号読み出しプログラム70eは、プレイヤキャラクタ202が実行可能な攻撃のコマンドを入力するための記号を読み出し、画面表示する。記号入力判定プログラム70fは、タッチ軌跡一時記憶プログラム70dに従って記憶されたタッチ座標の軌跡に基づいて入力された記号(描画記号)を判定する。ここで判定される記号には、上述した第1記号−第3記号のみならず、連続入力開始記号および連続入力終了記号も含まれる。
記号列設定プログラム70gは、記号列を入力する場合に、入力可能な記号列の候補を設定(用意)するためのプログラムである。言い換えると、プログラム70gは、プレイヤキャラクタ202が実行可能な攻撃のコマンドを入力するためのプログラムである。入力候補記号表示制御プログラム70hは、記号列を入力する場合に、m(mは1以上の整数)番目に入力されるべき記号の候補を検出して、ゲーム画面220の候補表示領域222に表示するためのプログラムである。上述したように、3つの記号列が入力可能である場合には、1番目に入力されるべき記号の候補は3つ表示される。そして、2番目に入力されるべき記号の候補としては、1番目の記号として入力された記号を含む記号列の2番目の記号が表示される。このようにして、プレイヤは順次記号を入力して所望の記号列すなわちコマンドを入力する。
入力記号列判定プログラム70iは、記号入力判定プログラム70fに従って連続入力終了記号が判定された後に、連続入力開始記号と連続入力終了記号との間に入力された記号列がいずれの記号列に該当するのかを判定するためのプログラムである。攻撃処理プログラム70jは、プレイヤの操作すなわち入力されたコマンドに従う攻撃をプレイヤキャラクタ202に実行させ、敵キャラクタ204にダメージを与える処理を実行するためのプログラムである。
プレイヤキャラクタ表示制御プログラム70kは、プレイヤキャラクタ202を表示制御するためのプログラムである。具体的には、プレイヤの操作に従って、更新された3次元位置にプレイヤキャラクタ202を移動させるように表示(アニメーション表示)したり、プレイヤキャラクタ202に任意のアクションをさせるようにアニメーション表示したりする。敵キャラクタ表示制御プログラム70mは、敵キャラクタ204を表示制御するためのプログラムである。具体的には、コンピュータ(CPUコア42)の指示に従って、更新された3次元位置に敵キャラクタ204を移動させるようにアニメーション表示したり、敵キャラクタ204に任意のアクションをさせるようにアニメーション表示したりする。
なお、図示は省略するが、プログラム記憶領域70には、ゲーム音再生プログラムやバックアッププログラムなども記憶される。ゲーム音再生プログラムは、ゲームに必要な音(音楽)を再生するためのプログラムである。また、バックアッププログラムは、プレイヤの指示や所定のイベントに従ってゲームの途中データや結果データをメモリカード28に記憶(セーブ)するためのプログラムである。
データ記憶領域72には、タッチオンフラグ72aが記憶され、図示は省略するが、他の各種フラグや各種レジスタなども記憶される。タッチオンフラグ72aは、上述したように、タッチオン/タッチオフ検出プログラム70cに従ってオン/オフされる。タッチオンフラグ72aは、たとえば、1ビットのレジスタで構成され、当該フラグ72aがオンされるとレジスタにはデータ値「1」が設定され、当該フラグ72aがオフされるとレジスタにはデータ値「0」が設定される。ただし、タッチオン状態でタッチオンフラグ72aはオンされ、タッチオフ状態でタッチオンフラグ72aはオフされる。
また、データ記憶領域72には、タッチ入力データ一時記憶領域72b、入力可能記号列データ記憶領域72c、候補表示用データ記憶領域72d、テーブルデータ記憶領域72e、記号列データ記憶領域72f、記号データ記憶領域72g、プレイヤキャラクタデータ記憶領域72hおよび敵キャラクタデータ記憶領域72iなどの記憶領域を含む。
タッチ入力データ一時記憶領域72bは、タッチ入力データすなわちタッチパネル22から入力される座標データを一時記憶する領域(バッファ領域)である。ただし、この実施例では、上述したように、タッチオン/タッチオフ検出プログラム70cに従ってタッチオフ状態からタッチオン状態に変化したことが検出されてから、その後タッチオフ状態が検出されるまでの間に、タッチ軌跡一時記憶プログラム70dに従って検出された座標データが時系列に従って記憶される。
入力可能記号列データ記憶領域72cは、入力可能な記号列のキャラクタデータ(入力可能記号列データ)を記憶するための領域である。この入力可能記号列データ記憶領域72には、プレイヤが記号列を入力するとき、すなわち記号入力判定プログラム70fに従って入力された記号が連続入力開始記号であると判定されたとき、記号列設定プログラム70gに従って、後述する記号列データ記憶領域72fから読み出された1または2以上の記号列データが記憶(設定)される。
候補表示用データ記憶領域72dは、記号列を入力するときに、次に入力されるべき記号すなわち候補表示領域222に表示される記号のデータ(記号データ)を記憶するための領域である。したがって、たとえば、上述した第1記号列、第2記号列および第3記号列を入力可能な場合には、1番目の記号の入力前では、第1記号および第3記号のキャラクタデータが候補表示用データ記憶領域72dに記憶され、これを用いてゲーム画面220の候補表示領域222に第1記号および第3記号が表示される。
テーブルデータ記憶領域72eには、後述するテーブルデータ(図10参照)が記憶されており、このテーブルデータは、プレイヤが手書き入力(描画)した記号が予め設定してある記号のいずれに該当するかを判定するために利用(参照)される。記号列データ記憶領域72fは、記号列データを記憶する領域であり、この実施例では、第1記号列データ80、第2記号列データ82、…が記憶される。ここでは、説明の便宜上、記号列データに「第1」および「第2」の文字を付して区別するようにしてあるが、記号列は、図4(B)等に示した第1記号列等と同じであってもよく、異なっていてもよい。ただし、記号列データの種類や数は、この仮想ゲームのプログラマないし開発者によって任意に設定(決定)される。
記号データ記憶領域72gは、記号(記号列に含まれる場合もある。)、連続入力開始記号および連続入力終了記号についてのデータ(記号データ)を記憶する領域であり、この実施例では、第1記号データ90、第2記号データ92、…が記憶される。ここで、「第1」および「第2」の文字を付して区別する点は、上述した記号列データの場合と同様である。また、記号データの種類や数が任意に設定される点も上述した記号列データの場合と同様である。
プレイヤキャラクタデータ記憶領域72hは、プレイヤキャラクタ202についてのデータを記憶する領域である。具体的には、ヒットポイント(ライフ)のデータ100、マジックポイントのデータ102、画像データ104および位置データ106を含む。
ヒットポイントのデータ100は、プレイヤキャラクタ202の生命力を示す数値データであり、ヒットポイントはプレイヤキャラクタ202のレベルや体力、または、敵キャラクタ204との戦闘によるダメージ等に応じて変化される。たとえば、敵キャラクタ204を倒したり、特定のアイテムを獲得したり、食事をしたり、休憩(睡眠)をしたりすると増加され、戦闘場面において敵キャラクタ204の攻撃を受けたり、体力が消耗したりすると減少される。また、プレイヤキャラクタ202のヒットポイントが0になると、プレイヤキャラクタ202は死滅し、ゲームオーバとなる。
マジックポイントのデータ102は、攻撃が可能かどうかを示す数値データであり、マジックポイントはプレイヤキャラクタ202のレベルや戦闘による経験値、または敵キャラクタ204との戦闘における攻撃の種類や回数等に応じて変化する。また、マジックポイントが0になると、攻撃が不能となる。かかる場合には、プレイヤキャラクタ202が特定のアイテムを取得したり、休憩(睡眠)したり、食事をしたりなどすることにより、マジックポイントを増やす必要がある。
画像データ104は、プレイヤキャラクタ202を画面表示するためのデータ(ポリゴンデータやテクスチャデータなど)である。位置データ106は、仮想ゲーム空間におけるプレイヤキャラクタ202の3次元位置(3次元座標)のデータである。ここで、プレイヤキャラクタ202は、プレイヤの指示に従って移動が制御されるため、その移動に伴って位置データ106が更新される。
なお、この実施例では、プレイヤキャラクタデータは、1種類のみを記憶するようにしてあるが、プレイヤキャラクタ202を2種類以上用意する場合には、各プレイヤキャラクタ202に応じてプレイヤキャラクタデータが記憶される。
敵キャラクタデータ記憶領域72iは、第1敵キャラクタデータ110、第2敵キャラクタデータ112、…を含む。つまり、各敵キャラクタ204に関するデータが個別に記憶される。敵キャラクタ204の種類、数等は、仮想ゲームのプログラマないし開発者によって決定される。
第1敵キャラクタデータ110は、ヒットポイントのデータ110a、画像データ110bおよび位置データ110cを含む。これらのデータは、プレイヤキャラクタデータ記憶領域72hに記憶されるデータと同様であるため、簡単に説明することにする。また、第2敵キャラクタデータ112等の内容は、第1敵キャラクタデータ110と同様であるため、詳細な説明等は省略することにする。 ヒットポイントのデータ110aは、第1敵キャラクタについてのヒットポイントについての数値データである。ヒットポイントが0になると、第1敵キャラクタ(他の敵キャラクタも同じ。)は死滅する。つまり、プレイヤキャラクタ202は、戦闘に勝利して、次の面ないしステージに進む。画像データ110bは、第1敵キャラクタについてのポリゴンデータやテクスチャデータなどである。位置データ110cは、第1敵キャラクタについての3次元位置のデータである。ただし、第1敵キャラクタ(他の敵キャラクタも同じ。)は、コンピュータ(CPUコア42)によって移動を制御されるため、その移動に従って位置データ110cは更新される。
図10は上述したテーブルデータの具体的な内容を示す図解図である。この図10を参照して、テーブルデータには、予め用意されている記号(または記号の名称(識別子))に対応して、プレイヤが描画した記号を判定する場合に比較するためのデータ(参照データ)が記述(記憶)される。たとえば、記号が「第1記号」である場合には、図11(A)に示すような参照データが記憶される。また、記号が「連続入力開始記号」である場合には、図11(B)に示すような参照データが記憶される。
図11(A)は第1記号の参照データの具体的な内容を示す図解図である。この図11(A)を参照して、第1記号の参照データは、第1記号の参照順(記号の書き順)に従って、方向および距離が記述される。この実施例では、図12(A)の数字で示すように、第1記号の書き順は決定されており、たとえば、アルファベットの“C”と同じ書き順である。つまり、第1記号の参照データは、「0」で示す点(位置)から書き始めて、「1」、「2」、「3」で示す点を順に経由して、「4」で示す点まで一筆書きで書いた(描画した)場合のデータである。書き順を示す数字が参照データの参照順に対応する。また、参照データに含まれる方向は、書き順(参照順)を示す数字を終点とし、その1つ手前の書き順を示す数字を始点とするベクトルの方向である。たとえば、書き順(参照順)が「1」である場合には、当該「1」が付された点を終点とし、その1つ手前の「0」が付された点を始点とするベクトルの方向が記憶される。他の参照順についても同様である。ただし、図11(A)から分かるように、方向の欄には数値が記述されている。これは、方向を簡単に表すためであり、図13に示すように、ベクトルの方向を数字の「0」−「7」に対応させて、定義してある。つまり、この実施例では、8方向に定義してある。したがって、実際のベクトルの方向が定義したベクトルの方向と一致しない場合には、定義したベクトルの方向に一致させるように補正(調整)してある。
なお、この実施例では、8方向にベクトルの方向を定義するようにしてあるが、記号をより正確に判定するためには、さらに多数の方向(たとえば、斜め方向をさらに厳密に区別するようにした16方向や32方向)に定義するようにしてもよい。また、たとえば、縦方向および横方向のみの直線の組み合わせで表された記号のみのように、各記号の区別が簡単である場合には、8方向よりも少数の方向(たとえば、上下左右の4方向)に定義するようにしてもよい。
さらに、参照データに含まれる距離は、上述した参照順に対応する各ベクトルのスカラであり、参照データにおいては、単位長さ「1」に対する倍数が記述される。ここで、単位長さ「1」は、タッチパネル22の数dot(たとえば、3dot)に相当する長さである。ただし、この実施例では、長さを簡単に表すために、定数倍になるように補正(調整)するようにしてある。具体的には、定数倍になるように、倍数の小数点第2位以下を無視して、小数点第1位を四捨五入するようにしてある。なお、倍数が1より小さくなくことがないように、単位長さおよび記号を設定(決定)してある。
詳細な説明は省略するが、図11(B)に示す連続入力開始記号の参照データは、上述した第1記号の参照データと同様である。ただし、連続入力開始記号の参照順は、図11(B)に示すように、数字の「1」−「3」で表される。この連続入力開始記号の参照データは、図12(B)に示すように、0を付した点(最下点)から書き始めて、「1」および「2」で示す点を順に経由して、「3」で示す点まで、一筆で書いた(描画した)場合のデータである。なお、連続入力開始記号は、数字の「4」と外観が似ている。
なお、連続入力開始記号の参照データに含まれる方向および距離は、第1記号の参照データについて説明したのと同様であるため、重複した説明は省略する。また、図示しない、第2記号、第3記号および連続入力終了記号は、いずれも、所定の書き順であり、一筆で書いた場合における参照データが用意されており、その内容は、図11(A)および図11(B)に示した、第1記号の参照データおよび連続入力開始記号の参照データと同様である。
続いて、参照データとプレイヤがタッチ入力により描いた記号(描画記号)に対応するデータ(入力データ)とを比較し、描画記号を予め用意してある入力可能な記号(サンプル記号)のいずれかと判定する方法について説明する。
たとえば、図14(A)に示すように、プレイヤがスティック24を用いて手書き入力領域224に記号(ここでは、連続入力開始記号)を描画したと仮定する。プレイヤが記号を入力したか否かは、上述したように、タッチ入力の状態に応じて判断される。プレイヤがタッチ入力によって記号を入力すると、当該記号を形成する複数の検出座標(タッチ座標)に基づいて、一定時間(単位時間)毎に分解したタッチ入力の方向(入力方向)および距離が検出される。たとえば、図14(A)に示す記号(スティック24の軌跡)を形成する単位時間毎のタッチ座標(座標データ)が図14(B)の白抜きの点でそれぞれ示されると仮定すると、図15(A)に示すように、単位時間毎に分解した入力方向および距離、すなわちベクトルが表される。
次に、単位時間毎に分解した入力方向が、定義した8つの方向(図13に示した方向)に対応させられる。ただし、入力方向が定義した8つの方向のいずれにも一致しない場合には、最も近似する方向に決定(補正)される。すると、図15(B)に示すように、単位時間毎の入力方向が変化される。これをプレイヤによるタッチパネル22への入力順に従って、方向および距離を示すと、図16に示すような入力データが得られる。ただし、この入力データに含まれる方向は、図15(B)に示した各ベクトルの方向であり、図13で定義した方向に対応する。また、入力データに含まれる距離は、図15(B)に示した各ベクトルのスカラであり、単位長さ「1」の倍数で表される。
ここで、図16に示す入力データでは、記号の特徴が分かり難いため、当該入力データを簡易化する。この実施例では、同じ方向のベクトルが入力順に従って連続して現れる場合には、それらを1つのベクトルにまとめるようにしてある。具体的には、図16に示す入力データの例では、入力順1−5、入力順6−8、入力順9−11のそれぞれを、1つのベクトルにまとめることができる。つまり、図17(A)に示すように、図16に示した入力データをまとめることができる。ただし、図17(A)に示す例では、距離は、図16において同じ方向を示すベクトルの各々の距離を加算した値である。図17(A)に示すデータに基づいて、各方向をベクトルで表すと、図17(B)に示すように表すことができる。
したがって、プレイヤが描画した記号(描画記号)とサンプル記号とを比較し、描画記号がいずれのサンプル記号に該当するかを判定する場合には、図17(A)に示したようなデータ(説明の都合上、「変換後の入力データ」という。)と、上述した参照データとが比較される。この比較は次の手順に従って行われる。(1)参照データの中で、距離が最も短いものの距離Rを求める。(2)変換後の入力データの中で、距離が最も短いものの距離rを求める。(3)x=R/rを求める。これは、サンプル記号と描画記号との大きさが異なる場合の比率xを算出するためである。(4)変換後の入力データの各距離をx倍し、四捨五入する。(5)(4)で距離がx倍された変換後の入力データと参照データとを比較する。ただし、入力順と参照順との各番号(数字)が同じもの同士が比較される。この実施例では、方向および距離をそれぞれ比較する。方向は、参照データおよび入力データのいずれにおいても、図13に示した定義した方向に対応させているため、一致または不一致の結果を得ることができる。また、距離は一致または不一致のみならず、不一致の場合には、その長さの違いを倍率で表すことができる。したがって、各入力順(参照順)について、方向および距離のそれぞれについて、一致および不一致(距離の場合には倍率も)を検出することにより、全体として、入力データと参照データとが一致するか或いは近似するか、または、近似していないかを知ることができる。ただし、この実施例では、5種類の参照データが記憶されるため、入力データと各参照データとの間で、上述したような比較が行われる。
なお、入力データと参照データとが近似するかまたは近似していないかの判断は、ゲームのプログラマないし開発者が予め設定した方法または演算によって行われる。たとえば、方向および距離を比較した結果を数値化し、所定の閾値を設けて、近似するかまたは近似していないかを判別することができる。かかる場合には、所定の閾値をゲームの進行応じて変化させたり、また、記号毎に異なる値を設定したりしてもよい。たとえば、記号毎に異なる閾値を設定すれば、記号列を入力する場合に、入力候補として表示された記号の閾値を低く設定し、それ以外の記号の閾値を高く設定しておけば、入力候補の記号を効率よく判定することができる。
また、この実施例では、参照データは、所定の書き順に従ってサンプル記号を描画した場合についてのデータであり、入力データ(厳密には、変換後の入力データ)との間で方向および距離すなわちベクトルを比較するようにしてあるため、プレイヤが描画する記号の書き順をサンプル記号と同じにする必要がある。したがって、たとえば、ゲームの本編開始前に、記号の書き順を練習または教示する画面を表示したり、ゲームの説明書やゲーム画面200に、書き順が分かるようにサンプル記号を表示したりする必要がある。
入力データといずれかの参照データとが一致または近似する場合には、描画記号を当該参照データに対応するサンプル記号として判定する。一方、入力データがいずれの参照データにも近似しない場合には、描画記号はいずれのサンプル記号としても判定されない。つまり、記号の入力失敗または誤入力であると判断される。
具体的には、図2に示したCPUコア42が、図18に示すフロー図に従ってゲーム全体処理を実行する。図18を参照して、CPUコア42は、ゲーム全体処理を開始すると、ステップS1で、ゲーム初期設定を実行する。上述したように、仮想ゲームを始めから開始する場合には、プレイヤキャラクタ202の初期位置を設定したり、各種フラグや各種レジスタに初期値を設定したり、メモリ(RAM48のバッファ領域)をクリアしたりなどする。また、仮想ゲームを前回の続きから開始する場合には、バックアップデータをロードし、前回の続きとなるプレイヤキャラクタ202の現在位置を設定したり、バックアップしておいた値を各種フラグや各種レジスタに設定したりする。
続くステップS3では、ゲーム処理を実行する。具体的に言うと、ここでは、プレイヤの指示に従ってプレイヤキャラクタ202を動作させたり、敵キャラクタ204を動作させたり、ゲームに必要な音(音楽)を再生したり、ゲームデータをバックアップしたりなどする。ただし、このゲーム処理では、後述するダメージ処理(S9)における画面表示や音出力以外の画面表示(画像生成および表示)の処理や音出力の処理も実行される。
続いて、ステップS5では、戦闘場面(コマンドを手書き入力する場面)であるかどうかを判断する。ステップS5で“NO”であれば、つまり戦闘場面でなければ、そのままステップS11に進む。しかし、ステップS5で“YES”であれば、つまり戦闘場面であれば、コマンドを入力(手書き入力)すると判断して、ステップS7で、後述する記号入力処理(図19および図20参照)を実行する。次のステップS9では、後述するダメージ処理(図21および図22参照)を実行して、ステップS11に進む。
ステップS11では、ゲーム終了かどうかを判断する。ここでは、ゲームオーバになったり、プレイヤによってゲーム終了が指示されたりしたかどうかを判断する。ステップS11で“NO”であれば、つまりゲーム終了でなければ、ステップS3に戻る。しかし、ステップS11で“YES”であれば、つまりゲーム終了であれば、ゲーム全体処理を終了する。
図19および図20は、図18に示したステップS7の記号入力処理を示すフロー図である。図19に示すように、CPUコア42は記号入力処理を開始すると、ステップS21で、使用可能な記号を表示(設定)する。つまり、図3に示したように、ゲーム画面200の記号サンプル表示領域208にサンプル記号を表示する。次のステップS23では、タッチオフ状態からタッチオン状態に変化したかどうかを判断する。具体的には、タッチオンフラグ72aがオフからオンに変化したかどうかを判断する。ステップS23で“NO”であれば、つまりタッチオフ状態からタッチオン状態に変化していなければ、記号の入力が開始されていないと判断して、同じステップS23に戻る。つまり、記号の入力が開始されるのを待機する。
しかし、ステップS23で“YES”であれば、つまりタッチオフ状態からタッチオン状態に変化すれば、記号の入力が開始されたと判断して、ステップS25で、タッチ入力される軌跡を一時記憶する。つまり、タッチパネル22から入力される座標データ(タッチ座標)をRAM48のバッファ領域に記憶する。そして、ステップS27で、タッチオン状態からタッチオフ状態へ変化したかどうかを判断する。ステップS27で“NO”であれば、つまりタッチオン状態からタッチオフ状態へ変化していなければ、記号の入力中であると判断して、そのままステップS25に戻る。一方、ステップS27で“YES”であれば、つまりタッチオン状態からタッチオフ状態へ変化すれば、記号の入力を終了したと判断して、ステップS29で、記号入力を判定する。つまり、入力された記号がいずれのサンプル記号に該当するか、またはいずれのサンプル記号にも該当しないかを判定する。
なお、ステップS25およびS27で形成されるルーチンは、1フレーム(画面更新単位時間:1/60秒)毎に実行される。このことは、後述するステップS49およびS51で形成されるルーチンも同じである。
次のステップS31では、ステップS21で設定された記号と一致するかどうかを判断する。つまり、ステップS29の判定により、描画記号がいずれかのサンプル記号に該当したかどうかを判断する。ステップS31で“NO”であれば、つまり描画記号がサンプル記号のいずれにも該当しなければ、設定された記号と一致しないと判断し、そのままステップS23に戻る。この実施例では、ステップS31で“NO”であれば、そのままステップS23に戻るようにしているが、描画記号がサンプル記号のいずれにも一致しない旨や描画記号を認識(判定)できない旨を、メッセージまたは音或いはその両方で警告してからステップS23に戻るようにしてもよい。
一方、ステップS31で“YES”であれば、つまり描画記号がサンプル記号のいずれかに該当すれば、設定された記号と一致すると判断し、ステップS33で、描画記号が連続入力開始記号として判定されたかどうかを判断する。ステップS33で“NO”であれば、つまり描画記号が連続入力開始記号として判定されていなければ、判定した他の記号(この実施例では、第1記号、第2記号または第3記号)に応じた攻撃をプレイヤキャラクタ202に実行させるべく、記号入力処理をリターンする。
しかし、ステップS33で“YES”であれば、つまり描画記号が連続入力開始記号として判定されれば、ステップS35で、入力可能な記号列を設定する。具体的には、入力可能な記号列データを記号列データ記憶領域72fから読み出し、入力可能記号列データ記憶領域72cに記憶(設定)する。なお、入力可能な記号列(データ)は、たとえば、プレイヤキャラクタ202の種類、レベルやゲームの進行状態などによって変化される。次のステップS37では、記号列の番目を示す変数mに“1”を設定(m=1)して、図20に示すステップS39に進む。
図20に示すように、ステップS39では、設定された記号列がまだ残っているかどうかを判断する。つまり、入力可能記号列データ記憶領域72cに1つ以上の記号列データが記憶されているかどうかを判断する。ステップS39で“NO”であれば、つまり設定された記号列が残っていなければ、ステップS47に進む。一方、ステップS39で“YES”であれば、設定された記号列がまだ残っていれば、ステップS41で、残っている記号列のそれぞれのm番目に記述された記号を入力候補として、候補表示領域222に表示する。具体的には、入力可能記号列データ記憶領域72cに記憶された記号列データのそれぞれから、m番目に記述された記号データが抽出され、候補表示用データ記憶領域72dに記憶される。次に、候補表示用データ記憶領域72d上で、重複する記号データが削減され、入力候補の記号が候補表示領域222に表示される。
続くステップS43では、タッチオフ状態からタッチオン状態に変化したかどうかを判断する。ステップS43で“NO”であれば、つまりタッチオフ状態からタッチオン状態に変化していなければ、ステップS45で、一定時間(上述した制限時間)が経過したかどうかを判断する。図示は省略したが、ゲーム装置10はタイマを備えており、図19のステップS33で“YES”と判断され、記号列の入力が開始されると同時に、当該タイマのカウントを開始して、時間を計測するようにしてある。つまり、ステップS45では、そのタイマのカウント値を検出して、一定時間が経過したかどうかを判断するようにしてある。
ステップS45で“NO”であれば、つまり一定時間が経過していなければ、そのままステップS43に戻る。一方、ステップS45で“YES”であれば、つまり一定時間が経過すれば、記号列(または記号)の入力を終了したと判断して、ステップS47で、入力された記号または記号列を判定して、記号入力処理をリターンする。つまり、ステップS47では、入力された記号または記号列を判定して、判定した記号または記号列(コマンド)に対応する攻撃が決定される。
また、ステップS43で“YES”であれば、つまりタッチオフ状態からタッチオン状態に変化すれば、ステップS49で、タッチ入力される軌跡を一時記憶して、ステップS51で、タッチオン状態からタッチオフ状態に変化したかどうかを判断する。ステップS51で“NO”であれば、つまりタッチオン状態からタッチオフ状態に変化しなければ、ステップS49に戻る。一方、ステップS51で“YES”であれば、つまりタッチオン状態からタッチオフ状態に変化すれば、ステップS53で、記号入力(描画記号)を判定する。
そして、ステップS55で、描画記号が連続入力終了記号として判定されたかどうかを判断する。ステップS55で“YES”であれば、つまり描画記号が連続入力終了記号として判定されれば、記号列の入力を終了したと判断し、ステップS47に進む。かかる場合には、ステップS47では、連続入力開始記号と連続入力終了記号との間に記述された記号列が判定される。一方、ステップS55で“NO”であれば、つまり描画記号が連続入力終了記号として判定されなければ、記号列の入力を終了していないと判断し、ステップS57で、描画記号が入力候補と一致するかどうかを判断する。ただし、入力候補が複数存在する場合には、ステップS57では、いずれか1つの入力候補と一致するかどうかを判断する。かかる場合には、入力候補の記号(サンプル記号)についての参照データと入力データとを比較するだけでよい。
ステップS57で“NO”であれば、つまり描画記号が入力候補と一致しなければ、誤入力と判断して、ステップS43に戻る。ただし、誤入力である旨をメッセージまたは音或いはその両方でプレイヤに報知してからステップS43に戻るようにしてもよい。また、ステップS57で“NO”と判断され、ステップS43に戻る場合には、記号を再入力することになるため、手書き入力領域224は空白にされる(リセットされる)。一方、ステップS57で“YES”であれば、つまり描画記号が入力候補と一致すれば、ステップS59で、一致した入力候補の記号を含む記号列のみを再設定する。言い換えると、一致しない入力候補の記号を含む記号列が入力可能記号列データ記憶領域72cから削除される。そして、ステップS61で、変数mをインクリメント(m=m+1)して、ステップS39に戻る。
なお、図示は省略したが、ステップS57とステップS59との間に、判定されたサンプル記号を記号表示領域226に表示する処理が実行される。また、このとき、手書き入力領域224がリセットされる。
図21および図22は、図18に示したステップS9のダメージ処理を示すフロー図である。図21を参照して、CPUコア42はダメージ処理を開始すると、ステップS71で、記号列が入力されたかどうかを判断する。ステップS71で“YES”であれば、つまり記号列が入力されていれば、ステップS73で、入力された記号列に対応する攻撃に必要なマジックポイントを読み出し、図22に示すステップS77に進む。一方、ステップS71で“NO”であれば、つまり記号が入力されていれば、ステップS75で、入力された記号に対応する攻撃に必要なマジックポイントを読み出し、ステップS77に進む。
図22に示すように、ステップS77では、プレイヤキャラクタ202にマジックポイントが残っているかどうかを判断する。具体的に説明すると、ここでは、RAM48のプレイヤキャラクタデータ記憶領域72hを参照し、マジックポイントのデータ102が示す数値(マジックポイント)が、ステップS73またはステップS75で読み出したマジックポイント以上であるかどうかを判断しているのである。
ステップS77で“NO”であれば、つまりプレイヤキャラクタ202にマジックポイントが残っていなければ、入力された記号または記号列に対応する攻撃を実行することができないと判断して、そのままダメージ処理をリターンする。ただし、ステップS77で“NO”と判断された場合には、プレイヤが入力した記号または記号列に対応する攻撃を実行することができない旨を、メッセージまたは音或いはその両方でプレイヤに報知するようにしてもよい。
一方、ステップS77で“YES”であれば、つまりプレイヤキャラクタ202にマジックポイントが残っていれば、ステップS79で、入力された記号または記号列に対応する攻撃に必要なマジックポイントを、現在のプレイヤキャラクタ202のマジックポイントから減算する。つまり、マジックポイントのデータ102が示す数値から攻撃に必要なマジックポイントを減算し、残ったマジックポイントの数値データをデータ102として、プレイヤキャラクタデータ記憶領域72hに記憶する。
続くステップS81では、敵キャラクタ204のヒットポイントを、攻撃に応じて減算する。たとえば、攻撃の種類に応じて、減算するヒットポイントの数値は予め決定されており、当該数値が敵キャラクタ204のヒットポイントから減算される。ただし、攻撃に応じたヒットポイントの数値は、ランダムまたは数式による演算或いは所定のルールに従って変動させるようにしてもよい。そして、ステップS83では、敵キャラクタ204のヒットポイントが0かどうかを判断する。厳密には、ヒットポイントが0以下になったかどうかを判断する。ステップS83で“YES”であれば、つまりヒットポイントが0であれば、ステップS85で、敵キャラクタ204がダメージを受けて死滅した画像を表示して、ダメージ処理をリターンする。一方、ステップS83で“NO”であれば、つまりヒットポイントが0よりも大きければ、ステップS87で、敵キャラクタ204がダメージを受けた画像を表示して、ダメージ処理をリターンする。ただし、図示は省略したが、ステップS85およびS87の画面表示に加えて、音(音楽)を出力することによりダメージ等を表現する演出が施される。
この実施例によれば、記号または記号列を描画することにより、ゲームを進行させることができるので、単なるボタン操作とは異なる新しい操作感を得ることができる。このため、ゲームの面白さを向上させることができる。
また、手書き入力される記号または記号列は予め決定されているため、任意の記号を入力する場合に比べて、処理が簡単であり、特別な装置(機能)を付加する必要もない。
なお、この実施例では、戦闘場面において、プレイヤキャラクタに攻撃させるためのコマンドを手書き入力するようにしてあるが、これに限定されるべきではない。たとえば、合言葉や呪文を手書き入力するようにすることもできる。かかる場合には、たとえば、隠れダンジョンを出現させたり、鍵のかかった扉を開けたりすることができる。
また、この実施例では、ポインティングデバイスとして、タッチパネルを用いるようにしたが、コンピュータマウス、タッチパッド、タブレットのような他のポインティングデバイスを用いるようにしてもよい。かかる場合には、間接的に記号を入力することとなるため、記号入力画面(上述の実施例では、ゲーム画面220)にマウスポインタやカーソルのような指示画像を表示する必要がある。
さらに、この実施例では、2つのLCDを設けて2つのゲーム画面を表示する場合について説明したが、1つのLCDを設けて、これに対応してタッチパネルを設けておき、当該LCDに1つのゲーム画面を表示するようにしてもよい。
さらにまた、この実施例では、2つのLCDを設けたゲーム装置について説明したが、1つのLCDの表示領域を2つに分割し、少なくともいずれか一方の表示領域に対応してタッチパネルを設けるようにしてもよい。この場合、縦長のLCDを設ける場合には、縦に2つ表示領域が並ぶようにLCDの表示領域を分割し、横長のLCDを設ける場合には、横に2つの表示領域が並ぶようにLCDの表示領域を分割するようにすればよい。