(57)【特許請求の範囲】
【請求項１】
入力手段および表示手段を備えるゲーム装置のコンピュータに実行させるオブジェクト移動ゲームプログラムであって、
前記コンピュータを、
仮想ゲームフィールドに複数のオブジェクトを配置し、配置された当該複数のオブジェクトの画像を前記表示手段に表示させるオブジェクト表示制御手段と、
前記複数のオブジェクトのうちから、移動対象である移動対象オブジェクトを設定する移動対象オブジェクト設定手段と、
前記入力手段からの入力に基づいて、設定された前記移動対象オブジェクトの移動方向を決定する移動方向決定手段と、
前記移動方向決定手段によって決定された移動方向に関して、回転移動条件または反転移動条件を満たしているか否かを判別する移動条件判別手段と、
前記移動条件判別手段によって前記回転移動条件を満たしていると判別された場合に、前記移動対象オブジェクトを回転させた態様で前記移動方向に移動させる回転移動制御手段と、
前記移動条件判別手段によって前記反転移動条件を満たしていると判別された場合に、前記移動対象オブジェクトを反転させた態様で前記移動方向に移動させる反転移動制御手段として機能させる、オブジェクト移動ゲームプログラム。
【請求項２】
前記回転移動条件は、前記移動対象オブジェクトにおける前記移動方向側外周の所定の１点が、他のオブジェクトと接している状態であり、
前記反転移動条件は、前記移動対象オブジェクトにおける前記移動方向側外周の所定の２点が、他のオブジェクトと接している状態である、請求項１に記載のオブジェクト移動ゲームプログラム。
【請求項３】
前記オブジェクトは、複数の頂点を有し、
前記オブジェクト移動ゲームプログラムは、前記コンピュータを、前記移動対象オブジェクトの２つの頂点が、他のオブジェクトと所定の位置関係にある移動頂点であるか否かを判別する第１位置関係判別手段として更に機能させ、
前記移動条件判別手段は、前記第１位置関係判別手段によって前記２つの頂点のいずれか一方が前記移動頂点であると判別された場合に、前記回転移動条件を満たしていると判別し、前記第１位置関係判別手段によって前記２つの頂点の両方が前記移動頂点であると判別された場合に、前記反転移動条件を満たしていると判別する、請求項１に記載のオブジェクト移動ゲームプログラム。
【請求項４】
前記第１位置関係判別手段は、前記移動対象オブジェクトにおける前記移動方向側の２つの頂点が、他のオブジェクトと所定の位置関係にある移動頂点であるか否かを判別する、請求項３に記載のオブジェクト移動ゲームプログラム。
【請求項５】
前記第１位置関係判別手段によって前記２つの頂点の両方が前記移動頂点ではないと判別された場合、
前記移動条件判別手段は、前記回転移動条件および前記反転移動条件を満たしていないと判断し、
前記回転移動制御手段および前記反転移動制御手段は、いずれも、前記移動対象オブジェクトを前記移動方向に移動させない、請求項４に記載のオブジェクト移動ゲームプログラム。
【請求項６】
前記回転移動制御手段は、前記第１位置関係判別手段によって判別された１つの前記移動頂点を支点にして、前記移動対象オブジェクトを前記移動方向に回転させて移動させ、
前記反転移動制御手段は、前記第１位置関係判別手段によって判別された２つの前記移動頂点を結んだ直線を対称軸にして、前記移動対象オブジェクトを前記移動方向に反転して移動させる、請求項３に記載のオブジェクト移動ゲームプログラム。
【請求項７】
前記第１位置関係判別手段は、前記移動対象オブジェクトの２つの頂点において、他のオブジェクトと接している頂点を前記移動頂点であると判別する、請求項３に記載のオブジェクト移動ゲームプログラム。
【請求項８】
前記オブジェクト移動ゲームプログラムは、前記コンピュータを、前記入力手段からの入力に基づいて前記仮想ゲームフィールド内の指示位置を繰り返し検出する指示位置検出手段として更に機能させ、
前記移動方向決定手段は、前記指示位置の変化に基づいて前記移動対象オブジェクトの移動方向を決定する、請求項１に記載のオブジェクト移動ゲームプログラム。
【請求項９】
前記オブジェクト移動ゲームプログラムは、前記コンピュータを、
前記移動対象オブジェクトの各頂点について、他のオブジェクトと接している移動頂点であるか否かを判別する第２位置関係判別手段と、
前記第２位置関係判別手段によって判別された移動頂点を強調して前記表示手段に表示させる強調頂点表示制御手段として更に機能させる、請求項３に記載のオブジェクト移動ゲームプログラム。
【請求項１０】
前記オブジェクト移動ゲームプログラムは、前記コンピュータを、前記移動対象オブジェクトが次に移動できる位置に当該移動対象オブジェクトが移動できることを示す指標を前記表示手段に表示させる移動可能指標表示制御手段として更に機能させる、請求項１に記載のオブジェクト移動ゲームプログラム。
【請求項１１】
前記移動可能指標表示制御手段は、前記移動対象オブジェクトが次に移動できる位置に、当該移動対象オブジェクトを回転または反転させた態様で移動させた後の状態が識別可能な指標を前記表示手段に表示させる、請求項１０に記載のオブジェクト移動ゲームプログラム。
【請求項１２】
前記移動対象オブジェクト設定手段は、前記入力手段からの入力に基づいて、移動対象オブジェクトを設定する、請求項１に記載のオブジェクト移動ゲームプログラム。
【請求項１３】
前記オブジェクト移動ゲームプログラムは、
前記コンピュータにパズルゲームの処理を行わせ、
前記コンピュータを、前記複数のオブジェクトの配置が所定の状態になったか否かを判別する配置状態判別手段として更に機能させ、
前記移動対象オブジェクトは、回転した態様で前記移動方向に移動した場合と反転した態様で前記移動方向に移動した場合とで移動後の態様が異なる、請求項１に記載のオブジェクト移動ゲームプログラム。
【請求項１４】
前記配置状態判別手段は、前記複数のオブジェクトによって表される線図が、第１点と第２点とを結んだゲームクリア状態になったか否かを判別する、請求項１３に記載のオブジェクト移動ゲームプログラム。
【請求項１５】
入力手段および表示手段を備えるオブジェクト移動ゲーム装置であって、
仮想ゲームフィールドに複数のオブジェクトを配置し、配置された当該複数のオブジェクトの画像を前記表示手段に表示させるオブジェクト表示制御手段と、
前記複数のオブジェクトのうちから、移動対象である移動対象オブジェクトを設定する移動対象オブジェクト設定手段と、
前記入力手段からの入力に基づいて、設定された前記移動対象オブジェクトの移動方向を決定する移動方向決定手段と、
前記移動方向決定手段によって決定された移動方向に関して、回転移動条件または反転移動条件を満たしているか否かを判別する移動条件判別手段と、
前記移動条件判別手段によって前記回転移動条件を満たしていると判別された場合に、前記移動対象オブジェクトを回転させた態様で前記移動方向に移動させる回転移動制御手段と、
前記移動条件判別手段によって前記反転移動条件を満たしていると判別された場合に、前記移動対象オブジェクトを反転させた態様で前記移動方向に移動させる反転移動制御手段とを備える、オブジェクト移動ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト移動ゲームプログラムおよびオブジェクト移動ゲーム装置に関し、より特定的には、ポインティングデバイス等を用いてオブジェクトを移動させるオブジェクト移動ゲームプログラムおよびオブジェクト移動ゲーム装置に関する。
【背景技術】
【０００２】
従来、オブジェクトを移動させるゲームとして、複数のオブジェクトが表示されている仮想ゲーム空間で、オブジェクトが所定の状態を満たすようにオブジェクトを移動させるパズルゲームが存在する。
【０００３】
例えば、非特許文献１は、オブジェクトを移動させるゲームとして、タッチペンの操作によって、パネルを移動させたり選択した４枚のパネルの配置位置を回転させたりしてパネルの位置を変更し、パネルに描かれた道を繋げてゴールまでボールを運ぶパズルゲームを開示している。
【０００４】
また、非特許文献２は、オブジェクトを移動させるゲームとして、一般的に広く知られている「テトリス」と呼ばれるパズルゲームを開示している。このゲームは、自動的に落下する様々な形状をしたピース（一般にテトリミノと呼ばれる）を、水平方向に移動させたり回転させたりすることによって、仮想ゲーム空間に所定の条件を満たすように積み重ねるものである。
【０００５】
また、非特許文献３は、オブジェクトを移動させるゲームとして、タッチペンを用いて仮想ゲーム空間に並んだ数字を移動させる際に、移動方向に応じて数字が上下左右に反転するパズルゲームを開示している。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】任天堂、“タッチパニックってどんなゲーム？”、［ｏｎｌｉｎｅ］、ニンテンドーＤＳ、［平成２１年８月８日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｎｉｎｔｅｎｄｏ．ｃｏ．ｊｐ／ｄｓ／ａｐ９ｊ／ｗｈａｔ／ｉｎｄｅｘ．ｈｔｍｌ＞
【非特許文献２】任天堂、“テトリスのルール”、［ｏｎｌｉｎｅ］、ニンテンドーＤＳ、［平成２１年８月８日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｎｉｎｔｅｎｄｏ．ｃｏ．ｊｐ／ｄｓ／ａｔｒｊ／ｒｕｌｅ／ｉｎｄｅｘ．ｈｔｍｌ＞
【非特許文献３】任天堂、“タッチペンで数字を反転移動”、［ｏｎｌｉｎｅ］、ニンテンドーＤＳ、［平成２１年８月８日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｎｉｎｔｅｎｄｏ．ｃｏ．ｊｐ／ｄｓ／ｄｓｉｗａｒｅ／ｋａｄｊ／ｒｕｌｅ／ｉｎｄｅｘ．ｈｔｍｌ＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献１に開示されたパズルゲームでは、複数のパネルの配置位置をスライド方向や回転方向に従って入れ替える操作を行えるのみであり、それぞれのパネル自体の態様は操作の前後において変わらない。そのため、パネル自体の態様の変化がなく、ゲームが単調になり易かった。
【０００８】
非特許文献２に開示された「テトリス」ゲームでは、ピースの下方向への落下移動、水平方向への移動、および回転が行われる。しかし、このゲームでは、ピースの移動と回転とはそれぞれ独立して行われるため意外性に乏しく、また、ピースの移動と回転のみにピースの変化パターンが限られてしまい、ピースの変化のバリエーションが少なく、単調なゲームになり易かった。
【０００９】
非特許文献３に開示されたゲームでは、数字の移動と同時に反転を行うことができるが、数字の変化の態様が反転のみなので、ゲームが単調になり易かった。
【００１０】
それ故に、本発明の目的は、オブジェクトを移動させる際に、条件に応じてオブジェクトの態様を様々に変化させることのできる、興趣性の高いオブジェクト移動ゲームプログラムおよびオブジェクト移動ゲーム装置を提供することである。
【課題を解決するための手段】
【００１１】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【００１２】
本発明は、入力手段および表示手段を備えるゲーム装置のコンピュータに実行させるオブジェクト移動ゲームプログラムであって、上記コンピュータを、オブジェクト表示制御手段と、移動対象オブジェクト設定手段と、移動方向決定手段と、移動条件判別手段と、回転移動制御手段と、反転移動制御手段として機能させる。オブジェクト表示制御手段は、仮想ゲームフィールドに複数のオブジェクトを配置し、配置された当該複数のオブジェクトの画像を表示手段に表示させる。移動対象オブジェクト設定手段は、複数のオブジェクトのうちから、移動対象である移動対象オブジェクトを設定する。移動方向決定手段は、入力手段からの入力に基づいて、設定された移動対象オブジェクトの移動方向を決定する。移動条件判別手段は、移動方向決定手段によって決定された移動方向に関して、回転移動条件または反転移動条件を満たしているか否かを判別する。回転移動制御手段は、移動条件判別手段によって回転移動条件を満たしていると判別された場合に、移動対象オブジェクトを回転させた態様で移動方向に移動させる。反転移動制御手段は、移動条件判別手段によって反転移動条件を満たしていると判別された場合に、移動対象オブジェクトを反転させた態様で移動方向に移動させる。
【００１３】
このことによって、移動対象オブジェクトを、条件によって回転または反転させて移動させることができる。このため、バリエーションに富んだ移動対象オブジェクトの態様の変化が可能となり、プレイヤを魅了するゲームを提供できる。
【００１４】
また、本発明において、上記回転移動条件は、移動対象オブジェクトにおける移動方向側外周の所定の１点が、他のオブジェクトと接している状態であってもよく、上記反転移動条件は、移動対象オブジェクトにおける移動方向側外周の所定の２点が、他のオブジェクトと接している状態であってもよい。
【００１５】
このことによって、移動対象オブジェクトの移動方向側外周の所定の１点が他のオブジェクトに隣接している場合、移動対象オブジェクトは回転移動を行い、所定の２点が他のオブジェクトに隣接している場合、移動対象オブジェクトは移動対象オブジェクトは反転移動を行う。このため、プレイヤは、移動対象オブジェクトの移動態様を直感的に把握できる。
【００１６】
また、本発明において、移動対象オブジェクトは、複数の頂点を有し、本発明のオブジェクト移動ゲームプログラムは、ゲーム装置のコンピュータを、移動対象オブジェクトの２つの頂点が、他のオブジェクトと所定の位置関係にある移動頂点であるか否かを判別する第１位置関係判別手段として更に機能させてもよい。そして、移動条件判別手段は、第１位置関係判別手段によって２つの頂点のいずれか一方が移動頂点であると判別された場合に、回転移動条件を満たしていると判別し、第１位置関係判別手段によって２つの頂点の両方が移動頂点であると判別された場合に、反転移動条件を満たしていると判別してもよい。
【００１７】
このことによって、移動対象オブジェクトの２つの頂点のいずれか一方または両方が他のオブジェクトと所定の位置関係にある移動頂点であるか否かによって、移動対象オブジェクトが回転移動するのか反転移動するのかが判別される。このため、プレイヤは、移動対象オブジェクトの移動態様を直感的に把握できる。
【００１８】
また、本発明において、第１位置関係判別手段は、移動対象オブジェクトにおける移動方向側の２つの頂点が、他のオブジェクトと所定の位置関係にある移動頂点であるか否かを判別してもよい。
【００１９】
このことによって、プレイヤは、移動方向に移動する場合の移動対象オブジェクトの移動態様を直感的に把握できる。
【００２０】
また、本発明において、第１位置関係判別手段によって２つの頂点の両方が移動頂点ではないと判別された場合、移動条件判別手段は、回転移動条件および反転移動条件を満たしていないと判断し、回転移動制御手段および反転移動制御手段は、いずれも、移動対象オブジェクトを移動方向に移動させないこととしてもよい。
【００２１】
このことによって、移動対象オブジェクトが移動できる方向が制限されるので、ゲーム性を向上させることができる。
【００２２】
また、本発明において、回転移動制御手段は、第１位置関係判別手段によって判別された１つの移動頂点を支点にして、移動対象オブジェクトを移動方向に回転させて移動させてもよい。また、反転移動制御手段は、第１位置関係判別手段によって判別された２つの移動頂点を結んだ直線を対称軸にして、移動対称オブジェクトを移動方向に反転して移動させてもよい。
【００２３】
また、本発明において、第１位置関係判別手段は、移動対象オブジェクトの２つの頂点において、他のオブジェクトと接している頂点を移動頂点であると判別してもよい。
【００２４】
これらによって、移動対象オブジェクトは、自然法則を連想させる態様で回転移動または反転移動する。このため、プレイヤは移動対象オブジェクトの移動態様を直感的に把握できるので、プレイヤを魅了するゲームを提供できる。
【００２５】
また、本発明のオブジェクト移動ゲームプログラムは、ゲーム装置のコンピュータを、入力手段からの入力に基づいて仮想ゲームフィールド内の指示位置を繰り返し検出する指示位置検出手段として更に機能させてもよい。そして、移動方向決定手段は、指示位置の変化に基づいて移動対象オブジェクトの移動方向を決定してもよい。
【００２６】
このことによって、指示位置の変化に基づいて移動対象オブジェクトの移動方向が決定されるので、プレイヤは移動対象オブジェクトを直感的に移動させることができる。
【００２７】
また、本発明のオブジェクト移動ゲームプログラムは、ゲーム装置のコンピュータを、第２位置関係判別手段と強調頂点表示制御手段として更に機能させてもよい。この場合、第２位置関係判別手段は、移動対象オブジェクトの各頂点について、他のオブジェクトと接している移動頂点であるか否かを判別する。また、強調頂点表示制御手段は、第２位置関係判別手段によって判別された移動頂点を強調して表示手段に表示させる。
【００２８】
このことによって、プレイヤが移動対象オブジェクトを選択した時に、他のオブジェクトと接している移動頂点が強調して表示される。このことから、プレイヤは、移動対象オブジェクトを所望の位置に移動する際に、回転移動するのか反転移動するのかを予測できる。この結果として、プレイヤの操作性が向上する。
【００２９】
また、本発明のオブジェクト移動ゲームプログラムは、ゲーム装置のコンピュータを、移動対象オブジェクトが次に移動できる位置に当該移動対象オブジェクトが移動できることを示す指標を表示手段に表示させる移動可能指標表示制御手段として更に機能させてもよい。
【００３０】
このことによって、移動対象オブジェクトを移動可能な位置に指標が表示されるので、移動対象オブジェクトを所望の位置へ移動できるか否かの判断が容易となり、プレイヤの操作性が向上する。
【００３１】
また、本発明において、移動可能指標表示制御手段は、移動対象オブジェクトが次に移動できる位置に、当該移動対象オブジェクトを回転または反転させた態様で移動させた後の状態が識別可能な指標を表示手段に表示させてもよい。
【００３２】
このことによって、移動対象オブジェクトを移動可能な位置に、移動後の状態が表示されるので、移動対象オブジェクトの移動後の状態を視認でき、プレイヤの操作性が向上する。
【００３３】
また、本発明において、移動対象オブジェクト設定手段は、入力手段からの入力に基づいて、移動対象オブジェクトを設定してもよい。
【００３４】
このことによって、プレイヤの意図に従って移動対象オブジェクトが設定されることになる。
【００３５】
また、本発明のオブジェクト移動ゲームプログラムは、ゲーム装置のコンピュータにパズルゲームの処理を行わせ、上記コンピュータを、複数のオブジェクトの配置が所定の状態になったか否かを判別する配置状態判別手段として更に機能させてもよい。また、移動対象オブジェクトは、回転した態様で移動方向に移動した場合と反転した態様で移動方向に移動した場合とで移動後の態様が異なってもよい。
【００３６】
このことによって、変化に富んだ態様でパズルのピースを移動させることができる高度なパズルゲームを提供することができる。
【００３７】
また、本発明において、配置状態判別手段は、複数のオブジェクトによって表される線図が、第１点と第２点とを結んだゲームクリア状態になったか否かを判別してもよい。
【００３８】
このことによって、線図を第１点から第２点まで結ぶようにオブジェクトを回転または反転させて移動する必要があるため、興趣性の高いゲームを提供できる。
【００３９】
また、本発明は、入力手段および表示手段を備えるオブジェクト移動ゲーム装置であって、オブジェクト表示制御手段と、移動対象オブジェクト設定手段と、移動方向決定手段と、移動条件判別手段と、回転移動制御手段と、反転移動制御手段とを備える。オブジェクト表示制御手段は、仮想ゲームフィールドに複数のオブジェクトを配置し、配置された当該複数のオブジェクトの画像を表示手段に表示させる。移動対象オブジェクト設定手段は、複数のオブジェクトのうちから、移動対象である移動対象オブジェクトを設定する。移動方向決定手段は、入力手段からの入力に基づいて、設定された移動対象オブジェクトの移動方向を決定する。移動条件判別手段は、移動方向決定手段によって決定された移動方向に関して、回転移動条件または反転移動条件を満たしているか否かを判別する。回転移動制御手段は、移動条件判別手段によって回転移動条件を満たしていると判別された場合に、移動対象オブジェクトを回転させた態様で移動方向に移動させる。反転移動制御手段は、移動条件判別手段によって反転移動条件を満たしていると判別された場合に、移動対象オブジェクトを反転させた態様で移動方向に移動させる。
【００４０】
このことによって、移動対象オブジェクトを、条件によって回転または反転させて移動させることができる。このため、バリエーションに富んだ移動対象オブジェクトの態様の変化が可能となり、プレイヤを魅了するゲームを提供できる。
【発明の効果】
【００４１】
本発明によれば、オブジェクトを移動させる際に、条件に応じてオブジェクトの態様を様々に変化させることのできる、興趣性の高いオブジェクト移動ゲームプログラムおよびオブジェクト移動ゲーム装置を提供することができる。
【図面の簡単な説明】
【００４２】
【図１】本発明のオブジェクト移動ゲームプログラムの一例であるパズルゲームプログラムを実行するゲーム装置１の外観図
【図２】ゲーム装置１の内部構成の一例を示すブロック図
【図３】本発明によって実現されるパズルゲームのプレイ開始時に、上側ＬＣＤ２２および下側ＬＣＤ１２に表示される画像の一例を示す図
【図４】本発明によって実現されるパズルゲームにおいて、パズルのピース（可動オブジェクト）を移動させる態様の一例について説明するための図
【図５】本発明によって実現されるパズルゲームにおいて、パズルのピース（可動オブジェクト）を移動させる態様の一例について説明するための図
【図６】本発明によって実現されるパズルゲームにおいて、パズルのピース（可動オブジェクト）を移動させる態様の一例について説明するための図
【図７】本発明によって実現されるパズルゲームにおいて、パズルのピース（可動オブジェクト）を移動させる態様の一例について説明するための図
【図８】本発明によって実現されるパズルゲームにおいて、パズルのピース（可動オブジェクト）を移動させる態様の一例について説明するための図
【図９】本発明によって実現されるパズルゲームにおいて、パズルのピース（可動オブジェクト）を移動させる態様の一例について説明するための図
【図１０】本発明によって実現されるパズルゲームにおいて、パズルのピースがゲームのステージクリアの状態になった場合の一例を示す図
【図１１】本発明によって実現されるパズルゲームにおいて、パズルのピースがゲームのステージクリアの状態になった後に下側ＬＣＤ１２に表示される画像の一例を説明するための図
【図１２】本発明によって実現されるパズルゲームにおいて、パズルのピースがゲームのステージクリアの状態になった後に上側ＬＣＤ２２および下側ＬＣＤ１２に表示される画像の一例を説明するための図
【図１３】本発明のゲームプログラムの実行に応じて、メインメモリ３２に記憶される各種データの一例を示す図
【図１４】本発明のゲームプログラムを実行することによってゲーム装置１が行うゲーム処理を示すメインフローチャートの一例を示す図
【図１５】本発明のゲームプログラムを実行することによってゲーム装置１が行うゲーム処理を示すメインフローチャートの一例を示す図
【図１６】図１４および図１５に示すメインフローチャート内の所定処理の一例を示すサブルーチンを示す図
【図１７】図１４および図１５に示すメインフローチャート内の所定処理の一例を示すサブルーチンを示す図
【図１８】図１４および図１５に示すメインフローチャート内の所定処理の一例を示すサブルーチンを示す図
【図１９】タッチパネル１３におけるタッチパネル座標系およびマス座標系の一例を説明するための模式図
【図２０】オブジェクトのタイプおよびタイプ毎の表示方向の一例を示す図
【図２１】パネルのシルエットのタイプ、およびタイプ毎の表示方向の一例を示す図
【図２２】図１５のステップ１２５の処理の一例を具体的に説明するための図
【図２３】図１５のステップ１２８の処理の一例を具体的に説明するための模式図
【図２４】図１５のステップ１３１の処理の一例を具体的に説明するための模式図
【図２５】パネルが正三角形で在る場合の移動態様を示す図
【図２６】パネルが正六角形で在る場合の移動態様を示す図
【図２７】パネルが長方形で在る場合の移動態様を示す図
【発明を実施するための形態】
【００４３】
以下では、図面を参照して、本発明の一実施形態に係るオブジェクト移動ゲームプログラムを実行するオブジェクト移動ゲーム装置について説明する。以下では、本発明のオブジェクト移動ゲーム装置の一例として、ゲーム装置１を用い、また、本発明のオブジェクト移動ゲームプログラムの一例として、ゲーム装置１で実行されるパズルゲームプログラムを用いて説明を行う。なお、図１は、本発明のオブジェクト移動ゲームプログラムの一例であるパズルゲームプログラムを実行するゲーム装置１の外観図である。ここでは、ゲーム装置１の一例として、携帯型のゲーム装置を示す。なお、ゲーム装置１は、カメラを内蔵しており、当該カメラによって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりする撮像装置としても機能する。
【００４４】
図１において、ゲーム装置１は、折り畳み型の携帯ゲーム装置であり、開いた状態（開状態）のゲーム装置１を示している。ゲーム装置１は、開いた状態においてもプレイヤが両手または片手で把持することができるサイズで構成される。
【００４５】
ゲーム装置１は、下側ハウジング１１および上側ハウジング２１を有する。下側ハウジング１１と上側ハウジング２１とは、開閉可能（折り畳み可能）に連結されている。図１の例では、下側ハウジング１１および上側ハウジング２１は、それぞれ横長の長方形の板状で形成され、互いの長辺部分で回動可能に連結されている。通常、プレイヤは、開状態でゲーム装置１を使用する。そして、プレイヤは、ゲーム装置１を使用しない場合には閉状態としてゲーム装置１を保管する。また、図１に示した例では、ゲーム装置１は、上記閉状態および開状態のみでなく、下側ハウジング１１と上側ハウジング２１とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング２１を下側ハウジング１１に対して任意の角度で静止させることができる。
【００４６】
下側ハウジング１１には、下側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１２が設けられる。下側ＬＣＤ１２は横長形状であり、長辺方向が下側ハウジング１１の長辺方向に一致するように配置される。なお、本実施形態では、ゲーム装置１に内蔵されている表示装置としてＬＣＤを用いているが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置等、他の任意の表示装置を利用してもよい。また、ゲーム装置１は、任意の解像度の表示装置を利用することができる。
【００４７】
下側ハウジング１１には、入力装置として、各操作ボタン１４Ａ〜１４Ｋおよびタッチパネル１３が設けられる。図１に示すように、各操作ボタン１４Ａ〜１４Ｋのうち、方向入力ボタン１４Ａ、操作ボタン１４Ｂ、操作ボタン１４Ｃ、操作ボタン１４Ｄ、操作ボタン１４Ｅ、電源ボタン１４Ｆ、スタートボタン１４Ｇ、およびセレクトボタン１４Ｈは、上側ハウジング２１と下側ハウジング１１とを折りたたんだときに内側となる、下側ハウジング１１の内側主面上に設けられる。方向入力ボタン１４Ａは、例えば選択操作等に用いられる。各操作ボタン１４Ｂ〜１４Ｅは、例えば決定操作やキャンセル操作等に用いられる。電源ボタン１４Ｆは、ゲーム装置１の電源をオン／オフするために用いられる。図１に示す例では、方向入力ボタン１４Ａおよび電源ボタン１４Ｆは、下側ハウジング１１の内側主面中央付近に設けられる下側ＬＣＤ１２に対して、左右一方側（図１では左側）の当該主面上に設けられる。また、操作ボタン１４Ｂ〜１４Ｅ、スタートボタン１４Ｇ、およびセレクトボタン１４Ｈは、下側ＬＣＤ１２に対して左右他方側（図１では右側）となる下側ハウジング１１の内側主面上に設けられる。方向入力ボタン１４Ａ、操作ボタン１４Ｂ〜１４Ｅ、スタートボタン１４Ｇ、およびセレクトボタン１４Ｈは、ゲーム装置１に対する各種操作を行うために用いられる。
【００４８】
なお、図１においては、操作ボタン１４Ｉ〜１４Ｋの図示を省略している。例えば、Ｌボタン１４Ｉは、下側ハウジング１１の上側面の左端部に設けられ、Ｒボタン１４Ｊは、下側ハウジング１１の上側面の右端部に設けられる。Ｌボタン１４ＩおよびＲボタン１４Ｊは、ゲーム装置１に対して、例えば撮影指示操作（シャッター操作）を行うために用いられる。さらに、音量ボタン１４Ｋは、下側ハウジング１１の左側面に設けられる。音量ボタン１４Ｋは、ゲーム装置１が備えるスピーカの音量を調整するために用いられる。
【００４９】
また、ゲーム装置１は、各操作ボタン１４Ａ〜１４Ｋとは別の入力装置として、さらにタッチパネル１３を備えている。タッチパネル１３は、下側ＬＣＤ１２の画面上を覆うように装着されている。なお、本実施形態では、タッチパネル１３は、例えば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル１３は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、本実施形態では、タッチパネル１３として、例えば下側ＬＣＤ１２の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル１３の解像度と下側ＬＣＤ１２の解像度とが一致している必要はない。また、下側ハウジング１１の右側面には、タッチペン２７の挿入口（図１に示す破線）が設けられている。上記挿入口は、タッチパネル１３に対する操作を行うために用いられるタッチペン２７を収納することができる。なお、タッチパネル１３に対する入力は、通常タッチペン２７を用いて行われるが、タッチペン２７に限らずプレイヤの指等でタッチパネル１３を操作することも可能である。
【００５０】
また、下側ハウジング１１の右側面には、メモリカード２８を収納するための挿入口（図１では、二点鎖線で示している）が設けられている。この挿入口の内側には、ゲーム装置１とメモリカード２８とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２８は、例えばＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカードであり、上記コネクタに着脱自在に装着される。メモリカード２８は、例えば、ゲーム装置１によって撮像された画像を記憶（保存）したり、他の装置で生成された画像をゲーム装置１に読み込んだりするため等に用いられる。
【００５１】
さらに、下側ハウジング１１の上側面には、メモリカード２９を収納するための挿入口（図１では、一点鎖線で示している）が設けられる。この挿入口の内側にも、ゲーム装置１とメモリカード２９とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２９は、情報処理プログラムやゲームプログラム等を記憶した記憶媒体であり、下側ハウジング１１に設けられた挿入口に着脱自在に装着される。
【００５２】
下側ハウジング１１と上側ハウジング２１との連結部の左側部分には、３つのＬＥＤ１５Ａ〜１５Ｃが取り付けられる。ここで、ゲーム装置１は、他の機器との間で無線通信を行うことが可能であり、第１ＬＥＤ１５Ａは、無線通信が確立している場合に点灯する。第２ＬＥＤ１５Ｂは、ゲーム装置１の充電中に点灯する。第３ＬＥＤ１５Ｃは、ゲーム装置１の電源がオンである場合に点灯する。したがって、３つのＬＥＤ１５Ａ〜１５Ｃによって、ゲーム装置１の通信確立状況、充電状況、および、電源のＯＮ／ＯＦＦ状況をプレイヤに通知することができる。
【００５３】
一方、上側ハウジング２１には、上側ＬＣＤ２２が設けられる。上側ＬＣＤ２２は横長形状であり、長辺方向が上側ハウジング２１の長辺方向に一致するように配置される。なお、下側ＬＣＤ１２と同様、上側ＬＣＤ２２に代えて、他の任意の方式および任意の解像度の表示装置を利用してもよい。また、上側ＬＣＤ２２上を覆うように、タッチパネルを設けてもかまわない。
【００５４】
また、上側ハウジング２１には、２つのカメラ（内側カメラ２３および外側カメラ２５）が設けられる。図１に示すように、内側カメラ２３は、上側ハウジング２１の連結部付近の内側主面に取り付けられる。一方、外側カメラ２５は、内側カメラ２３が取り付けられる内側主面の反対側の面、すなわち、上側ハウジング２１の外側主面（ゲーム装置１が閉状態となった場合に外側となる面であり、図１に示す上側ハウジング２１の背面）に取り付けられる。なお、図１においては、外側カメラ２５を破線で示している。これによって、内側カメラ２３は、上側ハウジング２１の内側主面が向く方向を撮像することが可能であり、外側カメラ２５は、内側カメラ２３の撮像方向の逆方向、すなわち、上側ハウジング２１の外側主面が向く方向を撮像することが可能である。このように、本実施形態では、２つの内側カメラ２３および外側カメラ２５の撮像方向が互いに逆方向となるように設けられる。例えば、プレイヤは、ゲーム装置１からプレイヤの方を見た景色を内側カメラ２３で撮像することができるとともに、ゲーム装置１からプレイヤの反対側の方向を見た景色を外側カメラ２５で撮像することができる。なお、下側ＬＣＤ１２および／または上側ＬＣＤ２２は、内側カメラ２３または外側カメラ２５で撮像されている画像をリアルタイムに表示するために用いられることもある。
【００５５】
なお、上記連結部付近の内側主面には、音声入力装置としてマイク（図２に示すマイク４３）が収納されている。そして、上記連結部付近の内側主面には、マイク４３がゲーム装置１外部の音を検知できるように、マイクロフォン用孔１６が形成される。マイク４３を収納する位置およびマイクロフォン用孔１６の位置は必ずしも上記連結部である必要はなく、例えば下側ハウジング１１にマイク４３を収納し、マイク４３の収納位置に対応させて下側ハウジング１１にマイクロフォン用孔１６を設けるようにしてもよい。
【００５６】
また、上側ハウジング２１の外側主面には、第４ＬＥＤ２６（図１では、破線で示す）が取り付けられる。第４ＬＥＤ２６は、内側カメラ２３または外側カメラ２５によって撮像が行われている間点灯する。また、内側カメラ２３または外側カメラ２５によって動画が撮像（撮像画像を動画として記憶）される間は点滅させてもよい。なお、ＬＥＤが画面に映り込むことを防ぐために、シャッターが押された瞬間から、当該シャッターが押された瞬間の撮像画像の記憶が完了するまでの間は第４ＬＥＤ２６を消灯させてもよい。第４ＬＥＤ２６によって、ゲーム装置１による撮像が行われていることを撮像対象者や周囲に通知することができる。
【００５７】
また、上側ハウジング２１の内側主面中央付近に設けられる上側ＬＣＤ２２に対して、左右両側の当該主面に音抜き孔２４がそれぞれ形成される。音抜き孔２４の奥の上側ハウジング２１内には、それぞれスピーカが収納されている。音抜き孔２４は、スピーカからの音をゲーム装置１の外部に放出するための孔である。
【００５８】
以上に説明したように、上側ハウジング２１には、画像を撮像するための構成である内側カメラ２３および外側カメラ２５と、各種画像を表示するための表示手段である上側ＬＣＤ２２とが設けられる。一方、下側ハウジング１１には、ゲーム装置１に対する操作入力を行うための入力装置（タッチパネル１３および各ボタン１４Ａ〜１４Ｋ）と、各種画像を表示するための表示手段である下側ＬＣＤ１２とが設けられる。当該入力装置は、例えば、ゲーム装置１を使用する際には、下側ＬＣＤ１２や上側ＬＣＤ２２に撮像画像（カメラによって撮像された画像）を表示しながら、下側ハウジング１１をプレイヤが把持して入力装置に対する入力を行うような用途に用いることができる。
【００５９】
次に、図２を参照して、ゲーム装置１の内部構成を説明する。なお、図２は、ゲーム装置１の内部構成の一例を示すブロック図である。
【００６０】
図２において、ゲーム装置１は、ＣＰＵ３１と、メインメモリ３２と、メモリ制御回路３３と、保存用データメモリ３４と、プリセットデータ用メモリ３５と、メモリカードインターフェース（メモリカードＩ／Ｆ）３６および３７と、無線通信モジュール３８と、ローカル通信モジュール３９と、リアルタイムクロック（ＲＴＣ）４０と、電源回路４１と、インターフェース回路（Ｉ／Ｆ回路）４２等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて、下側ハウジング１１（または上側ハウジング２１でもよい）内に収納される。
【００６１】
ＣＰＵ３１は、所定のプログラムを実行するための情報処理手段である。本実施形態では、所定のプログラムがゲーム装置１内のメモリ（例えば保存用データメモリ３４）やメモリカード２８および／または２９に記憶されており、ＣＰＵ３１は、当該所定のプログラムを実行することによって、後述する情報処理を実行する。なお、ＣＰＵ３１によって実行されるプログラムは、ゲーム装置１内のメモリに予め記憶されていてもよいし、メモリカード２８および／または２９から取得されてもよいし、他の機器との通信によって他の機器から取得されてもよい。
【００６２】
ＣＰＵ３１には、メインメモリ３２、メモリ制御回路３３、およびプリセットデータ用メモリ３５が接続される。また、メモリ制御回路３３には、保存用データメモリ３４が接続される。メインメモリ３２は、ＣＰＵ３１のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ３２は、上記情報処理に用いられる各種データを記憶したり、外部（メモリカード２８および２９や他の機器等）から取得されるプログラムを記憶したりする。本実施形態では、メインメモリ３２として、例えばＰＳＲＡＭ（Ｐｓｅｕｄｏ−ＳＲＡＭ）を用いる。保存用データメモリ３４は、ＣＰＵ３１によって実行されるプログラムや内側カメラ２３および外側カメラ２５によって撮像された画像のデータ等を記憶するための記憶手段である。保存用データメモリ３４は、不揮発性の記憶媒体によって構成されており、例えば本実施例ではＮＡＮＤ型フラッシュメモリで構成される。メモリ制御回路３３は、ＣＰＵ３１の指示に従って、保存用データメモリ３４に対するデータの読み出しおよび書き込みを制御する回路である。プリセットデータ用メモリ３５は、ゲーム装置１において予め設定される各種パラメータ等のデータ（プリセットデータ）を記憶するための記憶手段である。プリセットデータ用メモリ３５としては、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）バスによってＣＰＵ３１と接続されるフラッシュメモリを用いることができる。
【００６３】
メモリカードＩ／Ｆ３６および３７は、それぞれＣＰＵ３１に接続される。メモリカードＩ／Ｆ３６は、コネクタに装着されたメモリカード２８に対するデータの読み出しおよび書き込みを、ＣＰＵ３１の指示に応じて行う。また、メモリカードＩ／Ｆ３７は、コネクタに装着されたメモリカード２９に対するデータの読み出しおよび書き込みを、ＣＰＵ３１の指示に応じて行う。本実施形態では、メモリカード２９に記憶された各種プログラムが、ＣＰＵ３１によって読み出されて実行される例を用いる。
【００６４】
なお、本発明のオブジェクト移動ゲームプログラム（以下、単に、本発明のゲームプログラムという場合がある）は、メモリカード２９を通じてコンピュータシステムに供給されるだけでなく、メモリカード２８等の外部記憶媒体を通じてコンピュータシステムに供給されてもよい。また、本発明のゲームプログラムは、有線または無線の通信回線を通じてコンピュータシステムに供給されてもよい。さらに、本発明のゲームプログラムは、コンピュータシステム内部の不揮発性記憶装置に予め記憶されていてもよい。なお、本発明のゲームプログラムを記憶する情報記憶媒体としては、上記不揮発性記憶装置に限らず、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
【００６５】
無線通信モジュール３８は、例えばＩＥＥＥ８０２．１１．ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。また、ローカル通信モジュール３９は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール３８およびローカル通信モジュール３９は、ＣＰＵ３１に接続される。ＣＰＵ３１は、無線通信モジュール３８を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール３９を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【００６６】
また、ＣＰＵ３１には、ＲＴＣ４０および電源回路４１が接続される。ＲＴＣ４０は、時間をカウントしてＣＰＵ３１に出力する。例えば、ＣＰＵ３１は、ＲＴＣ４０によって計時された時間に基づいて、現在時刻（日付）等を計算することもできる。電源回路４１は、ゲーム装置１が有する電源（典型的には電池であり、下側ハウジング１１に収納される）から供給される電力を制御し、ゲーム装置１の各部品に電力を供給する。
【００６７】
また、ゲーム装置１は、マイク４３およびアンプ４４を備えている。マイク４３およびアンプ４４は、それぞれＩ／Ｆ回路４２に接続される。マイク４３は、ゲーム装置１に向かって発声されたプレイヤの音声を検知して、当該音声を示す音声信号をＩ／Ｆ回路４２に出力する。アンプ４４は、Ｉ／Ｆ回路４２から音声信号を増幅してスピーカ（図示せず）から出力させる。Ｉ／Ｆ回路４２は、ＣＰＵ３１に接続される。
【００６８】
また、タッチパネル１３は、Ｉ／Ｆ回路４２に接続される。Ｉ／Ｆ回路４２は、マイク４３およびアンプ４４（スピーカ）の制御を行う音声制御回路と、タッチパネル１３の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換およびＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル１３からの信号に基づいて所定の形式のタッチ位置データを生成してＣＰＵ３１に出力する。例えば、タッチ位置データは、タッチパネル１３の入力面に対して入力が行われた位置の座標を示すデータである。なお、タッチパネル制御回路は、タッチパネル１３からの信号の読み込み、および、タッチ位置データの生成を所定時間に１回の割合で行う。ＣＰＵ３１は、Ｉ／Ｆ回路４２を介して、タッチ位置データを取得することにより、タッチパネル１３に対して入力が行われた位置を知ることができる。
【００６９】
操作ボタン１４は、上記各操作ボタン１４Ａ〜１４Ｋから構成され、ＣＰＵ３１に接続される。操作ボタン１４からＣＰＵ３１へは、各操作ボタン１４Ａ〜１４Ｋに対する入力状況（押下されたか否か）を示す操作データが出力される。ＣＰＵ３１は、操作ボタン１４から操作データを取得することによって、操作ボタン１４に対する入力に応じた処理を実行する。
【００７０】
内側カメラ２３および外側カメラ２５は、それぞれＣＰＵ３１に接続される。内側カメラ２３および外側カメラ２５は、ＣＰＵ３１の指示に応じて画像を撮像し、撮像した画像データをＣＰＵ３１に出力する。例えば、ＣＰＵ３１は、内側カメラ２３および外側カメラ２５のいずれか一方に対して撮像指示を行い、撮像指示を受けたカメラが画像を撮像して画像データをＣＰＵ３１に送る。
【００７１】
また、下側ＬＣＤ１２および上側ＬＣＤ２２は、それぞれＣＰＵ３１に接続される。下側ＬＣＤ１２および上側ＬＣＤ２２は、それぞれＣＰＵ３１の指示に従って画像を表示する。一例として、ＣＰＵ３１は、本発明のゲームプログラムを実行することによって生成された画像（例えば、ゲーム画像）を下側ＬＣＤ１２および／または上側ＬＣＤ２２に表示させる。他の例として、ＣＰＵ３１は、内側カメラ２３および外側カメラ２５のいずれかから取得した画像を、下側ＬＣＤ１２および上側ＬＣＤ２２の一方に表示させ、所定の処理によって生成した操作説明画面を下側ＬＣＤ１２および上側ＬＣＤ２２の他方に表示させる。
【００７２】
次に、図３〜図１２を参照して、本発明のゲームプログラムがゲーム装置１で実行されることによって実現されるパズルゲームの一例（以下、本パズルゲームという）の概略について説明する。図３は、本パズルゲームのプレイ開始時に、上側ＬＣＤ２２および下側ＬＣＤ１２に表示される画像の一例を示す図である。図４〜図９は、本パズルゲームにおいて、パズルのピース（オブジェクト）を移動させる態様の一例について説明するための図である。図１０は、本パズルゲームにおいて、パズルのピースがゲームのステージクリアの状態になった場合の一例を示す図である。図１１および図１２は、本パズルゲームにおいて、パズルのピースがゲームのステージクリアの状態になった後に上側ＬＣＤ２２および下側ＬＣＤ１２に表示される画像の一例を説明するための図である。なお、図４〜図９には、下側ＬＣＤ１２に表示される画像のみを示し、上側ＬＣＤ２２に表示される画像は示していない。また、図３〜図１２において、説明の便宜のために、左右上下方向を示している。
【００７３】
図３に示すように、本パズルゲームのプレイ開始時には、上側ＬＣＤ２２にロケット５０が表示され、下側ＬＣＤ１２に複数のオブジェクトが表示される。下側ＬＣＤ１２に表示される複数のオブジェクトには、ロケット５０の一部を構成する噴射ノズルのオブジェクト（以下、ノズルＯＢＪという）５１と、ロケット５０の飛行に用いられるエネルギのオブジェクト（以下、エネルギＯＢＪという）５２と、パネル（板）形態のオブジェクト５３〜５５とがある。オブジェクト５３はＬ字形状の管を有し、オブジェクト５４はＩ字形状の管を有し、オブジェクト５５は管を有さない。ノズルＯＢＪ５１とエネルギＯＢＪ５２は、移動させることができないオブジェクトであり、オブジェクト５３〜５５は、移動させることができるオブジェクトである。以下では、オブジェクト５３をＬ字管パネル５３と言い、オブジェクト５４をＩ字管パネル５４と言い、オブジェクト５５を管ナシパネル５５と言う場合がある。また、オブジェクトには２種類が存在し、Ｌ字管パネル５３とＩ字管パネル５４と管ナシパネル５５は、ユーザの操作によってその位置を移動させることが可能なものであり、これらは可動オブジェクトである。本明細書では、可動オブジェクトを「パネル」と表す。これに対して、ノズルＯＢＪ５１やエネルギＯＢＪ５２は、ユーザの操作によってその位置を移動させることができないものであり、これらは非可動オブジェクトである。なお、Ｌ字管パネル５３が有するＬ字形状の管およびＩ字管パネル５４が有するＩ字形状の管は、エネルギＯＢＪ５２をノズルＯＢＪ５１に導くために用いられる。オブジェクト５１〜５５は、互いに等しい大きさの正方形の形状であり、後に図１９を用いて説明するマトリクス状に整列した正方形のマス（下側ＬＣＤ１２には表示されない）に、はめ込まれる態様で配置される。ここで、エネルギＯＢＪ５２は、透明の正方形の板にエネルギが描かれたオブジェクトであり、ノズルＯＢＪ５１は透明の正方形の板に噴射ノズルが描かれたオブジェクトである。このため、エネルギＯＢＪ５２およびノズルＯＢＪ５１の外周は、図３〜図１１において、点線で示している。なお、図３の白丸５６は、所定の条件を満たすマスの頂点（角）を表示する印であり、パネルの移動態様（回転移動または反転移動）をプレイヤが予測可能にするものである。後に明らかとなるが、上記の所定の条件とは、パネルの存在するマスの頂点が他のオブジェクト（パネルを含む）の存在するマスと接しており、かつ、その頂点を回転移動の支点または反転移動の対称軸の一部として用いて当該パネルが移動すべき方向に隣接するマスが、オブジェクトの存在しないマスである場合を指す。
【００７４】
図４は、タッチペン２７等によって、或るパネル（Ｌ字管パネル５３）が移動対象のパネル（以下、移動対象パネルという）として特定された状態の一例を示している。図４に示すように、タッチペン２７等によってタッチされた位置にはタッチポインタ５７が表示され、タッチポインタ５７が重なっているパネルが移動対象パネルとして特定される。なお、図４では、一例として、タッチポインタ５７と重なったＬ字管パネル５３が移動対象パネルとして特定されている。また、タッチポインタ５７は、一例として星印で表示されている。図４に示すように、移動対象パネルとして特定されたＬ字管パネル５３の上下左右に隣接する各マスには、このＬ字管パネル５３の移動後の状態がシルエット５９によって表示される。ここで、後に説明するが、このＬ字管パネル５３を上方向または左方向に移動させる場合は、このＬ字管パネル５３の左上の頂点を支点にしてこのＬ字管パネル５３が回転されるように移動される。このことから、このＬ字管パネル５３の回転後の状態がシルエット５９によって上方向および左方向に表示される。同様に、このＬ字管パネル５３を下方向または右方向に移動させる場合は、このＬ字管パネル５３の右下の頂点を支点にしてこのＬ字管パネル５３が回転されるように移動される。このことから、このＬ字管パネル５３の回転後の状態がシルエット５９によって下方向および右方向に表示される。なお、移動対象パネルは、上下左右方向に隣接するマスに移動でき、斜め方向に隣接するマスには直接的には移動できない。また、移動対象パネルは、上下左右方向に隣接するマスにオブジェクトが存在する場合、このマスには移動できない。また、移動対象パネルが隣接するマスのうち、移動対象パネルが移動できるマスにのみシルエット５９が表示される。また、移動対象パネルが配置されたマスに表示されていた白丸５６（図３参照）は、二重丸５８として更に強調して表示され、他の白丸５６は非表示とされる。
【００７５】
図５は、図４で説明した移動対象パネルであるＬ字管パネル５３が、上方向に移動する態様を一例として示している。図５に示すように、プレイヤがタッチポインタ５７を、移動対象パネルであるＬ字管パネル５３上から上方向に隣接するマスに移動（ドラッグ）させた場合、このＬ字管パネル５３は、この上方向に隣接するマスに、二重丸５８で強調表示された左上頂点を支点にして回転して移動する。後に詳しく説明するが、移動対象パネルにおいて、この移動対象パネルが移動する方向（上下左右方向のいずれかの方向）側の２つの頂点のうち１つが二重丸５８で強調表示されている場合には、この移動対象パネルは二重丸５８で強調表示されたこの頂点を支点にして回転移動する。
【００７６】
図６は、図５で説明した移動対象パネルであるＬ字管パネル５３の回転移動が完了した状態を示している。図６において、移動後のＬ字管パネル５３は移動対象パネルとして特定されたままの状態なので、シルエット５９および二重丸５８の表示は、移動後のＬ字管パネル５３を基準に更新されて継続されている。なお、以上では、一例としてＬ字管パネル５３が回転移動する態様を説明したが、Ｉ字管パネル５４および管ナシパネル５５も同様の態様で回転移動する。
【００７７】
図７は、タッチペン２７等によって、或るパネル（Ｉ字管パネル５４）が移動対象パネルとして特定された状態の一例を示している。図７に示すように、タッチペン２７等によってタッチされた位置にはタッチポインタ５７が表示され、タッチポインタ５７が重なっているＩ字管パネル５４が移動対象パネルとして特定されている。また、図７に示すように、移動対象パネルであるＩ字管パネル５４の左右に隣接する各マスには、このＩ字管パネル５４の移動後のシルエット５９が表示される。ここで、後に説明するが、このＩ字管パネル５４を左方向に移動させる場合は、このＩ字管パネル５４の左上および左下の２頂点を結ぶ線を対称軸としてこのＩ字管パネル５４が反転されるように移動される。このことから、このＩ字管パネル５４の反転後の状態がシルエット５９によって左方向に表示される。同様に、このＩ字管パネル５４を右方向に移動させる場合は、このＩ字管パネル５４の右上および右下の２頂点を結ぶ線を対称軸としてＩ字管パネル５４が反転されるように移動される。このことから、このＩ字管パネル５４の反転後の状態がシルエット５９によって右方向に表示される。なお、移動対象パネルであるＩ字管パネル５４が隣接する上下左右のマスのうち、このＩ字管パネル５４が直接移動できる左右のマスにのみ、このＩ字管パネル５４の移動後の態様を示すシルエット５９が表示されている。また、移動対象パネルであるＩ字管パネル５４が配置されたマスの頂点に表示されていた白丸５６（図３参照）は、二重丸５８として更に強調して表示され、他の白丸５６は非表示にされている。
【００７８】
図８は、図７で説明した移動対象パネルであるタッチポインタ５７と重なったＩ字管パネル５４が右方向に移動する態様を示している。図８に示すように、プレイヤがタッチポインタ５７を、移動対象パネルであるＩ字管パネル５４上から右方向に隣接するマスに移動（ドラッグ）させた場合、このＩ字管パネル５４は、この右方向に隣接するマスに、二重丸５８で強調表示された右上頂点ｃと右下頂点ｂとを結ぶ直線を対称軸にして反転して移動する。後に詳しく説明するが、移動対象パネルにおいて、この移動対象パネルが移動する方向（上下左右方向のいずれかの方向）の２つの頂点が二重丸５８で強調表示されている場合には、この移動対象パネルは二重丸５８で強調表示されたこの２つの頂点を結ぶ直線を対称軸にして反転移動する。
【００７９】
図９は、図８で説明した移動対象パネルであるＩ字管パネル５４の反転移動が完了した状態を示している。図９において、移動後のＩ字管パネル５４は移動対象パネルとして特定されたままの状態なので、シルエット５９および二重丸５８の表示は、移動後のＩ字管パネル５４を基準に更新されて継続されている。なお、以上では、一例としてＩ字管パネル５４が反転移動する態様を説明したが、Ｌ字管パネル５３および管ナシパネル５５も同様の態様で反転移動する。
【００８０】
図１０は、図４〜図６を用いて説明した回転移動および図７〜図９を用いて説明した反転移動を行うことによって、エネルギＯＢＪ５２とノズルＯＢＪ５１とがパネルが有する管で繋がったステージクリア状態の一例を示している。このように、本パズルゲームは、パネルを移動させることによって、エネルギＯＢＪ５２とノズルＯＢＪ５１とをパネルが有する管で繋ぐゲームである。そして、エネルギＯＢＪ５２とノズルＯＢＪ５１とが管によって繋がれると、図１１に示すようにこの管を通ってエネルギがロケット５０に注入されて（矢印を参照）、図１２に示すようにロケット５０がノズルＯＢＪ５１から煙６０を噴出させて発射し、ゲームは次のステージに移行する。なお、図１２に示すように、エネルギが通過した後のＬ字管パネル５３およびＩ字管パネル５４は、非表示となる。
【００８１】
次に、図１３〜図１８を参照して、ゲーム装置１で実行される本発明のゲームプログラムによる具体的な処理動作について説明する。図１３は、本発明のゲームプログラムの実行に応じて、メインメモリ３２に記憶される各種データの一例を示す図である。図１４および図１５は、本発明のゲームプログラムを実行することによってゲーム装置１が行うゲーム処理を示すメインフローチャートの一例である。図１６〜図１８は、それぞれ、図１４および図１５に示すメインフローチャート内の所定処理の一例を示すサブルーチンを示す図である。なお、これらの処理を実行するためのプログラムは、ゲーム装置１に内蔵されるメモリ（例えば、保存用データメモリ３４）やメモリカード２８またはメモリカード２９に含まれており、ゲーム装置１の電源がＯＮになった時に、メモリカードＩ／Ｆ３６やメモリカードＩ／Ｆ３７を介してメモリカード２８やメモリカード２９から、または内蔵メモリからメインメモリ３２に読み出されて、ＣＰＵ３１によって実行される。また、メインメモリ３２には、画像処理において生成される一時的なデータが記憶される。
【００８２】
図１３に示すように、メインメモリ３２のデータ記憶領域には、操作データＤａ、ＯＢＪ配置位置データＤｂ、ＯＢＪタイプデータＤｃ、ＯＢＪ方向データＤｄ、表示頂点位置データＤｅ、タッチ中フラグデータＤｆ、タッチマス座標データＤｇ、移動前マス座標データＤｈ、移動対象パネルデータＤｉ、移動先マス座標データＤｊ、強調表示頂点位置データＤｋ、シルエット表示位置データＤｌ、シルエットタイプデータＤｍ、シルエット方向データＤｎ、パネル移動頂点位置データＤｏ、パネル移動頂点数量データＤｐ、移動アニメーション実行中フラグデータＤｑ、および画像データＤｒ等が格納される。また、メインメモリ３２のプログラム記憶領域には、本発明のゲームプログラムを構成する各種プログラム群Ｐａが記憶される。
【００８３】
操作データＤａは、プレイヤがゲーム装置１を操作することに応じて生成されるデータである。また、操作データＤａは、プレイヤがタッチペン２７等でタッチしているタッチパネル１３のタッチ位置を示すタッチ座標データを含む。タッチ座標データは、ゲーム装置１がゲーム処理する時間単位（例えば、１／６０秒）毎に取得されて更新される。ここで、プレイヤがタッチパネル１３をタッチしていない場合には、タッチ座標データとしてＮｕｌｌ値（空値）が格納される。以下では、タッチ座標データをタッチ座標データＤａという場合がある。
【００８４】
ＯＢＪ配置位置データＤｂは、下側ＬＣＤ１２に表示されるオブジェクトの配置位置を示すデータである。オブジェクトの配置位置は、図１９を用いて以下に説明するマス座標によって表される。図１９は、タッチパネル１３におけるタッチパネル座標系およびマス座標系の一例を説明するための模式図である。タッチパネル座標系は、上記したタッチパネル１３のタッチ位置を示すタッチ座標を特定する座標系である。マス座標系は、下側ＬＣＤ１２に表示されるオブジェクトが配置されるマスを特定する座標系である。図１９に示すように、タッチパネル座標系およびマス座標系は、例えばタッチパネル１３の左下頂点Ｏを原点としたＸＹ座標系である。また、タッチパネル座標系の目盛りはマス座標系の目盛りよりも小さく、図１９では、一例として、タッチパネル座標系の１目盛りはマス座標系の１目盛りの１／４の長さである。例えば、ＯＢＪ配置位置データＤｂが或るオブジェクトの配置位置としてマス座標（０，０）を示す場合、このオブジェクトは、図１９に示すマス座標（０，０）のマスに下側ＬＣＤ１２によって表示される。
【００８５】
ＯＢＪタイプデータＤｃは、上記したマス座標系によって特定されるマス（以下、単に、マスという）に配置される各オブジェクトのタイプを示すデータである。オブジェクトのタイプには、既に説明したように、ノズルＯＢＪ５１、エネルギＯＢＪ５２、Ｌ字管パネル５３、Ｉ字管パネル５４、および管ナシパネル５５がある。
【００８６】
ＯＢＪ方向データＤｄは、マスに配置される各オブジェクトの表示方向を示すデータである。図２０は、オブジェクトのタイプおよびタイプ毎の表示方向の一例を示す図である。図２０に示すように、Ｌ字管パネル５３の表示方向には方向１〜方向４があり、Ｉ字管パネル５４の表示方向には方向１〜方向２があり、管ナシパネル５５の表示方向には方向１のみがあり、ノズルＯＢＪ５１の表示方向には方向１のみがあり、エネルギＯＢＪ５２の表示方向には方向１のみがある。なお、Ｉ字管パネル５４は上下左右がそれぞれ対称の形状なので表示態様は２種類となり、このことから、Ｉ字管パネル５４の表示方向は２つ（方向１および方向２）としている。また、管ナシパネル５５およびエネルギＯＢＪ５２は、４方向のいずれを向いても同じ表示態様なので、表示方向は１つ（方向１）のみとしている。また、ノズルＯＢＪ５１は、上側ＬＣＤ２２に表示されるロケット５０の一部であるので、表示方向は１つ（方向１）のみとしている。
【００８７】
表示頂点位置データＤｅは、図１６を用いて後に説明する頂点表示処理において決定されるマスの頂点（図３の白丸５６を参照；以下、表示頂点と言う）の位置を示すデータである。
【００８８】
タッチ中フラグデータＤｆは、タッチペン２７等によってタッチパネル１３がタッチされている状態か否かを示すタッチ中フラグのＯＮ／ＯＦＦを示すデータである。タッチ中フラグのＯＮは、タッチパネル１３がタッチされていることを示し、タッチ中フラグのＯＦＦは、タッチパネル１３がタッチされていないことを示す。
【００８９】
タッチマス座標データＤｇは、タッチされているマス（以下、タッチマスという）の座標（以下、タッチマス座標という）を示すデータである。図１９に示すように、例えばタッチ座標が（６，５）である場合、タッチマス座標は（１，１）となる。
【００９０】
移動前マス座標データＤｈは、移動対象パネルの移動処理において、移動対象パネルが移動する前に存在するマス座標を示すデータである。
【００９１】
移動対象パネルデータＤｉは、移動対象として特定されたパネル（つまり、移動対象パネル）を示すデータである。なお、タッチが開始された時点のタッチマスに配置されていたパネルが、移動対象パネルとなる。
【００９２】
移動先マス座標データＤｊは、移動対象パネルの移動先となるマス座標を示すデータである。
【００９３】
強調表示頂点位置データＤｋは、表示頂点位置データＤｅが示す表示頂点の位置のうち、タッチマスの頂点の位置を示すデータである。
【００９４】
シルエット表示位置データＤｌは、下側ＬＣＤ１２に表示されるパネルのシルエットの表示位置（マス座標）を示すデータである。
【００９５】
シルエットタイプデータＤｍは、下側ＬＣＤ１２に表示される各パネルのシルエットのタイプを示すデータである。
【００９６】
シルエット方向データＤｎは、下側ＬＣＤ１２に表示される各パネルのシルエットの表示方向を示すデータである。図２１は、パネルのシルエットのタイプ、およびタイプ毎の表示方向の一例を示す図である。図２１に示すように、シルエットのタイプには、Ｌ字管パネルタイプ、Ｉ字管パネルタイプ、および管ナシパネルタイプがある。また、図２１に示すように、Ｌ字管パネルタイプのシルエットの表示方向には方向１〜方向４があり、Ｉ字管パネルタイプのシルエットの表示方向には方向１〜方向２があり、管ナシパネルタイプのシルエットの表示方向には方向１のみがある。なお、Ｉ字管パネルタイプのシルエットは上下左右がそれぞれ対称の形状なので表示態様は２種類となり、このことから、Ｉ字管パネルタイプのシルエットの表示方向は２つ（方向１および方向２）としている。また、管ナシパネルタイプのシルエットは、４方向のいずれを向いても同じ表示態様なので、表示方向は１つ（方向１）のみとしている。
【００９７】
パネル移動頂点位置データＤｏは、図１８を用いて後に説明するパネル移動頂点のカウント処理において決定されるタッチマスの頂点（以下、パネル移動頂点という）の位置を示すデータである。
【００９８】
パネル移動頂点数量データＤｐは、図１８を用いて後に説明するパネル移動頂点のカウント処理において決定されるパネル移動頂点の数量を示すデータである。
【００９９】
移動アニメーション実行中フラグデータＤｑは、移動対象パネルが移動するアニメーション（図５および図８参照）が実行中であるか否かを示す移動アニメーション実行中フラグのＯＮ／ＯＦＦを示すデータである。移動アニメーション実行中フラグのＯＮは、移動対象パネルが移動するアニメーションが実行中であることを示し、移動アニメーション実行中フラグのＯＦＦは、移動対象パネルが移動するアニメーションが実行中ではないことを示す。
【０１００】
画像データＤｒは、オブジェクト５０〜５５等のゲーム画像をゲーム装置１に表示するための画像データである。
【０１０１】
次に、図１４〜図１８を参照して、ゲーム装置１の動作について説明する。まず、ゲーム装置１の電源（電源ボタン１４Ｆ）がＯＮにされると、ＣＰＵ３１によってブートプログラム（図示せず）が実行され、これにより内蔵メモリまたはメモリカード２８やメモリカード２９に格納されているゲームプログラムがメインメモリ３２にロードされる。そして、当該ロードされたゲームプログラムがＣＰＵ３１で実行されることによって、図１４〜図１８に示す処理が実行される。なお、図１４〜図１８において、ステップを「Ｓ」と略称する。
【０１０２】
まず、図１４のステップ１０１において、ＣＰＵ３１は、ゲーム処理の初期設定処理を行う。例えば、ＣＰＵ３１は、初期設定処理として、メインメモリ３２に格納されている各パラメータを所定の数値や状態に初期化する。この初期設定処理によって、タッチ中フラグデータＤｆおよび移動アニメーション実行中フラグデータＤｑは、フラグがＯＦＦを示す初期値に設定される。
【０１０３】
次に、ステップ１０２において、ＣＰＵ３１は、例えば下側ＬＣＤ１２に、パズルステージ選択画面を表示させる。
【０１０４】
次に、ステップ１０３において、ＣＰＵ３１は、プレイヤによってパズルステージ（以下、単に、ステージと言う）が選択されるまで待機し、ステージが選択されるとステップ１０４の処理に移る。なお、この時、プレイヤは、例えばタッチペン２７でタッチパネル１３をタッチすることによって、下側ＬＣＤ１２に表示されたパズルステージ選択画面から所望のステージを選択する。
【０１０５】
次に、ステップ１０４において、ＣＰＵ３１は、ステップ１０３で選択されたステージに対応するオブジェクト群を仮想ゲーム空間に配置して表示する。具体的には、ＣＰＵ３１は、メモリカードＩ／Ｆ３６やメモリカードＩ／Ｆ３７を介してメモリカード２８やメモリカード２９から、または内蔵メモリから、ステップ１０３で選択されたステージの開始時におけるオブジェクトの配置位置、タイプ、および方向を示すデータを読み出して、それぞれ、メインメモリ３２のＯＢＪ配置位置データＤｂ、ＯＢＪタイプデータＤｃ、およびＯＢＪ方向データＤｄとして格納する。そして、ＣＰＵ３１は、仮想ゲーム空間にロケット５０を配置し、また、仮想ゲーム空間に、ＯＢＪ配置位置データＤｂ、ＯＢＪタイプデータＤｃ、およびＯＢＪ方向データＤｄに従って複数のオブジェクトを配置する。そして、ＣＰＵ３１は、ロケット５０を配置した仮想ゲーム空間の領域を上側ＬＣＤ２２に表示し、複数のオブジェクト（パネル等）を配置した仮想ゲーム空間の領域を下側ＬＣＤ１２に表示する（図３参照）。つまり、ステップ１０４において、ＣＰＵ３１は、プレイヤが選択したステージを仮想ゲーム空間に生成して表示する。
【０１０６】
次に、ステップ１０５において、ＣＰＵ３１は、移動アニメーション実行中フラグデータＤｑを参照して、移動アニメーション実行中フラグがＯＮか否かを判断する。移動アニメーション実行中フラグは、後に説明する図１５のステップ１３８およびステップ１３９の処理によって、移動対象パネルの移動アニメーションの表示が開始された時にＯＮにされる。移動アニメーション実行中フラグがＯＦＦの場合（ステップ１０５でＮｏ）、処理はステップ１０８に移る。一方、移動アニメーション実行中フラグがＯＮの場合（ステップ１０５でＹｅｓ）、処理はステップ１０６に移る。
【０１０７】
ステップ１０６において、ＣＰＵ３１は、移動中のパネルが無いか否かを判断する。具体的には、ＣＰＵ３１は、後に説明するステップ１３８で開始された移動対象パネルの移動アニメーションの表示が終了しているか否かを判断する。移動中のパネルがある場合（ステップ１０６でＮｏ）、処理はステップ１０８に移る。一方、移動中のパネルが無い場合（ステップ１０６でＹｅｓ）、処理はステップ１０７に移る。
【０１０８】
ステップ１０７において、ＣＰＵ３１は、移動アニメーション実行中フラグデータＤｑが示す移動アニメーション実行中フラグをＯＦＦにする。その後、処理は、ステップ１０８に移る。
【０１０９】
次に、ステップ１０８において、ＣＰＵ３１は、タッチパネル１３がタッチされたか否かを検出する。この検出は、例えば、タッチ座標データＤａが、タッチ座標を示しているのか、それともＮｕｌｌ値を示しているのかを参照することによって実施できる。タッチ座標データＤａがタッチ座標を示している場合はタッチされていると判断でき、一方、タッチ座標データＤａがＮｕｌｌ値を示している場合はタッチされていないと判断できるからである。タッチパネル１３がタッチされたことが検出された場合（ステップ１０８でＹｅｓ）、処理はステップ１１１に移る。一方、タッチパネル１３がタッチされたことが検出されない場合（ステップ１０８でＮｏ）、処理はステップ１０９に移る。
【０１１０】
ステップ１０９において、ＣＰＵ３１は、タッチ中フラグデータＤｆが示すタッチ中フラグがＯＮか否かを確認する。タッチ中フラグがＯＮの場合（ステップ１０９でＹｅｓ）、処理はステップ１４１に移る。一方、タッチ中フラグがＯＦＦの場合（ステップ１０９でＮｏ）、処理はステップ１１０に移る。ここで、タッチ中フラグがＯＮの場合とは、前回のステップ１０８でのタッチ検出（前フレームのタッチ検出）ではタッチが検出され、今回のタッチ検出（今フレームのタッチ検出）ではタッチが検出されない場合である。つまり、ステップ１０９におけるタッチ中フラグのＯＮは、タッチパネル１３へのタッチが離された瞬間を意味している。一方、タッチ中フラグがＯＦＦの場合とは、前回のステップ１０８でのタッチ検出（前フレームのタッチ検出）において既にタッチが検出されない場合である。つまり、ステップ１０９におけるタッチ中フラグのＯＦＦは、タッチパネル１３へのタッチが、少なくとも直前のフレーム以前から離されている状態を意味している。
【０１１１】
ステップ１１０において、ＣＰＵ３１は、図１６に示す頂点表示処理を行う。この頂点表示処理は、図３に示す白丸５６（表示頂点）を表示する処理である。以下では、図１６を用いて、頂点表示処理について説明する。
【０１１２】
ステップ２０１において、ＣＰＵ３１は、全てのマスの頂点について、以下に説明するステップ２０２〜ステップ２０７の処理を実施したか否かを判断する。全てのマスの頂点についてステップ２０２〜ステップ２０７の処理を実施したと判断した場合（ステップ２０１でＹｅｓ）、処理はステップ２０７に移る。一方、ステップ２０２〜ステップ２０７の処理を実施していないマスの頂点がある場合（ステップ２０１でＮｏ）、処理はステップ２０２に移る。
【０１１３】
ステップ２０２において、ＣＰＵ３１は、ステップ２０３の処理を実施していないマスの頂点を１つ選択する。
【０１１４】
次に、ステップ２０３において、ＣＰＵ３１は、ＯＢＪ配置位置データＤｂを参照して、ステップ２０２で選択した頂点に隣接する４つのマスのうち、何らかのオブジェクトが存在するマス（以下、ＯＢＪ存在マスという）の数をカウントする。ここで、何らかのオブジェクトとは、ノズルＯＢＪ５１、エネルギＯＢＪ５２、Ｌ字管パネル５３、Ｉ字管パネル５４、管ナシパネル５５等のオブジェクトを意味する。
【０１１５】
次に、ステップ２０４において、ＣＰＵ３１は、ステップ２０３でカウントしたＯＢＪ存在マスの数が２または３であるか否かを判断する。ＯＢＪ存在マスの数が２または３ではない場合（ステップ２０４でＮｏ；即ち０、１または４である場合）、処理はステップ２０１に戻る。ステップ２０４では、ステップ２０２で選択した頂点が、後に説明する回転移動に用いられる支点または反転移動に用いられる対称軸を構成する点となりうるか否かを判断している。ＯＢＪ存在マスの数が０の場合は、この頂点に隣接するマスにはオブジェクトが存在しないため、この頂点は、上記した支点や対称軸を構成する点とはなりえない。ＯＢＪ存在マスの数が１の場合は、この頂点に隣接するマスにはオブジェクトが１つしか存在しないので、この頂点は、上記した支点や対称軸を構成する点とはなりえない。また、ＯＢＪ存在マスの数が４の場合は、この頂点を支点としてパネルを回転移動させたり、この頂点を対称軸の一部としてパネルを反転移動させることができるようなスペースが存在しないことになるので、この頂点は、上記した支点や対称軸を構成する点とはなりえない。一方、ＯＢＪ存在マスの数が２または３である場合（ステップ２０４でＹｅｓ）、当該頂点は支点や対称軸を構成する点になる可能性があることになり、処理はステップ２０５に移る。
【０１１６】
ステップ２０５において、ＣＰＵ３１は、ステップ２０３でカウントしたＯＢＪ存在マスの中に、パネル（すなわち、プレイヤによって回転移動または反転移動させることが可能なＬ字管パネル５３、Ｉ字管パネル５４、または管ナシパネル５５のいずれか）が存在するＯＢＪ存在マスがあるか否かを判断する。パネルが存在するＯＢＪ存在マスがない場合（ステップ２０５でＮｏ）、処理はステップ２０１に戻る。回転移動または反転移動させることが可能な「パネル」が存在しない場合には、ステップ２０２で選択した頂点は、パネルの回転移動の支点や反転移動の対称軸を構成する点になりえないからである。一方、パネルが存在するＯＢＪ存在マスがある場合（ステップ２０５でＹｅｓ）、処理はステップ２０６に移る。
【０１１７】
ステップ２０６において、ＣＰＵ３１は、ステップ２０５で存在を確認したパネルのうち少なくとも１つのパネルについて、当該パネルがステップ２０２で選択した頂点を基準に回転移動または反転移動できる少なくとも１つの移動方向に、オブジェクトの存在しないマスがあるか否かを判断する。より具体的には、ＣＰＵ３１は、ステップ２０５で存在を確認したパネル全てに対して、ステップ２０２で選択した頂点を基準にして回転移動または反転移動できる少なくとも１方向に、オブジェクトの存在しないマスがあるか否かを判断し、そのような条件に当てはまるパネルが少なくとも１つ存在するか否かを判断する。ここで、上記した「回転移動または反転移動できる」の意味は、「移動方向にオブジェクトが存在しないと仮定した場合に、上記パネルが、回転移動または反転移動できる」という意味である。選択した頂点を基準にして回転移動または反転移動するいずれの方向にもオブジェクトの存在しないマスがない場合、すなわち、選択した頂点に隣接するパネルの全てにおいて、当該パネルの移動できる全ての方向のマスに何らかのオブジェクトが存在する場合には、どのパネルも選択した頂点を基準に回転移動も反転移動もできないので、この頂点は、パネルの回転移動の支点や反転移動の対称軸を構成する点になりえないからである。すなわち、ステップ２０５で存在を確認した全てのパネルについて、当該パネルが選択した頂点を基準に移動できる全ての方向にオブジェクトが存在する場合（ステップ２０６でＮｏ）、処理はステップ２０１に戻る。一方、ステップ２０５で存在を確認したパネルのうち、選択した頂点を基準にして移動できるいずれかの方向にオブジェクトが存在しないマスがあるパネルが少なくとも１つ存在する場合（ステップ２０６でＹｅｓ）、処理はステップ２０７に移る。
【０１１８】
ステップ２０７において、ＣＰＵ３１は、ステップ２０２で選択した頂点を、白丸で表示する表示頂点とすることを決定する。その後、処理はステップ２０１に戻る。以上に説明したステップ２０１〜ステップ２０７の処理が繰返されることによって、全てのマスの頂点について、白丸で表示されるか否かが決定される。
【０１１９】
その後、ステップ２０１において、ＣＰＵ３１が、全てのマスの頂点についてステップ２０３〜ステップ２０７の処理を実施したと判断した場合（ステップ２０１でＹｅｓ）、処理はステップ２０８に移る。
【０１２０】
ステップ２０８において、ＣＰＵ３１は、ステップ２０７において白丸で表示すると決定された全ての表示頂点の位置データで、表示頂点位置データＤｅを更新する。
【０１２１】
次に、ステップ２０９において、ＣＰＵ３１は、ステップ２０８で更新された表示頂点位置データＤｅに基づいて、図３に一例として示すように、全ての表示頂点を白丸５６で表示する。以上の処理で頂点表示処理は終了し、処理は図１４のステップ１０５に戻る。なお、後に明らかとなるが、この白丸５６で表示される表示頂点によって、プレイヤは、パネルの移動態様（回転移動または反転移動）を予測できる。
【０１２２】
その後、処理は進み、ステップ１０８において、ＣＰＵ３１が、タッチパネル１３がタッチされたことを検出し（ステップ１０８でＹｅｓ）、処理がステップ１１１に移った場合について説明する。
【０１２３】
ステップ１１１において、ＣＰＵ３１は、ステップ１１０で表示された白丸５６（図３参照）を非表示にする。
【０１２４】
次に、ステップ１１２において、ＣＰＵ３１は、タッチ座標データＤａからタッチ座標を取得する。なお、既に説明したように、タッチ座標データＤａは、タッチパネル１３がタッチされている期間には常に最新のタッチ座標を用いて更新されている。また、タッチ座標データＤａには、タッチパネル１３がタッチされていない期間にはＮｕｌｌ値が格納されている。
【０１２５】
次に、ステップ１１３において、ＣＰＵ３１は、タッチ中フラグデータＤｆを参照して、タッチ中フラグがＯＮか否かを確認する。タッチ中フラグがＯＮの場合（ステップ１１３でＹｅｓ）、処理はステップ１１９に移る。一方、タッチ中フラグがＯＦＦの場合（ステップ１１３でＮｏ）、処理はステップ１１４に移る。ここで、タッチ中フラグがＯＮの場合は、前回のステップ１０８でのタッチ検出（前フレームのタッチ検出）でもタッチが行われていたことを意味する。一方、タッチ中フラグがＯＦＦの場合は、前回のステップ１０８でのタッチ検出（前フレームのタッチ検出）ではタッチが行われておらず、今回のステップ１０８でのタッチ検出（今フレームのタッチ検出）でタッチが開始されたことを意味する。つまり、タッチが開始された時点では処理はステップ１１４のルートを通り、その後そのタッチが継続されている場合には処理はステップ１１９のルートに移る。
【０１２６】
次に、ステップ１１４において、ＣＰＵ３１は、タッチ中フラグデータＤｆが示すタッチ中フラグをＯＮにする。
【０１２７】
次に、ステップ１１５において、ＣＰＵ３１は、ＯＢＪ配置位置データＤｂおよびＯＢＪタイプデータＤｃを参照して、ステップ１１２で取得したタッチ座標にパネル（可動オブジェクト）が位置するか否かを判断する。パネルが位置しない場合（ステップ１１５でＮｏ）、処理はステップ１０５に戻る。一方、パネルが位置する場合（ステップ１１５でＹｅｓ）、処理はステップ１１６に移る。
【０１２８】
次に、ステップ１１６において、ＣＰＵ３１は、ステップ１１２で取得したタッチ座標に位置するパネルを「移動対象パネル」として特定し、この移動対象パネルのデータで移動対象パネルデータＤｉを更新する。
【０１２９】
次に、ステップ１１７において、ＣＰＵ３１は、ステップ１１２で取得したタッチ座標に基づいて、タッチパネル１３においてタッチが開始されたタッチマスを特定し、このタッチマスを、移動対象パネルが存在しているマス（以下、「移動前マス」という）として設定する。また、この際、ＣＰＵ３１は、特定したタッチマスの座標データで移動前マス座標データＤｈを更新する。例えば、図１９に示すように、ステップ１１２で取得したタッチ座標が（６，５）である場合、ＣＰＵ３１は、このタッチ座標（６，５）を含むタッチマス座標（１，１）を特定し、このタッチマス座標のデータで移動前マス座標データＤｈを更新し、このタッチマス座標のマスを「移動前マス」として設定する。
【０１３０】
次に、ステップ１１８において、ＣＰＵ３１は、図１７に示すシルエット・強調頂点表示処理を行う。以下では、図１７を用いて、シルエット・強調頂点表示処理について説明する。
【０１３１】
ステップ３０１において、ＣＰＵ３１は、シルエットに関するデータをクリアする。具体的には、ＣＰＵ３１は、シルエット表示位置データＤｌ、シルエットタイプデータＤｍ、およびシルエット方向データＤｎとして、Ｎｕｌｌ値を格納する。
【０１３２】
次に、ステップ３０２において、ＣＰＵ３１は、移動前マスと上下左右に隣接する４つのマスの全てに対して、以下に説明するステップ３０３〜ステップ３１１の処理を実施したか否かを判断する。４つのマスの全てに対してステップ３０３〜ステップ３１１の処理を実施したと判断した場合（ステップ３０２でＹｅｓ）、処理はステップ３１２に移る。一方、ステップ３０３〜ステップ３１１の処理を実施していないマスがある場合（ステップ３０２でＮｏ）、処理はステップ３０３に移る。
【０１３３】
ステップ３０３において、ＣＰＵ３１は、移動前マスと上下左右に隣接する４つのマスのうち、ステップ３０４の処理を実施していないマスを１つ選択する。
【０１３４】
次に、ステップ３０４において、ＣＰＵ３１は、ＯＢＪ配置位置データＤｂを参照して、ステップ３０３で選択したマスにオブジェクトが配置されているか否かを判断する。オブジェクトが配置されている場合（ステップ３０４でＹｅｓ）、処理はステップ３０２に戻る。一方、オブジェクトが配置されていない場合（ステップ３０４でＮｏ）、処理はステップ３０５に移る。以下では、オブジェクトが配置されていないマスを「空きマス」という場合がある。なお、空きマスにはパネルを移動することができる。
【０１３５】
ステップ３０５において、ＣＰＵ３１は、移動前マスの頂点のうち、この移動前マスから視てステップ３０３で選択した空きマスが在る方向の２つの頂点を、「特定頂点」として選択する。
【０１３６】
次に、ステップ３０６において、ＣＰＵ３１は、ステップ３０５で選択した２つの特定頂点に対して、図１８に示すパネル移動頂点のカウント処理を行う。言い換えると、ステップ３０６において、ＣＰＵ３１は、２つの特定頂点のうち、回転移動の支点または反転移動の対称軸を構成する点がいくつ存在するかをカウントする。以下では、図１８を用いて、パネル移動頂点のカウント処理について説明する。
【０１３７】
ステップ４０１において、ＣＰＵ３１は、２つの特定頂点に対して、以下に説明するステップ４０２〜ステップ４０４の処理を実施したか否かを判断する。２つの特定頂点に対してステップ４０２〜ステップ４０４の処理を実施したと判断した場合（ステップ４０１でＹｅｓ）、処理はステップ４０５に移る。一方、ステップ４０２〜ステップ４０４の処理を実施していない特定頂点がある場合（ステップ４０１でＮｏ）、処理はステップ４０２に移る。
【０１３８】
ステップ４０２において、ＣＰＵ３１は、ステップ４０３の処理を実施していない特定頂点を１つ選択する。
【０１３９】
次に、ステップ４０３において、ＣＰＵ３１は、ステップ４０２で選択した特定頂点に、図１４のステップ１１６で特定した移動対象パネル以外のオブジェクト（ノズルＯＢＪ５１、エネルギＯＢＪ５２、および選択されていないパネル）が隣接しているか否かを判定する。移動対象パネル以外のオブジェクトが隣接していない場合（ステップ４０３でＮｏ）、処理はステップ４０１に戻る。一方、移動対象パネル以外のオブジェクトが隣接している場合（ステップ４０３でＹｅｓ）、処理はステップ４０４に移る。
【０１４０】
ステップ４０４において、ＣＰＵ３１は、ステップ４０２で選択した特定頂点を「パネル移動頂点」として決定する。このパネル移動頂点は、移動対象パネルを回転移動させる支点、または、移動対象パネルを反転移動させる対称軸を構成する点となる頂点である。その後、処理はステップ４０１に戻る。そして、ステップ４０１において、ＣＰＵ３１が、特定頂点の全てに対してステップ４０２〜ステップ４０４の処理を実施したと判断した場合、処理はステップ４０５に移る。
【０１４１】
ステップ４０５において、ＣＰＵ３１は、ステップ４０４で決定した全てのパネル移動頂点の位置データで、パネル移動頂点位置データＤｏを更新する。なお、ステップ４０４で決定されたパネル移動頂点が無い場合には、パネル移動頂点位置データＤｏにはＮｕｌｌ値が格納される。
【０１４２】
次に、ステップ４０６において、ＣＰＵ３１は、ステップ４０４で決定したパネル移動頂点の数量データで、パネル移動頂点数量データＤｐを更新する。なお、パネル移動頂点の数量は０〜２のいずれかであるので、パネル移動頂点数量データＤｐが示す数量は０〜２のいずれかである。以上の処理でステップ３０６のパネル移動頂点のカウント処理は終了し、処理は図１７のステップ３０７に移る。
【０１４３】
図１７のステップ３０７において、ＣＰＵ３１は、パネル移動頂点数量データＤｐを参照して、ステップ３０６でカウントされたパネル移動頂点の数量が１か否かを判断する。パネル移動頂点の数量が１ではない場合（ステップ３０７でＮｏ）、処理はステップ３０９に移る。一方、パネル移動頂点の数量が１である場合（ステップ３０７でＹｅｓ）、処理はステップ３０８に移る。
【０１４４】
ステップ３０８において、ＣＰＵ３１は、移動対象パネルを、ステップ３０３で選択したマスに、ステップ３０６で決定したパネル移動頂点を支点にして回転移動させた態様を表すシルエットを決定する。そして、ＣＰＵ３１は、ステップ３０３で選択したマスの位置（マス座標）データをシルエット表示位置データＤｌに格納し、この位置データに関連付けて、決定したシルエットのタイプを示すデータおよび方向を示すデータを、それぞれ、ＯＢＪタイプデータＤｍおよびＯＢＪ方向データＤｎに格納する。以下、図４、図２０および図２１を用いて、ステップ３０８の処理を具体的に説明する。図４において、タッチポインタ５７が表示されたＬ字管パネル５３が移動対象パネルである。そして、ステップ３０３で選択されたマスが、移動対象パネルの下側に隣接するマスＢである場合について説明する。この場合、ステップ３０６で決定されたパネル移動頂点は、ａで示す二重丸である。まず、ＣＰＵ３１は、ＯＢＪタイプデータＤｃおよびＯＢＪ方向データＤｄを参照して、移動対象パネルのタイプ「Ｌ字管パネル」および移動対象パネルの方向「方向１」を取得する（図２０参照）。次に、ＣＰＵ３１は、パネル移動頂点位置データＤｏを参照して、ステップ３０６で決定されたパネル移動頂点の位置「ａで示す二重丸の位置」を取得する。次に、ＣＰＵ３１は、移動対象パネルを、マスＢに、ａで示す二重丸の位置を支点にして回転移動させた態様を表すシルエットとして、図２１に示すＬ字管パネルタイプであって方向４のシルエットを決定する。次に、ＣＰＵ３１は、マスＢの位置データをシルエット表示位置データＤｌとして格納し、この位置データに関連付けて、シルエットのタイプ「Ｌ字管パネルタイプ」を示すデータおよび方向「方向４」を示すデータを、それぞれ、シルエットタイプデータＤｍおよびシルエット方向データＤｎとして格納する。その後、処理はステップ３１１に移る。
【０１４５】
次に、ステップ３１１において、ＣＰＵ３１は、シルエット表示位置データＤｌが示すマス座標に、シルエットタイプデータＤｍが示すタイプのシルエットを、シルエット方向データＤｎが示す方向で表示する。図４の例では、マスＢに、「Ｌ字管パネルタイプ」のシルエットが、方向４の向きで表示されている（図２１を参照）。その後、処理はステップ３０２に戻る。
【０１４６】
以下では、ステップ３０７において、ＣＰＵ３１が、パネル移動頂点の数量が１ではないと判断して（ステップ３０７でＮｏ）、処理がステップ３０９に移った場合について説明する。
【０１４７】
ステップ３０９において、ＣＰＵ３１は、パネル移動頂点数量データＤｐを参照して、ステップ３０６でカウントされたパネル移動頂点の数量が２か否かを判断する。パネル移動頂点の数量が２ではない場合（ステップ３０９でＮｏ；つまり、パネル移動頂点の数量が０の場合）、処理はステップ３０２に戻る。一方、パネル移動頂点の数量が２である場合（ステップ３０９でＹｅｓ）、処理はステップ３１０に移る。
【０１４８】
ステップ３１０において、ＣＰＵ３１は、移動対象パネルを、ステップ３０３で選択したマスに、ステップ３０６で決定された２つのパネル移動頂点を結ぶ直線を対称軸にして反転移動させた態様を表すシルエットを決定する。そして、ＣＰＵ３１は、ステップ３０３で選択したマスの位置（マス座標）データをシルエット表示位置データＤｌに格納し、この位置データに関連付けて、決定したシルエットのタイプを示すデータおよび方向を示すデータを、それぞれ、シルエットタイプデータＤｍおよびシルエット方向データＤｎとして格納する。以下、図７、図２０および図２１を用いて、ステップ３１０の処理を具体的に説明する。図７において、タッチポインタ５７が表示されたＩ字管パネル５４が移動対象パネルである。そして、ステップ３０３で選択されたマスが、移動対象パネルの右側に隣接するマスＤである場合について説明する。この場合、ステップ３０６で決定された２つのパネル移動頂点は、それぞれ、ｂで示す二重丸およびｃで示す二重丸である。まず、ＣＰＵ３１は、ＯＢＪタイプデータＤｃおよびＯＢＪ方向データＤｄを参照して、移動対象パネルのタイプ「Ｉ字管パネル」および移動対象パネルの方向「方向１」を取得する（図２０参照）。次に、ＣＰＵ３１は、パネル移動頂点位置データＤｏを参照して、ステップ３０６で決定されたパネル移動頂点の位置「ｂで示す二重丸の位置およびｃで示す二重丸の位置」を取得する。次に、ＣＰＵ３１は、移動対象パネルを、マスＤに、ｂで示す二重丸とｃで示す二重丸とを結ぶ直線を対称軸にして反転させて移動させた態様を表すシルエットとして、図２１に示すＩ字管パネルタイプであって方向１のシルエットを決定する。次に、ＣＰＵ３１は、マスＤの位置データをシルエット表示位置データＤｌに格納し、この位置データに関連付けて、シルエットのタイプ「Ｉ字管パネルタイプ」を示すデータおよび方向「方向１」を示すデータを、それぞれ、シルエットタイプデータＤｍおよびシルエット方向データＤｎとして格納する。その後、処理はステップ３１１に移る。
【０１４９】
次に、ステップ３１１において、ＣＰＵ３１は、シルエット表示位置データＤｌが示すマス座標に、シルエットタイプデータＤｍが示すタイプのシルエットを、シルエット方向データＤｎが示す方向で表示する。図７の例では、マスＤに、「Ｉ字管パネルタイプ」のシルエットが、方向１の向きで表示されている（図２１を参照）。その後、処理はステップ３０２に戻る。
【０１５０】
ステップ３０２において、ＣＰＵ３１が、移動前マスと上下左右に隣接する４つのマスの全てに対してステップ３０３〜ステップ３１１の処理を実施したと判断した場合（ステップ３０２でＹｅｓ）、処理はステップ３１２に移る。
【０１５１】
ステップ３１２において、ＣＰＵ３１は、移動前マスの４個の頂点のうち、図１４のステップ１１０の処理によって白丸５６で表示されていた頂点を二重丸５８で強調表示する（図３および図４参照）。以上の処理でシルエット・強調頂点表示処理（ステップ１１８）は終了し、処理は図１４のステップ１０５に戻る。以上に説明したように、シルエット・強調頂点表示処理によって、移動対象パネルが移動できるマスに、移動対象パネルの移動後の状態がシルエットで表示される。このことによって、プレイヤは、タッチポインタ５７で移動対象パネルを特定した段階で、移動対象パネルの移動後の状態を知ることができる。
【０１５２】
以下では、ステップ１１３において、ＣＰＵ３１がタッチ中フラグのＯＮを確認して処理がステップ１１９に移った場合について説明する。すなわち、タッチパネル１３へのタッチが継続して行われている場合の処理について説明する。
【０１５３】
ステップ１１９において、ＣＰＵ３１は、移動対象パネルデータＤｉを参照して、移動対象パネルが特定されているか否かを判断する。移動対象パネルが特定されていない場合（ステップ１１９でＮｏ）、処理はステップ１０５に戻る。例えば移動対象パネルデータＤｉがＮｕｌｌ値を示している場合には、移動対象パネルが特定されていないと判断される。一方、移動対象パネルが特定されている場合（ステップ１１９でＹｅｓ）、処理はステップ１２０に移る。
【０１５４】
ステップ１２０において、ＣＰＵ３１は、移動アニメーション実行中フラグデータＤｑを参照して、移動対象パネルが移動表示中か否かを判断する。なお、移動アニメーション実行中フラグデータＤｑは移動アニメーション実行中フラグのＯＮ／ＯＦＦを示すデータである。また、移動アニメーション実行中フラグは、ステップ１０５〜１０７、１３８、１３９の処理によって、移動対象パネルが移動表示中である期間にのみＯＮにされ、移動表示中でない場合はＯＦＦにされる。移動対象パネルが移動表示中である場合（図５および図８参照；ステップ１２０でＹｅｓ）、処理はステップ１０５に戻る。すなわち、何らかのパネルが移動表示中である場合、現在のタッチ座標にパネルが存在していたとしても、そのパネルの回転移動または反転移動は行わない。一方、移動対象パネルが移動表示中ではない場合（ステップ１２０でＮｏ）、処理はステップ１２１に移る。
【０１５５】
ステップ１２１において、ＣＰＵ３１は、直近のステップ１１２で取得した最新のタッチ座標に基づいて、タッチパネル１３においてタッチが継続されている最新のタッチマス座標を特定することによって、継続してタッチされている最新のタッチマス（以下、「最新タッチマス」という）を特定する（図１９参照）。また、この際、ＣＰＵ３１は、最新タッチマス座標のデータでタッチマス座標データＤｇを更新する。
【０１５６】
次に、ステップ１２２において、ＣＰＵ３１は、移動前マス座標データＤｈおよびタッチマス座標データＤｇとを参照して、移動前マスと最新タッチマスとが等しいか否かを判断する。等しい場合（ステップ１２２でＹｅｓ）、処理はステップ１１８に移り、図１７を用いて説明したシルエット・強調頂点表示処理が行われる。一方、等しくない場合（ステップ１２２でＮｏ）、処理はステップ１２３に移る。つまり、ステップ１２２において、ＣＰＵ３１は、移動対象パネルを特定したタッチ座標（タッチポインタ５７）が、移動対象パネルが存在する移動前マスから他のマスに移動したか否かを判断している。より簡潔に言うなら、ＣＰＵ３１は、タッチポインタ５７によって移動対象パネルが他のマスにドラッグ操作されたか否かを判断している。
【０１５７】
図１５のステップ１２３において、ＣＰＵ３１は、移動前マスのマス座標と最新タッチマスのマス座標との間で、Ｘ軸の値（Ｘ要素）またはＹ軸の値（Ｙ要素）が等しいか否かを判断する。つまり、ＣＰＵ３１は、タッチポインタ５７が、移動前マスから、当該移動前マスに対して上下左右方向に位置するマスに移動したのか、それとも、当該移動前マスに対して斜め方向に位置するマスに移動したのかを判断する。Ｘ軸の値またはＹ軸の値が等しくないと判断された場合（ステップ１２３でＮｏ）、処理はステップ１２７に移る。一方、Ｘ軸の値またはＹ軸の値が等しいと判断された場合（ステップ１２３でＹｅｓ）、処理はステップ１２４に移る。
【０１５８】
ステップ１２４において、ＣＰＵ３１は、タッチポインタ５７が移動した方向に移動前マスと隣接するマスにオブジェクトが配置されているか否かを判断する。オブジェクトが配置されている場合（ステップ１２４でＹｅｓ）、処理はステップ１０５に戻る。一方、オブジェクトが配置されていない場合（ステップ１２４でＮｏ）、処理はステップ１２５に移る。
【０１５９】
ステップ１２５において、ＣＰＵ３１は、タッチポインタ５７が移動した方向に移動前マスと隣接するマスを、移動対象パネルの移動先となる「移動先マス」として設定する。そして、ＣＰＵ３１は、設定した移動先マスの座標を示すデータで、移動先マス座標データＤｊを更新する。図２２は、ステップ１２５の処理の一例を具体的に説明するための図である。図２２において、移動対象パネルが位置する移動前マスの座標は（４，４）であり、タッチポインタ５７が指す最新タッチマスの座標は（６，４）である。この場合、図２２に示すように、移動先マスの座標は、タッチポインタ５７が移動したＸ軸正方向に、移動前マスの座標（４，４）と隣接する座標（５，４）となる。
【０１６０】
次に、ステップ１２６において、ＣＰＵ３１は、移動前マスの頂点のうち、当該移動前マスから視てステップ１２５で設定した移動先マスがある方向（側）の２つの頂点を、特定頂点として選択する。この処理によって、例えば図２２では、移動前マスの頂点ｄおよび頂点ｅが特定頂点として選択される。その後、処理はステップ１３３に移る。
【０１６１】
以下では、ステップ１２３において、ＣＰＵ３１が、Ｘ軸の値（Ｘ要素）またはＹ軸の値（Ｙ要素）が等しくないと判断して（ステップ１２３でＮｏ）、処理がステップ１２７に移った場合について説明する。すなわち、移動前マスに対して斜め方向にタッチポインタ５７が移動した場合の処理について説明する。
【０１６２】
ステップ１２７において、ＣＰＵ３１は、移動前マスのＸＹ座標成分のうちＹ軸成分のみを、最新タッチマスの座標のＹ軸成分の値に１近づけた座標のマスに、オブジェクトが配置されているか否かを判断する。オブジェクトが配置されている場合（ステップ１２７でＹｅｓ）、処理はステップ１３０に移る。一方、オブジェクトが配置されていない場合（ステップ１２７でＮｏ）、処理はステップ１２８に移る。
【０１６３】
ステップ１２８において、ＣＰＵ３１は、ステップ１２７においてオブジェクトが配置されていないと判断したマスを、移動先マスとして設定する。そして、ＣＰＵ３１は、設定した移動先マスの座標を示すデータで、移動先マス座標データＤｊを更新する。図２３は、ステップ１２８の処理の一例を具体的に説明するための模式図である。図２３において、移動対象パネルが位置する移動前マスの座標は（４，４）であり、タッチポインタ５７が指す最新タッチマスの座標は（５，６）である。この場合、図２３に示すように、移動先マスの座標は、移動前マスの座標（４，４）から、タッチポインタ５７が移動したＹ軸正方向に隣接する（１ずらした）座標（４，５）となる。
【０１６４】
次に、ステップ１２９において、ＣＰＵ３１は、移動前マスの頂点のうち、当該移動前マスから視てステップ１２８で設定した移動先マスがある方向（側）の２つの頂点を、特定頂点として選択する。この処理によって、例えば図２３では、移動前マスの頂点ｄおよび頂点ｇが特定頂点として選択される。その後、処理はステップ１３３に移る。
【０１６５】
次に、ステップ１２７でＹｅｓと判断されて処理がステップ１３０に移った場合について説明する。この場合、ステップ１３０において、ＣＰＵ３１は、移動前マスのＸＹ座標成分のうちＸ軸成分のみを、最新タッチマスの座標のＸ軸成分の値に１近づけた座標のマスに、オブジェクトが配置されているか否かを判断する。オブジェクトが配置されている場合（ステップ１３０でＹｅｓ）、処理はステップ１０５に戻る。一方、オブジェクトが配置されていない場合（ステップ１３０でＮｏ）、処理はステップ１３１に移る。
【０１６６】
ステップ１３１において、ＣＰＵ３１は、ステップ１３０においてオブジェクトが配置されていないと判断したマスを、移動先マスとして設定する。そして、ＣＰＵ３１は、設定した移動先マスの座標を示すデータで、移動先マス座標データＤｊを更新する。図２４は、ステップ１３１の処理の一例を具体的に説明するための模式図である。図２４において、移動対象パネルが位置する移動前マスの座標は（４，４）であり、タッチポインタ５７が指す最新タッチマスの座標は（５，６）であり、移動前マスのＹ軸正方向に隣接するマス（座標（４，５））にはオブジェクトが配置されている。この場合、図２４に示すように、移動先マスの座標は、移動前マスの座標（４，４）から、タッチポインタ５７が移動したＸ軸正方向に隣接する座標（５，４）となる。
【０１６７】
次に、ステップ１３２において、ＣＰＵ３１は、移動前マスの頂点のうち、当該移動前マスから視てステップ１３１で設定した移動先マスがある方向（側）の２つの頂点を、特定頂点として選択する。この処理によって、例えば図２４では、移動前マスの頂点ｄおよび頂点ｅが特定頂点として選択される。その後、処理はステップ１３３に移る。
【０１６８】
ステップ１３３において、ＣＰＵ３１は、ステップ１２６、１２９、１３２のいずれかで選択した２つの特定頂点に対して、図１７のステップ３０６の処理として既に説明したパネル移動頂点のカウント処理を行う（図１８参照）。なお、既に説明したように、このパネル移動頂点のカウント処理によって、パネル移動頂点の数量および位置が決定される。
【０１６９】
次に、ステップ１３４において、ＣＰＵ３１は、パネル移動頂点数量データＤｐを参照して、ステップ１３３でカウントされたパネル移動頂点の数量が１か否かを判断する。パネル移動頂点の数量が１ではない場合（ステップ１３４でＮｏ）、処理はステップ１３６に移る。一方、パネル移動頂点の数量が１である場合（ステップ１３４でＹｅｓ）、処理はステップ１３５に移る。
【０１７０】
ステップ１３５において、ＣＰＵ３１は、仮想ゲーム空間において、移動対象パネルを、移動先マスに、ステップ１３３で決定されたパネル移動頂点を支点にして回転移動させる。図５の例では、移動対象パネルＰが、パネル移動頂点ｋを支点にして回転移動している。その後、処理はステップ１３８に移る。
【０１７１】
ステップ１３４でＮｏと判断された場合、ステップ１３６において、ＣＰＵ３１は、パネル移動頂点数量データＤｐを参照して、ステップ１３３でカウントされたパネル移動頂点の数量が２か否かを判断する。パネル移動頂点の数量が２ではない場合（ステップ１３６でＮｏ；つまり、パネル移動頂点の数量が０の場合）、処理は図１４のステップ１１８に移る。一方、パネル移動頂点の数量が２である場合（ステップ１３６でＹｅｓ）、処理はステップ１３７に移る。
【０１７２】
ステップ１３７において、ＣＰＵ３１は、仮想ゲーム空間において、移動対象パネルを、パネル移動先マスに、ステップ１３３で決定された２つのパネル移動頂点を結ぶ直線を対称軸にして反転移動させる。図８の例では、移動対象パネルＰが、２つのパネル移動頂点ｃおよびｂを結ぶ直線を対称軸にして反転移動している。その後、処理はステップ１３８に移る。
【０１７３】
ステップ１３８において、ＣＰＵ３１は、移動対象パネルを移動先マスに移動させるアニメーションの表示を開始する。なお、ステップ１３５からステップ１３８のルートで処理が行われた場合、ステップ１３８おいて、ＣＰＵ３１は、移動対象パネルを移動先マスに回転移動させるアニメーションを、下側ＬＣＤ１２に表示する（図５参照）。また、ステップ１３７からステップ１３８のルートで処理が行われた場合、ステップ１３８おいて、ＣＰＵ３１は、移動対象パネルを移動先マスに反転移動させるアニメーションを、下側ＬＣＤ１２に表示する（図８参照）。
【０１７４】
次に、ステップ１３９において、ＣＰＵ３１は、移動アニメーション実行中フラグデータＤｑが示す移動アニメーション実行中フラグをＯＮにする。
【０１７５】
次に、ステップ１４０において、ＣＰＵ３１は、移動先マスを移動前マスとして置き換える。具体的には、ＣＰＵ３１は、移動先マス座標データＤｊが示す移動先マスの座標データで、移動前マス座標データＤｈを更新する。このことによって、移動対象パネルを連続して移動できることとなる。その後、処理はステップ１０５に戻る。
【０１７６】
以下では、図１４のステップ１０８からステップ１０９のルートで処理が行われ、その後、ステップ１０９でＹｅｓと判断された場合について説明する。すなわち、タッチが離された瞬間の処理について説明する。この場合、処理はステップ１４１に移る。
【０１７７】
ステップ１４１において、ＣＰＵ３１は、タッチ中フラグデータＤｆが示すタッチ中フラグをＯＦＦにする。
【０１７８】
次に、ステップ１４２において、ＣＰＵ３１は、ステップ１１８の処理によって表示されていたシルエットおよび強調表示頂点の表示を（図４および図７を参照）非表示にする。
【０１７９】
次に、ステップ１４３において、ＣＰＵ３１は、例えば図１０に示すように、パネルが有する管が、エネルギＯＢＪ５２とノズルＯＢＪ５１とを繋いだステージクリアの所定の状態になったか否かを判断する。所定の状態になっていない場合（ステップ１４３でＮｏ）、処理はステップ１１０に移り、その後ステップ１０５に戻る。一方、所定の状態になった場合（ステップ１４３でＹｅｓ）、処理はステップ１４４に移る。
【０１８０】
ステップ１４４において、ＣＰＵ３１は、今回のステージがクリアされたことを示す画像を、上側ＬＣＤ２２および下側ＬＣＤ１２に表示する。具体的には、例えば、図１１に示すように、エネルギＯＢＪ５２とノズルＯＢＪ５１とを繋いだ管を通ってエネルギがロケット５０に注入され（矢印を参照）、図１２に示すように、ロケット５０がノズルＯＢＪ５１から煙６０を噴出させて飛び立つ画像を、上側ＬＣＤ２２および下側ＬＣＤ１２に表示する。
【０１８１】
次に、ステップ１４５において、ＣＰＵ３１は、今回のステージが、最終ステージか否かを判断する。最終ステージである場合（ステップ１４５でＹｅｓ）、全ての処理は終了し、ゲームは終了する。あるいは、全てのステージをクリアした画面（エンディング画面）を表示した後に、ゲームを終了してもよい。一方、最終ステージでない場合（ステップ１４５でＮｏ）、処理はステップ１４６に移る。
【０１８２】
ステップ１４６において、ＣＰＵ３１は、次のステージを選択する。その後、処理はステップ１０４に戻る。なお、ＣＰＵ３１は、次のステージをプレイヤに選択させてもよい。この場合、ステップ１４６の処理は行われず、処理はステップ１０２に戻ることとなる。
【０１８３】
以上に説明したように、本発明によれば、プレイヤが移動を所望する移動対象パネルは、当該移動対象パネルに対する他のオブジェクトの隣接状態に応じて、回転移動または反転移動の異なる移動態様をとる。また、本発明によれば、プレイヤがタッチペン等でタッチパネルをタッチしていない期間には、パネルの移動態様（回転移動または反転移動）の決定に関連する全ての頂点（表示頂点）が白丸で表示される。このことによって、プレイヤは、各パネルの移動態様（回転移動または反転移動）を予測できる。また、本発明によれば、プレイヤがタッチポインタで移動対象パネルを指定している期間に、当該移動対象パネルの移動後のシルエットが表示される。このことによって、プレイヤは、移動対象パネルの移動後の状態を視認できる。また、本発明によれば、プレイヤがタッチポインタで移動対象パネルを指定している期間に、当該移動対象パネルの移動態様（回転移動または反転移動）の決定に関連する頂点（パネル移動頂点）が二重丸で強調して表示される。このことによって、プレイヤは、指定した移動対象パネルの移動態様（回転移動または反転移動）を直感的に予測できる。以上のことから、本発明によれば、興趣性の高いゲームをプレイヤに提供することができる。
【０１８４】
なお、以上では、タッチポインタ５７の表示は星印とした（図４等参照）。しかし、これには限られず、プレイヤがタッチポインタ５７の表示を視認できればよく、例えば、発光表示等でもよい。
【０１８５】
また、以上では、表示頂点の表示は白丸とした（図３参照）。しかし、これには限られず、プレイヤが表示頂点の表示を視認できればよく、例えば、発光表示等でもよい。
【０１８６】
また、以上では、強調表示頂点の表示は二重丸とした（図４等参照）。しかし、これには限られず、プレイヤが強調表示頂点の表示を視認できればよく、例えば、発光表示等でもよい。ただし、強調表示頂点の表示は、表示頂点の表示よりも目立つ表示が好ましい。
【０１８７】
また、以上では、プレイヤがタッチパネルをタッチしていない時には、パネルの移動態様（回転移動または反転移動）の決定に関連する全ての頂点が白丸で表示された（図３参照）。しかし、この白丸を表示しないこととしてもよい。このことによって、プレイヤにとってパネルの移動態様の予測が困難となるので、ゲームの難易度を上げることができる。
【０１８８】
また、以上では、プレイヤがタッチポインタで移動対象パネルを指定した時に、当該移動対象パネルの移動態様（回転移動または反転移動）の決定に関連する頂点（パネル移動頂点）が二重丸で強調して表示された（図４等参照）。しかし、この二重丸を表示しないこととしてもよい。このことによって、プレイヤにとって移動対象パネルの移動態様の予測が困難となるので、ゲームの難易度を上げることができる。
【０１８９】
また、以上では、プレイヤがタッチポインタで移動対象パネルを指定した時に、当該移動対象パネルの移動後のシルエットが表示された（図４等参照）。しかし、このシルエットを表示しないこととしてもよい。このことによって、プレイヤは移動対象パネルの移動後の状態を視認できなくなるので、ゲームの難易度を上げることができる。
【０１９０】
更には、シルエットの代わりに、所定のマーク（指標；例えばダイヤのマーク等）を表示してもよい。このことによって、プレイヤは、移動対象パネルの移動後の状態は視認できないものの、移動対象パネルが次に移動できるマスを認識することはできる。
【０１９１】
また、以上では、マスおよびオブジェクトが正方形である場合を説明した。しかし、マスおよびオブジェクトの形状はこれには限られない。例えば、マスおよびオブジェクトは、正三角形であってもよい。この場合、例えば図２５の（ａ）に示すように、正三角形の移動対象パネルは、パネル移動頂点の数量が１であるために、パネル移動頂点ｉを支点として回転移動することとなる。また、例えば図２５の（ｂ）に示すように、正三角形の移動対象パネルは、パネル移動頂点の数量が２であるために、２つのパネル移動頂点ｉおよびｊを結ぶ直線を対称軸として反転移動することとなる。また、例えば、マスおよびオブジェクトは、正六角形であってもよい。この場合、例えば図２６の（ａ）に示すように、正六角形の移動対象パネルは、パネル移動頂点の数量が１であるために、パネル移動頂点ｋを支点として回転移動することとなる。また、例えば図２６の（ｂ）に示すように、正六角形の移動対象パネルは、パネル移動頂点の数量が２であるために、２つのパネル移動頂点ｋおよびｍを結ぶ直線を対称軸として反転移動することとなる。また、例えば、マスが正方形であり、オブジェクトが正方形のマスを２つ連結した長方形であってもよい。この場合、例えば図２７の（ａ）に示すように、長方形の移動対象パネルは、パネル移動頂点の数量が１であるために、パネル移動頂点ｎを支点として回転移動することとなる。また、例えば図２７の（ｂ）に示すように、長方形の移動対象パネルは、パネル移動頂点の数量が２であるために、２つのパネル移動頂点ｎおよびｏを結ぶ直線を対称軸として反転移動することとなる。
【０１９２】
また、以上では、ノズルＯＢＪ５１およびエネルギＯＢＪ５２は透明の部分を有し、パネル（Ｌ字管パネル５３、Ｉ字管パネル５４、および管ナシパネル５５）は透明の部分を有さないものとした。しかし、パネルも、透明の部分を有してもよい。例えば、透明の正方形に、図形やキャラクタ等が描かれたパネルが存在してもよい。
【０１９３】
また、以上では、一例として、パネル（可動オブジェクト）として、Ｌ字管パネル５３、Ｉ字管パネル５４、および管ナシパネル５５があるものとして説明した。しかし、他の種類のパネルがあってもよく、例えば、パネル（可動オブジェクト）として、十字形状の管を有する十字管パネルがあってもよい。また、同様に、非可動オブジェクトとして、ノズルＯＢＪ５１やエネルギＯＢＪ５２以外のオブジェクトがあってもよい。
【０１９４】
また、以上では、図１４のステップ１０９でＮｏの場合、処理はステップ１１０に移った。しかし、例えば、図１４のステップ１０９でＮｏの場合、処理はステップ１４３に移ってもよい。この場合、ステップ１０９でＹｅｓの場合もＮｏの場合も、ステップ１４３でステージクリアの所定状態になったか否かが判断されることとなる。
【０１９５】
また、以上では、パズルゲームを一例に用いて、パネルが有する管が所定のオブジェクト間を繋いだ状態を、ステージクリアの所定状態とした。しかし、ステージクリアの所定状態はこれには限られず、パズルを構成するピース群（オブジェクト群）が何らかの所定状態となればよい。更には、本発明によって実現するゲームは、パズルゲームには限られず、単にオブジェクトを移動させてプレイヤが望む形状を創作するオブジェクト移動ゲームであってもよい。この場合、ステージクリアしたか否かは判断されないこととなる。また、更には、本発明によって実現するゲームは、アクションゲーム等であって、以上で説明した移動方法（回転移動または反転移動）を用いてキャラクタを移動させてもよい。
【０１９６】
また、以上では、一例として、移動対象パネルをタッチして特定し、タッチしたまま移動対象パネルをドラッグして移動させた。しかし、移動対象パネルを特定して移動させる方法は、これには限られない。例えば、最初のタッチで移動対象パネルを特定し、次のタッチで移動先マスを特定して、移動対象パネルを移動させてもよい。更には、タッチパネル１３を用いるのではなく、操作ボタン１４を用いて、移動対象パネルを特定して移動させてもよい。例えば、方向入力ボタン１４Ａを操作してパネルが配置されたマスを選択して操作ボタン１４Ｂを押下することによって移動対象パネルを特定し、その後、方向入力ボタン１４Ａを操作して移動対象パネルを移動させてもよい。また、更には、タッチパネル１３を用いるのではなく、マウス等のポインティングデバイスを用いて、移動対象パネルを特定して移動させてもよい。また、１以上のパネルまたは全てのパネルが移動対象パネルとして予め設定されており、オブジェクト（パネルを含む）が存在しない位置をプレイヤがタッチすると、タッチされた位置に向かって移動対象パネルが回転または反転して移動するようにしてもよい。また、更には、１以上のパネルまたは全てのパネルが移動対象パネルとして予め設定されており、オブジェクト（パネルを含む）が存在しない位置をプレイヤがタッチしてドラッグすると、ドラッグされた方向に移動対象パネルが回転または反転して移動するようにしてもよい。
【０１９７】
また、以上では、図１４のステップ１０４において、ステップ１０３でステージが選択される毎に当該選択されたステージに対応するオブジェクト群のデータがメインメモリ３２に読み込まれて使用された。しかし、ステップ１０１の初期設定処理において全てのステージに対応するオブジェクト群のデータが予めメインメモリ３２に読み込まれ、その後、ステップ１０４において、ステップ１０３で選択されたステージに対応するオブジェクト群のデータが使用されてもよい。
【０１９８】
また、以上では、２画面分の液晶表示部の一例として、物理的に分離された下側ＬＣＤ１２および上側ＬＣＤ２２を互いに上下に配置した場合（上下２画面の場合）を説明した。しかし、２画面分の表示画面の構成は、他の構成でもかまわない。例えば、下側ハウジング１１の主面の一方に、下側ＬＣＤ１２および上側ＬＣＤ２２を配置してもよい。また、例えば、下側ハウジング１１の主面の一方に、下側ＬＣＤ１２と上側ＬＣＤ２２とを合わせたサイズのＬＣＤを１つ配置してもよい。また、例えば、下側ＬＣＤ１２または上側ＬＣＤ２２の一方のみが設けられ、設けられたＬＣＤに、以上の説明において下側ＬＣＤ１２に表示される画像が表示されてもよい。
【０１９９】
また、以上では、ゲーム装置１にタッチパネル１３が一体的に設けられている場合を説明した。しかし、ゲーム装置とタッチパネルとを別体にして構成しても、本発明を実現できることは言うまでもない。
【０２００】
また、ゲームコントローラをプレイヤが把持してゲームを楽しむ据置型のゲーム装置によって本発明を実現する場合、他の態様のポインティングデバイスも考えられる。例えば、ゲームコントローラのハウジングに固設されたカメラを、ポインティングデバイスとして利用することも可能である。この場合、ゲームコントローラのハウジングで指し示した位置の変化に応じてカメラが撮像する撮像画像が変化する。したがって、この撮像画像を解析することにより、表示画面に対して上記ハウジングで指し示した座標を算出することができる。
【０２０１】
また、以上では、携帯型のゲーム装置１を用いて説明したが、一般的なパーソナルコンピュータ等の情報処理装置で本発明のゲームプログラムを実行して、本発明を実現してもよい。
【０２０２】
また、上述したゲーム装置１の形状や、それに設けられている各種操作ボタン１４やタッチパネル１３の形状、数、および設置位置等は、単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述したゲーム処理で用いられる処理順序、設定値、判定に用いられる値等は、単なる一例に過ぎず他の順序や値であっても、本発明を実現できることは言うまでもない。
【０２０３】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【符号の説明】
【０２０４】
１    ゲーム装置
１１    下側ハウジング
１２    下側ＬＣＤ
１３    タッチパネル
１４    操作ボタン
１５、２６    ＬＥＤ
１６    マイクロフォン用孔
２１    上側ハウジング
２２    上側ＬＣＤ
２３    内側カメラ
２４    音抜き孔
２５    外側カメラ
２７    タッチペン
２８、２９    メモリカード
３１    ＣＰＵ
３２    メインメモリ
３３    メモリ制御回路
３４    保存用データメモリ
３５    プリセットデータ用メモリ
３６、３７    メモリカードＩ／Ｆ
３８    無線通信モジュール
３９    ローカル通信モジュール
４０    ＲＴＣ
４１    電源回路
４２    Ｉ／Ｆ回路
４３    マイク
４４    アンプ
５１〜５５    オブジェクト
５７    タッチポインタ
５９    シルエット
【図１】
0005457768.tif 000002
【図２】
0005457768.tif 000003
【図３】
0005457768.tif 000004
【図４】
0005457768.tif 000005
【図５】
0005457768.tif 000006
【図６】
0005457768.tif 000007
【図７】
0005457768.tif 000008
【図８】
0005457768.tif 000009
【図９】
0005457768.tif 000010
【図１０】
0005457768.tif 000011
【図１１】
0005457768.tif 000012
【図１２】
0005457768.tif 000013
【図１３】
0005457768.tif 000014
【図１４】
0005457768.tif 000015
【図１５】
0005457768.tif 000016
【図１６】
0005457768.tif 000017
【図１７】
0005457768.tif 000018
【図１８】
0005457768.tif 000019
【図１９】
0005457768.tif 000020
【図２０】
0005457768.tif 000021
【図２１】
0005457768.tif 000022
【図２２】
0005457768.tif 000023
【図２３】
0005457768.tif 000024
【図２４】
0005457768.tif 000025
【図２５】
0005457768.tif 000026
【図２６】
0005457768.tif 000027
【図２７】
0005457768.tif 000028