(57)【特許請求の範囲】
【請求項１】
記憶手段、表示手段および操作手段を備えるパズルゲーム装置のパズルゲームプログラムであって、
前記パズルゲーム装置のコンピュータに、
前記記憶手段に記憶される画像データを用いて、少なくとも１つの受容部が設けられた回転オブジェクトを複数配置するとともに、少なくとも１つの移動オブジェクトがいずれかの受容部に受容されたゲーム画像を前記表示手段に表示するゲーム画像表示ステップ、
プレイヤの操作に応じて前記操作手段から入力される操作データに従って前記回転オブジェクトを回転させる回転処理ステップ、
前記移動オブジェクトが受容された第１受容部と、当該第１受容部が設けられる回転オブジェクトとは異なる他の回転オブジェクトに設けられた第２受容部との間において当該移動オブジェクトが移動可能であることの接続設定が有るかどうかを判断する接続設定判断ステップ、
前記回転処理ステップによって前記回転オブジェクトを回転させた結果、前記接続設定判断ステップによって前記接続設定が有ると判断された前記第１受容部と前記第２受容部とが所定の関係になったか否かを判別する関係判別ステップ、および
前記関係判別ステップによって所定の関係になったことが判別されたとき、前記移動オブジェクトを前記第１受容部から前記第２受容部に移動するように前記ゲーム画像を更新する移動処理ステップを実行させる、パズルゲームプログラム。
【請求項２】
前記記憶手段には、前記移動オブジェクトおよび前記回転オブジェクトのそれぞれの属性が設定されており、
前記移動オブジェクトの属性と前記移動オブジェクトが受容された回転オブジェクトの属性とが同一か否かを判別する属性判別ステップ、および
前記属性判別ステップによって同一であると判別されたとき、ゲームの進行を変化させるゲーム処理ステップを前記コンピュータにさらに実行させる、請求項１記載のパズルゲームプログラム。
【請求項３】
前記回転オブジェクトは、前記プレイヤの操作を許容する第１回転オブジェクトと、前記プレイヤの操作を許容しない第２回転オブジェクトとを含み、
前記回転処理ステップは、前記プレイヤの操作に応じて前記操作手段から入力される操作データに従って前記第１回転オブジェクトを回転させたとき、前記第１回転オブジェクトの回転に基づいて前記第２回転オブジェクトを回転させる、請求項１または２記載のパズルゲームプログラム。
【請求項４】
前記回転オブジェクトは、複数の前記第１回転オブジェクトおよび複数の前記第２回転オブジェクトを含み、
前記回転処理ステップは、少なくとも１つの前記第１回転オブジェクトの回転に基づいて、１つまたは複数の前記第２回転オブジェクトを回転させる、請求項３記載のパズルゲームプログラム。
【請求項５】
前記回転処理ステップによって前記回転オブジェクトを回転させた結果に基づいて、前記回転オブジェクトに設定される基準位置に対する前記第１受容部の第１角度と他の前記回転オブジェクトに設定される基準位置に対する前記第２受容部の第２角度とをそれぞれ算出する角度算出ステップを前記コンピュータにさらに実行させ、
前記関係判別ステップは、前記第１角度と前記第２角度との差が所定範囲内であるか否かを判別し、
前記移動処理ステップは、前記関係判別ステップによって前記差が所定範囲内であることが判別されたとき、前記記憶手段に記憶された前記移動オブジェクトの位置データを更新して、当該移動オブジェクトを前記第１受容部から前記第２受容部に移動するように前記ゲーム画像を更新する、請求項１ないし４のいずれかに記載のパズルゲームプログラム。
【請求項６】
プレイヤの操作によって指示された画面上の位置を前記操作手段から入力される操作データに従って検出する位置検出ステップ、および
前記位置検出ステップによって検出された位置が前記回転オブジェクトを指示しているか否かを判別する位置判別ステップを前記コンピュータにさらに実行させ、
前記回転処理ステップは、前記位置判別ステップによって前記回転オブジェクトを指示していることが判別されたとき、所定時間毎の位置変化に基づいて前記回転オブジェクトを回転させる、請求項１または２記載のパズルゲームプログラム。
【請求項７】
少なくとも１つの受容部が設けられた回転オブジェクトを複数配置するとともに、少なくとも１つの移動オブジェクトがいずれかの受容部に受容されたゲーム画像を表示するゲーム画像表示手段、
プレイヤの操作に応じて前記回転オブジェクトを回転させる回転処理手段、
前記移動オブジェクトが受容された第１受容部と、当該第１受容部が設けられる回転オブジェクトとは異なる他の回転オブジェクトに設けられた第２受容部との間において当該移動オブジェクトが移動可能であることの接続設定が有るかどうかを判断する接続設定判断手段、
前記回転処理手段によって前記回転オブジェクトを回転させた結果、前記接続設定判断手段によって前記接続設定が有ると判断された前記第１受容部と前記第２受容部とが所定の関係になったか否かを判別する関係判別手段、および
前記関係判別手段によって所定の関係になったことが判別されたとき、前記移動オブジェクトを前記第２受容部に移動させる移動処理手段を備える、パズルゲーム装置。
【請求項８】
少なくとも１つの受容部が設けられた回転オブジェクトを複数配置するとともに、少なくとも１つの移動オブジェクトがいずれかの受容部に受容されたゲーム画像を表示するゲーム画像表示手段、
プレイヤの操作に応じて前記回転オブジェクトを回転させる回転処理手段、
前記移動オブジェクトが受容された第１受容部と、当該第１受容部が設けられる回転オブジェクトとは異なる他の回転オブジェクトに設けられた第２受容部との間において当該移動オブジェクトが移動可能であることの接続設定が有るかどうかを判断する接続設定判断手段、
前記回転処理手段によって前記回転オブジェクトを回転させた結果、前記接続設定判断手段によって前記接続設定が有ると判断された前記第１受容部と前記第２受容部とが所定の関係になったか否かを判別する関係判別手段、および
前記関係判別手段によって所定の関係になったことが判別されたとき、前記移動オブジェクトを前記第２受容部に移動させる移動処理手段を備える、パズルゲームシステム。
【請求項９】
記憶手段、表示手段および操作手段を備えるパズルゲーム装置のゲーム制御方法であって、
前記パズルゲーム装置のコンピュータは、
（ａ）前記記憶手段に記憶される画像データを用いて、少なくとも１つの受容部が設けられた回転オブジェクトを複数配置するとともに、少なくとも１つの移動オブジェクトがいずれかの受容部に受容されたゲーム画像を前記表示手段に表示し、
（ｂ）プレイヤの操作に応じて前記操作手段から入力される操作データに従って前記回転オブジェクトを回転させ、
（ｃ）前記移動オブジェクトが受容された第１受容部と、当該第１受容部が設けられる回転オブジェクトとは異なる他の回転オブジェクトに設けられた第２受容部との間において当該移動オブジェクトが移動可能であることの接続設定が有るかどうかを判断し、
（ｄ）前記ステップ（ｂ）において前記回転オブジェクトを回転させた結果、前記ステップ（ｃ）において前記接続設定が有ると判断された前記第１受容部と前記第２受容部とが所定の関係になったか否かを判別し、そして
（ｅ）前記ステップ（ｄ）において所定の関係になったことを判別したとき、前記移動オブジェクトを前記第１受容部から前記第２受容部に移動するように前記ゲーム画像を更新する、ゲーム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はパズルゲームプログラム、パズルゲーム装置、パズルゲームシステムおよびゲーム制御方法に関し、特にたとえば、パズルゲームをプレイするための、パズルゲームプログラム、パズルゲーム装置、パズルゲームシステムおよびゲーム制御方法に関する。
【背景技術】
【０００２】
この種の従来のパズルゲームの一例が、特許文献１に開示される。この特許文献１に開示されるパズルゲームでは、たとえば、表示画面内に表示された複数の球のうちの任意の球を中心としてその周囲の玉を回転移動させる。このパズルゲームでは、表示画面内に規則正しく正三角形の格子模様に様々な属性の複数の玉が表示される。そして、コントローラの操作によって選択された中心座標と半径とに基づいて、該当する複数の玉がある場合には、最小単位の形の属性を玉と同一の属性に変え、画面上の玉が同一属性の玉で囲まれている場合には、囲まれた玉と同一の属性に変える。
【０００３】
また、この種のパズルゲームの他の例が非特許文献１に示される。この非特許文献１に開示されるパズルゲームでは、色の異なる三角形のオブジェクトがランダムにゲーム画面上方から落下し、ゲーム空間に配置される。プレイヤは、六角形状のダイヤルを移動および回転させることにより、同じ色の三角形オブジェクトを用いて六角形を作る。すると、その六角形がゲーム画面上から消える。つまり、六角形を構成する６つの三角形オブジェクトがゲーム空間から消去される。
【特許文献１】特開４００２−３０３２６５
【非特許文献１】http://www.nintendo.co.jp/n08/bit_g/index.html  「ＤＩＡＬＨＥＸ」
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１のパズルゲームは、或る玉を中心としてその周りの玉を回転移動させるだけなので、玉の移動の自由度が乏しく単調で意外性が無く、飽きられやすいという問題がある。同様に、非特許文献１のパズルゲームでは、ダイヤルで囲まれる複数の三角形のオブジェクトを回転させるだけなので、飽きられやすいという問題がある。
【０００５】
それゆえに、この発明の主たる目的は、新規な、パズルゲームプログラム、パズルゲーム装置、パズルゲームシステムおよびゲーム制御方法を提供することである。
【０００６】
また、この発明の他の目的は、斬新なパズルゲームをプレイできる、パズルゲームプログラム、パズルゲーム装置、パズルゲームシステムおよびゲーム制御方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００８】
第１の発明は、記憶手段、表示手段および操作手段を備えるパズルゲーム装置のパズルゲームプログラムであって、パズルゲーム装置のコンピュータに、ゲーム画像表示ステップ、回転処理ステップ、接続設定判断ステップ、関係判別ステップ、および移動処理ステップを実行させる。ゲーム画像表示ステップは、記憶手段に記憶される画像データを用いて、少なくとも１つの受容部が設けられた回転オブジェクトを複数配置するとともに、少なくとも１つの移動オブジェクトがいずれかの受容部に受容されたゲーム画像を表示手段に表示する。回転処理ステップは、プレイヤの操作に応じて操作手段から入力される操作データに従って回転オブジェクトを回転させる。接続設定判断ステップは、移動オブジェクトが受容された第１受容部と、当該第１受容部が設けられる回転オブジェクトとは異なる他の回転オブジェクトに設けられた第２受容部との間において当該移動オブジェクトが移動可能であることの接続設定が有るかどうかを判断する。関係判別ステップは、回転処理ステップによって回転オブジェクトを回転させた結果、接続設定判断ステップによって接続設定が有ると判断された第１受容部と第２受容部とが所定の関係になったか否かを判別する。そして、移動処理ステップは、関係判別ステップによって所定の関係になったことが判別されたとき、当該移動オブジェクトを第１受容部から第２受容部に移動するようにゲーム画像を更新する。
【０００９】
請求項１の発明では、パズルゲーム装置（１０）は、記憶手段（２８，４２）、表示手段（１２，１４）および操作手段（２２，２４）を備える。パズルゲームプログラムは、このパズルゲーム装置のコンピュータに、ゲーム画像表示ステップ（３４，Ｓ３，Ｓ５３，Ｓ１２３）、回転処理ステップ（３４，Ｓ７）、接続設定判断ステップ（３４，Ｓ９，Ｓ７３）、関係判別ステップ（３４，Ｓ９，Ｓ８３）、および移動処理ステップ（３４，Ｓ１１）を実行させる。ゲーム画像表示ステップは、記憶手段に記憶される画像データを用いて、少なくとも１つの受容部が設けられた回転オブジェクトを複数配置するとともに、少なくとも１つの移動オブジェクトがいずれかの受容部に受容されたゲーム画像（３００，３２０）を表示手段に表示する。回転処理ステップは、プレイヤの操作に応じて操作手段から入力される操作データに従って回転オブジェクト（３０２，３０４，３０６，３２２，３２４，３２６）を回転させる。たとえば、プレイヤが、回転オブジェクト上で、スライド操作するとき、このスライド操作に従って回転オブジェクトを回転させる。接続設定判断ステップは、移動オブジェクト（３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂ）が受容された第１受容部（３０２ａ，３０２ｂ，３０４ａ，３０４ｂ，３０６ａ，３０６ｂ，３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂ）と、当該第１受容部が設けられる回転オブジェクトとは異なる他の回転オブジェクトに設けられた第２受容部（３０２ａ，３０２ｂ，３０４ａ，３０４ｂ，３０６ａ，３０６ｂ，３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂ）との間において当該移動オブジェクトが移動可能であることの接続設定が有るかどうかを判断する。関係判別ステップは、回転処理ステップによって回転オブジェクトを回転させた結果、接続設定判断ステップによって接続設定が有ると判断された第１受容部と第２受容部とが所定の関係になったか否かを判別する。たとえば、移動オブジェクトが移動可能な接続設定のなされた第１受容部と第２受容部とが、一直線上またはほぼ一直線上に並んだ状態になったかどうかを判別する。そして、移動処理ステップは、関係判別ステップによって所定の関係になったことが判別されたとき、記憶手段に記憶された移動オブジェクトの位置データを更新して、当該移動オブジェクトを第１受容部から第２受容部に移動するようにゲーム画像を更新する。
【００１０】
第１の発明によれば、受容部が設けられた複数の回転オブジェクトを回転させることによって、或る回転オブジェクトの受容部に受容されている移動オブジェクトを他の回転オブジェクトの受容部に移動させていくので、斬新なパズルゲームを提供することができる。
【００１１】
第２の発明は第１の発明に従属し、記憶手段には、移動オブジェクトおよび回転オブジェクトのそれぞれの属性が設定されており、移動オブジェクトの属性と移動オブジェクトが受容された回転オブジェクトの属性とが同一か否かを判別する属性判別ステップ、および属性判別ステップによって同一であると判別されたとき、ゲームの進行を変化させるゲーム処理ステップをコンピュータにさらに実行させる。
【００１２】
第２の発明では、記憶手段には、移動オブジェクトおよび回転オブジェクトのそれぞれの属性（たとえば、色）が設定（記憶）されている。パズルゲームプログラムは、属性判別ステップ（３４，Ｓ１３）およびゲーム処理ステップ（３４，Ｓ１５）をコンピュータにさらに実行させる。属性判別ステップは、移動オブジェクトの属性と移動オブジェクトが受容された回転オブジェクトの属性とが同一か否かを判別する。ゲーム処理ステップは、属性判別ステップによって同一であると判別されたとき、ゲームの進行を変化させる。たとえば、すべての移動オブジェクトの属性と、移動オブジェクトが受容された回転オブジェクトの属性とが一致したとき、パズルを解いた（ゲームクリア）と判別する。
【００１３】
第２の発明によれば、プレイヤは移動オブジェクトが同じ属性の回転オブジェクトに受容されるように戦略的に回転オブジェクトを回転させることを要求されるので、面白さに優れたパズルゲームを提供することができる。
【００１４】
第３の発明は第１または第２の発明に従属し、回転オブジェクトは、プレイヤの操作を許容する第１回転オブジェクトと、プレイヤの操作を許容しない第２回転オブジェクトとを含み、回転処理ステップは、プレイヤの操作に応じて操作手段から入力される操作データに従って第１回転オブジェクトを回転させたとき、第１回転オブジェクトの回転に基づいて第２回転オブジェクトを回転させる。
【００１５】
第３の発明では、回転オブジェクトは、プレイヤの操作を許容する第１回転オブジェクト（３２２，３２４，３２６）と、プレイヤの操作を許容しない第２回転オブジェクト（３０２，３０４，３０６）とを含む。回転処理ステップは、プレイヤの操作に応じて操作手段から入力される操作データに従って第１回転オブジェクトを回転させたとき、第１回転オブジェクトの回転に基づいて第２回転オブジェクトを回転させる。たとえば、第１回転オブジェクトが回転させると、これに対応して、同じ方向に同じ回転量（角度）だけ第２回転オブジェクトを回転させる。ただし、第２回転オブジェクトの回転方向は逆向きでもよく、その回転量は第１回転オブジェクトの回転量よりも多くても少なくてもよい。
【００１６】
第３の発明によれば、プレイヤの操作によって回転させた回転オブジェクトに連動して対応する他の回転オブジェクトも回転させるので、戦略性の高いパズルゲームを提供することができる。
【００１７】
第４の発明は第３の発明に従属し、回転オブジェクトは、複数の第１回転オブジェクトおよび複数の第２回転オブジェクトを含み、回転処理ステップは、少なくとも１つの第１回転オブジェクトの回転に基づいて、１つまたは複数の第２回転オブジェクトを回転させる。
【００１８】
第４の発明では、回転オブジェクトは、複数の第１回転オブジェクトおよび複数の第２回転オブジェクトを含む。回転処理ステップは、少なくとも１つの第１回転オブジェクトの回転に基づいて、１つまたは複数の第２回転オブジェクトを回転させる。つまり、１つの第１回転オブジェクトに連動して、２つ以上の第２回転オブジェクトが回転される。この場合、第１回転オブジェクトと第２回転オブジェクトとの数が同じであれば、第１回転オブジェクトに連動しない第２オブジェクトも存在し得る。
【００１９】
第４の発明によれば、第３の発明と同様に、戦略性の高いパズルゲームを提供することがでる。
【００２０】
第５の発明は第１ないし第４の発明に従属し、回転処理ステップによって回転オブジェクトを回転させた結果に基づいて、回転オブジェクトに設定される基準位置に対する第１受容部の第１角度と他の回転オブジェクトに設定される基準位置に対する第２受容部の第２角度とをそれぞれ算出する角度算出ステップをコンピュータにさらに実行させ、関係判別ステップは、第１角度と第２角度との差が所定範囲内であるか否かを判別し、移動処理ステップは、関係判別ステップによって差が所定範囲内であることが判別されたとき、記憶手段に記憶された移動オブジェクトの位置データを更新して、当該移動オブジェクトを第１受容部から第２受容部に移動するようにゲーム画像を更新する。
【００２１】
第５の発明では、パズルゲームプログラムは、角度算出ステップ（３４，Ｓ８１）をコンピュータにさらに実行させる。この角度算出ステップは、回転処理ステップによって回転オブジェクトを回転させた結果に基づいて、回転オブジェクトに設定される基準位置に対する第１受容部の第１角度と他の回転オブジェクトに設定される基準位置に対する第２受容部の第２角度とをそれぞれ算出する。関係判別ステップは、第１角度と第２角度との差が所定範囲内であるか否かを判別する。ただし、実施例においては、円盤状の回転オブジェクトを配置し、すべての回転オブジェクトの基準位置を同じ位置に設定し、また、所定の関係は第１受容部と第２受容部とが一直線上或いはほぼ一直線上に並ぶことを意味するため、第１角度と第２角度との差から１８０度引いた角度が所定範囲内であるか否かを判別するようにしてある。移動処理ステップは、関係判別ステップによって差が所定範囲内であることが判別されたとき、記憶手段に記憶された移動オブジェクトの位置データを更新して、当該移動オブジェクトを第１受容部から第２受容部に移動するようにゲーム画像を更新する。
【００２２】
第５の発明によれば、２つの回転オブジェクトの各受容部が所定の関係になったか否かを２つの受容部の角度差に基づいて判別するので、簡単な処理で判別することができる。
【００２３】
第６の発明は第１または第２の発明に従属し、プレイヤの操作によって指示された画面上の位置を操作手段から入力される操作データに従って検出する位置検出ステップ、および位置検出ステップによって検出された位置が回転オブジェクトを指示しているか否かを判別する位置判別ステップをコンピュータにさらに実行させ、回転処理ステップは、位置判別ステップによって回転オブジェクトを指示していることが判別されたとき、所定時間毎の位置変化に基づいて回転オブジェクトを回転させる。
【００２４】
第６の発明では、パズルゲームプログラムは、位置検出ステップ（３４，Ｓ３３，Ｓ３５）および位置判別ステップ（３４，Ｓ３７）をコンピュータにさらに実行させる。位置検出ステップは、プレイヤの操作によって指示された画面上の位置を操作手段から入力される操作データに従って検出する。位置判別ステップは、位置検出ステップによって検出された位置が回転オブジェクトを指示しているか否かを判別する。回転処理ステップは、位置判別ステップによって回転オブジェクトを指示していることが判別されたとき、所定時間毎の位置変化に基づいて回転オブジェクトを回転させる。
【００２５】
第６の発明によれば、プレイヤの操作によって指示された画面上の位置に従って回転オブジェクトを回転させるので、直感的に操作することができ、操作性を向上させることができる。
【００２６】
第７の発明は、ゲーム画像表示手段、回転処理手段、接続設定判断手段、関係判別手段、および移動処理手段を備えるパズルゲーム装置である。ゲーム画像表示手段は、少なくとも１つの受容部が設けられた回転オブジェクトを複数配置するとともに、少なくとも１つの移動オブジェクトがいずれかの受容部に受容されたゲーム画像を表示する。回転処理手段は、プレイヤの操作に応じて回転オブジェクトを回転させる。接続設定判断手段は、移動オブジェクトが受容された第１受容部と、当該第１受容部が設けられる回転オブジェクトとは異なる他の回転オブジェクトに設けられた第２受容部との間において当該移動オブジェクトが移動可能であることの接続設定が有るかどうかを判断する。関係判別手段は、回転処理手段によって回転オブジェクトを回転させた結果、接続設定判断手段によって接続設定が有ると判断された第１受容部と第２受容部とが所定の関係になったか否かを判別する。そして、移動処理手段は、関係判別手段によって所定の関係になったことが判別されたとき、移動オブジェクトを第２受容部に移動させる。
第８の発明は、ゲーム画像表示手段、回転処理手段、接続設定判断手段、関係判別手段、および移動処理手段を備えるパズルゲームシステムである。ゲーム画像表示手段は、少なくとも１つの受容部が設けられた回転オブジェクトを複数配置するとともに、少なくとも１つの移動オブジェクトがいずれかの受容部に受容されたゲーム画像を表示する。回転処理手段は、プレイヤの操作に応じて回転オブジェクトを回転させる。接続設定判断手段は、移動オブジェクトが受容された第１受容部と、当該第１受容部が設けられる回転オブジェクトとは異なる他の回転オブジェクトに設けられた第２受容部との間において当該移動オブジェクトが移動可能であることの接続設定が有るかどうかを判断する。関係判別手段は、回転処理手段によって回転オブジェクトを回転させた結果、接続設定判断手段によって接続設定が有ると判断された第１受容部と第２受容部とが所定の関係になったか否かを判別する。そして、移動処理手段は、関係判別手段によって所定の関係になったことが判別されたとき、移動オブジェクトを第２受容部に移動させる。
第９の発明は、記憶手段、表示手段および操作手段を備えるパズルゲーム装置のゲーム制御方法であって、パズルゲーム装置のコンピュータは、（ａ）記憶手段に記憶される画像データを用いて、少なくとも１つの受容部が設けられた回転オブジェクトを複数配置するとともに、少なくとも１つの移動オブジェクトがいずれかの受容部に受容されたゲーム画像を表示手段に表示し、（ｂ）プレイヤの操作に応じて操作手段から入力される操作データに従って回転オブジェクトを回転させ、（ｃ）移動オブジェクトが受容された第１受容部と、当該第１受容部が設けられる回転オブジェクトとは異なる他の回転オブジェクトに設けられた第２受容部との間において当該移動オブジェクトが移動可能であることの接続設定が有るかどうかを判断し、（ｄ）ステップ（ｂ）において回転オブジェクトを回転させた結果、ステップ（ｃ）において接続設定が有ると判断された第１受容部と第２受容部とが所定の関係になったか否かを判別し、そして（ｅ）ステップ（ｄ）において所定の関係になったことを判別したとき、移動オブジェクトを第１受容部から第２受容部に移動するようにゲーム画像を更新する。
【００２７】
第７ないし第９の発明においても、第１の発明と同様に、斬新なパズルゲームを提供することができる。
【発明の効果】
【００２８】
この発明によれば、受容部が設けられた複数の回転オブジェクトを回転させることによって、或る回転オブジェクトの受容部に受容されている移動オブジェクトを他の回転オブジェクトの受容部に移動させるので、斬新なパズルゲームを提供することができる。
【００２９】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００３０】
図１を参照して、この発明の実施例であるゲーム装置１０は、後述するように、パズルゲームプログラムを記憶することにより、パズルゲーム装置として機能する。このゲーム装置１０は、第１の液晶表示器（ＬＣＤ）１２および第２のＬＣＤ１４を含む。ＬＣＤ１２およびＬＣＤ１４は、所定の配置位置となるようにハウジング1６に収納される。この実施例では、ハウジング１６は、上側ハウジング１６ａと下側ハウジング１６ｂとによって構成され、ＬＣＤ１２は上側ハウジング１６ａに収納され、ＬＣＤ１４は下側ハウジング１６ｂに収納される。したがって、ＬＣＤ１２とＬＣＤ１４とは縦（上下）に並ぶように近接して配置される。
【００３１】
なお、この実施例では、表示器としてＬＣＤを用いるようにしてあるが、ＬＣＤに代えて、ＥＬ(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【００３２】
図１からも分かるように、上側ハウジング１６ａは、ＬＣＤ１２の平面形状よりも少し大きな平面形状を有し、一方主面からＬＣＤ１２の表示面を露出するように開口部が形成される。一方、下側ハウジング１６ｂは、その平面形状が上側ハウジング１６ａと略同じであり、その略中央部にＬＣＤ１４の表示面を露出するように開口部が形成される。下側ハウジング１６ｂのＬＣＤ１４の左方には電源スイッチ１８が設けられる。
【００３３】
また、上側ハウジング１６ａには、ＬＣＤ１２を挟んで左右に、スピーカ３６ａおよび３６ｂ（図２）のための音抜き孔２０ａおよび２０ｂが形成される。そして、下側ハウジング１６ｂには、マイク（図示せず）のためのマイク孔２０ｃが形成されるとともに、操作スイッチ２２（２２ａ，２２ｂ，２２ｃ，２２ｄ，２２ｅ，２２Ｌおよび２２Ｒ）が設けられる。
【００３４】
また、上側ハウジング１６ａと下側ハウジング１６ｂとは、上側ハウジング１６ａの下辺（下端）と下側ハウジング１６ｂの上辺（上端）の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、ＬＣＤ１２の表示面とＬＣＤ１４の表示面とが対面するように、上側ハウジング１６ａを回動させて折りたたんでおけば、ＬＣＤ１２の表示面およびＬＣＤ１４の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング１６ａと下側ハウジング１６ｂとは、回動可能に連結せずに、それらを一体的（固定的）に設けたハウジング１６を形成するようにしてもよい。
【００３５】
操作スイッチ２２は、方向指示スイッチ（十字スイッチ）２２ａ，スタートスイッチ２２ｂ、セレクトスイッチ２２ｃ、動作スイッチ（Ａボタン）２２ｄ、動作スイッチ（Ｂボタン）２２ｅ、動作スイッチ（Ｘボタン）２２ｆ、動作スイッチ（Ｙボタン）２２ｇ、動作スイッチ（Ｌボタン）２２Ｌおよび動作スイッチ（Ｒボタン）２２Ｒを含む。スイッチ２２ａは、下側ハウジング１６ｂの一方主面であり、ＬＣＤ１４の左側に配置される。その他のスイッチ２２ｂ−２２ｇは、下側ハウジング１６ｂの一方主面であり、ＬＣＤ１４の右側に配置される。さらに、スイッチ２２Ｌおよびスイッチ２２Ｒは、それぞれ、上側ハウジング１６ａとの連結部を挟む下側ハウジング１６ｂの上側面の左右角部に配置される。
【００３６】
方向指示スイッチ２２ａは、ディジタルジョイスティックとして機能し、４つの押圧部の１つを操作することによって、ユーザないしプレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。また、各押圧部には、特定の役割を割り当てることができ、４つの押圧部の１つを操作することによって、割り当てられた役割を指示（指定）することができる。
【００３７】
スタートスイッチ２２ｂは、プッシュボタンで構成され、ゲームを開始（再開）したり、一時停止(Pause)したりする等に用いられる。また、セレクトスイッチ２２ｃは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【００３８】
動作スイッチ２２ｄすなわちＡボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ（パンチ）、投げる、つかむ（取得）、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(ＲＰＧ)やシミュレーションＲＰＧにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ２２ｅすなわちＢボタンは、プッシュボタンで構成され、セレクトスイッチ２２ｃで選択したゲームモードの変更やＡボタン２２ｄで決定したアクションの取り消し等のために用いられる。
【００３９】
動作スイッチ２２ｆすなわちＸボタン、および動作スイッチ２２ｇすなわちＹボタンは、プッシュボタンで構成され、Ａボタン２２ｄとＢボタン２２ｅだけでは、ゲーム進行ができないときに、補助的な操作に用いられる。ただし、Ｘボタン２２ｆおよびＹボタン２２ｇは、Ａボタン２２ｄおよびＢボタン２２ｅと同様の操作に用いることも可能である。もちろん、ゲームプレイにおいてＸボタン２２ｆとＹボタン２２ｇとを必ずしも使用しなくてよい。
【００４０】
動作スイッチ２２Ｌ（左押しボタン）および動作スイッチ２２Ｒ（右押しボタン）は、プッシュボタンで構成され、左押しボタン（Ｌボタン）２２Ｌおよび右押しボタン（Ｒボタン）２２Ｒは、Ａボタン２２ｄおよびＢボタン２２ｅと同様の操作に用いることができ、また、Ａボタン２２ｄおよびＢボタン２２ｅの補助的な操作に用いることができる。さらに、Ｌボタン２２ＬおよびＲボタン２２Ｒは、方向スイッチ２２ａ、Ａボタン２２ｄ，Ｂボタン２２ｅ，Ｘボタン２２ｆ，Ｙボタン２２ｇに割り当てられた役割を、他の役割に変更することができる。
【００４１】
また、ＬＣＤ１４の上面には、タッチパネル２４が装着される。タッチパネル２４としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル２４は、その上面をスティック２６ないしはペン（スタイラスペン）或いは指（以下、これらを「スティック２６等」という場合がある。）で、押圧したり、撫でたり、触れたりすることにより操作（タッチ操作）すると、スティック２６等の操作位置の座標を検出して、検出した座標（検出座標）に対応する座標データを出力する。
【００４２】
なお、この実施例では、ＬＣＤ１４（ＬＣＤ１２も同じ、または略同じ。）の表示面の解像度は２５６ｄｏｔ×１９２ｄｏｔであり、タッチパネル２４の検出精度も表示画面に対応して２５６ｄｏｔ×１９２ｄｏｔとしてあるが、タッチパネル２４の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
【００４３】
ＬＣＤ１２およびＬＣＤ１４には異なるゲーム画面が表示されてもよい。たとえば、レースゲームでは一方のＬＣＤに運転席からの視点による画面を表示し、他方のＬＣＤにレース（コース）全体の画面を表示することができる。また、ＲＰＧでは、一方のＬＣＤにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のＬＣＤにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、一方のＬＣＤ（この実施例では、ＬＣＤ１４）にゲームの操作画面（ゲーム画面）を表示し、他方のＬＣＤ（この実施例では、ＬＣＤ１２）に当該ゲームに関する情報（得点やレベルなど）を含む他のゲーム画面を表示することができる。さらには、２つのＬＣＤ１２およびＬＣＤ１４を合わせて１つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物（敵キャラクタ）を表示することもできる。
【００４４】
したがって、プレイヤはスティック２６等でタッチパネル２４を操作することにより、ＬＣＤ１４の画面に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、操作オブジェクトなどの画像を指示（操作）したり、コマンドを選択（入力）したりすることができる。また、３次元ゲーム空間に設けられる仮想カメラ（視点）の方向（視線の向き）を変化させたり、ゲーム画面（マップ）のスクロール(徐々に移動表示)方向を指示したりすることもできる。
【００４５】
なお、ゲームの種類によっては、タッチパネル２４を用いることにより、その他の入力指示も可能である。たとえば、座標入力指示を入力したり、ＬＣＤ１４において文字，数字，記号等を手書き入力したりすることができる。
【００４６】
このように、ゲーム装置１０は、２画面分の表示部となるＬＣＤ１２およびＬＣＤ１４を有し、いずれか一方（この実施例では、ＬＣＤ１４）の上面にタッチパネル２４が設けられるので、２画面（１２，１４）と２系統の操作部（２２，２４）とを有する構成になっている。
【００４７】
また、この実施例では、スティック２６は、たとえば下側ハウジング１６ｂに設けられる収納部（図１では点線で示す）に収納することができ、必要に応じて取り出される。ただし、スティック２６を設けない場合には、その収納部も設ける必要はない。
【００４８】
さらに、ゲーム装置１０はメモリカード（またはカートリッジ）２８を含み、このメモリカード２８は着脱自在であり、下側ハウジング１６ｂの裏面ないしは下端（底面）に設けられる挿入部３０（図１では点線で示す）に挿入される。図１では省略するが、挿入部３０の奥部には、メモリカード２８の挿入方向先端部に設けられるコネクタ（図示せず）と接合するためのコネクタ３２（図２参照）が設けられており、したがって、メモリカード２８が挿入部３０に挿入されると、コネクタ同士が接合され、ゲーム装置１０のＣＰＵコア３４（図２参照）がメモリカード２８にアクセス可能となる。
【００４９】
なお、図１では表現できないが、上側ハウジング１６ａの音抜き孔２０ａおよび２０ｂと対応する位置であり、この上側ハウジング１６ａの内部にはスピーカ３６ａおよび３６ｂ（図２参照）が設けられる。
【００５０】
また、図１では省略するが、たとえば、下側ハウジング１６ｂの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング１６ｂの底面側には、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【００５１】
図２はゲーム装置１０の電気的な構成を示すブロック図である。図２を参照して、ゲーム装置１０は電子回路基板３８を含み、この電子回路基板３８には上述のＣＰＵコア３４等の回路コンポーネントが実装される。ＣＰＵコア３４は、バス４０を介して前述のコネクタ３２に接続されるとともに、ＲＡＭ４２、第１のグラフィック処理ユニット（ＧＰＵ）４４、第２のＧＰＵ４６、入出カインターフエース回路（以下、「Ｉ／Ｆ回路」という。）４８およびＬＣＤコントローラ５０が接続される。
【００５２】
コネクタ３２には、上述したように、メモリカード２８が着脱自在に接続される。メモリカード２８は、ＲＯＭ２８ａおよびＲＡＭ２８ｂを含み、図示は省略するが、ＲＯＭ２８ａおよびＲＡＭ２８ｂは、互いにバスで接続され、さらに、コネクタ３２と接合されるコネクタ（図示せず）に接続される。したがって、上述したように、ＣＰＵコア３４は、ＲＯＭ２８ａおよびＲＡＭ２８ｂにアクセスすることができるのである。
【００５３】
ＲＯＭ２８ａは、ゲーム装置１０で実行すべきゲームのためのゲームプログラム、画像データ（文字やオブジェクトの画像、背景画像、アイテム画像、アイコン（ボタン）画像、メッセージ画像など）およびゲームに必要な音（音楽）のデータ（音データ）等を予め記憶する。ＲＡＭ（バックアップＲＡＭ）２８ｂは、そのゲームの途中データやゲームの結果データなどを記憶（セーブ）する。
【００５４】
ＲＡＭ４２は、バッファメモリないしはワーキングメモリとして使用される。つまり、ＣＰＵコア３４は、メモリカード２８のＲＯＭ２８ａに記憶されたゲームプログラム、画像データおよび音データ等をＲＡＭ４２にロードし、ロードしたゲームプログラムを実行する。また、ＣＰＵコア３４は、ゲームの進行に応じて一時的に発生するデータ（ゲームデータやフラグデータ）をＲＡＭ４２に記憶しつつゲーム処理を実行する。
【００５５】
なお、ゲームプログラム、画像データおよび音データ等は、ＲＯＭ２８ａから一度に全部、または部分的かつ順次的に読み出され、ＲＡＭ４２に記憶（ロード）される。
【００５６】
ただし、メモリカード２８のＲＯＭ２８ａには、ゲーム以外の他のアプリケーションについてのプログラムおよび当該アプリケーションの実行に必要な画像データが記憶される。また、必要に応じて、音（音楽）データが記憶されてもよい。かかる場合には、ゲーム装置１０では、当該アプリケーションが実行される。
【００５７】
ＧＰＵ４４およびＧＰＵ４６は、それぞれ、描画手段の一部を形成し、たとえばシングルチップＡＳＩＣで構成され、ＣＰＵコア３４からのグラフィックスコマンド（作画命令）を受け、そのグラフィックスコマンドに従って画像データを生成する。ただし、ＣＰＵコア３４は、グラフィックスコマンドに加えて、画像データの生成に必要な画像生成プログラム（ゲームプログラムに含まれる。）をＧＰＵ４４およびＧＰＵ４６のそれぞれに与える。
【００５８】
また、ＧＰＵ４４には、第１のビデオＲＡＭ（以下、「ＶＲＡＭ」という。）５２が接続され、ＧＰＵ４６には、第２のＶＲＡＭ５４が接続される。ＧＰＵ４４およびＧＰＵ４６が作画コマンドを実行するにあたって必要なデータ（画像データ：ポリゴンやテクスチャ等のデータ）は、ＧＰＵ４４およびＧＰＵ４６が、それぞれ、第１のＶＲＡＭ５２および第２のＶＲＡＭ５４にアクセスして取得する。
【００５９】
なお、ＣＰＵコア３４は、描画に必要な画像データをＧＰＵ４４およびＧＰＵ４６を介して第１のＶＲＡＭ５２および第２のＶＲＡＭ５４に書き込む。ＧＰＵ４４はＶＲＡＭ５２にアクセスして描画のための画像データを作成し、ＧＰＵ４６はＶＲＡＭ５４にアクセスして描画のための画像データを作成する。
【００６０】
ＶＲＡＭ５２およびＶＲＡＭ５４は、ＬＣＤコントローラ５０に接続される。ＬＣＤコントローラ５０はレジスタ５６を含み、レジスタ５６はたとえば１ビットで構成され、ＣＰＵコア３４の指示によって「０」または「１」の値（データ値）を記憶する。ＬＣＤコントローラ５０は、レジスタ５６のデータ値が「０」である場合には、ＧＰＵ４４によって作成された画像データをＬＣＤ１２に出力し、ＧＰＵ４６によって作成された画像データをＬＣＤ１４に出力する。また、ＬＣＤコントローラ５０は、レジスタ５６のデータ値が「１」である場合には、ＧＰＵ４４によって作成された画像データをＬＣＤ１４に出力し、ＧＰＵ４６によって作成された画像データをＬＣＤ１２に出力する。
【００６１】
なお、ＬＣＤコントローラ５０は、ＶＲＡＭ５２およびＶＲＡＭ５４から直接画像データを読み出したり、ＧＰＵ４４およびＧＰＵ４６を介してＶＲＡＭ５２およびＶＲＡＭ５４から画像データを読み出したりする。
【００６２】
Ｉ／Ｆ回路４８には、操作スイッチ２２，タッチパネル２４およびスピーカ３６ａ，３６ｂが接続される。ここで、操作スイッチ２２は、上述したスイッチ２２ａ，２２ｂ，２２ｃ，２２ｄ，２２ｅ，２２ｇ，２２Ｌおよび２２Ｒであり、操作スイッチ２２が操作されると、対応する操作信号（操作データ）がＩ／Ｆ回路４８を介してＣＰＵコア３４に入力される。また、タッチパネル２４からの座標データがＩ／Ｆ回路４８を介してＣＰＵコア３４に入力される。さらに、ＣＰＵコア３４は、ゲーム音楽（ＢＧＭ）、効果音またはゲームキャラクタの音声（擬制音）などのゲームに必要な音データをＲＡＭ４２から読み出し、Ｉ／Ｆ回路４８を介してスピーカ３６ａ，３６ｂから出力する。
【００６３】
図３は、図１および図２に示すゲーム装置１０を用いて、この実施例の仮想ゲーム（パズルゲーム）をプレイする場合に、ＬＣＤ１２に表示されるゲーム画面３００およびＬＣＤ１４に表示されるゲーム画面３２０の一例を示す。ゲーム画面３００は、回転オブジェクト（歯車オブジェクト）３０２、３０４、３０６を含む。３つの歯車オブジェクト３０２，３０４，３０６は、縦方向に一直線に並んで表示される。歯車オブジェクト３０２には、受容部としての２つのソケットオブジェクト３０２ａ，３０２ｂが設けられ（図５参照）、このソケットオブジェクト３０２ａ，３０２ｂに、ボールオブジェクト３１２ａ，３１２ｂが保持されている。歯車オブジェクト３０４には、２つのソケットオブジェクト３０４ａ，３０４ｂが設けられ（図５参照）、このソケットオブジェクト３０４ａ，３０４ｂに、ボールオブジェクト３１４ａ，３１４ｂが保持されている。歯車オブジェクト３０６には、２つのソケットオブジェクト３０６ａ，３０６ｂが設けられ（図５参照）、このソケットオブジェクト３０６ａ，３０６ｂに、ボールオブジェクト３１６ａ，３１６ｂが保持されている。
【００６４】
また、ゲーム画面３２０は、３つの歯車オブジェクト３２２，３２４，３２６を含み、３つの歯車オブジェクト３２２，３２４，３２６は縦方向に一直線に並んで表示される。歯車オブジェクト３２２には２つのソケットオブジェクト３２２ａ，３２２ｂが設けられ、歯車オブジェクト３２４には２つのソケットオブジェクト３２４ａ，３２４ｂが設けられ、そして、歯車オブジェクト３２６には２つのソケットオブジェクト３２６ａ，３２６ｂが設けられる。
【００６５】
ただし、図３に示すゲーム画面３００およびゲーム画面３２０は単なる一例である。たとえば、ボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６は、いずれのソケットオブジェクト３０２ａ，３０２ｂ，３０４ａ，３０４ｂ，３０６ａ，３０６ｂ，３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂに保持されていてもよい。また、ゲーム画面３００に表示される歯車オブジェクト３０２，３０４，３０６の配列およびゲーム画面３２０に表示される歯車オブジェクト３２２，３２４，３２６の配列は異なる配列であってもよい。
【００６６】
この実施例のパズルゲームについて簡単に説明すると、上述したように、ＬＣＤ１４上にはタッチパネル２４が設けられ、プレイヤは、スティック２６を用いて、歯車オブジェクト３２２，３２４，３２６上でスライド操作することにより、当該歯車オブジェクト３２２，３２４，３２６を回転させることができる。また、このとき、歯車オブジェクト３２２，３２４，３２６と連動する歯車オブジェクト３０２，３０４，３０６も回転される。図３に示す例では、歯車オブジェクト３０２と歯車オブジェクト３２２とが連動する。また、図示は省略するが、歯車オブジェクト３０４と歯車オブジェクト３２４とが連動する。さらに、図示は省略するが、歯車オブジェクト３０６と歯車オブジェクト３２６とが連動する。
【００６７】
たとえば、或る歯車オブジェクト（３２２，３２４，３２６）に対応する他の歯車オブジェクト（３２２，３２４，３２６）は、当該或る歯車オブジェクト（３２２，３２４，３２６）と同じ方向に回転してもよいし、逆方向に回転してもよい。また、この実施例では、回転量（回転角度）は同じにしてあるが、多くても、少なくてもよい。さらに、１つの歯車オブジェクト（３２２，３２４，３２６）に、２つ以上の歯車オブジェクト（３０２，３０４，３０６）を対応付けるようにしてもよい。これらは、このパズルゲームのプログラマないし開発者が自在に設定することができる。
【００６８】
また、図３に示すように、ボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂには、色（図面の都合上、斜線模様、縞模様、網目模様で示してある）が付されており、同様に、歯車オブジェクト３２２，３２４，３２６のそれぞれにも、色が付されている。図３からも分かるように、ボールオブジェクト３１２ａ，３１２ｂおよび歯車オブジェクト３２２には、同じ色（図３では「斜線模様」）が付されている。また、ボールオブジェクト３１４ａ，３１４ｂおよび歯車オブジェクト３２４には、同じ色（図３では「縦縞模様」）が付されている。さらに、ボールオブジェクト３１６ａ，３１６ｂおよび歯車オブジェクト３２６には、同じ色（図３では「網目模様」）が付されている。
【００６９】
なお、この実施例では、歯車オブジェクト３０２，３０４，３０６，３２２，３２４，３２６のそれぞれには、２つのソケットオブジェクト３０２ａ，３０２ｂ，３０４ａ，３０４ｂ，３０６ａ，３０６ｂ，３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂが設けられるようにしてある。しかし、これは単なる例示であり、１つの歯車オブジェクトには、少なくとも１つのソケットオブジェクトが設けられればよく、３つ以上設けるようにしてもよい。ただし、後述するように、歯車オブジェクトは所定角度（この実施例では、１５度）毎に回転・停止可能とするため、この所定角度毎にソケットオブジェクトを設けたときの数が、ソケットオブジェクトの最大数となる。
【００７０】
上述したように、歯車オブジェクト３２２，３２４，３２６を回転させることにより、歯車オブジェクト３０２，３０４，３０６も回転される。隣接する歯車オブジェクト３０２，３０４，３０６，３２２，３２４，３２６のソケットオブジェクト３０２ａ，３０２ｂ，３０４ａ，３０４ｂ，３０６ａ，３０６ｂ，３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂが所定の関係を満たすとき、ボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂは、当該所定の関係を満たす一方のソケットオブジェクトから他方のソケットオブジェクトへ移動する。
【００７１】
たとえば、図４（Ａ）に示すように、ゲーム画面３２０において、歯車オブジェクト３２２のソケットオブジェクト３２２ｂには、ボールオブジェクト３１４ａ（または３１４ｂ）が保持されており、この歯車オブジェクト３２２がプレイヤのタッチ操作によって回転される。すると、図４（Ｂ）に示すように、歯車オブジェクト３２２のソケットオブジェクト３２２ｂと、歯車オブジェクト３２４のソケットソケットオブジェクト３２４ｂとが一直線上に並ぶ。このとき、ボールオブジェクト３１４ａ（または３１４ｂ）は、ソケットオブジェクト３２２ａ（または３２２ｂ）からソケットオブジェクト３２４ａ（または３２４ｂ）に移動する。つまり、ボールオブジェクト３１４ａ（または３１４ｂ）は、歯車オブジェクト３２２から歯車オブジェクト３２４に移動される。
【００７２】
このようにして、ボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂを移動させ、図５に示すように、ボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂの各々が、同じ色の付された歯車オブジェクト３２２，３２４，３２６に移動されると、パズルゲームがクリアとなる。
【００７３】
詳細な説明は省略するが、ゲーム画面３００とゲーム画面３２０とは連結されており、歯車オブジェクト３０６から歯車オブジェクト３２２に向けて、ボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂを移動させることができる。つまり、通常の場合、ボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂは、ゲーム画面３００の上部からゲーム画面３２０の下部に向けて移動される。ただし、歯車オブジェクト３２６から歯車オブジェクト３０２にボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂを移動させることもできる。これは、ボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂが移動不能になり、いわゆる「手詰まり」になるのを防止するためである。ただし、ゲームのレベル等によっては、下のゲーム画面３２０から上のゲーム画面３００に向けて、ボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂを移動させないようにしてもよい。
【００７４】
以下、図面を用いて、歯車オブジェクト３０２，３０４，３０６，３２２，３２４，３２６の回転、ソケットオブジェクト３０２ａ，３０２ｂ，３０４ａ，３０４ｂ，３０６ａ，３０６ｂ，３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂ同士の所定の関係、ボールオブジェクト３１２ａ，３１２ｂ，３１４ａ、３１４ｂ，３１６ａ，３１６ｂの移動について、具体的に説明することにする。
【００７５】
図６を参照して、プレイヤの操作（タッチ操作）に従った歯車オブジェクト３２２，３２４，３２６の回転（回転量の算出方法）について説明する。なお、図６では、簡単のため、ソケットオブジェクト３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂおよびボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂは省略してある。
【００７６】
図６に示すように、歯車オブジェクト３０２，３０４，３０６，３２２，３２４，３２６上でタッチ操作（スライド操作）を実行したと仮定する。ただし、ｆ０は現在のフレーム（現フレーム）のタッチ位置であり、ｆ１は、その１つ手前のフレーム（直前フレーム）のタッチ位置である。また、フレームは画面更新単位時間（この実施例では、１／６０秒）である。このタッチ操作に応じて、歯車オブジェクト３２２，３２４，３２６の中心ｃを中心とする当該歯車オブジェクト３２２，３２４，３２６の回転量Ｌが算出される。
【００７７】
まず、歯車オブジェクト３２２，３２４，３２６の中心ｃの座標（中心座標）と現フレームのタッチ位置（タッチ座標）ｆ０とからベクトルＶ０が求められる。ただし、ベクトルＶ０は、中心座標が始点であり、タッチ位置ｆ０が終点である。次に、このベクトルＶ０を正規化したベクトルＵ０が求められる。ベクトルＵ０は、ベクトルＶ０の単位ベクトルである。続いて、現フレームのタッチ座標ｆ０に対応する歯車オブジェクト３２２，３２４，３２６の円周上の位置ｒ０が数１に従って求められる。
【００７８】
［数１］
ｒ０＝｜ｆ０−ｃ｜×ｒ＋ｃ
ただし、｜ｆ０−ｃ｜は、ベクトルＶ０（＝ｆ０−ｃ）を正規化した単位ベクトルＵ０である。
【００７９】
同様に、直前フレームのタッチ位置ｆ１に対応する歯車オブジェクト３２２，３２４，３２６の円周上の位置ｒ１が数２に従って求められる。
【００８０】
［数２］
ｒ１＝｜ｆ１−ｃ｜×ｒ＋ｃ
ただし、｜ｆ１−ｃ｜は、ベクトルＶ１（＝ｆ１−ｃ）を正規化した単位ベクトルを意味する。
【００８１】
また、数１および数２に従って求められた円周上の位置（位置座標）ｒ０と位置ｒ１とから、ベクトルｒＶが求められる。このベクトルｒＶは、位置ｒ１を始点とし、位置ｒ０を終点とする。そして、数３に従って、歯車オブジェクト３２２，３２４，３２６の回転量Ｌが求められる。
【００８２】
［数３］
Ｌ＝（Ｕ０ｘ×（−ｒＶｙ））＋（Ｕ０ｙ×ｒＶｘ）×ｋ
（０＜ｋ＜１）
ただし、Ｕ０ｘはベクトルＵ０のＸ成分であり、Ｕ０ｙはベクトルＵ０のＹ成分であり、ｒＶｘはベクトルｒＶのＸ成分であり、そして、ｒＶｙはベクトルｒＶのＹ成分である。
【００８３】
このようにして算出された回転量Ｌに従って、歯車オブジェクト３２２，３２４，３２６は回転（回転表示）され、これに伴って、それらと連動する歯車オブジェクト３０２，３０４，３０６も回転される。ただし、この実施例では、時計周りが正の回転方向であり、反時計周りが負の回転方向である。
【００８４】
ここで、図７に示すように、ボールオブジェクトおよび不可視ソケットオブジェクトは、ゲーム画面３００およびゲーム画面３２０を表示するときに、それぞれの角度オフセット値に従って配置される。この実施例では、基準位置ないし基準方向は、歯車オブジェクト３０２，３０４，３０６，３２２，３２４，３２６および後述する不可視歯車オブジェクト４０２，４０４，４０６，４２２，４２４，４２６（図８参照）の上方向である。この上方向を０度とした場合の角度オフセット値がそれぞれ設定されるのである。
【００８５】
ただし、図７において、ｂａは、歯車オブジェクトのソケットオブジェクトに保持されるボールオブジェクトの角度オフセット値であり、ｓ´ａは、当該歯車オブジェクトに対応して設けられる不可視歯車オブジェクトの角度オフセット値である。また、この実施例では、基準位置に対する左方向（反時計周り）の回転角度のオフセット値をマイナスで示し、逆に、基準位置に対する右方向（時計周り）の回転角度のオフセット値をプラスで示してある。つまり、角度オフセット値は、−１８０度から＋１８０度の間で設定される。
【００８６】
また、歯車オブジェクト３０２，３０４，３０６，３２２，３２４，３２６は、プレイヤの操作に従って回転され、これに従ってボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂも回転される。このため、歯車オブジェクト３０２，３０４，３０６，３２２，３２４，３２６およびボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂの角度オフセット値は、回転される度にそのオフセット値が更新される。
【００８７】
したがって、歯車オブジェクト３０２，３０４，３０６，３２２，３２４，３２６を回転させる場合には、上述のようにして算出された回転量Ｌにオフセット値が加算され、隣接する歯車オブジェクトに設けられるソケットオブジェクト同士の位置関係（後述する角度差Ａ）が判断される。また、同様に、ボールオブジェクトと当該ボールオブジェクトが設けられる歯車オブジェクトに隣接する歯車オブジェクトに対して設けられる不可視ソケットオブジェクトとの位置関係（後述する角度差Ａ´）が判断される。
【００８８】
ただし、後述するように、不可視歯車オブジェクトは回転しないため、これに設けられる不可視のソケットオブジェクト（不可視ソケットオブジェクト）については、角度オフセット値のみを考慮すればよく、回転量については考慮する必要がない。
【００８９】
また、この実施例では、歯車オブジェクト３０２，３０４，３０６，３２２，３２４，３２６は、回転量Ｌだけ回転するようにしてあるが、所定の角度毎に回転・停止するように、回転後の位置を補正するようにしてもよい。たとえば、回転量Ｌに従うソケットオブジェクト３０２ａ，３０２ｂ，３４ａ，３０４ｂ，３０６ａ，３０６ｂ，３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂの回転角度が所定角度の整数倍±７．５であれば、当該整数倍の角度になるように回転量Ｌが調整される。
【００９０】
たとえば、回転量Ｌが３７度である場合には、１５度×２（３０度）＋７度であるため、このときの回転量Ｌは３０度に調整される。また、回転量Ｌが５５度である場合には、１５×４（６０度）−５度であるため、このときの回転量Ｌは６０度に調整される。
【００９１】
次に、ソケットオブジェクト３０２ａ，３０２ｂ，３０４ａ，３０４ｂ，３０６ａ，３０６ｂ，３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂ同士の所定の関係について説明する。
【００９２】
図８（Ａ）および図８（Ｂ）に示すように、ゲーム画面３００およびゲーム画面３２０に対して、歯車オブジェクトのそれぞれに対応する不可視歯車オブジェクトが配置されたレイヤ４００およびレイヤ４２０が設けられる。図示は省略するが、ゲーム画面３００およびゲーム画面３２０についてのゲーム画像が描画されたレイヤの下側すなわち視点から見て奥に、レイヤ４００およびレイヤ４２０は配置されるため、レイヤ４００およびレイヤ４２０がゲーム画面３００およびゲーム画面３２０に表示されることはない。ただし、後述する不可視歯車オブジェクトや不可視ソケットオブジェクトを透明にし、これらが配置されるレイヤも透明にする場合には、レイヤ４００および４２０はゲーム画面３００やゲーム画面３２０のゲーム画像が描画されるレイヤよりも手前（視点側）に配置されるようにしてもよい。
【００９３】
図８（Ａ）に示すように、レイヤ４００には、歯車オブジェクト３０２，３０４，３０６のそれぞれに対応して、不可視の円盤オブジェクト（以下、「不可視歯車オブジェクト」ということにする）４０２，４０４，４０６が設けられる。不可視歯車オブジェクト４０２には、不可視ソケットオブジェクト４０２ａ，４０２ｂが設けられ、不可視歯車オブジェクト４０４には、不可視ソケットオブジェクト４０４ａ，４０４ｂが設けられ、不可視歯車オブジェクト４０６には、不可視ソケットオブジェクト４０６ａ，４０６ｂが設けられる。
【００９４】
また、図８（Ｂ）に示すように、レイヤ４２０には、歯車オブジェクト３２２，３２４，３２６のそれぞれに対応して、不可視歯車オブジェクト４２２，４２４，４２６が設けられる。不可視歯車オブジェクト４２２には、不可視ソケットオブジェクト４２２ａ，４２２ｂが設けられ、不可視歯車オブジェクト４２４には、不可視ソケットオブジェクト４２４ａ，４２４ｂが設けられ、不可視歯車オブジェクト４２６には、不可視ソケットオブジェクト４２６ａ，４２６ｂが設けられる。
【００９５】
不可視歯車オブジェクト４０２，４０４，４０６，４２２，４２４，４２６は、固定的に配置され、歯車オブジェクト３０２，３０４，３０６，３２２，３２４，３２６とは異なり、回転しない。したがって、不可視ソケットオブジェクト４０２ａ，４０２ｂ，４０４ａ，４０４ｂ，４０６ａ，４０６ｂ，４２２ａ，４２２ｂ，４２４ａ，４２４ｂ，４２６ａ，４２６ｂの位置が変化することもない。
【００９６】
不可視歯車オブジェクト４０２，４０４，４０６，４２２，４２４，４２６および不可視ソケットオブジェクト４０２ａ，４０２ｂ，４０４ａ，４０４ｂ，４０６ａ，４０６ｂ，４２２ａ，４２２ｂ，４２４ａ，４２４ｂ，４２６ａ，４２６ｂは、対応する歯車オブジェクト３０２，３０４，３０６，３２２，３２４，３２６のソケットオブジェクト３０２ａ，３０２ｂ，３０４ａ，３０４ｂ，３０６ａ，３０６ｂ，３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂが所定の関係を有するか否かを判定するために設けられる。ただし、不可視ソケットオブジェクト４０２ａ，４０２ｂ，４０４ａ，４０４ｂ，４０６ａ，４０６ｂ，４２２ａ，４２２ｂ，４２４ａ，４２４ｂ，４２６ａ，４２６ｂは、接続設定の有る歯車オブジェクト３０２，３０４，３０６，３２２，３２４，３２６に対応してのみ設けられる。
【００９７】
ここで、図９を用いて、接続設定について説明する。図９を参照して、歯車オブジェクトＣ１，Ｃ２，Ｃ３が隣接して一直線上に配置され、それぞれに対応して、不可視歯車オブジェクトＢ１，Ｂ２，Ｂ３が設定されていると仮定する。
【００９８】
なお、図９では、歯車オブジェクトＣ１−Ｃ３と、不可視歯車オブジェクトＢ１−Ｂ３が同一平面に配置されているように記載してあるが、実際には、上述したように、異なるレイヤに配置されている。
【００９９】
図９に示すように、歯車オブジェクトＣ１と歯車オブジェクトＣ２との間では、接続設定が無い。このため、たとえ歯車オブジェクトＣ１のソケットオブジェクトＳ１（またはＳ２）と歯車オブジェクトＣ２のソケットオブジェクトＳ３（またはＳ４）とが一直線上に並んだとしても、歯車オブジェクトＣ１から歯車オブジェクトＣ２に、または、歯車オブジェクトＣ２から歯車オブジェクトＣ１に、ボールオブジェクト（図９では省略）が移動することはない。かかる場合には、接続状態（ボールオブジェクトが移動可能な状態）を判断しなくてよいため、不可視歯車オブジェクトＢ１と不可視歯車オブジェクトＢ２とでは、それらが接近する側に、不可視ソケットオブジェクトは設定されていない。
【０１００】
しかし、歯車オブジェクトＣ２と歯車オブジェクトＣ３との間では、接続設定が有る。具体的には、歯車オブジェクトＣ２に対して、歯車オブジェクトＣ２から歯車オブジェクトＣ３にボールオブジェクトが移動可能であることの接続設定がなされる。このため、不可視歯車オブジェクトＢ２と不可視歯車オブジェクトＢ３とでは、それらが接近する側に、それぞれ、不可視ソケットオブジェクトＢＳ１および不可視ソケットオブジェクトＢＳ２が設けられる。
【０１０１】
このような場合に、歯車オブジェクトＣ２のソケットオブジェクトＳ３（またはＳ４）が、不可視歯車オブジェクトＢ２の不可視ソケットオブジェクトＢＳ１と重なる位置（この実施例では、角度差が５度未満である。以下、同じ。）に在り、かつ、歯車オブジェクトＣ３のソケットオブジェクトＳ５（またはＳ６）が、不可視歯車オブジェクトＢ３の不可視ソケットオブジェクトＢＳ２と重なる位置に在るとき、所定の関係が満たされ、ソケットオブジェクトＳ３（またはＳ４）とソケットオブジェクトＳ５（またはＳ６）とが接続状態であることがフラグ（後述する「接続フラグ」）によって設定される。つまり、所定の関係は、接続設定の有る２つの歯車オブジェクトに設けられるソケットオブジェクトが、それぞれ不可視ソケットオブジェクトに重なる位置に存在することを意味する。このとき、２つのソケットオブジェクトは一直線上或いはほぼ一直線上に並ぶ。
【０１０２】
ここで、図１０を参照して、隣接する２つの歯車オブジェクトＣ１１，Ｃ１２に設けられるソケットオブジェクトＳ１１，Ｓ１２が接続状態であるかどうかを判断する方法について説明する。図１０では、歯車オブジェクトＣ１１の回転量はＬであり、角度オフセット値はｓａである。一方、歯車オブジェクトＣ１２の回転量はＬ´であり、角度オフセット値はｓ´ａである。ただし、この実施例では、回転量Ｌ，Ｌ´を算出するための基準位置をすべての歯車オブジェクト（３０２，３０４，３０６，３２２，３２４，３２６）に対して同じ位置（方向）に設定してある。したがって、隣接する２つの歯車オブジェクトＣ１１，Ｃ１２のうち、着目する一方の歯車オブジェクトＣ１１の回転量をＬとし、これに隣接する他方の歯車オブジェクトＣ１２の回転量をＬ´とすると、ソケットオブジェクトＳ１１とソケットオブジェクトＳ１２との角度差Ａは数４で得られる。角度オフセット値ｓａ，ｓ´ａは、歯車オブジェクトＣ１１，Ｃ１２を表示する時の基準位置に対するずれによる角度で決定されるが、一度回転された後は、基準位置に対する回転後の角度に更新される。
【０１０３】
［数４］
Ａ＝｜（ｓａ＋Ｌ）−（ｓ´ａ＋Ｌ´）−１８０｜
ただし、｜・｜は絶対値を意味する。なお、この実施例では、すべての歯車オブジェクト（３０２，３０４，３０６，３２２，３２４，３２６）に対して同じ位置（方向）に基準位置を設定してあるため、角度差Ａを求める際に、１８０（度）減算するようにしてあるが、隣接する歯車オブジェクトの基準位置を１８０度ずらすようにすれば、１８０（度）減算する必要はない。
【０１０４】
そして、数４に従って算出された角度差Ａが所定角度（たとえば、５度）未満である場合には、接続状態であることが設定され、角度差Ａが所定角度以上であれば、接続状態であることは設定されない。
【０１０５】
図９に戻って、接続状態であることが設定されている場合に、歯車オブジェクトＣ２のソケットオブジェクトＳ３（またはＳ４）に保持されるボールオブジェクトが、歯車オブジェクトＣ３のソケットオブジェクトＳ５（またはＳ６）に移動され、保持される。ただし、接続状態であることが設定された場合であっても、歯車オブジェクトＣ２のソケットオブジェクトＳ３（またはＳ４）にボールオブジェクトが保持されていない場合には、当然のことながら、ボールオブジェクトが歯車オブジェクトＣ３のソケットオブジェクトＳ５（またはＳ６）に移動されることはない。
【０１０６】
なお、ここでは、歯車オブジェクトＣ３から歯車オブジェクトＣ２への接続設定は無いため、接続状態であることが設定されている場合であっても、歯車オブジェクトＣ３のソケットオブジェクトＳ５（またはＳ６）から歯車オブジェクトＣ２のソケットオブジェクトＳ３（またはＳ４）にボールオブジェクトが移動することはない。
【０１０７】
次に、図１１に示すように、ボールオブジェクトが歯車オブジェクトＣ１１から歯車オブジェクトＣ１２に移動されるときの、歯車オブジェクトＣ１１のソケットオブジェクト（図示せず）に保持されたボールオブジェクトの位置と、当該ボールオブジェクトを受け容れるソケットオブジェクトとの位置とを、数５および数６に示す。
【０１０８】
［数５］
ボールオブジェクトの位置座標のＸ成分およびＹ成分
ｘ＝（ｐ＋ｑ）×ｃｏｓ（ｓａ）＋（ｐ＋ｑ）×（−ｓｉｎ（ｓａ））
ｙ＝（ｐ＋ｑ）×ｓｉｎ（ｓａ）＋（ｐ＋ｑ）×ｃｏｓ（ｓａ）
［数６］
ソケットオブジェクトの位置座標のＸ成分およびＹ成分
ｘ＝ｐ×ｃｏｓ（ｓａ）＋（−ｓｉｎ（ｓａ））
ｙ＝ｐ×ｓｉｎ（ｓａ）＋ｐ×ｃｏｓ（ｓａ）
ただし、ｐは、歯車オブジェクトＣ１２の中心から歯車オブジェクトＣ１２の不可視ソケットオブジェクトの中心までの距離である。また、ｑは、歯車オブジェクトＣ１２の不可視ソケットオブジェクトの中心から歯車オブジェクトＣ１１のボールオブジェクトの中心までの距離である。
【０１０９】
このボールオブジェクトおよびソケットオブジェクトの位置座標を用いてボールオブジェクトが移動される。ただし、ボールオブジェクトが歯車オブジェクトＣ１１から歯車オブジェクトＣ１２に移動したときに、距離ｑはリセットされる。具体的には、距離ｑが０（ｑ＝０）になるまで、１フレーム毎に距離ｑが減算される。したがって、ボールオブジェクトが歯車オブジェクトＣ１１から歯車オブジェクトＣ１２に移動する様子がゲーム画面３００およびゲーム画面３２０に表示される。
【０１１０】
ただし、ボールオブジェクトが移動可能かどうかは、或る歯車オブジェクトのソケットオブジェクトに保持されたボールオブジェクトと、当該或る歯車オブジェクトと接続設定の有る他の歯車オブジェクトに対応して当該ボールオブジェクトが移動されるべき位置に設けられる不可視オブジェクトとの角度差Ａ´に基づいて判断される。この角度差Ａ´は数７に従って算出される。角度差Ａ´の算出方法は角度差Ａの算出方法と同様である。ただし、ボールオブジェクトの回転量は、当該ボールオブジェクトを保持するソケットオブジェクトの回転量Ｌと同じである。また、不可視ソケットオブジェクトは、固定的に設けられるため、角度オフセット値ｂｓａのみが考慮される。図１１からも分かるように、不可視ソケットオブジェクトの角度オフセット値ｂｓａを決定する基準位置も、歯車オブジェクトと同様に、不可視歯車オブジェクトの上方向である。
【０１１１】
［数７］
Ａ´＝｜ｂｓａ−（ｓａ＋Ｌ）−１８０｜
この角度差Ａ´が所定角度（この実施例では、５度）未満であるとき、ボールオブジェクトが移動可能であることが判断される。そして、ボールオブジェクトが保持されるソケットオブジェクトと、角度差Ａ´を求めた不可視ソケットオブジェクトに対応するソケットオブジェクトとが接続状態である場合に、ボールオブジェクトが移動されるのである。
【０１１２】
図１２は、図２に示したＲＡＭ４２のメモリマップを示す図解図である。図１２に示すように、ＲＡＭ４２は、プログラム記憶領域７０およびデータ記憶領域７２を含む。プログラム記憶領域７０には、パズルゲームプログラムが記憶され、このパズルゲームプログラムは、ゲームメイン処理プログラム７０ａ，画像生成プログラム７０ｂ，画像表示プログラム７０ｃ，画像更新プログラム７０ｄ，指示位置検出プログラム７０ｅ，歯車オブジェクト回転処理プログラム７０ｆ，ソケット接続判別プログラム７０ｇ，ボール移動処理プログラム７０ｈおよびゲームクリア処理プログラム７０ｉなどによって構成される。
【０１１３】
ゲームメイン処理プログラム７０ａは、この実施例のパズルゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム７０ｂは、後述する画像データ（ポリゴンやテクスチャなどのデータ）を用いて、各オブジェクトを含むゲーム画像を生成するためのプログラムである。また、画像生成プログラム７０ｂは、後述するポリゴンデータ（１００ｂなど）を用いて、各不可視歯車オブジェクトを含むレイヤも生成する。画像表示プログラム７０ｃは、画像生成プログラム７０ｂに従って生成されゲーム画像を、ゲーム画面（３００，３２０）としてＬＣＤ１２，１４に表示するためのプログラムである。画像更新プログラム７０ｄは、ＬＣＤ１２，１４に表示されるゲーム画像（ゲーム画面）を更新するためのプログラムである。
【０１１４】
指示位置検出プログラ７０ｅは、タッチパネル２４からの座標データの有無を検出し、座標データが有る場合に、当該座標データを取得してデータ記憶領域７２に記憶するプログラムである。歯車オブジェクト回転処理プログラム７０ｆは、プレイヤの操作に従って歯車オブジェクト（３０２，３０４，３０６，３２２，３２４，３２６）を回転させるプログラムである。この歯車オブジェクト回転処理プログラム７０ｆは、プレイヤが直接的に回転させる歯車オブジェクト（３２２，３２４，３２６）のみならず、それに連動する歯車オブジェクト（３０２，３０４，３０６）の回転も制御する。
【０１１５】
ソケット接続判別プログラム７０ｇは、隣接する歯車オブジェクト（３０２，３０４，３０６，３２２，３２４，３２６）に設けられるソケットオブジェクト（３０２ａ，３０２ｂ，３０４ａ，３０４ｂ，３０６ａ，３０６ｂ，３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂ）同士が接続状態であるかどうかを判別するためのプログラムである。具体的には、着目する歯車オブジェクト（３０２，３０４，３０６，３２２，３２４，３２６）の着目するソケットオブジェクト（３０２ａ，３０２ｂ，３０４ａ，３０４ｂ，３０６ａ，３０６ｂ，３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂ）が、対応する不可視ソケットオブジェクト（４０２ａ，４０２ｂ，４０４ａ，４０４ｂ，４０６ａ，４０６ｂ，４２２ａ，４２２ｂ，４２４ａ，４２４ｂ，４２６ａ，４２６ｂ）に重なったとき、隣接する歯車オブジェクトとの接続設定の有無が判別される。次に、着目するソケットオブジェクトと、その接続設定が有る歯車オブジェクトに設けられるソケットオブジェクトとの角度差Ａが算出される。この角度差Ａに基づいて接続状態であるかどうかが判断される。この実施例では、角度差Ａが所定角度（たとえば、５度）未満である場合に、接続状態であることを判断する。そして、接続状態であることが判断されると、接続状態である２つのソケットオブジェクトに対して接続状態であることを示すデータないしフラグがＲＡＭ４２に記憶（設定）される。
【０１１６】
ただし、ソケットオブジェクトが不可視ソケットオブジェクトに重なるかどうかは、角度差Ｂが所定角度（たとえば、５度）未満であるかどうかで判断される。角度差Ｂが所定角度未満である場合に、ソケットオブジェクトが不可視ソケットオブジェクトに重なると判断される。ただし、角度差Ｂは数８に従って算出される。
【０１１７】
［数８］
Ｂ＝｜ｂｓａ−（ｓａ＋Ｌ）｜
ボール移動処理プログラム７０ｈは、歯車オブジェクト（３０２，３０４，３０６，３２２，３２４，３２６）に保持されたボールオブジェクト（３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂ）を、他の歯車オブジェクトに移動させるためのプログラムである。具体的には、まず、ボールオブジェクト（３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂ）と、当該ボールオブジェクトが保持された歯車オブジェクト（３０２，３０４，３０６，３２２，３２４，３２６）以外の他の歯車オブジェクトに対応して設けられた不可視ソケットオブジェクト（４０２ａ，４０２ｂ，４０４ａ，４０４ｂ，４０６ａ，４０６ｂ，４２２ａ，４２２ｂ，４２４ａ，４２４ｂ，４２６ａ，４２６ｂ）との角度差Ａ´を算出する。この角度差Ａ´が所定角度（たとえば、５度）未満であり、ボールオブジェクトを保持するソケットオブジェクト（３０２ａ，３０２ｂ，３０４ａ，３０４ｂ，３０６ａ，３０６ｂ，３２２ａ，３２２ｂ，３２４ａ，３２４ｂ）と、当該不可視ソケットオブジェクトに対応するソケットオブジェクトとが接続状態である場合に、接続設定に従って当該ボールオブジェクトが移動される。
【０１１８】
ゲームクリア処理プログラム７０ｉは、パズルゲームをクリアしたかどうかを判定し、パズルゲームをクリアしたと判定したときに、クリア処理を実行するためのプログラムである。たとえば、パズルを解くことができた場合に、当該面ないしレベルをクリアした旨をゲーム画面３００（またはゲーム画面３２０）に表示し、次の面ないしレベルのパズルゲームをプレイ可能にする。ただし、この実施例では、すべてのボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂが、同じ色の付された歯車オブジェクト３２２，３２４，３２６に保持されたときに、ゲームクリア（パズルを解いた）と判断される。
【０１１９】
図示は省略するが、パズルゲームプログラムは、ゲーム音出力プログラムおよびバックアッププログラムも含む。ゲーム音出力プログラムは、音（音楽）データを用いて、効果音，音声（擬声音），ＢＧＭのようなゲームに必要な音を出力するためのプログラムである。バックアッププログラムは、ＲＡＭ４２に記憶されたゲームデータ（途中データ，結果データ）をメモリカード２８のＲＡＭ２８ｂに記憶（セーブ）するためのプログラムである。
【０１２０】
また、データ記憶領域７２には、指示位置記憶領域７２ａおよびオブジェクトデータ記憶領域７２ｂが設けられる。また、データ記憶領域７２には、得点データ７２ｃが記憶され、そして、タッチオンフラグ７２ｄが設けられる。
【０１２１】
指示位置記憶領域７２ａには、現フレームのタッチ位置の座標データ７２０および直前フレームのタッチ位置の座標データ７２２が記憶される。ただし、パズルゲームを開始した直後では、直前フレームについてのタッチ座標の座標データ７２２は記憶されていない。詳細な説明は省略するが、現フレームのタッチ位置の座標データ７２０が記憶される前に、指示位置記憶領域７２ａに記憶された座標データ７２０が直前フレームのタッチ位置の座標データに記憶（上書き）される。
【０１２２】
オブジェクトデータ記憶領域７２ｂは、さらに、歯車オブジェクトデータ記憶領域７２４、ボールオブジェクトデータ記憶領域７２６および不可視歯車オブジェクトデータ記憶領域７２８を含む。
【０１２３】
図１３に示すように、歯車オブジェクトデータ記憶領域７２４は、第１歯車オブジェクトデータ８０，第２歯車オブジェクトデータ８２，…を記憶する。以下、第１歯車オブジェクトデータ８０についてのみ説明するが、第２歯車オブジェクトデータ８２などの他の歯車オブジェクトデータについても同様である。
【０１２４】
図１３に示すように、第１歯車オブジェクトデータ８０は、画像データ８０ａ，位置データ８０ｂ，色データ８０ｃ，回転量データ８０ｄ，連動歯車設定データ８０ｅ，接続設定データ８０ｆおよびソケットオブジェクトデータ８０ｇを含む。
【０１２５】
画像データ８０ａは、第１歯車オブジェクト（後述するソケットオブジェクトを除く。）を描画するための画像データ（ポリゴンやテクスチャなどのデータ）である。ただし、この画像データ８０ａによって、第１歯車オブジェクトの大きさ（および形状）が決定される。位置データ８０ｂは、第１歯車オブジェクトの３次元位置の座標データである。ただし、この第１歯車オブジェクトが配置されるレイヤ（４００）の位置（Ｚ方向の位置）が別途記憶されている場合には、３次元仮想空間の奥行き方向（Ｚ軸方向）の成分を除いて、このレイヤ上の位置（２次元座標）を記憶しておけばよい。
【０１２６】
色データ８０ｃは、第１歯車オブジェクトに付される色についてのデータである。回転量データ８０ｄは、プレイヤのタッチ操作に応じて、上記の数３に従って算出された回転量Ｌのデータ（角度データ）である。連動歯車設定データ８０ｅは、第１歯車オブジェクトと連動する歯車（他の歯車オブジェクト）についての識別情報のデータないし他の歯車オブジェクトデータが記憶されたアドレスポインタである。この他の歯車オブジェクトは、上述した回転量データ８０ｄによって、その回転量が決定される。ただし、回転方向は、回転量データ８０の符号（＋，−）で決定されるが、回転方向が反転される場合には、その符号が逆にされる。また、回転量を変化させる場合には、変化に応じた倍率が回転量データ８０が示す回転量Ｌに掛け算される。
【０１２７】
接続設定データ８０ｆは、第１歯車オブジェクトと接続設定されている他の歯車オブジェクトの識別情報のデータないし他の歯車オブジェクトデータが記憶されたアドレスポインタである。ただし、この接続設定データ８０ｆに記憶されるのは、第１歯車オブジェクトから他の歯車オブジェクトにボールオブジェクトが移動可能である場合の当該他の歯車オブジェクトの識別情報のデータ等である。したがって、他の歯車オブジェクトから第１歯車オブジェクトにボールオブジェクトが移動可能である場合には、当該他の歯車オブジェクトの接続設定データに当該第１歯車オブジェクトの識別情報のデータないし第１歯車オブジェクトデータ８０が記憶されたアドレスポインタが記憶される。
【０１２８】
ソケットオブジェクトデータ８０ｇは、第１歯車オブジェクトに設けられるソケットオブジェクトについてのデータであり、第１ソケットオブジェクトデータ８００，第２ソケットオブジェクトデータ８０２，…を含む。以下、第１ソケットオブジェクトデータ８００についてのみ説明するが、第２ソケットオブジェクトデータ８０２などの他のソケットオブジェクトデータについても同様である。
【０１２９】
図１３に示すように、第１ソケットオブジェクトデータ８００は、画像データ８００ａ，位置データ８００ｂ，角度オフセット値データ８００ｃ，接続フラグ８００ｄおよび一致フラグ８００ｅを含む。
【０１３０】
画像データ８００ａは、第１ソケットオブジェクトを描画するための画像データ（ポリゴンやテクスチャなどのデータ）である。位置データ８００ｂは、第１ソケットオブジェクトの位置（３次元位置）の座標データである。この第１ソケットオブジェクトが配置されるレイヤ（４００）のＺ座標が別途記憶されている場合には、当該レイヤ上における第１ソケットオブジェクトの２次元座標の座標データが記憶される。角度オフセット値データ８００ｃは、上述したように、当該第１ソケットオブジェクトが設けられる第１歯車オブジェクトの基準位置に対する当該第１ソケットオブジェクトの位置についての角度ｓａの角度データである。
【０１３１】
接続フラグ８００ｄは、第１ソケットオブジェクトが他のソケットオブジェクトと接続状態にあるか否かを判別するためのフラグである。たとえば、接続フラグ８００ｄは、１ビットのレジスタで構成され、接続フラグ８００ｄがオン（成立）である場合に、データ値「１」がレジスタに記憶され、接続フラグ８００ｄがオフ（不成立）である場合に、データ値「０」がレジスタに記憶される。ただし、第１ソケットオブジェクトが他のソケットオブジェクトと接続状態にある場合に、接続フラグ８００ｄはオンされる。一方、第１ソケットオブジェクトが他のソケットオブジェクトと接続状態にない場合には、接続フラグ８００ｄはオフされる。この接続フラグ８００ｄのオン／オフは、ソケット接続判別プログラム７０ｇに従って実行される。
【０１３２】
一致フラグ８００ｅは、第１ソケットオブジェクトに保持されるボールオブジェクトに付された色と、当該第１ソケットオブジェクトが設けられる歯車オブジェクトに付された色とが一致するか否かを判別するためのフラグである。この一致フラグ８００ｅは、１ビットのレジスタで構成され、一致フラグ８００ｅがオンである場合に、データ値「１」がレジスタに記憶され、一致フラグ８００ｅがオフである場合に、データ値「０」がレジスタに記憶される。ただし、第１ソケットオブジェクトに保持されるボールオブジェクトに付された色と、当該第１ソケットオブジェクトが設けられる歯車オブジェクトに付された色とが一致する場合に、一致フラグ８００ｅはオンされる。一方、第１ソケットオブジェクトに保持されるボールオブジェクトに付された色と、当該第１ソケットオブジェクトが設けられる歯車オブジェクトに付された色とが一致しない場合には、一致フラグ８００ｅはオフされる。
【０１３３】
図１４は図１２に示したボールオブジェクトデータ記憶領域７２６を具体的に示す図解図である。ボールオブジェクトデータ記憶領域７２６は、パズルゲームで使用される第１ボールオブジェクトや第２ボールオブジェクトのデータ（９０，９２）などを記憶する。以下、第１ボールオブジェクトデータ９０についてのみ説明するが、第２ボールオブジェクトデータ９２などの他のボールオブジェクトデータについても同様である。
【０１３４】
図１４に示すように、第１ボールオブジェクトデータ９０は、画像データ９０ａ，位置データ９０ｂ，色データ９０ｃおよび角度オフセット値データ９０ｄを含む。
【０１３５】
画像データ９０ａは、第１ボールオブジェクトを描画するための画像データ（ポリゴンやテクスチャなどのデータ）である。ただし、この画像データによって第１ボールオブジェクトの大きさ（形状）が決定される。位置データ９０ｂは、第１ボールオブジェクトの位置（３次元位置）の座標データである。ただし、第１ボールオブジェクトが配置されるレイヤ（４００）のＺ座標を別途記憶しておく場合には、このレイヤ上における第１ボールオブジェクトの２次元座標の座標データが記憶される。色データ９０ｃは、第１ボールオブジェクトに付された色についてのデータである。角度オフセット値データ９０ｄは、当該第１ボールオブジェクトが保持される歯車オブジェクトの基準位置に対する当該ボールオブジェクトの位置についての角度ｂａの角度データである。
【０１３６】
図１５は図１２に示した不可視歯車オブジェクトデータ記憶領域７２８を具体的に示した図解図である。図１５に示すように、不可視歯車オブジェクトデータ記憶領域７２８には、第１不可視歯車オブジェクトデータ１００，第２不可視歯車オブジェクトデータ１０２，…が記憶される。以下、第１不可視歯車オブジェクトデータ１００についてのみ説明するが、第２不可視歯車オブジェクトデータ１０２などの他の不可視歯車オブジェクトデータについても同様である。
【０１３７】
図１５に示すように、第１不可視歯車オブジェクトデータ１００は、位置データ１００ａ，ポリゴンデータ１００ｂおよび不可視ソケットオブジェクトデータ１００ｃを含む。
【０１３８】
位置データ１００ａは、第１不可視歯車オブジェクトの位置（３次元位置）の座標データである。ただし、第１不可視歯車オブジェクトが配置されるレイヤ（４２０）のＺ座標が別途記憶されている場合には、このレイヤ上における２次元座標の座標データが記憶される。ポリゴンデータ１００ｂは、第１不可視歯車オブジェクトを形成するためのポリゴンデータである。なお、ポリゴンデータ１００ｂによって第１不可視歯車オブジェクトが形成されるため、その大きさ（この実施例では、半径ないし直径）はポリゴンデータ１００ｂによって規定される。
【０１３９】
不可視ソケットオブジェクトデータ１００ｃは、第１不可視ソケットオブジェクトデータ１０００，第２不可視ソケットオブジェクトデータ１００２，…を含む。以下、第１不可視ソケットオブジェクトデータ１０００についてのみ説明するが、第２不可視ソケットオブジェクトデータ１００２などの他の不可視ソケットオブジェクトデータについても同様である。
【０１４０】
図１５に示すように、第１不可視ソケットオブジェクトデータ１０００は、位置データ１０００ａ、ポリゴンデータ１０００ｂおよび角度オフセット値データ１０００ｃを含む。
【０１４１】
位置データ１０００ａは、第１不可視ソケットオブジェクトの位置（３次元位置）の座標データである。ただし、第１不可視ソケットオブジェクトが配置されるレイヤ（４２０）のＺ座標が決定されている場合には、このレイヤ上の２次元位置の座標データが記憶される。ポリゴンデータ１０００ｂは、第１不可視ソケットオブジェクトを形成するためのポリゴンデータであり、その大きさ（この実施例では、半径ないし直径）も規定する。角度オフセット値データ１０００ｃは、この第１不可視ソケットオブジェクトが設けらる第１不可視歯車オブジェクトの基準位置に対する当該第１不可視ソケットオブジェクトの位置についての角度ｓ´ａの角度データである。
【０１４２】
図１２に戻って、上述したように、データ記憶領域７２には、得点データ７２ｃが記憶される。この得点データ７２ｃは、ゲームの進行に応じて加算されるパズルゲームについての得点の数値データである。ただし、得点のみならず、プレイヤないしプレイヤキャラクタのレベルについてのデータも記憶するようにしてもよい。
【０１４３】
また、上述したように、データ記憶領域７２には、タッチオンフラグ７２ｄが設けられる。タッチオンフラグ７２ｄは、タッチ入力（タッチ操作）の有無を判別するためのフラグである。たとえば、タッチオンフラグ７２ｄは１ビットのレジスタで構成され、タッチオンフラグ７２ｄがオンされると、データ値「１」がレジスタに設定され、タッチオンフラグ７２ｄがオフされると、データ値「０」がレジスタに設定される。ただし、タッチ操作が有る場合に、タッチオンフラグ７２ｄはオンされ、タッチ操作が無い場合に、タッチオンフラグ７２ｄはオフされる。なお、タッチ操作の有無は、座標データの有無で容易に知ることができる。
【０１４４】
具体的には、図２に示したＣＰＵコア３４が図１６に示すフロー図に従って全体処理を実行する。図１６に示すように、ＣＰＵコア３４は全体処理を開始すると、ステップＳ１で、初期設定する。たとえば、ゲームを最初から開始する場合には、ＣＰＵコア３４は、ＲＡＭ４２のバッファ領域をクリアしたり、各種フラグやタイマをリセットしたりする。また、ゲームを前回の続きから開始する場合には、ＣＰＵコア３４は、ＲＡＭ４２のバッファ領域をクリアしたり、ＲＡＭ２８ｂに記憶されたセーブデータをロードしたりする。
【０１４５】
続くステップＳ３では、ゲーム画像を表示する。ここでは、図３に示したように、ゲーム画面３００がＬＣＤ１２に表示されるとともに、ゲーム画面３２０がＬＣＤ１４に表示される。次のステップＳ５では、タッチオンフラグ７２ｄがオンであるかどうかを判断する。つまり、タッチ操作が有るかどうかを判断するのである。ステップＳ５で“ＮＯ”であれば、つまりタッチオンフラグ７２ｄがオフであれば、タッチ操作が無いと判断して、そのままステップＳ１３に進む。
【０１４６】
しかし、ステップＳ５で“ＹＥＳ”であれば、つまりタッチオンフラグ７２ｄがオンであれば、タッチ操作が有ると判断して、ステップＳ７で、後述する歯車オブジェクト回転処理（図１７参照）を実行し、ステップＳ９で、後述するソケット接続判別処理（図１８および図１９参照）を実行し、ステップＳ１１で、後述するボール移動処理（図２０および図２１参照）を実行してから、ステップＳ１３に進む。
【０１４７】
ステップＳ１３では、すべての一致フラグ（８００ｅ等）がオンであるかどうかを判断する。つまり、ボールオブジェクト３１２ａ，３１２ｂ，３１４ａ，３１４ｂ，３１６ａ，３１６ｂが、それぞれ、同じ色が付されている歯車オブジェクト３２２，３２４，３２６のソケットオブジェクト３２２ａ，３２２ｂ，３２４ａ，３２４ｂ，３２６ａ，３２６ｂに保持された状態であるかどうかを判断する。
【０１４８】
ステップＳ１３で“ＮＯ”であれば、つまりいずれか１つの一致フラグでもオフであれば、ゲームクリアでないと判断して、そのままステップＳ１７に進む。一方、ステップＳ１３で“ＹＥＳ”であれば、つまりすべての一致フラグがオンであれば、ゲームクリアであると判断して、ステップＳ１５で、ゲームクリア処理を実行して、ステップＳ１７に進む。
【０１４９】
ステップＳ１７では、ゲーム終了かどうかを判断する。つまり、ゲームオーバになったり、プレイヤによってゲーム終了の指示が与えられたりしたかどうかを判断する。ステップＳ１７で“ＮＯ”であれば、つまりゲーム終了でなければ、ゲームを続行すると判断して、ステップＳ３に戻る。一方、ステップＳ１７で“ＹＥＳ”であれば、つまりゲーム終了であれば、そのまま全体処理を終了する。
【０１５０】
図１７は図１６に示したステップＳ７の歯車オブジェクト回転処理のフロー図である。図１７に示すように、ＣＰＵコア３４は、歯車オブジェクト回転処理を開始すると、ステップＳ３１で、変数ｉをリセットする（ｉ＝１）。ただし、変数ｉは歯車オブジェクトをカウントするために設定される。以下、同様である。次に、ステップＳ３３では、直前フレームのタッチ位置ｆ１を読み出し、ステップＳ３５では、現フレームのタッチ位置ｆ０を読み出す。つまり、ＣＰＵコア３４は、データ記憶領域７２に記憶された座標データ７２０および座標データ７２２を読み出す。
【０１５１】
続くステップＳ３７では、タッチ位置ｆ０およびタッチ位置ｆ１が歯車オブジェクトｉ上であるかどうかを判断する。つまり、歯車オブジェクトｉ上でタッチ操作されているかどうかを判断するのである。ステップＳ３７で“ＮＯ”であれば、つまりタッチ位置ｆ０またはタッチ位置ｆ１のいずれか一方でも歯車オブジェクトｉ上でなければ、当該歯車オブジェクトｉを回転させるためのタッチ操作ではないと判断して、そのままステップＳ５５に進む。
【０１５２】
しかし、ステップＳ３７で“ＹＥＳ”であれば、つまりタッチ位置ｆ０およびタッチ位置ｆ１が歯車オブジェクトｉ上であれば、ステップＳ３９で、歯車オブジェクトｉの中心ｃと現フレームのタッチ位置ｆ０からベクトルＶ０を求める。さらに、ステップＳ４１で、ベクトルＶ０を正規化してベクトルＵ０を求める。ただし、上述したように、ベクトルＵ０はベクトルＶ０の単位ベクトルである。
【０１５３】
続いて、ステップＳ４３で、数１に従って、現フレームのタッチ位置ｆ０に対応する円周上の位置ｒ０を求め、ステップＳ４５で、数２に従って、直前フレームのタッチ位置ｆ１に対応する円周上の位置ｒ１を求め、ステップＳ４７で、位置ｒ０と位置ｒ１とからベクトルｒＶを求める。そして、ステップＳ４９で、数３に従って、回転量Ｌを求める。
【０１５４】
その後、ステップＳ５１で、回転量Ｌに基づいて歯車オブジェクトｉを回転処理する。また、ステップＳ５３で、歯車オブジェクトｉに連動する歯車オブジェクトｊを回転量Ｌに基づいて回転処理する。たとえば、歯車オブジェクトｊは、歯車オブジェクトｉと同じ角度だけ、同じ方向または反対方向に回転される。図示は省略するが、このステップＳ５３の回転処理が実行されたときに、ソケットオブジェクトの角度オフセット値データ（８００ｃなど）およびボールオブジェクトの角度オフセット値データ（９０ｄなど）が更新される。
【０１５５】
ステップＳ５５では、変数ｉを１加算する（ｉ＝ｉ＋１）。そして、ステップＳ５７では、変数ｉが最大値ｉｍａｘを超えたかどうかを判断する。ただし、最大値ｉｍａｘは歯車オブジェクトの総数である。ステップＳ５７で“ＮＯ”であれば、つまり変数ｉが最大値ｉｍａｘ以下であれば、そのままステップＳ３３に戻って、次の歯車オブジェクトｉについての処理を実行する。一方、ステップＳ５７で“ＹＥＳ”であれば、つまり変数ｉが最大値ｉｍａｘを超えていれば、すべての歯車オブジェクトｉについての処理を終了したと判断して、全体処理にリターンする。
【０１５６】
図１８および図１９は、図１６に示したステップＳ９のソケット接続判別処理のフロー図である。図１８に示すように、ＣＰＵコア３４は、ソケット接続判別処理を開始すると、ステップＳ７１で、変数ｉを初期化する（ｉ＝１）。続くステップＳ７３では、歯車オブジェクトｉの接続設定が有るかどうかを判断する。ステップＳ７３で“ＮＯ”であれば、つまり歯車オブジェクトｉの接続設定が無ければ、そのまま図１９に示すステップＳ９５に進む。
【０１５７】
しかし、ステップＳ７３で“ＹＥＳ”であれば、つまり歯車オブジェクトｉの接続設定が有れば、ステップＳ７５で、変数ｓを初期設定する（ｓ＝１）。ただし、変数ｓは、歯車オブジェクトｉに設けられるソケットオブジェクトｓを識別するために設定される。以下、同様である。続いて、ステップＳ７７で、変数ｓ´を初期設定する（ｓ´＝１）。ただし、変数ｓ´は、歯車オブジェクトｉと接続設定される他の歯車オブジェクトｉ´に設けられるソケットオブジェクトｓ´を識別するために設定される。続いて、ステップＳ７９では、歯車オブジェクトｉに設けられるソケットオブジェクトｓが不可視ソケットオブジェクトｂｓと重なるかどうかを判断する。具体的には、角度差Ｂを数８に従って算出し、この角度差Ｂが所定角度（たとえば、５度）未満であるかどうかを判断するのである。
【０１５８】
ステップＳ７９で“ＮＯ”であれば、つまり歯車オブジェクトｉに設けられるソケットオブジェクトｓが不可視ソケットオブジェクトｂｓと重ならない場合には、そのまま図１９に示すステップＳ９３に進む。一方、ステップＳ７９で“ＹＥＳ”であれば、つまり歯車オブジェクトｉに設けられるソケットオブジェクトｓが不可視ソケットオブジェクトｂｓと重なる場合には、ステップＳ８１で、歯車オブジェクトｉに設けられるソケットオブジェクトｓと、当該歯車オブジェクトｉと接続設定された歯車オブジェクトｉ´に設けられるソケットオブジェクトｓ´との角度差Ａを数４に従って算出する。
【０１５９】
次に、図１９に示すステップＳ８３で、角度差Ａが一定角度ｍよりも大きいかどうかを判断する。この実施例では、一定角度ｍは５度に設定されるが、０度〜３６０度の間で任意に設定することが可能である。ステップＳ８３で“ＹＥＳ”であれば、つまり角度差Ａが一定角度ｍ未満であれば、ステップＳ８５で、ソケットオブジェクトｓとソケットオブジェクトｓ´とを接続状態に設定して、つまり当該ソケットオブジェクトｓについての接続フラグをオンして、ステップＳ８９に進む。一方、ステップ８３で“ＮＯ”であれば、つまり角度差Ａが一定角度ｍ以上であれば、ステップＳ８７で、ソケットオブジェクトｓとソケットオブジェクトｓ´とを非接続状態に設定して、つまり当該ソケットオブジェクトｓの接続フラグをオフして、ステップＳ８９に進む。
【０１６０】
ステップＳ８９では、変数ｓ´を１加算する（ｓ´＝ｓ´＋１）。つまり、次のソケットオブジェクトｓ´について、接続状態の有無の設定処理を実行するのである。したがって、この実施例では、１つのソケットオブジェクトｓに対して１つのソケットオブジェクトｓ´が接続状態とされるため、ステップＳ８３で“ＹＥＳ”であり、ステップＳ８５の処理を実行した場合にはそのままステップＳ９７に進むようにしてもよい。
【０１６１】
次のステップＳ９１では、変数ｓ´が最大値ｓ´ｍａｘであるかどうかを判断する。ここで、最大値ｓ´ｍａｘは歯車オブジェクトｉ´に設けられるソケットオブジェクトｓ´の総数である。つまり、ステップＳ９１では、ＣＰＵコア３４は、歯車オブジェクトｉ´の全てのソケットオブジェクトｓ´についての処理を終了したかどうかを判断する。
【０１６２】
ステップＳ９１で“ＮＯ”であれば、つまり変数ｓ´が最大値ｓ´ｍａｘ以下であれば、図１８に示したステップＳ７９に戻る。一方、ステップＳ９１で“ＹＥＳ”であれば、つまり変数ｓ´が最大値ｓ´ｍａｘを超えれば、ステップＳ９３で、変数ｓを１加算する（ｓ＝ｓ＋１）。続くステップＳ９５では、変数ｓが最大値ｓｍａｘを超えているかどうかを判断する。
【０１６３】
ステップＳ９５で“ＮＯ”であれば、つまり変数ｓが最大値ｓｍａｘ以下であれば、そのまま図１８に示したステップＳ７７に戻る。一方、ステップＳ９５で“ＹＥＳ”であれば、つまり変数ｓが最大値ｓｍａｘを超えていれば、ステップＳ９７で、変数ｉを１加算する（ｉ＝ｉ＋１）。そして、ステップＳ９９では、変数ｉが最大値ｉｍａｘを超えているかどうかを判断する。
【０１６４】
ステップＳ９９で“ＮＯ”であれば、つまり変数ｉが最大値ｉｍａｘ以下であれば、そのまま図１８に示したステップＳ７３に戻る。一方、ステップＳ９９で“ＹＥＳ”であれば、つまり変数ｉが最大値ｉｍａｘを超えれば、図１６に示した全体処理にリターンする。
【０１６５】
図２０および図２１は、図１６のステップＳ１１に示したボール移動処理のフロー図である。図２０に示すように、ＣＰＵコア３４は、ボール移動処理を開始すると、ステップＳ１１１で、変数ｂを初期化する（ｂ＝１）。ここで、変数ｂは、ボールオブジェクトｂを識別するために設定される。続くステップＳ１１３で、ボールオブジェクトｂの回転角度Ｂ（Ｂ＝ｓａ＋Ｌ）を算出する。次のステップＳ１１５では、変数ｂｓを初期化する（ｂｓ＝１）。ここで、変数ｂｓは、不可視ソケットオブジェクトｂｓを識別するために設定される。次のステップＳ１１７では、ボールオブジェクトｂと不可視ソケットオブジェクトｂｓとの角度差Ａ´を数７に従って算出する。
【０１６６】
続いて、ステップＳ１１９では、角度差Ａ´が一定角度ｋ未満であるかどうかを判断する。この実施例では、一定角度ｋは５度に設定されるが、０度〜３６０度の間で任意に設定することができる。ステップＳ１１９で“ＮＯ”であれば、つまり角度差Ａ´が一定角度ｋ以上であれば、そのまま図２１に示すステップＳ１３３に進む。一方、ステップＳ１１９で“ＹＥＳ”であれば、つまり角度差Ａ´が一定角度ｋ未満であれば、ステップＳ１２１で、ボールオブジェクトｂを保持するソケットオブジェクトｓと、不可視ソケットオブジェクトｂｓに対して設けられた歯車オブジェクトｉ´に設けられるソケットオブジェクトｓ´の接続フラグがオンであるかどうかを判断する。
【０１６７】
ステップＳ１２１で“ＮＯ”であれば、つまりボールオブジェクトｂを保持するソケットオブジェクトｓと、不可視ソケットオブジェクトｂｓに対して設けられた歯車オブジェクトに設けられるソケットオブジェクトｓ´の接続フラグがオフであれば、そのままステップＳ１３３に進む。一方、ステップＳ１２１で“ＹＥＳ”であれば、つまりボールオブジェクトｂを保持するソケットオブジェクトｓと、不可視ソケットオブジェクトｂｓに対して設けられた歯車オブジェクトに設けられるソケットオブジェクトｓ´の接続フラグがオンであれば、ステップＳ１２３で、ボールオブジェクトｂをソケットオブジェクトｓ´に移動して、図２１に示すステップＳ１２５で、ボールオブジェクトｂとソケットオブジェクトｓ´が設けられる歯車オブジェクトｉ´の色データを照合する。
【０１６８】
続くステップＳ１２７では、ボールオブジェクトｂと歯車オブジェクトｉ´との色が一致するかどうかを判断する。ステップＳ１２７で“ＹＥＳ”であれば、つまりボールオブジェクトｂと歯車オブジェクトｉ´との色が一致すれば、ステップＳ１２９で、当該ソケットオブジェクトｓ´に設定される一致フラグをオンして、ステップＳ１３３に進む。一方、ステップＳ１２７で“ＮＯ”であれば、つまりボールオブジェクトｂと歯車オブジェクトｉ´との色が一致しなければ、ステップＳ１３１で、当該ソケットオブジェクトｓ´に設定される一致フラグをオフして、ステップＳ１３３に進む。
【０１６９】
ステップＳ１３３では、変数ｂｓを１加算する（ｂｓ＝ｂｓ＋１）。そして、ステップＳ１３５で、変数ｂｓが最大値ｂｓｍａｘを超えるかどうかを判断する。ステップＳ１３５で“ＮＯ”であれば、つまり変数ｂｓが最大値ｂｓｍａｘ以下であれば、図２０に示したステップＳ１１７に戻る。一方、ステップＳ１３５で“ＹＥＳ”であれば、つまり変数ｂｓが最大値ｂｓｍａｘを超えれば、ステップＳ１３７で、変数ｂを１加算する（ｂ＝ｂ＋１）。
【０１７０】
そして、ステップＳ１３９で、変数ｂが最大値ｂｍａｘを超えるかどうかを判断する。ステップＳ１３９で“ＮＯ”であれば、つまり変数ｂが最大値ｂｍａｘ以下であれば、図２０に示したステップＳ１１３に戻る。一方、ステップＳ１３９で“ＹＥＳ”であれば、つまり変数ｂが最大値ｂｍａｘを超えれば、図１６に示した全体処理にリターンする。
【０１７１】
この実施例によれば、歯車オブジェクトを回転させてボールオブジェクトを移動させることにより、パズルゲームをプレイするので、今までにないパズルゲームを楽しむことができる。
【０１７２】
なお、この実施例では、分かり易くするために、歯車オブジェクトに対応して不可視歯車オブジェクトが設けられるようにしたが、少なくとも不可視ソケットオブジェクトを設定しておけばよいため、不可視歯車オブジェクトは省略することができる。かかる場合には、図１５を用いて説明した位置データ１００ａおよびポリゴンデータ１００ｂなど、不可視歯車オブジェクトに関するデータを省略することができる。
【０１７３】
また、この実施例では、見た目と一致させて直感的にパズルゲームをプレイできるように、歯車オブジェクトやボールオブジェクトの形状を円形にしたが、この形状に限定される必要はない。たとえば、歯車オブジェクトやボールオブジェクトは、三角形や四角形のような多角形、または星型のような任意の形状であってもよい。
【０１７４】
さらに、この実施例では、ポインティングデバイスとして、タッチパネルを用いるようにしたが、ペンタブレット、タッチパッド、コンピュータマウスのような他のポインティングデバイスを用いることも可能である。ただし、他のポインティングデバイスを用いる場合には、画面上の指示位置を示すためのマウスポインタのような指示画像を表示する必要がある。
【０１７５】
さらにまた、ゲーム装置の構成は、上述の実施例の構成に限定されるべきでない。たとえば、ＬＣＤは１つでもよく、タッチパネルは２つのＬＣＤのそれぞれに設けるようにしてもよい。
【図面の簡単な説明】
【０１７６】
【図１】図１はこの発明のゲーム装置の一実施例を示す図解図である。
【図２】図２は図１に示すゲーム装置の電気的な構成を示すブロック図である。
【図３】図３は図１に示すゲーム装置の第１のＬＣＤおよび第２のＬＣＤに表示されるゲーム画面の一例を示す図解図である。
【図４】図４は図１に示すゲーム装置の第２のＬＣＤに表示されるゲーム画面の他の実施例を示す図解図である。
【図５】図５は図１に示すゲーム装置の第１のＬＣＤおよび第２のＬＣＤに表示されるゲーム画面の他の例を示す図解図である。
【図６】図６はゲーム画面に表示される歯車オブジェクトがプレイヤの操作に従って回転される回転量の算出方法を説明するための図解図である。
【図７】図７は歯車オブジェクトに設けられるソケットオブジェクトに保持されるボールオブジェクトおよび当該歯車オブジェクトに対応して設けられる不可視ソケットオブジェクトの角度オフセット値を説明するための図解図である。
【図８】図８は図１に示すゲーム装置の第１のＬＣＤおよび第２のＬＣＤに表示されるゲーム画面のそれぞれに対応して設けられる不可視歯車オブジェクトのレイヤを示す図解図である。
【図９】図９は歯車オブジェクト同士の接続設定の有無を説明するための図解図である。
【図１０】図１０は隣接する２つの歯車オブジェクトに設けられるソケットオブジェクトの接続状態を説明するための図解図である。
【図１１】図１１は接続状態に有るソケットオブジェクト間をボールオブジェクトが移動する場合における、当該ボールオブジェクトの位置と、当該ボールオブジェクトを保持する歯車オブジェクトに隣接する歯車オブジェクトに対応して設けられる不可視ソケットオブジェクトとの位置を説明するための図解図である。
【図１２】図１２は図２に示すＲＡＭのメモリマップの一例を示す図解図である。
【図１３】図１３は図１２に示すデータ記憶領域に設けられる歯車オブジェクトデータ記憶領域の具体的な内容を示す図解図である。
【図１４】図１４は図１２に示すデータ記憶領域に設けられるボールオブジェクトデータ記憶領域の具体的な内容を示す図解図である。
【図１５】図１５は図１２に示すデータ記憶領域に設けられる不可視歯車オブジェクトデータ記憶領域の具体的な内容を示す図解である。
【図１６】図１６は図２に示すＣＰＵコアのゲーム全体処理を示すフロー図である。
【図１７】図１７は図２に示すＣＰＵコアの歯車オブジェクト回転処理を示すフロー図である。
【図１８】図１８は図２に示すＣＰＵコアのソケット接続判別処理の一部を示すフロー図である。
【図１９】図１９は図２に示すＣＰＵコアのソケット接続判別処理の他の一部であって、図１８に後続するフロー図である。
【図２０】図２０は図２に示すＣＰＵコアのボール移動処理の一部を示すフロー図である。
【図２１】図２１は図２に示すＣＰＵコアのボール移動処理の他の一部であって、図２０に後続するフロー図である。
【符号の説明】
【０１７７】
１０  …ゲーム装置
１２，１４  …ＬＣＤ
１６，１６ａ，１６ｂ  …ハウジング
２２  …操作スイッチ
２４  …タッチパネル
２６  …スティック
２８  …メモリカード
２８ａ  …ＲＯＭ
２８ｂ，４２  …ＲＡＭ
３４  …ＣＰＵコア
３６ａ，３６ｂ  …スピーカ
４４，４６  …ＧＰＵ
４８  …Ｉ／Ｆ回路
５０  …ＬＣＤコントローラ
５２，５４  …ＶＲＡＭ
【図１】
0005395335.tif 000002
【図２】
0005395335.tif 000003
【図３】
0005395335.tif 000004
【図４】
0005395335.tif 000005
【図５】
0005395335.tif 000006
【図６】
0005395335.tif 000007
【図７】
0005395335.tif 000008
【図８】
0005395335.tif 000009
【図９】
0005395335.tif 000010
【図１０】
0005395335.tif 000011
【図１１】
0005395335.tif 000012
【図１２】
0005395335.tif 000013
【図１３】
0005395335.tif 000014
【図１４】
0005395335.tif 000015
【図１５】
0005395335.tif 000016
【図１６】
0005395335.tif 000017
【図１７】
0005395335.tif 000018
【図１８】
0005395335.tif 000019
【図１９】
0005395335.tif 000020
【図２０】
0005395335.tif 000021
【図２１】
0005395335.tif 000022