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