図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のLCD14の左方には電源スイッチ18が設けられる。
また、上側ハウジング16aには、LCD12を挟んで左右に、スピーカ36aおよび36b(図2)のための音抜き孔20aおよび20bが形成される。そして、下側ハウジング16bには、マイク(図示せず)のためのマイク孔20cが形成されるとともに、操作スイッチ22(22a,22b,22c,22d,22e,22f,22g,22Lおよび22R)が設けられる。
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
操作スイッチ22は、方向指示スイッチ(十字スイッチ)22a,スタートスイッチ22b、セレクトスイッチ22c、動作スイッチ(Aボタン)22d、動作スイッチ(Bボタン)22e、動作スイッチ(Xボタン)22f、動作スイッチ(Yボタン)22g、動作スイッチ(Lボタン)22Lおよび動作スイッチ(Rボタン)22Rを含む。スイッチ22aは、下側ハウジング16bの一方主面であり、LCD14の左側に配置される。その他のスイッチ22b−22gは、下側ハウジング16bの一方主面であり、LCD14の右側に配置される。さらに、スイッチ22Lおよびスイッチ22Rは、それぞれ、上側ハウジング16aとの連結部を挟む下側ハウジング16bの上側面の左右角部に配置される。
方向指示スイッチ22aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、ユーザないしプレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。また、各押圧部には、特定の役割を割り当てることができ、4つの押圧部の1つを操作することによって、割り当てられた役割を指示(指定)することができる。
スタートスイッチ22bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止(Pause)したりする等に用いられる。また、セレクトスイッチ22cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
動作スイッチ22dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ22eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ22cで選択したゲームモードの変更やAボタン22dで決定したアクションの取り消し等のために用いられる。
動作スイッチ22fすなわちXボタン、および動作スイッチ22gすなわちYボタンは、プッシュボタンで構成され、Aボタン22dとBボタン22eだけでは、ゲーム進行ができないときに、補助的な操作に用いられる。ただし、Xボタン22fおよびYボタン22gは、Aボタン22dおよびBボタン22eと同様の操作に用いることも可能である。もちろん、ゲームプレイにおいてXボタン22fとYボタン22gとを必ずしも使用しなくてよい。
動作スイッチ22L(左押しボタン)および動作スイッチ22R(右押しボタン)は、プッシュボタンで構成され、左押しボタン(Lボタン)22Lおよび右押しボタン(Rボタン)22Rは、Aボタン22dおよびBボタン22eと同様の操作に用いることができ、また、Aボタン22dおよびBボタン22eの補助的な操作に用いることができる。さらに、Lボタン22LおよびRボタン22Rは、方向スイッチ22a、Aボタン22d,Bボタン22e,Xボタン22f,Yボタン22gに割り当てられた役割を、他の役割に変更することができる。
また、LCD14の上面には、タッチパネル24が装着される。タッチパネル24としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル24は、その上面をスティック26ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック26等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作(タッチ操作)すると、スティック26等の操作位置の座標を検出して、検出した座標(検出座標)に対応する座標データを出力する。
なお、この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル24の検出精度も表示画面に対応して256dot×192dotとしてあるが、タッチパネル24の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
LCD12およびLCD14には異なるゲーム画面が表示されてもよい。たとえば、レースゲームでは一方のLCDに運転席からの視点による画面を表示し、他方のLCDにレース(コース)全体の画面を表示することができる。また、RPGでは、一方のLCDにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のLCDにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、一方のLCD(この実施例では、LCD14)にゲームの操作画面(ゲーム画面)を表示し、他方のLCD(この実施例では、LCD12)に当該ゲームに関する情報(得点やレベルなど)を含む他のゲーム画面を表示することができる。さらには、2つのLCD12およびLCD14を合わせて1つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物(敵キャラクタ)を表示することもできる。
したがって、プレイヤはスティック26等でタッチパネル24を操作することにより、LCD14の画面に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、操作オブジェクトなどの画像を指示(操作)したり、コマンドを選択(入力)したりすることができる。また、3次元ゲーム空間に設けられる仮想カメラ(視点)の方向(視線の向き)を変化させたり、ゲーム画面(マップ)のスクロール(徐々に移動表示)方向を指示したりすることもできる。
なお、ゲームの種類によっては、タッチパネル24を用いることにより、その他の入力指示も可能である。たとえば、座標入力指示を入力したり、LCD14において文字,数字,記号等を手書き入力したりすることができる。
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の上面にタッチパネル24が設けられるので、2画面(12,14)と2系統の操作部(22,24)とを有する構成になっている。
また、この実施例では、スティック26は、たとえば下側ハウジング16bに設けられる収納部(図示せず)に収納することができ、必要に応じて取り出される。ただし、スティック26を設けない場合には、その収納部も設ける必要はない。
さらに、ゲーム装置10はメモリカード(またはカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入部30(図1では点線で示す)に挿入される。図1では省略するが、挿入部30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ32(図2参照)が設けられており、したがって、メモリカード28が挿入部30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア34(図2参照)がメモリカード28にアクセス可能となる。
なお、図1では表現できないが、上側ハウジング16aの音抜き孔20aおよび20bと対応する位置であり、この上側ハウジング16aの内部にはスピーカ36aおよび36b(図2参照)が設けられる。
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板38を含み、この電子回路基板38には上述のCPUコア34等の回路コンポーネントが実装される。CPUコア34は、バス40を介して前述のコネクタ32に接続されるとともに、RAM42、第1のグラフィック処理ユニット(GPU)44、第2のGPU46、入出カインターフェース回路(以下、「I/F回路」という。)48およびLCDコントローラ50が接続される。
コネクタ32には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ32と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア34は、ROM28aおよびRAM28bにアクセスすることができるのである。
ROM28aは、ゲーム装置10で実行すべきゲームのためのゲームプログラム、画像データ(文字やオブジェクトの画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)およびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データなどを記憶(セーブ)する。
RAM42は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア34は、メモリカード28のROM28aに記憶されたゲームプログラム、画像データおよび音データ等をRAM42にロードし、ロードしたゲームプログラムを実行する。また、CPUコア34は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM42に記憶しつつゲーム処理を実行する。
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM42に記憶(ロード)される。
ただし、メモリカード28のROM28aには、ゲーム以外の他のアプリケーションについてのプログラムおよび当該アプリケーションの実行に必要な画像データが記憶される。また、必要に応じて、音(音楽)データが記憶されてもよい。かかる場合には、ゲーム装置10では、当該アプリケーションが実行される。
GPU44およびGPU46は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア34からのグラフィックスコマンド(作画命令)を受け、そのグラフィックスコマンドに従って画像データを生成する。ただし、CPUコア34は、グラフィックスコマンドに加えて、画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU44およびGPU46のそれぞれに与える。
また、GPU44には、第1のビデオRAM(以下、「VRAM」という。)52が接続され、GPU46には、第2のVRAM54が接続される。GPU44およびGPU46が作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンやテクスチャ等のデータ)は、GPU44およびGPU46が、それぞれ、第1のVRAM52および第2のVRAM54にアクセスして取得する。
なお、CPUコア34は、描画に必要な画像データをGPU44およびGPU46を介して第1のVRAM52および第2のVRAM54に書き込む。GPU44はVRAM52にアクセスして描画のための画像データを作成し、GPU46はVRAM54にアクセスして描画のための画像データを作成する。
VRAM52およびVRAM54は、LCDコントローラ50に接続される。LCDコントローラ50はレジスタ56を含み、レジスタ56はたとえば1ビットで構成され、CPUコア34の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ50は、レジスタ56のデータ値が「0」である場合には、GPU44によって作成された画像データをLCD12に出力し、GPU46によって作成された画像データをLCD14に出力する。また、LCDコントローラ50は、レジスタ56のデータ値が「1」である場合には、GPU44によって作成された画像データをLCD14に出力し、GPU46によって作成された画像データをLCD12に出力する。
なお、LCDコントローラ50は、VRAM52およびVRAM54から直接画像データを読み出したり、GPU44およびGPU46を介してVRAM52およびVRAM54から画像データを読み出したりする。
I/F回路48には、操作スイッチ22,タッチパネル24およびスピーカ36a,36bが接続される。ここで、操作スイッチ22は、上述したスイッチ22a,22b,22c,22d,22e,22f,22g,22Lおよび22Rであり、操作スイッチ22が操作されると、対応する操作信号(操作データ)がI/F回路48を介してCPUコア34に入力される。また、タッチパネル24からの座標データがI/F回路48を介してCPUコア34に入力される。さらに、CPUコア34は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬制音)などのゲームに必要な音データをRAM42から読み出し、I/F回路48を介してスピーカ36a,36bから出力する。
図3は、この実施例の仮想ゲームをプレイする場合に、図1に示したゲーム装置10の使用例を示す図解図である。図3から分かるように、この実施例では、ゲーム装置10は、図1に示した状態から反時計周り(左周り)に90度回転させた状態で使用される。したがって、LCD12とLCD14(タッチパネル24)とが横並びに配置される。この実施例では、3次元仮想空間に設けられたゲームフィールドがLCD12とLCD14とを合わせた1つの画面(ゲーム画面)で表示される。
図4は、この実施例の仮想ゲーム(パズルゲーム)をプレイする場合に、LCD12およびLCD14に表示されるゲーム画面100の例が示される。このゲーム画面100は、LCD12の表示画面102とLCD14の表示画面104とによって構成される。また、表示画面104に複数のピースオブジェクト106がマトリックス状に並んで配置されている。ピースオブジェクト106は、長方形であり、板状に形成される。ただし、図4では、ピースオブジェクト106の形状および大きさを分かり易く示すために、外枠を記載してあるが、ピースオブジェクト106自体は無色透明である。なお、ピースオブジェクト106には背景色と同じ色が付されてもよく、また他の色が付されてもよい。また、この実施例では、表示画面102および表示画面104のそれぞれに、縦方向に最大5つのピースオブジェクト106を表示することができ、横方向に最大6つのピースオブジェクト106を表示することができる。つまり、ゲームフィールドには、最大で5(行)×12(列)のピースオブジェクト106を表示することができる。
図5に示すように、3次元仮想空間には、2次元平面状のゲームフィールド500が設けられ、その一部がLCD12およびLCD14を用いてゲーム画面として表示される。ゲームフィールド500には、複数(5×12)のグリッド502がマトリックス状に配置される。図5では、分かり易く示すために、グリッド502を可視表示されるように示しているが、このグリッド502は不可視オブジェクトであり、実際のゲーム画面(図4等参照)では表示されることはない。各グリッド502には、識別情報(グリッドインデックス)が割り当てられており、グリッドインデックスを用いて、グリッド502に格納されているピースオブジェクト106の種類が識別可能に管理されている(後述するピース配置テーブル:図19(B)参照)。たとえば、グリッドインデックスは、括弧付きの数字で示される行番号と列番号との組で表わされる。たとえば、左上の隅に設けられるグリッド502のグリッドインデックスは(1,1)で示され、右下の隅に設けられるグリッド502のグリッドインデックスは(5,12)で示される。詳細な説明は省略するが、他のグリッド502のグリッドインデックスについても同様である。
ただし、グリッド502にピースオブジェクト106が格納されていない場合には、何も格納されていない旨の情報(たとえば、「null」)が当該グリッド502のグリッドインデックスに対応して管理(記憶)される。
図4に戻って、ゲーム画面100では、表示画面102の上部にベストスコアを表示する表示部108が設けられる。さらに、ゲーム画面100では、表示画面104の上部に時間(ゲーム開始からの経過時間)を表示する表示部110およびノルマを表示する表示部112が設けられる。
この実施例のパズルゲームでは、ピースオブジェクト106を移動させると、その移動に応じて、移動後のピースオブジェクト106の表示態様が変化される。具体的には、ピースオブジェクト106に表示された数字または記号が左右反転または上下反転される。そして、プレイヤによって、上下(縦)方向または左右(横)方向に一直線上に並ぶ2つ以上のピースオブジェクト106の範囲が選択され、選択された範囲の2つ以上のピースオブジェクト106に表示された数字の総和が所定値(たとえば、10)になると、当該2つ以上のピースオブジェクト106はゲームフィールドから消去される。ただし、ピースオブジェクト106が消去されたり、所定時間が経過したりすると、新しいピースオブジェクト106がゲームフィールドに補充される。このようにして、制限時間内に、ノルマで示される数のピースオブジェクト106が消去されると、ゲームクリアとなる。一方、ノルマで示される数のピースオブジェクト106を消去する前に、制限時間を超えてしまったり、ゲームフィールド500のすべてのグリッド502(表示画面102および104の全体)にピースオブジェクト106が表示されてしまったりすると、ゲームオーバとなる。以下、この実施例のパズルゲームについて詳細に説明することにする。
ゲームが開始されると、図示しない初期のゲーム画面(初期画面)がLCD12およびLCD14に表示される。この初期画面には、たとえば、5(行)×3(列)のピースオブジェクト106が表示される。ただし、これらのピースオブジェクト106は、初期画面(LCD14)の右端に詰めた状態で表示される。
プレイヤは、スティック26等を用いて、所望のピースオブジェクト106を指示し、ピースオブジェクト106を表示画面104内で移動させる。ただし、この実施例では、プレイヤは上下(縦)または左右(横)に隣接する2つのピースオブジェクト106を指示し、この指示に従って選択された2つのピースオブジェクト106の配置位置が入れ替わるように、それぞれのピースオブジェクト106が移動される。
図面では分かり難いが、タッチオフの状態(リリース状態)から所望のピースオブジェクト106を指示(タッチオンないしタップ)すると、当該所望のピースオブジェクト106が選択される。図4ではプレイヤの指示に従って選択されたピースオブジェクト106を太線枠で示してある。ただし、選択されたピースオブジェクトを色付きの線の枠で示してもよいし、選択されたピースオブジェクト106全体を色反転させたり、色や輝度を強調させたりしてもよい。または、何らかの指示画像(マーカ)を選択されたピースオブジェクト106の前面に表示するようにしてもよい。つまり、選択されたピースオブジェクト106が識別可能に表示される。このようにして、1つ目のピースオブジェクト106(以下、説明の便宜上、「第1ピースオブジェクト106」と言うことがある。)が選択される。
なお、実際のパズルゲームにおいては、後述するように、第1ピースオブジェクト106および第2ピースオブジェクト106が選択された後に、それらの回転処理が実行されるとき、および消去範囲の始点としてのピースオブジェクト106が選択されたときに、選択されたピースオブジェクト106は太線枠で表示される。
プレイヤが、第1ピースオブジェクト106の選択に続いて、ドラッグ(スティック26等をタッチパネル24上でスライドさせること)により、第1ピースオブジェクト106の上、下、左または右側に隣接する他のピースオブジェクト106をタップすると、当該他のピースオブジェクト106が2つ目のピースオブジェクト106(以下、説明の都合上、「第2ピースオブジェクト106」と言うことがある。)として選択される。
このようにして、2つのピースオブジェクト106が選択されると、これら2つのピースオブジェクト106の配置位置が入れ替えられる。この実施例では、上述したように、3次元仮想空間に2次元のゲームフィールド500が設けられる。また、上述したように、移動後のピースオブジェクト106の表示態様を、移動前の表示態様に対して左右反転または上下反転で表示するようにしてある。したがって、この実施例では、第1ピースオブジェクト106と第2ピースオブジェクト106とは、それらの中間に想定される軸を中心に180度回転することによって、第1ピースオブジェクト106と第2ピースオブジェクト106との配置位置が入れ替えられる。このとき、第1ピースオブジェクト106および第2ピースオブジェクト106は、裏返しになるため、回転方向に応じて、表示態様が左右反転または上下反転される。
具体的には、第1ピースオブジェクト106と第2ピースオブジェクト106とが横並びである場合には、これらのピースオブジェクト106は横方向に回転される。図6(A)に示すように、第1ピースオブジェクト106が左側であり、第2ピースオブジェクト106が右側である場合には、第1ピースオブジェクト106が手前側(視点側)をプレイヤから見て左から右に移動するように回転し、第2ピースオブジェクト106が奥側をプレイヤから見て右から左に移動するように回転される。ただし、回転軸(縦軸)を中心に、180度回転される。以下、ピースオブジェクト106を回転させる場合において、同様である。
たとえば、プレイヤが左側のピースオブジェクト106をタップした後に、右方向にドラッグすると、左側のピースオブジェクト106が第1ピースオブジェクトとして選択され、右側のピースオブジェクト106が第2ピースオブジェクトとして選択される。
また、図6(B)に示すように、第1ピースオブジェクト106が右側であり、第2ピースオブジェクト106が左側である場合には、第1ピースオブジェクト106が手前側(視点側)をプレイヤから見て右から左に移動するように回転され、第2ピースオブジェクト106が奥側をプレイヤから見て左から右に移動するように回転される。
たとえば、プレイヤが右側のピースオブジェクト106をタップした後に、左方向にドラッグすると、右側のピースオブジェクト106が第1ピースオブジェクトとして選択され、左側のピースオブジェクト106が第2ピースオブジェクトとして選択される。
また、第1ピースオブジェクト106と第2ピースオブジェクト106とが縦並びである場合には、これら2つのピースオブジェクト106は縦方向に回転される。図7(A)に示すように、第1ピースオブジェクト106が上側であり、第2ピースオブジェクト106が下側である場合には、第1ピースオブジェクト106が手前側(視点側)をプレイヤから見て上から下に移動するように回転され、第2ピースオブジェクト106が奥側をプレイヤから見て下から上に移動するように回転される。
たとえば、プレイヤが上側のピースオブジェクト106をタップした後に、下方向にドラッグすると、上側のピースオブジェクト106が第1ピースオブジェクトとして選択され、下側のピースオブジェクト106が第2ピースオブジェクトとして選択される。
また、図7(B)に示すように、第1ピースオブジェクト106が下側であり、第2ピースオブジェクト106が上側である場合には、第1ピースオブジェクト106が手前側(視点側)をプレイヤから見て下から上に移動するように回転され、第2ピースオブジェクト106が奥側をプレイヤから見て上から下に移動するように回転される。
たとえば、プレイヤが下側のピースオブジェクト106をタップした後に、上方向にドラッグすると、下側のピースオブジェクト106が第1ピースオブジェクトとして選択され、上側のピースオブジェクト106が第2ピースオブジェクトとして選択される。
なお、図6および図7においては、ピースオブジェクト106が回転する方向を分かり易く示すために、ピースオブジェクト106の形状を少し斜めに傾けて図示してあるが、実際には、ピースオブジェクト106の形状が斜めに傾くことはない。
また、この実施例では、図8(A)に示すように、ピースオブジェクト106の上面(視点側の面)には、7セグメント表示により、数字およびそれを線対称または点対称にした記号を表示するようにしてある。この実施例では、ピースオブジェクト106の上面にすべてのセグメント106a,106b,106c,106d,106e,106f,106gが表示されているように示してあるが、実際には、数字または記号として表示されるセグメント106a−106gのみが描画される。したがって、上述したように、ピースオブジェクト106が180度回転(左右反転または上下反転)されると、それに表示された数字または記号も180度回転される。つまり、表示態様が変化される。
なお、この実施例では、ピースオブジェクト106の上面に、7セグメント表示の数字または記号を描画するようにしてあるため、回転処理によって、ピースオブジェクト106が裏返しにされると、その後、ピースオブジェクトの上面に、左右反転または上下反転された数字または記号を描画し直すようにしてある。
たとえば、図8(B)に示すように、数字の「2」が表示されたピースオブジェクト106が左右(横)方向に180度回転されると、当該ピースオブジェクト106には数字の「5」が表示される。一方、数字の「5」が表示されたピースオブジェクト106が左右方向に180度回転されると、当該ピースオブジェクト106には数字の「2」が表示される。このように、ピースオブジェクト106に表示される数字や記号は、当該ピースオブジェクト106が左右回転される前後において、縦軸を中心として線対称になる。
また、図9に示すように、数字の「9」が表示されたピースオブジェクト106が上下(縦)方向に180度回転されると、当該ピースオブジェクト106には数字の「9」を上下反転した(数字の「6」を左右反転した)記号が表示される。一方、数字の「9」を上下反転した(「6」を左右反転した)記号が表示されたピースオブジェクト106が上下方向に180度回転されると、当該ピースオブジェクト106には数字の「9」が表示される。このように、ピースオブジェクト106に表示される数字や記号は、当該ピースオブジェクト106が上下回転される前後において、横軸を中心として線対称になる。
なお、詳細な説明および図示は省略するが、他の数字についても同様である。ただし、左右対称および上下対称である数字の「0」や「8」は、左右反転または上下反転しても、表示態様は変化しない。また、上下対称である数字の「1」や「3」は上下反転しても、表示態様は変化しないが、左右反転すると、数字の「1」や「3」を左右反転した記号で表示される。ただし、数字の「1」は左右反転しても、数字の「1」として認識することができるが、表示されるセグメント(後述する表示パターン)が異なるため、この実施例では、数字の「1」を左右反転した記号として認識するようにしてある。
また、図示は省略するが、ピースオブジェクト106を左右反転または上下反転させた後に、さらに当該ピースオブジェクト106を上下反転または左右反転させると、当該ピースオブジェクト106は元の位置(グリッド502)から斜め方向に移動され、元のピースオブジェクト106に表示された数字や記号は、移動後のピースオブジェクト106において、点対称で表示される。
したがって、たとえば、図4に示した状態において、第1ピースオブジェクト106が選択され、続けて、プレイヤが下方向にドラッグすると、図10のゲーム画面150に示すように、第1ピースオブジェクト106(説明の便宜上、これ以降では、参照符号を「106m」とする)と第2ピースオブジェクト106(説明の便宜上、これ以降では、参照符号を「106n」とする)とが縦方向に回転する。これによって、第1ピースオブジェクト106mと第2ピースオブジェクト106nとは、配置位置が入れ替えられるとともに、表示態様が変化される。具体的には、数字の「2」が表示された第1ピースオブジェクト106mは、1つ下側のグリッド502に移動されるとともに上下反転され、その上面には数字の「5」に表示が変更される。一方、数字の「1」が表示された第2ピースオブジェクト106nは、1つ上側のグリッド502に移動されるとともに上下反転されるが、その上面には同じく数字の「1」が表示される。
また、図11に示す他のゲーム画面200において、スティック26によって数字の「6」が表示された第1ピースオブジェクト106mを選択した後に、下方向にドラッグして、第1ピースオブジェクト106mの下側のピースオブジェクト106を第2ピースオブジェクト106nとして選択したとする。すると、図12のゲーム画面250に示すように、数字の「6」が表示された第1ピースオブジェクト106mは、1つ下側のグリッド502に移動されるとともに上下反転され、その上面には数字の「6」を上下反転した(「9」を左右反転した)記号が表示される。一方、数字の「4」が表示された第2ピースオブジェクト106nは、1つ上側のグリッド502に移動されるとともに上下反転され、その上面には数字の「4」を上下反転した記号が表示される。
なお、この実施例では、図12に示すように、ピースオブジェクト106の上面に、数字ではなく、記号が表示される場合には、その記号をグレーアウトで表示するようにしてある。これは、数字と数字以外の記号とを分かり易く示すためである。したがって、数字と同様にグレーアウトせずに表示するようにしても構わない。
また、左右方向にドラッグした場合のゲーム画面は省略するが、上下方向にドラッグした場合と、ピースオブジェクト106の移動方向および反転方向が異なる以外は同じである。
上述のようにして、左右方向や上下方向にドラッグして、2つのピースオブジェクト106の配置位置を入れ替えて、所望のピースオブジェクト106を移動させることができる。また、このパズルゲームでは、上述したように、縦方向または横方向に並ぶ2つ以上のピースオブジェクト106に表示された数字の総和が所定値になると、当該2つ以上のピースオブジェクト106をゲーム画面から消去することができる。プレイヤは、その2つ以上のピースオブジェクト106のうち、両端(始点と終点)に有る2つのピースオブジェクト106を個別に指示(選択)して、消去するべき2つ以上のピースオブジェクト106(消去範囲)を指定する。
たとえば、図13のゲーム画面300に示すように、一方端(始点)のピースオブジェクト106が選択され、その後、図14のゲーム画面350に示すように、他方端(終点)のピースオブジェクト106が選択される。ただし、この実施例では、始点のピースオブジェクト106を選択した後に、ドラッグすると、ピースオブジェクト106の配置位置および表示態様が変化されるため、消去範囲を指定する場合には、消去範囲の両端に在るピースオブジェクト106の各々を個別にタッチ(タップ)する必要がある。
なお、図14では、プレイヤによって指示された消去範囲に在る複数のピースオブジェクト106を点線枠で囲んである。
ただし、消去範囲は、上下方向または左右方向に一直線上に並ぶ2つ以上のピースオブジェクト106で指定されるため、一直線上に並んでいない2つのピースオブジェクト106が選択された場合には、消去範囲は指定されない。つまり、消去範囲の指定は失敗である。また、この実施例では、後述するように、消去範囲に含まれるすべてのピースオブジェクト106に表示された数字の総和が所定値であるか否かを判断するようにしてあるため、消去範囲に含まれるすべてのピースオブジェクト106において数字が表示されている必要がある。したがって、数字を左右反転または上下反転した記号が表示されたピースオブジェクト106が消去範囲に含まれている場合にも、消去は範囲の指定は失敗となる。消去範囲の指定に失敗した場合には、最後に指示された(他方端の)ピースオブジェクト106が、第1ピースオブジェクト106mまたは他の消去範囲を指定するための始点のピースオブジェクト106として選択される。
消去範囲の両端のピースオブジェクト106が選択されると、この両端のピースオブジェクト106を含み、その間に配置されるすべてのピースオブジェクト106に表示された数字の総和が算出される。つまり、両端を結ぶ直線上に存在するピースオブジェクト106に表示された数字の総和が算出されるのである。そして、総和が所定値であるかどうかが判断される。
総和が所定値であれば、図15のゲーム画面400に示すように、両端のピースオブジェクト106およびその間のすべてのピースオブジェクト106が消去される。つまり、両端のピースオブジェクト106およびその間のすべてのピースオブジェクト106は、ゲーム画面400(ゲームフィールド500)から消去される。ピースオブジェクト106が消去されると、右側に空きのグリッド502が在るピースオブジェクト106はゲーム画面400の右方向に移動される。したがって、図15に示すように、数字の「3」が表示されたピースオブジェクト106がゲーム画面400の右方向に移動される。
また、ピースオブジェクト106が消去されると、消去されたピースオブジェクト106の数だけ、ノルマの数が減算される。このとき、表示領域112に表示されたノルマの数が更新される。また、このとき、ピースオブジェクト106の消去に成功したことを示すゲーム画面や音(効果音)を出力するようにしてもよい。たとえば、消去範囲に含まれるすべてのピースオブジェクト106の全体または消去範囲に含まれるすべてのピースオブジェクト106に表示された数字のみをフラッシュさせた後に、当該消去範囲に含まれるすべてのピースオブジェクト106を消去することができる。または、ピースオブジェクト106を消去した後に、消去に成功した旨のメッセージをゲーム画面(400)上に表示することもできる。
一方、総和が所定値でなければ、両端のピースオブジェクト106およびその間のすべてのピースオブジェクト106は、消去されない。このとき、他方端(終点)のピースオブジェクト106は、消去範囲の指定に失敗した場合と同様に、第1ピースオブジェクト106mまたは他の消去範囲の始点のピースオブジェクト106として選択される。このとき、ピースオブジェクト106の消去に失敗したことを示すゲーム画面や音(効果音)を出力するようにしてもよい。
図16は、図2に示したRAM42のメモリマップ70を示す図解図である。図16に示すように、RAM42は、プログラム記憶領域72およびデータ記憶領域74を含む。プログラム記憶領域72には、パズルゲームプログラムが記憶され、このパズルゲームプログラムは、メイン処理プログラム720、画像生成プログラム722、画像表示プログラム724、音再生プログラム726、入力判定プログラム728、ピース操作プログラム730、消去判定プログラム732およびピース移動プログラム734などによって構成される。
メイン処理プログラム720は、この実施例の仮想ゲーム(パズルゲーム)のメインルーチンを処理するためのプログラムである。画像生成プログラム722は、後述する画像データ742(図17参照)を用いて、LCD12およびLCD14にゲーム画面(100,150,200,250,300,350,400など)を表示するためのゲーム画像を生成するためのプログラムである。画像表示プログラム724は、画像生成プログラム722に従って生成されたゲーム画像をゲーム画面(100−400など)としてLCD12およびLCD14に表示するためのプログラムである。
音再生プログラム726は、後述する音データ744(図17参照)を用いて、効果音や音楽(BGM)などのゲームに必要な音を再生(出力)するためのプログラムである。入力判定プログラム728は、タッチオン(タップ)されているか、または、タッチオフされているか、或いは、ドラッグされているかを判定するためのプログラムである。たとえば、入力判定プログラム728に従って後述するタップフラグ762がオンまたはオフされる。タッチオフの状態(リリース状態)では、タップフラグ762はオフされ、タッチオンの状態(タップ状態)では、タップフラグ762はオンされる。また、タップフラグ762がオンの状態で、タッチパネル24から入力される座標データが変化する場合には、入力操作がドラッグであると判定される。
ピース操作プログラム730は、プレイヤの指示(入力操作)に従って、ピースオブジェクト106を選択したり、ピースオブジェクト106を移動させたり、ピースオブジェクト106の表示態様を変化させたりするためのプログラムである。ただし、この実施例では、ピース操作プログラム730に従って、ピースオブジェクト106を回転させることにより、回転の前後で当該ピースオブジェクト106に表示された数字等が線対称または点対称となるように、その表示を変化させることにより、当該ピースオブジェクト106の表示態様が変化される。
消去判定プログラム732は、ピースオブジェクト106を消去するか否かを判定するためのプログラムである。上述したように、この実施例では、プレイヤが選択した直線上に並ぶ2つ以上のピースオブジェクト106に表示された数字の総和が所定値であるかどうかで、それらのピースオブジェクト106を消去するかどうかを判定する。
ピース移動プログラム734は、ピースオブジェクト106を補充したり、ゲームフィールド500上に存在するピースオブジェクト106のうち、同じ行の右側に空きグリッド502が有るピースオブジェクト106を右方向に移動させたりするためのプログラムである。ただし、この実施例では、ピースオブジェクト106は、最もピースオブジェクト106が少ない行に補充され、最もピースオブジェクト106が少ない行が複数有る場合には、より上の行に補充される。これは単なる一例であり、空きのグリッド502が有る行に、ランダムにまたは上の行から順番に、ピースオブジェクト106を補充するようにしてもよい。
なお、図示は省略するが、パズルゲームプログラムは、バックアッププログラムなども含む。バックアッププログラムは、プレイヤの指示や所定のゲームイベントに応じて、ゲームデータ(途中データや結果データ)をメモリカード28のRAM28bに記憶(セーブ)するためのプログラムである。
図17は、図16に示したデータ記憶領域74の具体的な内容を示す図解図である。この図17に示すように、データ記憶領域74には、入力バッファ740が設けられる。入力バッファ740は、タッチパネル24から入力される座標データを時系列に従って記憶(一時記憶)する。この入力バッファ740に記憶される座標データは、入力判定プログラム728に従う入力判定処理で参照されたり、プレイヤが指示しているゲーム画面上のオブジェクト(ピースオブジェクト106など)を判断するために参照されたりする。
また、データ記憶領域74には、画像データ742、音データ744、グリッドインデックスデータ746、回転テーブルデータ748、属性テーブルデータ750およびピース配置テーブルデータ752が記憶される。さらに、データ記憶領域74には、消去判定フラグ754、タップフラグ756および時間カウンタ758が設けられる。
画像データ742は、ゲーム画像を生成するためのポリゴンデータやテクスチャデータなどのデータである。音データ744は、ゲームに必要な音を生成するためのデータや音楽(BGM)についてのデータである。グリッドインデックスデータ746は、ゲームフィールド500に配置されたグリッド502のそれぞれに割り当てられたグリッドインデックスを各グリッド502に対応して記憶したデータである。上述したように、グリッドインデックスは、行と列とを示す2つの数字で示される。
回転テーブルデータ748は、ピースオブジェクト106に表示される数字や記号を表すパターン(表示パターン)を回転前と回転後とで対応付けて記載したテーブルについてのデータである。ここで、表示パターンは、7桁の2進数で表わされ、各桁はピースオブジェクト106に設定されるセグメント106a−106gに対応する。この実施例では、左端の桁から右端の桁に向かって順に、セグメント106a,106b,106c,106d,106e,106f,106gに対応する。また、各桁において、「1」は対応するセグメント(106a−106g)の表示を意味し、「0」は対応するセグメント(106a−106g)の非表示を意味する。
図18には、回転テーブルデータ748に従う回転テーブルが示される。この回転テーブルでは、回転前の表示パターンは、上から順に、数字や記号としての「1」,「2」,「3」,「4」,「5」,「6」,「7」,「8」,「9」,「0」…に対応する。回転後の表示パターンは、回転する方向に応じて4つの表示パターンに分類される。後述するように、変数POSには、第1ピースオブジェクト106mの配置位置を基準とした場合の第2ピースオブジェクト106nの配置位置(または、第1ピースオブジェクト106mの移動方向)に対応する所定値(RIGHT(右),LEFT(左),TOP(上),BOTTOM(下))が入力され、各所定値に応じた回転後の表示パターンに従って回転後のピースオブジェクト106の上面に数字や記号が表示される。
図17に戻って、属性テーブルデータ750は、セグメント106a−106gの各々を表示または非表示する表示パターンに対応する属性を示すテーブルについてのデータである。この実施例では、属性として、数字が記述される。具体的には、属性テーブルデータ750に従う属性テーブルは、図19(A)に示されるように、表示パターンに対応して属性情報としての数字が記載される。この属性テーブルは、ピースオブジェクト106の表記が数字であるかどうかを判定するために用いられる。具体的には、ピースオブジェクト106の表示パターンが、属性テーブルに記載された表示パターンに合致すれば数字であり、その合致する表示パターンに対応して記載された数字が当該ピースオブジェクト106に表示されていることが分かる。また、ピースオブジェクト106の表示パターンが、属性テーブルに記載された表示パターンに合致しなければ、当該ピースオブジェクト106に記号が表示されていることが分かる。
図17に戻って、ピース配置テーブルデータ752は、グリッドインデックスに対応してピース情報の記述されたテーブルについてのデータである。このピース配置テーブルデータ752に従うピース配置テーブルは、図19(B)に示される。ただし、ピース情報は、各グリッド502にピースオブジェクト106が格納されているかどうかを示す情報、または格納されているピースオブジェクト106の表示パターンを示す情報を意味する。グリッド502にピースオブジェクト106が格納されていない場合には、当該グリッド502を示すグリッドインデックスに対応してピース情報として「null」が記載される。一方、グリッド502にピースオブジェクト106が格納されている場合には、当該グリッド502を示すグリッドインデックスに対応してピース情報として当該ピースオブジェクト106の表示パターンが記載される。
図17に戻って、消去判定フラグ754は、後述する消去判定処理(図20,図27,図28)を実行するかどうかを判断するためのフラグである。この消去判定フラグ754は、たとえば、1ビットのレジスタで構成される。消去判定処理を実行する場合には、消去判定フラグ754は成立(オン)され、レジスタにデータ値「1」が記憶される。一方、消去判定処理を実行しない場合には、消去判定フラグ754は不成立(オフ)され、レジスタにデータ値「0」が記憶される。ただし、消去判定フラグ754は、後述するピース操作処理(図21−図26)においてオン/オフされる。
タップフラグ756は、プレイヤがタッチパネル24上をタップ(タッチオン)しているかどうかを判断するためのフラグである。このタップフラグ756もまた、1ビットのレジスタで構成される。プレイヤがタッチパネル24をタップ(タッチオン)している場合には、タップフラグ756はオンされ、レジスタにデータ値「1」が記憶される。一方、プレイヤがタッチパネル24をリリース(タッチオフ)している場合には、タップフラグ756はオフされ、レジスタにデータ値「0」が記憶される。
時間カウンタ758は、所定時間をカウントするためのカウンタ(ダウンカウンタ)である。この時間カウンタ758は、新しいピースオブジェクト106を補充する時間間隔をカウントするために用いられる。
なお、図示は省略するが、データ記憶領域74には、パズルゲームに必要な他のデータが記憶され、また、パズルゲームに必要な他のフラグやカウンタ(タイマ)も設けられる。
図20は、図2に示したCPUコア34のメイン処理を示すフロー図である。図20に示すように、CPUコア34はメイン処理を開始すると、ステップS1で、初期化処理を実行する。ここでは、CPUコア34は、パズルゲームの初期画面を表示する。なお、図示は省略したが、上述したように、初期画面では、たとえば、5(行)×3(列)のピースオブジェクト106が表示画面104の右端側に表示される。また、CPUコア34は、変数A,B,Cを空にするとともに、タップフラグ754をオフし、時間カウンタ758をリセットおよびスタートする。後で詳細に説明するが、変数Aは、第1ピースオブジェクト106mまたは消去範囲の終点のピースオブジェクト106についての変数であり、変数Bは、第2ピースオブジェクト106nについての変数であり、そして、変数Cは、消去範囲の始点のピースオブジェクト106についての変数である。
続いて、ステップS3で、後述するピース操作処理(図21−図26参照)を実行し、ステップS5で、後述する消去判定処理(図27および図28参照)を実行し、ステップS7で、後述するピース移動処理(図29参照)を実行する。
そして、ステップS9で、ゲームクリアであるかどうかを判断する。この実施例では、CPUコア34は、ノルマで示される所定数のピースオブジェクト106を消去したかどうかを判断する。ステップS9で“YES”であれば、つまりノルマで示される所定数のピースオブジェクト106を消去すれば、ゲームクリアであると判断して、ステップS11で、ゲームクリア画面を表示し、メイン処理を終了する。
図示は省略するが、たとえば、ゲームクリア画面は、ゲームクリアを示すテキストが表示されたり、ゲームクリアを示す演出がなされたりする。また、ゲームクリア画面が表示されるのみならず、ゲームクリアを示す音(効果音)や音楽が出力されるようにしても良い。
一方、ステップS9で“NO”であれば、つまりノルマで示される所定数のピースオブジェクト106を消去していなければ、ゲームクリアでないと判断して、ステップS13で、ゲームオーバであるかどうかを判断する。この実施例では、CPUコア34は、制限時間を超えたり、全グリッド502にピースオブジェクト106が格納されたりしたかどうかを判断する。
なお、図示しないカウンタ(タイマ)によってゲーム開始からの経過時間がカウントされ、このタイマの値が制限時間を超えたかどうかを判断するのである。また、ピース配置テーブルを参照して、全グリッド502にピースオブジェクト106が格納されたかどうかを判断する。ただし、ピース配置テーブルのピース情報がすべて表示パターンである場合に、全グリッド502にピースオブジェクト106が格納されていると判断される。
ステップS13で“NO”であれば、つまり制限時間を超えておらず、ピースオブジェクト106が格納されていないグリッド502が1つ以上有る場合には、ゲームオーバでないと判断して、ステップS3に戻る。一方、ステップS13で“YES”であれば、つまり制限時間を超えたり、全グリッド502にピースオブジェクト106が格納されたりすると、ゲームオーバであると判断して、ステップS15で、ゲームオーバ画面を表示して、メイン処理を終了する。
図示は省略するが、たとえば、ゲームオーバ画面は、ゲームオーバを示すテキストが表示されたり、ゲームオーバを示す演出がなされたりする。また、ゲームオーバ画面が表示されるのみならず、ゲームオーバを示す音(効果音)や音楽が出力されるようにしても良い。
図21−図26は、図20に示したステップS3のピース操作処理のフロー図である。図21に示すように、CPUコア34はピース操作処理を開始すると、ステップS31で、消去判定フラグ754をオフする。次のステップS33では、タップ状態であるかどうかを判断する。ここでは、CPUコア34は、入力バッファ740を参照して、タッチパネル24から座標データが入力されているかどうかを検出し、現フレームにおける座標データが入力されている場合には、タップ状態であると判断し、現フレームにおける座標データが入力されていない場合には、リリース状態であると判断する。
ステップS33で“NO”であれば、つまりタップ状態でなければ、リリース状態であると判断して、後述する図26のステップS87に進む。一方、ステップS33で“YES”であれば、つまりタップ状態であれば、ステップS35で、タップ位置(タッチオンの位置)を検出する。この実施例では、LCD14の解像度とタッチパネル24の検出精度とを同じにしてあるので、同一の座標系にしておけば、タッチパネル24から入力された座標データをそのままLCD14の画面上のタップ位置を示す座標データとして用いることができる。
続いて、図22に示すステップS37では、タップ位置がグリッド502上であるかどうかを判断する。ステップS37で“NO”であれば、つまりタップ位置がグリッド502上でなければ、ピースオブジェクト106を指示していないと判断して、そのままメイン処理にリターンする。一方、ステップS37で“YES”であれば、つまりタップ位置がグリッド502上であれば、ステップS39で、タップフラグ756がオフであるかどうかを判断する。つまり、ここでは、CPUコア34は、リリース状態(タッチオフの状態)からタップ状態(タッチオンの状態)になったかどうかを判断しているのである。
ステップS39で“NO”であれば、つまりタップフラグ756がオンであれば、タップ状態が継続していると判断して、図23に示すステップS53に進む。一方、ステップS39で“YES”であれば、つまりタップフラグ756がオフであれば、リリース状態からタップ状態に変化したと判断して、ステップS41で、タップフラグ756をオンし、ステップS43で、タップ位置のグリッド502にピースオブジェクト106が格納されているかどうかを判断する。ここでは、CPUコア34は、ピース配置テーブルデータ752を参照して、タップ位置のグリッド502のグリッドインデックスに対応するピース情報として、nullが記載されているかどうかを判断する。以下、同様である。
ステップS43で“NO”であれば、つまりタップ位置のグリッド502のグリッドインデックスに対応するピース情報として、nullが記載されていれば、タップ位置のグリッド502にピースオブジェクト106が格納されていないと判断して、そのままメイン処理にリターンする。
一方、ステップS43で“YES”であれば、つまりタップ位置のグリッド502のグリッドインデックスに対応するピース情報として、表示パターンが記載されていれば、タップ位置のグリッド502にピースオブジェクト106が格納されていると判断して、ステップS45で、タップ位置のグリッド502のグリッドインデックスと、当該グリッド502に格納されているピースオブジェクト106のピース情報(表示パターン)とを取得する。
次のステップS47では、ステップS45で取得したグリッドインデックスとピース情報(表示パターン)とを変数Aに格納する。つまり、第1ピースオブジェクト106mまたは消去範囲の終点のピースオブジェクト106が選択される。たとえば、変数Aは、14桁の2進数で示され、先頭(左端から)の3桁にグリッドインデックスの行数(1−5)を示す値と、次の4桁にグリッドインデックスの列数(1−12)を示す値と、さらに次の7桁にセグメント106a−106gの表示/非表示を示す表示パターンの値とが記載される。後述する変数Bおよび変数Cも同様である。
ただし、この実施例では、プレイヤが選択可能なピースオブジェクト106は、LCD14に表示された6列目から12列目に配置されるピースオブジェクト106であるため、グリッドインデックスの列数(6−12)を示す値は3桁で表現することも可能である。
そして、ステップS49で、変数Cに値が格納されているかどうかを判断する。ここでは、CPUコア34は、2つの点(ピースオブジェクト106)が、個別にタップ(タッチオン)されることにより、消去範囲が指定されたかどうかを判断している。ステップS49で“NO”であれば、つまり変数Cに値が格納されていなければ、そのままメイン処理にリターンする。一方、ステップS49で“YES”であれば、つまり変数Cに値が格納されていれば、ステップS51で、消去判定フラグ754をオンしてから、メイン処理にリターンする。
上述したように、タップフラグ756がオンである場合には、タップ状態が継続していると判断し、ステップS39で“NO”となり、図23に示すステップS53で、タップ位置のグリッド502と、変数Aに格納されたグリッドインデックスが示すグリッド502とが一致するかどうかを判断する。つまり、CPUコア34は、プレイヤがドラッグしているかどうかを判断しているのである。
ステップS53で“YES”であれば、つまりタップ位置のグリッド502と、変数Aに格納されたグリッドインデックスが示すグリッド502とが一致する場合には、プレイヤはドラッグしていないと判断して、図22に示したように、メイン処理にリターンする。一方、ステップS53で“NO”であれば、つまりタップ位置のグリッド502と、変数Aに格納されたグリッドインデックスが示すグリッド502とが一致しなければ、プレイヤはドラッグしていると判断して、ステップS55で、変数Aに格納されたグリッドインデックスが示すグリッド502を基準とした場合における、タップ位置のグリッド502の位置を検出する。簡単に説明すると、各グリッドのグリッドインデックスを参照して、行数が小さい方のグリッド502が上側であり、逆に行数が大きい方のグリッド502が下側であり、また、列数が小さい方のグリッド502が左側であり、逆に列数が大きい方のグリッド502が右側である。
続くステップS57では、ステップS55で検出した位置が上下左右のいずれかであるかどうかを判断する。ステップS57で“NO”であれば、つまり変数Aに格納されたグリッドインデックスが示すグリッド502を基準とした場合における、タップ位置のグリッド502の位置が斜め方向である場合には、検出した位置が上下左右のいずれの方向でもないと判断して、そのままメイン処理にリターンする。
なお、この実施例では、ステップS57で“NO”と判断された場合、つまり斜め方向にドラッグした場合には、そのままメイン処理にリターンするようにしてある。このため、プレイヤがドラッグを継続し、次フレーム以降において、上下左右の方向に隣接するグリッド502をタップし、当該グリッド502にピースオブジェクト106が格納されている場合には、当該ピースオブジェクト106が第2ピースオブジェクト106nとして選択されるのである。つまり、必ずしも直線的にドラッグする必要はないのである。
一方、ステップS57で“YES”であれば、つまり変数Aに格納されたグリッドインデックスが示すグリッド502を基準とした場合における、タップ位置のグリッド502の位置が上下左右のいずれかの方向である場合には、検出した位置が上下左右のいずれかの方向であると判断して、ステップS59で、2つのグリッド502が隣接しているかどうかを判断する。ここでは、2つのグリッド502のグリッドインデックスの行数および列数の各々を比較した場合に、それらの差の絶対値の和が「1」であるかどうかを判断する。これは、2つのグリッド502が隣接する場合には、グリッドインデックスのうち、行数または列数が「1」だけずれているためである。
ステップS59で“NO”であれば、つまり2つのグリッド502が隣接していなければ、そのままメイン処理にリターンする。一方、ステップS59で“YES”であれば、つまり2つのグリッド502が隣接していれば、ステップS61で、タップ位置のグリッド502にピースオブジェクト106が格納されているかどうかを判断する。
ステップS61で“NO”であれば、つまりタップ位置のグリッド502のグリッドインデックスに対応するピース情報として、nullが記載されていれば、タップ位置のグリッド502にピースオブジェクト106が格納されていないと判断して、そのままメイン処理にリターンする。
一方、ステップS61で“YES”であれば、つまりタップ位置のグリッド502のグリッドインデックスに対応するピース情報として、表示パターンが記載されていれば、タップ位置のグリッド502にピースオブジェクト106が格納されていると判断して、図24に示すステップS63で、タップ位置のグリッド502のグリッドインデックスと、当該グリッド502に格納されているピースオブジェクト106のピース情報(表示パターン)とを取得する。
なお、ステップS55およびステップS57,S59,S61で“YES”と判断されることによって、第1ピースオブジェクト106mと第2ピースオブジェクト106nとの位置関係が検出されるのである。
次のステップS65では、ステップS63で取得したグリッドインデックスとピース情報(表示パターン)とを変数Bに格納する。つまり、第2ピースオブジェクト106nが選択される。次のステップS67では、図23に示したステップS55で検出した位置に応じて、変数POSに所定値を代入して、図25に示すステップS69に進む。このステップS67では、CPUコア34は、検出した位置が右であれば、変数POSにRIGHTを代入し、検出した位置が左であれば、変数POSにLEFTを代入し、検出した位置が上であれば、変数POSにTOPを代入し、そして検出した位置が下であれば、変数POSにBOTTOMを代入する。
なお、ステップS55において、斜め方向の位置が検出された場合には、ステップS57で“NO”と判断されるため、ステップS67では、必ず上、下、左または右に対応する値が変数POSに代入される。
図25に示すように、ステップS69では、変数POSにRIGHTが代入されているかどうかを判断する。ステップS69で“YES”であれば、つまり変数POSにRIGHTが代入されていれば、ステップS71で、第1ピースオブジェクト106mと第2ピースオブジェクト106nとを、第1ピースオブジェクト106mが右方向に移動するように180度回転させて、ステップS83に進む。ステップS71では、図6(A)に示したように、第1ピースオブジェクト106mがプレイヤから見て手前側を通り、第2ピースオブジェクト106nが奥側を通るように、第1ピースオブジェクト106mと第2ピースオブジェクト106nとは、その中間に設定される縦軸を中心に180度回転される。
なお、詳細な説明は省略するが、ピースオブジェクト106が回転される場合には、計算シミュレーションによってその様子が描画され、ゲーム画面に表示される。また、後述するように、ピースオブジェクト106が回転した後に、変数Aと変数Bとが更新され、これに従って、回転後のピースオブジェクト106の上面に、回転後の表示パターンに従う数字または記号が描画(再描画)される。以下、ピースオブジェクト106を回転させる場合において同様である。
また、ステップS69で“NO”であれば、つまり変数POSにRIGHTが代入されていなければ、ステップS73で、変数POSにLEFTが代入されているかどうかを判断する。ステップS73で“YES”であれば、つまり変数POSにLEFTが代入されている場合には、ステップS75で、第1ピースオブジェクト106mと第2ピースオブジェクト106nとを、第1ピースオブジェクト106mが左方向に移動するように180度回転させて、ステップS83に進む。ステップS75では、図6(B)に示したように、第1ピースオブジェクト106mがプレイヤから見て手前側を通り、第2ピースオブジェクト106nが奥側を通るように、第1ピースオブジェクト106mと第2ピースオブジェクト106nとは、その中間に設定される縦軸を中心に180度回転される。
また、ステップS73で“NO”であれば、つまり変数POSにLEFTが代入されていなければ、ステップS77で、変数POSにBOTTOMが代入されているかどうかを判断する。ステップS77で“YES”であれば、つまり変数POSにBOTTOMが代入されていれば、ステップS79で、第1ピースオブジェクト106mと第2ピースオブジェクト106nとを、第1ピースオブジェクト106mが下方向に移動するように180度回転させて、ステップS83に進む。ステップS79では、図7(A)に示したように、第1ピースオブジェクト106mがプレイヤから見て手前側を通り、第2ピースオブジェクト106nが奥側を通るように、第1ピースオブジェクト106mと第2ピースオブジェクト106nとは、その中間に設定される横軸を中心に180度回転される。
一方、ステップS77で“NO”であれば、つまり変数POSにTOPが代入されていれば、ステップS81で、第1ピースオブジェクト106mと第2ピースオブジェクト106nとを、第1ピースオブジェクト106mが上方向に移動するように180度回転させて、ステップS83に進む。ステップS81では、図7(B)に示したように、第1ピースオブジェクト106mがプレイヤから見て手前側を通り、第2ピースオブジェクト106nが奥側を通るように、第1ピースオブジェクト106mと第2ピースオブジェクト106nとは、その中間に設定される横軸を中心に180度回転される。
ステップS83では、回転テーブルを参照して、配置位置を入れ替えられた第1ピースオブジェクト106mと第2ピースオブジェクトnとを格納する2つのグリッド502のピース情報と、変数Aおよび変数Bに格納されるピース情報とを更新する。つまり、2つのグリッド502のそれぞれと、変数Aおよび変数Bのそれぞれとについて、回転前の表示パターンを、回転後の表示パターンに変更する。ただし、回転後の表示パターンは、変数POSに代入されている所定値に応じて回転テーブルに従って決定される。
次のステップS85では、配置位置を入れ替えた2つのピースオブジェクト106の数字または記号を再描画する。具体的には、180度回転したことにより、各ピースオブジェクト106が裏返しになっているため、CPUコア34は、この各ピースオブジェクト106の上面側に回転後の表示パターンに従って数字または記号を描画し直すのである。
次のステップS87では、変数Aに変数Bの値を格納して、図22に示すように、メイン処理にリターンする。つまり、ステップS87では、移動後の第1ピースオブジェクト106mが格納されるグリッド502のグリッドインデックスおよびピース情報(表示パターン)が変数Aに格納されるのである。したがって、プレイヤがドラッグすることにより、連続的にピースオブジェクト106(第1ピースオブジェクト106m)が移動される場合にも、隣接するピースオブジェクト106(第2ピースオブジェクト106n)との間で配置位置を順次入れ替えることができる。
また、図21に示したように、タップ状態でなければ、ステップS33で“NO”となり、図26に示すステップS89で、リリースされたかどうかを判断する。ここでは、CPUコア34は、タップフラグ756がオンであるかどうかを判断するのである。つまり、直前のフレームでタップ状態であり、現在のフレームでタップ状態でない場合に、リリースされたと判断するようにしてある。したがって、直前のフレームおよび現在のフレームでタップ状態でない場合には、リリースされたとは判断されない。
ステップS89で“NO”であれば、つまりタップフラグ756がオフであれば、プレイヤによるタッチ操作が無いと判断して、そのまま図22に示すように、メイン処理にリターンする。一方、ステップS89で“YES”であれば、つまりタップフラグ756がオンであれば、リリースされたと判断し、ステップS91で、タップフラグ756をオフする。
続くステップS93では、変数Bに値が格納されているかどうかを判断する。つまり、ここでは、CPUコア34は、プレイヤがドラッグしていたか否かを判断しているのである。これは、ステップS97に示すように、ドラッグした後にリリースした場合に、最後に指示したグリッド502に格納されたピースオブジェクト106を消去範囲の始点のピースオブジェクト106として選択させないようにするためである。
ステップS93で“NO”であれば、つまり変数Bに値が格納されていなければ、ドラッグされていないと判断して、ステップS95で、変数Cに変数Aの値を格納して、メイン処理にリターンする。つまり、消去範囲を指定するための始点のピースオブジェクト106が設定される。一方、ステップS93で“YES”であれば、つまり変数Bに値が格納されていれば、ドラッグされていたと判断して、ステップS97で、変数Bの値を空にして、メイン処理にリターンする。つまり、ドラッグ後にリリースされた場合には、消去範囲を指定するための始点のピースオブジェクト106は設定されない。
図27および図28は、図20に示したステップS5の消去判定処理のフロー図である。図27に示すように、CPUコア34は、消去判定処理を開始すると、ステップS111で、消去判定フラグ754がオンであるかどうかを判断する。ステップS111で“NO”であれば、つまり消去判定フラグ754がオフであれば、消去判定を行わないと判断して、図28に示すように、そのままメイン処理にリターンする。一方、ステップS111で“YES”であれば、つまり消去判定フラグ754がオンであれば、消去判定を行うと判断して、ステップS113で、変数Aと変数Cとが示すグリッド502が一直線上に並んでいるかどうかを判断する。ここでは、CPUコア34は、変数Aおよび変数Cに格納されたグリッドインデックスを参照して、行数または列数が一致するかどうかを判断する。
ステップS113で“NO”であれば、つまりグリッドインデックスの行数および列数のいずれも異なる場合には、変数Aと変数Cとが示すグリッド502が一直線上に並んでいないと判断して、そのままメイン処理にリターンする。一方、ステップS113で“YES”であれば、つまりグリッドインデックスの行数または列数が一致する場合には、変数Aと変数Cとが示すグリッド502が一直線上に並んでいると判断して、ステップS115で、変数Aと変数Cとが示すグリッド502に格納されたピースオブジェクト106およびそれらの間に配置されたすべてのピースオブジェクト106の表記が数字であるかどうかを判断する。
このステップS115では、CPUコア34は、ピース配置テーブルデータ752を参照して、変数Aと変数Cとが示すグリッド502に格納されたピースオブジェクト106のピース情報と、それらのピースオブジェクト106の間に配置されたピースオブジェクト106のピース情報とを読み出す。
ただし、変数Aと変数Cとが示すグリッド502に格納されたピースオブジェクト106の間に配置されたピースオブジェクト106のピース情報は、次のようにして得られる。変数Aと変数Cとが示すグリッド502のグリッドインデックスの行数が一致する場合には、当該行数でありかつそれらのグリッドインデックスの間の列数で示される、グリッドインデックスに対応して記載されたピース情報がピース配置テーブルから取得される。一方、変数Aと変数Cとが示すグリッド502のグリッドインデックスの列数が一致する場合には、当該列数でありかつそれらのグリッドインデックスの間の行数で示される、グリッドインデックスに対応して記載されたピース情報がピース配置テーブルから取得される。
そして、CPUコア34は、属性テーブルデータ750を参照して、読み出したすべてのピース情報の属性を取得し、取得した属性が数字であるかどうかを判断する。ただし、ピース情報がnullであったり、数字以外の表示パターンであったりする場合には、表記が数字ではないことを示す属性が取得される。
ステップS115で“NO”であれば、つまり取得した属性のうちいずれか1つでも数字では無い属性が有れば、消去範囲の指定に失敗したと判断して、ステップS119で、変数Cに変数Aの値を格納する。つまり、消去範囲の指定に失敗した場合には、その消去範囲を指定したときの終点のピースオブジェクト106を、第1ピースオブジェクト106mないし次の(他の)消去範囲の指定のための始点のピースオブジェクト106として設定するのである。
一方、ステップS115で“YES”であれば、つまり取得したすべての属性が数字を示していれば、ステップS117で、取得したすべての数字の総和が10であるかどうかを判断する。ステップS117で“NO”であれば、取得したすべての数字の総和が10でなければ、消去失敗(消去範囲の指定に失敗した)と判断して、そのままステップS119に進む。一方、ステップS117で“YES”であれば、つまり取得したすべての数字の総和が10であれば、消去成功であり、図28に示すステップS121で、得点処理を実行する。詳細な説明は省略するが、この実施例では、CPUコア34は、得点処理として、ノルマに記載された数から今回消去したピースオブジェクト106の数だけ減算する。
次にステップS123では、消去処理を実行する。ここでは、上述したように、CPUコア34は、消去範囲に含まれる複数のピースオブジェクト106の各々の数字のみ、または消去範囲に含まれる複数のピースオブジェクト106の全体をフラッシュさせた後に、当該複数のピースオブジェクト106をゲーム画面(ゲームフィールド500)から消去する。このとき、消去される様子を示す音(効果音,音楽)が出力されてもよい。ただし、消去範囲に含まれる複数のピースオブジェクト106は、変数Aと変数Cとが示すグリッド502に格納された2つのピースオブジェクト106と、それらの間に配置されているすべてのピースオブジェクト106とである。
なお、この消去処理は一例であり、たとえば、消去するピースオブジェクト106をその場で回転(たとえば、180度回転,360度回転)させてから、ゲーム画面から消去するようにしてもよい。このような演出は、ゲームの開発者やプログラマによって任意に決定される事項である。
そして、ステップS125で、変数A,変数B,変数Cを空にして、メイン処理にリターンする。
なお、この実施例では、ステップS115およびステップS117で“NO”である場合には、そのままステップS119に進むようにしてあるが、消去範囲の指定に失敗した旨や消去失敗である旨の演出を実行(画面表示および音(効果音,音楽)の出力の少なくとも一方を実行)して、ステップS119に進むようにしてもよい。
図29は図20に示したステップS7のピース移動処理のフロー図である。図29に示すように、CPUコア34は、ピース移動処理を開始すると、ステップS151で、時間カウンタ758がタイムアップしたかどうかを判断する。つまり、新しいピースオブジェクト106を補充するタイミングになったかどうかを判断する。
ステップS151で“NO”であれば、つまり時間カウンタ758がタイムアップしていなければ、そのままステップS157に進む。一方、ステップS151で“YES”であれば、つまり時間カウンタ758がタイムアップすれば、ステップS153で、最も空きの有る行の1列目のグリッド502に新しいピースオブジェクト106を補充する。ただし、最も空きの有る行が複数行有る場合には、行番号の小さい(上の)行に新しいピースオブジェクト106が補充される。
次のステップS155では、時間カウンタ758をリセットおよびスタートして、ステップS157に進む。つまり、ステップS155の処理が実行されることにより、次の新しいピースオブジェクト106を補充するまでの時間間隔のカウントが開始されるのである。
なお、この実施例では、時間カウンタ758には所定時間が設定されるが、所定時間はゲームレベルやゲーム開始からの時間などの所定の条件に応じて、可変的に設定することができる。たとえば、ゲームレベルが高くなるにつれて、または、ゲーム開始からの経過時間が長くなるにつれて、所定時間を短く設定したり、逆に所定時間を長く設定したりすることができる。
続いて、ステップS157では、着目するピースオブジェクト106が右端のグリッド502に到達したかどうかを判断する。ここで、着目するピースオブジェクト106は、ゲームフィールド500に存在する1つまたは複数のピースオブジェクト106のうちの1つのピースオブジェクト106を意味する。したがって、ステップS157以降の処理は、ゲームフィールド500に存在するすべてのピースオブジェクト106のそれぞれについて並列で実行されるのである。
ステップS157で“YES”であれば、つまり着目するピースオブジェクト106が右端のグリッド502に到達していれば、ステップS163で、ピースオブジェクト106を当該右端のグリッド502に固定して、メイン処理にリターンする。このとき、ピース配置テーブルが更新され、当該右端のグリッド502のグリッドインデックスに対応して、着目するピースオブジェクト106のピース情報が記憶される。また、着目するピースオブジェクト106が移動前に格納されていたグリッド502のグリッドインデックスに対応して、nullの情報が記憶される。
一方、ステップS157で“NO”であれば、つまり着目するピースオブジェクト106が右端のグリッド502に到達していなければ、ステップS159で、着目するピースオブジェクト106が格納されているグリッド502の右側のグリッド502にピースオブジェクト106が格納されているかどうかを判断する。
ステップS159で“YES”であれば、つまり着目するピースオブジェクト106が格納されたグリッド502の右側のグリッド502にピースオブジェクト106が格納されている場合には、当該着目するピースオブジェクト106を移動できないと判断して、ステップS163に進む。一方、ステップS159で“NO”であれば、つまり着目するピースオブジェクト106が格納されたグリッド502の右側のグリッド502にピースオブジェクト106が格納されていない場合には、当該着目するピースオブジェクト106を移動させることができると判断して、ステップS161で、着目するピースオブジェクト106を、現在格納されているグリッド502の1つ右側のグリッド502に移動させて、メイン処理にリターンする。ステップS161においても、ピース配置テーブルが更新され、着目するピースオブジェクト106が移動前に格納されていたグリッド502の1つ右側のグリッド502のグリッドインデックスに対応して、当該着目するピースオブジェクト106のピース情報が記憶される。また、着目するピースオブジェクト106が移動前に格納されていたグリッド502のグリッドインデックスに対応して、nullの情報が記憶される。
なお、この実施例では、1つ右側のグリッド502にピースオブジェクト106を移動させるようにしてあるが、隣接するグリッド502間の距離を何等分かに分割して、1フレームで移動する距離を短くして、徐々にピースオブジェクト106を移動させるようにしてもよい。
この実施例によれば、ピースオブジェクトの配置位置をドラッグによって変更すると、配置位置のみならず、表示態様を変化させるので、簡単な操作で、より複雑で面白味の有るパズルゲームをプレイすることができる。
なお、この実施例では、ピースオブジェクトの上面に数字やそれを線対称または点対称にした記号を表示するようにして、ピースオブジェクトの表示態様を変化させるようにしたが、これに限定されるべきでない。
たとえば、2次元のゲームフィールドに配置したピースオブジェクトに表示された数字や記号を線対称や点対称にすることにより、表示態様を変化させるようにしたが、3次元仮想空間においては、面対称にすることにより、表示態様を変化させることも可能である。
また、たとえば、ピースオブジェクトの上面に文字(ひらがな、カタカナ、アルファベットなど)を表示するようにしてもよい。かかる場合には、ピースオブジェクトの移動に伴って、文字を線対称または点対称にした記号を表示するようにすることができる。かかる場合には、一直線上に並ぶ複数のピースオブジェクトに記載された文字列によって、2文字以上の単語が生成された場合に、当該複数のピースオブジェクトを消去することができる。
また、ピースオブジェクトに数字や文字を表示する場合には、ピースオブジェクトの移動方向ないし回転方向によって、異なる数字や文字が表示されるようにしてもよい。
たとえば、ピースオブジェクトに数字が表示されている場合に、当該ピースオブジェクトを1つ右のグリッドに移動させると、その数字が1加算され、逆に1つ左のグリッドに移動させると、その数字が1減算される。また、このピースオブジェクトを1つ上のグリッドに移動させると、その数字が2加算され、逆に1つ下のグリッドに移動させると、その数字が2減算される。ただし、ピースオブジェクトに「0」−「9」の数字を表示する場合には、上記の規則に従えば、「9」が表示されたピースオブジェクトを1つ右のグリッドに移動させると、その数字は「0」に変化され、また、「0」が表示されたピースオブジェクトを1つ左のグリッドに移動させると、数字は「9」に変化されるようにすればよい。上下方向にピースオブジェクトを移動させる場合も同様である。
さらに、ピースオブジェクトには、数字や文字に代えて、図形、記号または特定のキャラクタ(アニメキャラクタ)を表示するようにしてもよい。かかる場合には、同じ図形、同じ記号、または同じ特定のキャラクタが表示される、一直線上に並ぶ複数のピースオブジェクト106や隣接する複数のピースオブジェクト106の塊を消去するようにすることができる。ただし、複数のピースオブジェクト106が、一直線上に並んだり、塊として配置されたりしている場合のみならず、たとえば、それらの配置によって所定の記号や文字などの所定の配置パターンとなっている場合にも、それら複数のピースオブジェクト106を消去するようにしてもよい。
さらにまた、ピースオブジェクトに色や模様を付して、移動方向ないし回転方向によって、異なる色や模様が付されるようにしてもよい。かかる場合には、同じ色や同じ模様で表示される、一直線上に並ぶ複数のピースオブジェクト106や隣接する複数のピースオブジェクト106の塊を消去するようにすることができる。
また、単に、同じ図形、同じ記号、または同じ特定のキャラクタが表示されたピースオブジェクトや同じ色、同じ模様が付されたピースオブジェクトを消去するのではなく、一直線上に並ぶ個数や塊の個数を限定してもよい。
このように、ピースオブジェクトの表示内容やピースオブジェクトに色や模様を付す場合には、それに応じた回転テーブルや属性テーブルを作成しておけばよい。また、文字列を単語として認識する場合には、消去判定のために、想定される単語を記載した単語帳ないし辞書のデータを作成しておく必要がある。
また、この実施例では、ドラッグにより、入れ替える2つのピースオブジェクトを選択し、個別のタップ(クリック)により、消去範囲の始点と終点とのピースオブジェクトを選択するようにしたが、これらの操作は逆であっても構わない。
さらに、この実施例では、3次元仮想空間にゲームフィールドを設けるため、選択された2つのピースオブジェクトを回転させて配置位置を入れ替えるようにしたが、これに限定される必要はない。たとえば、仮想空間は2次元でもよい。また、選択された2つのピースオブジェクトを入れ替える場合には、回転させることなく、単に、それらの間の軸を中心に、移動の前後で表示態様が対称となるように変化させるようにしてもよい。
さらにまた、この実施例では、消去範囲をプレイヤが指定するようにしたが、2つのピースオブジェクトの配置位置および表示態様が変化されたときに、複数のピースオブジェクトが所定の消去条件を満たす場合に、自動的に当該複数のピースオブジェクトを消去するようにしてもよい。このとき、たとえば、配置位置および表示態様の変化されたピースオブジェクトを含む複数のピースオブジェクトが所定の消去条件を満たすかどうかが判断される。
また、この実施例では、ピースオブジェクトに、数字や記号が表示される場合についてのみ説明したが、ピースオブジェクトに特殊な機能を割り当てるようにしてもよい。
たとえば、特殊な機能を割り当てられたピースオブジェクトが消去されるときに、消去範囲に含まれるピースオブジェクトのみならず、その特殊な機能が割り当てられたピースオブジェクトや消去範囲に隣接するピースオブジェクトも消去する機能を、ピースオブジェクトに割り当てることができる。また、一方向にしか移動できない機能や一度グリッドに固定されると移動できない機能を、ピースオブジェクトに割り当てることもできる。さらには、特殊な機能を割り当てられたピースオブジェクトを消去すると制限時間が延長される機能を、ピースオブジェクトに割り当てることもできる。このような特殊な機能が割り当てられたピースオブジェクトでは、表示される数字や記号またはピースオブジェクト自体の色を、通常のピースオブジェクトや他の特殊な機能が割り当てられたピースオブジェクトとの間で異なる色で表示すれば、プレイヤはその機能を容易に識別することができる。
さらに、この実施例では、2つのピースオブジェクトを選択して、それらの配置位置が入れ替えられるようにしたが、これに限定される必要はない。単に1つのピースオブジェクトを空きのグリッドに移動させて、移動した方向に応じてピースオブジェクトの表示態様を変化させるようにすることができる。たとえば、ピースオブジェクトを左や右に移動させた場合には、ピースオブジェクトを左右反転させ、ピースオブジェクトを上や下に移動させた場合には、ピースオブジェクトを上下反転させ、ピースオブジェクトを斜めに移動させた場合には、ピースオブジェクトを左右反転させるとともに上下反転させて、配置位置と表示態様とを変化させることができる。
さらに、この実施例では、ポインティングデバイスとして、タッチパネルを用いるようにしたが、ペンライト、ペンタブレット、タッチパッド、コンピュータマウスのような他のポインティングデバイスを用いることも可能である。ただし、かかる場合に、ゲーム画面上に、マウスポインタのような指示画像を表示する必要がある。
ただし、ポインティングデバイスに限定される必要はなく、十字キーとプッシュボタンとの組み合わせで、ピースオブジェクトを選択することができる。かかる場合には、ゲーム画面にカーソルのような指示画像を表示し、十字キーで指示画像を移動させ、所望のピースオブジェクトを指示している状態でプッシュボタン(たとえば、Aボタン)を押す(オンする)と、当該ピースオブジェクトを選択することができる。
さらに、ゲーム装置の構成は、上述の実施例の構成に限定されるべきでない。たとえば、LCDは1つでもよく、タッチパネルは2つのLCDのそれぞれに設けるようにしてもよい。さらには、タッチパネルはゲーム装置に接続される周辺機器であっても良い。
さらにまた、ゲーム装置は、携帯型のゲーム装置に限定される必要はなく、ゲーム機能を備える携帯電話機、ゲーム機能を備えるコンピュータ、据え置き型のゲーム装置、アーケードゲーム機などであっても構わない。