(57)【特許請求の範囲】
【請求項１】
仮想空間内の操作対象オブジェクトを画面に表示する表示装置と、前記画面上の位置を指定するためのポインティングデバイスとを備える画像処理装置のコンピュータに実行させる画像処理プログラムであって、
前記ポインティングデバイスによって指定される前記画面上の位置を示す入力座標を所定の単位時間毎に検出する入力座標検出ステップと、
前記入力座標検出ステップにおいて検出された第１の入力座標と、当該第１の入力座標とは不連続に検出され且つ当該第１の入力座標よりも前に検出された第２の入力座標とに基づいて変化方向を算出する方向算出ステップと、
前記算出された方向に応じた回転方向に前記操作対象オブジェクトを回転させる回転ステップとを前記コンピュータに実行させる、画像処理プログラム。
【請求項２】
前記回転ステップにおいては、前記第１あるいは第２の入力座標の何れかが前記操作対象オブジェクトの占める画面上の領域内に含まれているとき、当該第１あるいは第２の入力座標が含まれている操作対象オブジェクトを回転させる、請求項１に記載の画像処理プログラム。
【請求項３】
前記画像処理プログラムは、前記第２の入力座標が検出されてから所定時間内に前記第１の入力座標が検出されたかを判定する時間判定ステップを更に前記コンピュータに実行させ、
前記回転ステップは、前記時間判定ステップによって前記第１の入力座標が所定時間内に検出されたと判定されたときにのみ、前記回転方向に前記操作対象オブジェクトを回転させる、請求項１に記載の画像処理プログラム。
【請求項４】
前記画像処理プログラムは、前記第２の入力座標から前記第１の入力座標までの距離を算出する距離算出ステップを更に実行させ、
前記回転ステップは、前記操作対象オブジェクトを回転させる角度を前記算出された距離に応じて変化させる、請求項１に記載の画像処理プログラム。
【請求項５】
前記画像処理プログラムは、
前記回転ステップによって回転させた前記操作対象オブジェクトと他の操作対象オブジェクトとの前記画面上の表示位置が重複するか否かを判定する重複チェックステップと、
前記重複チェックステップにおいて重複していると判定されたときは、前記操作対象オブジェクトが回転する動作を表示した後、回転する前の位置に戻る動作を前記画面上に表示する回転キャンセルステップを更に前記コンピュータに実行させる、請求項１に記載の画像処理プログラム。
【請求項６】
前記画像処理プログラムは、
前記入力座標検出ステップによって連続して検出された少なくとも２つ以上の入力座標に基づいて変化方向を算出する連続方向算出ステップと、
前記連続方向算出ステップによって算出された方向に応じた移動方向に前記操作対象オブジェクトを移動させる移動ステップとを更に前記コンピュータに実行させる、請求項１に記載の画像処理プログラム。
【請求項７】
前記画像処理プログラムは、前記入力座標検出ステップによって連続して検出された前記２つ以上の入力座標の何れかが前記操作対象オブジェクトの占める画面上の領域内に含まれているかを判定する指示判定ステップを更に含み、
前記移動ステップにおいては、前記指示判定ステップにおいて前記何れかの入力座標が前記操作対象オブジェクトの占める画面上の領域内に含まれていると判定されたとき、当該入力座標が含まれている操作対象オブジェクトを移動させる、請求項６に記載の画像処理プログラム。
【請求項８】
前記指示判定ステップにおいては、前記連続して検出された前記２つ以上の入力座標のうち最初に検出された入力座標が前記操作対象オブジェクトの占める画面上の領域内に含まれているかを判定し、
前記移動ステップにおいては、前記指示判定ステップによって判定された前記最初に検出された入力座標が含まれている操作対象オブジェクトを移動させる、請求項７に記載の画像処理プログラム。
【請求項９】
仮想空間内の操作対象オブジェクトを画面に表示する表示装置と、前記画面上の位置を指定するためのポインティングデバイスとを備えるゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記ポインティングデバイスによって指定される前記画面上の位置を示す入力座標を所定の単位時間毎に検出する入力座標検出ステップと、
前記入力座標検出ステップにおいて検出された第１の入力座標とは不連続に検出され且つ当該第１の入力座標よりも前に検出された第２の入力座標が存在するか否か、および、当該第１の入力座標とは連続して検出され且つ当該第１の入力座標よりも前に検出された入力座標の少なくとも２つ以上の入力座標が存在するか否かを判定する判定ステップと、
前記判定ステップにおいて前記第２の入力座標が存在すると判定されたときは、前記第２の入力座標と前記第１の入力座標とに基づいて変化方向を算出する方向算出ステップと、
前記算出された方向に応じた回転方向に、前記操作対象オブジェクトを回転させる回転ステップと、
前記判定ステップにおいて連続して検出された２つ以上の入力座標が存在すると判定されたときは、前記入力座標検出ステップによって連続して検出された少なくとも２つ以上の入力座標を結ぶ方向を算出する連続方向算出ステップと、
前記連続方向算出ステップによって算出された方向に応じた移動方向に前記操作対象オブジェクトを移動させる移動ステップとを前記コンピュータに実行させるゲームプログラム。
【請求項１０】
仮想空間内の操作対象オブジェクトを画面に表示する表示装置と前記画面上の位置を指定するためのポインティングデバイスとを備える画像処理装置であって、
前記ポインティングデバイスによって指定される前記画面上の位置を示す入力座標を所定の単位時間毎に検出する入力座標検出部と、
前記入力座標検出部において検出された第１の入力座標と、当該第１の入力座標とは不連続に検出され且つ当該第１の入力座標よりも前に検出された第２の入力座標とに基づいて変化方向を算出する方向算出部と、
前記算出された方向に応じた回転方向に、前記操作対象オブジェクトを回転させる回転部とを備える、画像処理装置。
【請求項１１】
仮想空間内の操作対象オブジェクトを画面に表示する表示装置と、前記画面上の位置を指定するためのポインティングデバイスとを備えるゲーム装置であって、
前記ポインティングデバイスによって指定される前記画面上の位置を示す入力座標を所定の単位時間毎に検出する入力座標検出部と、
前記入力座標検出部において検出された第１の入力座標とは不連続に検出され且つ当該第１の入力座標よりも前に検出された第２の入力座標が存在するか否か、および、当該第１の入力座標とは連続して検出され且つ当該第１の入力座標よりも前に検出された入力座標の少なくとも２つ以上の入力座標が存在するか否かを判定する判定部と、
前記判定部において前記第２の入力座標が存在すると判定されたときは、前記第２の入力座標と前記第１の入力座標とに基づいて変化方向を算出する方向算出部と、
前記算出された方向に応じた回転方向に、前記操作対象オブジェクトを回転させる回転部と、
前記判定部において連続して検出された２つ以上の入力座標が存在すると判定されたときは、前記入力座標検出部によって連続して検出された少なくとも２つ以上の入力座標を結ぶ方向を算出する連続方向算出部と、
前記連続方向算出部によって算出された方向に応じた移動方向に前記操作対象オブジェクトを移動させる移動部とを備えるゲーム装置。
【請求項１２】
仮想空間内の操作対象オブジェクトを画面に表示する表示装置と、前記画面上の位置を指定するためのポインティングデバイスとを備える画像処理システムであって、
前記ポインティングデバイスによって指定される前記画面上の位置を示す入力座標を所定の単位時間毎に検出する入力座標検出部と、
前記入力座標検出ステップにおいて検出された第１の入力座標と、当該第１の入力座標とは不連続に検出され且つ当該第１の入力座標よりも前に検出された第２の入力座標とに基づいて変化方向を算出する方向算出部と、
前記算出された方向に応じた回転方向に前記操作対象オブジェクトを回転させる回転部とを備える、画像処理システム。
【請求項１３】
仮想空間内の操作対象オブジェクトを画面に表示する表示装置と、前記画面上の位置を指定するためのポインティングデバイスとを用いる画像処理方法であって、
前記ポインティングデバイスによって指定される前記画面上の位置を示す入力座標を所定の単位時間毎に検出する入力座標検出ステップと、
前記入力座標検出ステップにおいて検出された第１の入力座標と、当該第１の入力座標とは不連続に検出され且つ当該第１の入力座標よりも前に検出された第２の入力座標とに基づいて変化方向を算出する方向算出ステップと、
前記算出された方向に応じた回転方向に前記操作対象オブジェクトを回転させる回転ステップと前記コンピュータに実行させる、画像処理方法。
【請求項１４】
仮想空間内の操作対象オブジェクトを画面に表示する表示装置と、前記画面上の位置を指定するためのポインティングデバイスとを備えるゲームシステムであって、
前記ポインティングデバイスによって指定される前記画面上の位置を示す入力座標を所定の単位時間毎に検出する入力座標検出部と、
前記入力座標検出部が検出した第１の入力座標とは不連続に検出され且つ当該第１の入力座標よりも前に検出された第２の入力座標が存在するか否か、および、当該第１の入力座標とは連続して検出され且つ当該第１の入力座標よりも前に検出された入力座標の少なくとも２つ以上の入力座標が存在するか否かを判定する判定部と、
前記判定部で前記第２の入力座標が存在すると判定されたときは、前記第２の入力座標と前記第１の入力座標とに基づいて変化方向を算出する方向算出部と、
前記算出された方向に応じた回転方向に、前記操作対象オブジェクトを回転させる回転部と、
前記判定部で連続して検出された２つ以上の入力座標が存在すると判定されたときは、前記入力座標検出ステップによって連続して検出された少なくとも２つ以上の入力座標を結ぶ方向を算出する連続方向算出部と、
前記連続方向算出ステップによって算出された方向に応じた移動方向に前記操作対象オブジェクトを移動させる移動部とを備える、ゲームシステム。
【請求項１５】
仮想空間内の操作対象オブジェクトを画面に表示する表示装置と、前記画面上の位置を指定するためのポインティングデバイスとを用いるゲーム処理方法であって、
前記ポインティングデバイスによって指定される前記画面上の位置を示す入力座標を所定の単位時間毎に検出する入力座標検出ステップと、
前記入力座標検出ステップにおいて検出された第１の入力座標とは不連続に検出され且つ当該第１の入力座標よりも前に検出された第２の入力座標が存在するか否か、および、当該第１の入力座標とは連続して検出され且つ当該第１の入力座標よりも前に検出された入力座標の少なくとも２つ以上の入力座標が存在するか否かを判定する判定ステップと、
前記判定ステップにおいて前記第２の入力座標が存在すると判定されたときは、前記第２の入力座標と前記第１の入力座標とに基づいて変化方向を算出する方向算出ステップと、
前記算出された方向に応じた回転方向に、前記操作対象オブジェクトを回転させる回転ステップと、
前記判定ステップにおいて連続して検出された２つ以上の入力座標が存在すると判定されたときは、前記入力座標検出ステップによって連続して検出された少なくとも２つ以上の入力座標を結ぶ方向を算出する連続方向算出ステップと、
前記連続方向算出ステップによって算出された方向に応じた移動方向に前記操作対象オブジェクトを移動させる移動ステップとを備える、ゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像処理装置、画像処理プログラム、ゲーム装置およびゲームプログラムに関し、より特定的には、ポインティングデバイスを操作することによって画面に表示されているオブジェクトの表示状態を制御する画像処理装置、画像処理プログラム、ゲーム装置およびゲームプログラムに関する。
【背景技術】
【０００２】
従来、操作パネルに直接触れることにより（タッチ入力操作）、オブジェクトを操作する技術として、タッチパネルに指又はペン等を接触させたまま移動（ドラッグ）操作したときの移動方向に応じてオブジェクトを回転させること技術がある（例えば、特許文献１および２）。具体的には、右方向にドラッグ操作するとオブジェクトを右方向へ回転し、左方向にドラッグ操作するとオブジェクトを左方向へ回転させる。
【特許文献１】特開平５−１００８０９号公報
【特許文献２】特開平９−１３４２６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上述したような技術では、ドラッグ操作によってオブジェクトを回転させるものであるが、ある程度連続して座標入力を行う必要があるので、操作手数が多くなるとともに操作に要する時間もかかり、簡単でかつ素早い操作によってオブジェクトを回転させることが難しいという問題がある。また、オブジェクトの回転をドラッグ操作によって実現しているので、オブジェクトの回転と移動とを独立して操作することが難しいという問題がある。すなわち、オブジェクトの移動はドラッグ操作によって行われるのが一般的なので、上述の手法を用いてオブジェクトの移動も行おうとすると、例えば、ドラッグ操作によってオブジェクトの移動と回転を連動して行わざるを得ない。
【０００４】
それゆえに、本発明の目的は、簡単かつ素早い操作でオブジェクトの回転を行うことが可能な画像処理プログラム、ゲームプログラム、画像処理装置およびゲーム装置を提供することである。また、本発明の他の目的は、オブジェクトの回転操作と移動操作とを独立しておこなうことが可能な画像処理プログラム、ゲームプログラム、画像処理装置およびゲーム装置を提供することである。
【課題を解決するための手段】
【０００５】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００６】
第１の発明は、表示装置（１２）とポインティングデバイス（１６、１７）とを備える画像処理装置のコンピュータに実行させる画像処理プログラムであって、入力座標検出ステップ（Ｓ５）と、方向算出ステップ（Ｓ６、Ｓ２８、Ｓ２９）と、回転ステップ（Ｓ３１）とをコンピュータに実行させる画像処理プログラムである。表示装置は、仮想空間内の操作対象オブジェクトを画面に表示する。ポインティングデバイスは、画面上の位置を指定する。入力座標検出ステップは、ポインティングデバイスによって指定される画面上の位置を示す入力座標を所定の単位時間毎に検出する。方向算出ステップは、入力座標検出ステップにおいて検出された第１の入力座標に関して、当該第１の入力座標とは不連続に検出され且つ当該第１の入力座標よりも前に検出された第２の入力座標が存在するか否かを判定し、存在する場合、当該第１の入力座標と当該第２の入力座標とに基づいて変化方向を算出する。回転ステップは、算出された方向に応じた回転方向に、操作対象オブジェクトを回転させる。なお、ここでいうポインティングデバイスには、タッチパネル等の絶対座標入力が可能なデバイスとマウス等の相対座標入力が可能なデバイスとの双方が含まれる。
【０００７】
第２の発明は、第１の発明において、回転ステップにおいては、第１あるいは第２の入力座標の何れかが操作対象オブジェクトの占める画面上の領域内に含まれているとき、当該第１あるいは第２の入力座標が含まれている操作対象オブジェクトを回転させる。
【０００８】
第３の発明は、第１の発明において、画像処理プログラムは、第２の入力座標が検出されてから所定時間内に第１の入力座標が検出されたかを判定する時間判定ステップ（Ｓ２２、Ｓ２９）を更にコンピュータに実行させ、回転ステップは、時間判定ステップによって第１の入力座標が所定時間内に検出されたと判定されたときにのみ、回転方向に操作対象オブジェクトを回転させる。
【０００９】
第４の発明は、第１の発明において、画像処理プログラムは、第２の入力座標から第１の入力座標までの距離を算出する距離算出ステップ（Ｓ２８）を更に実行する。また、回転ステップは、操作対象オブジェクトを回転させる角度を算出された距離に応じて変化させる。
【００１０】
第５の発明は、第１の発明において、画像処理プログラムは、重複チェックステップ（Ｓ４９）と回転キャンセルステップ（Ｓ４９、Ｓ１７）とを更にコンピュータに実行させる。重複チェックステップは、回転ステップによって回転させた操作対象オブジェクトと他の操作対象オブジェクトとの画面上の表示位置が重複するか否かを判定する。回転キャンセルステップは、重複チェックステップにおいて重複していると判定されたときは、操作対象オブジェクトが回転する動作を表示した後、回転する前の位置に戻る動作を画面上に表示する。
【００１１】
第６の発明は、第１の発明において、画像処理プログラムは、連続方向算出ステップ（Ｓ２８）と移動ステップ（Ｓ３０）とを更にコンピュータに実行させる。連続方向算出ステップは、入力座標検出ステップによって連続して検出された少なくとも２つ以上の入力座標に基づいて変化方向を算出する。移動ステップは、連続方向算出ステップによって算出された方向に応じた移動方向に操作対象オブジェクトを移動させる。
【００１２】
第７の発明は、第６の発明において、画像処理プログラムは、入力座標検出ステップによって連続して検出された２つ以上の入力座標の何れかが操作対象オブジェクトの占める画面上の領域内に含まれているかを判定する指示判定ステップ（Ｓ１０、Ｓ２６）を更に含む。また、移動ステップにおいては、指示判定ステップにおいて何れかの入力座標が操作対象オブジェクトの占める画面上の領域内に含まれていると判定されたとき、当該入力座標が含まれている操作対象オブジェクトを移動させる。
【００１３】
第８の発明は、第７の発明において、指示判定ステップにおいては、連続して検出された２つ以上の入力座標のうち最初に検出された入力座標が操作対象オブジェクトの占める画面上の領域内に含まれているかを判定し、移動ステップにおいては、指示判定ステップによって判定された最初に検出された入力座標が含まれている操作対象オブジェクトを移動させる。
【００１４】
第９の発明は、仮想空間内の操作対象オブジェクトを画面に表示する表示装置と、画面上の位置を指定するためのポインティングデバイスとを備えるゲーム装置のコンピュータに実行させるゲームプログラムであって、入力座標検出ステップ（Ｓ５）と、判定ステップ（Ｓ６、Ｓ２９）と、方向算出ステップ（Ｓ２８）と、回転ステップ（Ｓ３１）と、連続方向算出ステップ（Ｓ２８）と、移動ステップ（Ｓ３０）とを実行させるゲームプログラムである。入力座標検出ステップは、前記ポインティングデバイスによって指定される画面上の位置を示す入力座標を所定の単位時間毎に検出する。判定ステップは、入力座標検出ステップにおいて検出された第１の入力座標に関して、当該第１の入力座標とは不連続に検出され且つ当該第１の入力座標よりも前に検出された第２の入力座標が存在するか否か、および、当該第１の入力座標とは連続して検出され且つ当該第１の入力座標よりも前に検出された入力座標の少なくとも２つ以上の入力座標が存在するか否かを判定する。方向算出ステップは、判定ステップにおいて第２の入力座標が存在すると判定されたときは、第２の入力座標と第１の入力座標とに基づいて変化方向を算出する。回転ステップは、算出された方向に応じた回転方向に、操作対象オブジェクトを回転させる。連続方向算出ステップは、判定ステップにおいて連続して検出された２つ以上の入力座標が存在すると判定されたときは、入力座標検出ステップによって連続して検出された少なくとも２つ以上の入力座標を結ぶ方向を算出する。移動ステップは、連続方向算出ステップによって算出された方向に応じた移動方向に操作対象オブジェクトを移動させる。
【００１５】
第１０の発明は、表示装置（１２）とポインティングデバイス（１６、１７）とを備える画像処理装置であって、入力座標検出部（１６、３１）と、方向算出部（３１）と、回転部（３１）とを備える。表示装置は、仮想空間内の操作対象オブジェクトを画面に表示する。ポインティングデバイスは、画面上の位置を指定する。入力座標検出部は、ポインティングデバイスによって指定される画面上の位置を示す入力座標を所定の単位時間毎に検出する。方向算出部は、入力座標検出部において検出された第１の入力座標に関して、当該第１の入力座標とは不連続に検出され且つ当該第１の入力座標よりも前に検出された第２の入力座標が存在するか否かを判定し、存在する場合、当該第１の入力座標と当該第２の入力座標とに基づいて変化方向を算出する。回転部は、算出された方向に応じた回転方向に、操作対象オブジェクトを回転させる。
【００１６】
第１１の発明は、仮想空間内の操作対象オブジェクトを画面に表示する表示装置と、画面上の位置を指定するためのポインティングデバイスとを備えるゲーム装置であって、入力座標検出部（１６、３１）と、判定部（３１）と、方向算出部（３１）と、回転部（３１）と、連続方向算出ステップ（３１）と、移動ステップ（３１）とを備える。入力座標検出部は、ポインティングデバイスによって指定される画面上の位置を示す入力座標を所定の単位時間毎に検出する。判定部は、入力座標検出部において検出された第１の入力座標に関して、当該第１の入力座標とは不連続に検出され且つ当該第１の入力座標よりも前に検出された第２の入力座標が存在するか否か、および、当該第１の入力座標とは連続して検出され且つ当該第１の入力座標よりも前に検出された入力座標の少なくとも２つ以上の入力座標が存在するか否かを判定する。方向算出部は、判定部において第２の入力座標が存在すると判定されたときは、第２の入力座標と第１の入力座標とに基づいて変化方向を算出する。回転部は、算出された方向に応じた回転方向に、操作対象オブジェクトを回転させる。連続方向算出部は、判定部において連続して検出された２つ以上の入力座標が存在すると判定されたときは、入力座標検出部によって連続して検出された少なくとも２つ以上の入力座標を結ぶ方向を算出する。移動部は、連続方向算出部によって算出された方向に応じた移動方向に操作対象オブジェクトを移動させる。
【発明の効果】
【００１７】
上記第１の発明によれば、簡単でかつ素早い操作で操作対象オブジェクトの回転を行うことが可能となる。
【００１８】
上記第２の発明によれば、直感的で且つ簡単な操作で、操作対象オブジェクトの回転を行うことが可能となる。
【００１９】
上記第３の発明によれば、所定時間内に第１及び第２の入力座標が取得できたときのみ操作対象オブジェクトを回転させるため、素早い操作をユーザに要求することができる。これにより、ゆっくりとした入力によるユーザの意図しない回転操作を防ぐことが可能となる。
【００２０】
上記第４の発明によれば、第１の入力座標から第２の入力座標までの距離に応じて操作対象オブジェクトを回転させる量を変えることができる。これにより、ユーザは直感的に回転量を調節することができ、単純な操作ながら奥の深い回転操作を行うことができる。
【００２１】
上記第５の発明によれば、操作対象オブジェクトが一度回転しても、回転後の状態で他の操作対象オブジェクトとぶつかるようなときは、元の状態に戻すような表示を行う。そのため、操作対象オブジェクトが回転できないことをユーザに理解しやすく表現することができる。
【００２２】
上記第６の発明によれば、簡単でかつ素早い操作で、操作対象オブジェクトの回転操作と移動操作とを独立して行うことが可能となる。
【００２３】
上記第７乃至第８の発明によれば、直感的な操作で操作対象オブジェクトを移動することが可能となる。
【００２４】
上記第９の発明によれば、上記第１の発明および第６の発明と同様の効果を得ることができる。
【００２５】
上記第１０の発明によれば、上記第１の発明と同様の効果を得ることができる。
【００２６】
上記第１１の発明によれば、上記第９の発明と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態について、図面を参照して説明する。尚、この実施例により本発明が限定されるものではない。
【００２８】
（第１の実施形態）
図１は、この発明の一実施例である携帯ゲーム装置１０の外観図である。図１において、この実施例の携帯ゲーム装置１０は、２つの液晶表示器（ＬＣＤ）１１及び１２を所定の配置位置となるように、ハウジング１３に収納して構成される。具体的には、第１の液晶表示器（以下、「ＬＣＤ」という）１１と第２のＬＣＤ１２を上下に配置して収納する場合は、ハウジング１３が上部ハウジング１３ａと下部ハウジング１３ｂから構成され、上部ハウジング１３ａが下部ハウジング１３ｂの上辺の一部で回動自在に支持される。上部ハウジング１３ａは、第１のＬＣＤ１１の平面形状よりも少し大きな平面形状を有し、一方主面からＬＣＤ１１の表示面を露出するように開口部が形成される。下部ハウジング１３ｂは、その平面形状が上部ハウジング１３ａよりも横長に選ばれ、横方向の略中央部にＬＣＤ１２の表示面を露出する開口部が形成され、ＬＣＤ１２を挟む何れか一方に音抜き孔１４ａが形成されるとともに、ＬＣＤ１２を挟む左右に操作スイッチ部１５が装着される。
【００２９】
操作スイッチ部１５は、ＬＣＤ１２の左横における下部ハウジング１３ｂの一方主面に装着される方向指示スイッチ１５ａ、スタートスイッチ１５ｂ、セレクトスイッチ１５ｃと、ＬＣＤ１２の右横における下部ハウジング１３ｂの一方主面に装着される装着される動作スイッチ１５ｄ、１５ｅを含む。方向指示スイッチ１５ａは、プレイヤによって操作可能なプレイヤオブジェクト（又はプレイヤキャラクタ）の移動方向を指示したり、カーソルの移動方向の指示等に用いられる。動作スイッチ１５ｄ、１５ｅは、方向指示以外の動作、例えばアクションゲームにおいてはジャンプ、パンチ、武器を動かす等の指示、ロールプレイングゲーム（ＲＰＧ）やシミュレーションＲＰＧにおいてはアイテムの取得，武器又はコマンドの選択決定等の指示入力に使用される。また、必要に応じて、動作スイッチをさらに追加したり、下部ハウジング１３ｂにおける操作スイッチ１５の装着領域の上部面（上部側面）に側面スイッチ１５Ｌ、１５Ｒを設けてもよい。
【００３０】
ＬＣＤ１２の上面には、タッチパネル１６が装着される。タッチパネル１６は、例えば、抵抗膜方式、光学式（赤外線方式），静電容量結合式の何れの種類でもよく、その上面をスティック１７（又は指でも可）で押圧操作又は移動操作若しくは撫でる操作をしたとき、スティック１７の座標位置を検出して座標データを出力するものである。
【００３１】
上部ハウジング１３ａの側面近傍には、必要に応じてタッチパネル１６を操作するスティック１７を収納するための収納孔１４ｂが形成される。この収納孔１４ｂには、スティック１７が収納される。下部ハウジング１３ｂの側面の一部には、ゲームプログラムを記憶したメモリ（例えば、ＲＯＭ）を内蔵したメモリカード１８を着脱自在に装着するためのカートリッジ挿入部（図示せず）が形成される。カートリッジ挿入部の内部には、メモリカード１８と電気的に接続するためのコネクタ（図示せず）が内蔵される。さらに、下部ハウジング１３ｂ（又は上部ハウジング１３ａでも可）には、ＣＰＵ等の各種電子部品を実装した電子回路基板（後述の図２に示す３０）が収納される。なお、ゲームプログラムを記憶する情報記憶媒体としては、ＲＯＭ又はフラッシュメモリのような不揮発性半導体メモリに限らず、ＣＤ−ＲＯＭやＤＶＤ若しくはそれに類する光学式ディスク状記憶媒体でもよい。
【００３２】
図２は、携帯ゲーム装置１０のブロック図である。図２において、ハウジング１３に収納される電子回路基板３０には、ＣＰＵコア３１が実装される。ＣＰＵコア３１には、バス３２を介して、コネクタ３３が接続されるととともに、入出力インターフェース（Ｉ／Ｆ）回路３４、第１のグラフィック処理ユニット（第１ＧＰＵ）３５、第２のグラフィック処理ユニット（第２ＧＰＵ）３６、ＲＡＭ３７およびＬＣＤコントローラ４０が接続される。コネクタ３３には、メモリカード１８が着脱自在に接続される。メモリカード１８は、ゲームプログラムを格納するための記憶媒体であり、具体的には、ゲームプログラムを記憶するＲＯＭ１８０とバックアップデータを書き換え可能に記憶するＲＡＭ１８５とを搭載する。メモリカード１８のＲＯＭ１８０に記憶されたゲームプログラムはＲＡＭ３７にロードされ、ＲＡＭ３７にロードされたゲームプログラムがＣＰＵコア３１によって実行される。ＣＰＵコア３１がゲームプログラムを実行して得られる一時的なデータや画像を生成するためのデータがＲＡＭ３７に記憶される。Ｉ／Ｆ回路３４には、操作スイッチ部１５及びタッチパネル１６が接続されるとともに、スピーカ１９が接続される。スピーカ１９は、音抜き孔１４ａの内側位置に配置される。
【００３３】
第１ＧＰＵ３５には、第１のビデオＲＡＭ（以下「ＶＲＡＭ」）３８が接続され、第２ＧＰＵ３６には、第２のビデオＲＡＭ（以下「ＶＲＡＭ」）３９が接続される。第１ＧＰＵ３５は、ＣＰＵコア３１からの指示に応じて、ＲＡＭ３７に記憶される画像を生成するためのデータに基づいて第１のゲーム画像を生成し、第１ＶＲＡＭ３８に描画する。第２ＧＰＵ３６は、ＣＰＵコア３１からの指示に応じて、ＲＡＭ３７に記憶される画像を生成するためのデータに基づいて第２のゲーム画像を生成し、第２ＶＲＡＭ３９に描画する。第１ＶＲＡＭ３８および第２ＶＲＡＭ３９はＬＣＤコントローラ４０に接続される。
【００３４】
ＬＣＤコントローラ４０はレジスタ４１を含む。レジスタ４１はＣＰＵコア３１からの指示に応じて０または１の値を記憶する。ＬＣＤコントローラ４０は、レジスタ４１の値が０の場合は、第１ＶＲＡＭ３８に描画されたゲーム画像をＬＣＤ１１に出力し、第２ＶＲＡＭ３９に描画されたゲーム画像をＬＣＤ１２に出力する。また、レジスタ４１の値が１の場合は、第１ＶＲＡＭ３８に描画されたゲーム画像をＬＣＤ１２に出力し、第２ＶＲＡＭ３９に描画されたゲーム画像をＬＣＤ１１に出力する。
【００３５】
Ｉ／Ｆ回路３４は、操作スイッチ部１５、タッチパネル１６、およびスピーカ１９などの外部入出力装置とＣＰＵコア３１との間のデータの受け渡しを行う回路である。タッチパネル１６（タッチパネル用のデバイスドライバを含む）は、スティック１７によって入力（指示）された位置に対応する位置座標のデータを出力するものである。なお、本実施例では、表示画面の解像度は２５６ｄｏｔ×１９２ｄｏｔであり、タッチパネル１６の検出精度も表示画面に対応した２５６ｄｏｔ×１９２ｄｏｔとして説明するが、タッチパネル１６の検出精度は表示画面の解像度よりも低いものであってもよいし、高いものであってもよい。
【００３６】
次に、図３を用いて、本実施形態が想定しているゲームの概要について説明する。図３は、本実施形態が想定するゲームの画面の一例である。図３において、ＬＣＤ１２には、正方形のオブジェクト（以下、正方形オブジェクト）が複数表示されている。この正方形オブジェクトは、４個で１組の操作対象オブジェクト５１（以下、ブロック５１と呼ぶ）を構成する。ブロック５１の形状には７種類あり、それぞれが不作為に積み上げられた状態でＬＣＤ１２に表示されている。本実施形態が想定するゲームでは、後述するような操作で上記各ブロック５１を移動あるいは回転させることで上記正方形オブジェクトを横一列に揃える。正方形オブジェクトが横一列に揃えば、その列は消滅する。このとき、消した列の上に乗っていたブロック５１が下に落ちてくる。このように、ブロック５１を移動・回転させることで正方形オブジェクトを横一列に揃えて消滅させていき、最終的には、上方にある所定の正方形オブジェクト（最初はＬＣＤ１２に表示されておらず、正方形オブジェクトを消していくことで、段々と降りてくる）を消滅させればクリアとなるゲームである。
【００３７】
次に、図４〜図７を用いて、本実施形態が想定するゲームにおけるブロックの操作について説明する。本操作の種類には大きく２種類あり、１つはブロックの左右方向への移動操作であり、もう１つは、ブロックの回転操作である。まず、ブロックの移動は、スティック１７等を用いて、移動させたいブロックをドラッグ操作（入力座標が連続して検出される操作）することで移動することができる。図４を用いて説明すると、まず、移動させたいブロック上の任意の位置をスティック１７で押圧する（タップ操作）。そして、スティック１７をタッチパネル１６から離さずに、そのまま右方向に移動させることで、図５に示すように、ブロック５１を右方向に移動することができる。なお、ブロック５１を左方向に移動させたいときは、スティック１７をタッチパネル１６に押圧したまま左方向に移動させればよい。
【００３８】
次に、ブロック５１の回転操作について説明する。本ゲームでは、ブロックの回転は、ダブルタップ操作（タップを続けて２回行なう操作。すなわち、入力座標が不連続に検出される操作。マウスにおけるダブルクリックに相当する）で行うことができる。例えば、あるブロックを右方向に回転させたい場合、まず、上述の図４に示したように、回転させたいブロック５１上の任意の位置（図４ではブロックの左下）をスティック１７で押圧する。次に、一旦スティック１７を離し、所定の時間内にスティック１７で再度同じブロックを押圧する。このとき、当該ブロックを回転させたい方向に合わせて、押圧する位置を移動させる。図６を例に説明すると、ブロックを右方向に回転させるために、最初に押圧した点よりも右側の位置を押圧する（図６）。すると、当該ブロックが右に９０度回転する（図７）。このように、ダブルタップ操作における１度目の押圧位置と２度目の押圧位置との位置関係に応じてブロック５１を回転させる。換言すると、ダブルタップ操作における２度目のタップ位置が１度目のタップ位置よりも右側であれば、ブロックを右に回転させることができ、２度目のタップ位置が１度目のタップ位置よりも左側であれば、ブロックを左に回転させることができる。なお、本ゲームにおいては、回転方向については、右か左かの何れかだけであるものとする。
【００３９】
次に、本実施形態で用いられる各種データについて説明する。図８は、ＲＡＭ３７のメモリ空間を図解的に示したメモリマップである。図８に示すように、ＲＡＭ３７は、記憶領域として、ゲームプログラム記憶領域２１と、画像データ記憶領域２２と、第１座標記憶領域２３と、第２座標記憶領域２４と、ブロックテーブル記憶領域２５と、入力フラグ記憶領域２６と、入力継続フレーム数記憶領域２７と、ダブルタップ継続フレーム数記憶領域２８と、指示ブロックＩＤ記憶領域２９と、その他の記憶領域３０とを含む。
【００４０】
ゲームプログラム記憶領域２１には、ゲーム等の画像処理を行うために必要なプログラムや、ゲーム内容に応じたゲームデータ等が格納される。より具体的には、ゲームプログラム記憶領域２１には、ＣＰＵコア３１の動作プログラム（後述の図１０に示すフローチャートに対応する動作を実行させるためのプログラム）である、プログラム２１ａ〜２１ｆが格納される。
【００４１】
入力座標取得プログラム２１ａは、ユーザが押圧したタッチパネル１６上の座標に対応するＬＣＤ１２上の座標値を取得するプログラムである。
【００４２】
操作対象オブジェクト判定プログラム２１ｂは、上記入力座標取得プログラム２１ａによって取得された入力座標値が、ＬＣＤ１２に表示されているブロック５１の何れかの領域内に含まれているか否かを判定するためのプログラムである。換言すれば、ユーザがブロック５１をスティック１７等で指示したか否かを判定する。
【００４３】
操作種別判定プログラム２１ｃは、ユーザによる入力操作が、ドラッグ操作であるかダブルタップ操作であるのか等の、入力操作の種別を判定するためのプログラムである。
【００４４】
変化方向判定プログラム２１ｄは、上記操作種別がダブルタップ操作であるときに、当該ダブルタップ操作における１度目の入力座標と２度目の入力座標との位置関係を判定するためのプログラムである。
【００４５】
オブジェクト回転プログラム２１ｅは、上記変化方向判定プログラム２１ｄによって判定された位置関係に応じて、ブロック５１を回転させるためのプログラムである。
【００４６】
その他のプログラム２１ｆは、効果音や音楽を発生するためのサウンド制御処理やゲームオーバーになった場合の処理（例えば、ゲームオーバー状態の検出処理や、ゲームオーバーに達したときにそれまでのゲーム状態のバックアップデータを保存する処理）のためのプログラムである。
【００４７】
画像データ記憶領域２２には、ＬＣＤ１１および１２に表示される画像のデータ２２ａ〜ｂが格納される。操作対象オブジェクト画像２２ａは、ＬＣＤ１２に表示され、プレイヤの操作対象となるブロック５１の画像データである。また、その他のオブジェクト画像２２ｂは、複数の背景（または静止）オブジェクト等の画像データである。
【００４８】
第１座標記憶領域２３には、上記ダブルタップ操作における１度目の入力座標が格納される。第２座標記憶領域２４には、上記ダブルタップ操作における２度目の入力座標値が格納される。
【００４９】
ブロックテーブル記憶領域２５には、ＬＣＤ１２に表示される各ブロック５１が当該ＬＣＤ１２上に占める領域の座標範囲と、各ブロックを識別するため設けられているブロックＩＤとを関連付けたブロックテーブルを記憶するための領域である。図９は、当該ブロックテーブルの一例を模式的に示す図である。図９は、図３に示したゲーム画面に対応している。すなわち、ＬＣＤ１２の領域を上記正方形オブジェクトと同じ大きさのマス目で方眼紙状に分割し、どのブロックがどのマスに表示されているかを識別するために、各マス目毎に上記ブロックＩＤを関連付けている。例えば、ＩＤ４のブロックは、４つの正方形オブジェクトが横一列に並んだ構成とされ、ＬＣＤ１２の右下端（図９に示すブロックテーブルにおいて最下段のマスの右端から４つ分のマス）に表示されている。なお、ブロックＩＤが０であるマス目は、ブロックがそこには存在しないことを示す。
【００５０】
入力フラグ記憶領域２６には、タッチパネル１６がユーザに押圧されている状態か否かを区別するためのフラグである入力フラグが格納される。ここでは、入力フラグがオフであれば、タッチパネル１６は押圧されておらず、入力フラグがオンであれば、タッチパネル１６が押圧されている状態を示すものとする。
【００５１】
入力継続フレーム数記憶領域２７には、タッチパネル１６への押圧状態が継続している時間を示すための入力継続フレーム数が記憶される。例えば、１フレームを１／３０秒とする場合、１秒間タッチパネル１６を押圧し続けた場合は、入力継続フレーム数は３０となる。
【００５２】
ダブルタップ継続フレーム数記憶領域２８には、ダブルタップ操作における、１度目の入力完了から２度目の入力開始までの間の時間を示すためのフレーム数が記憶される。
【００５３】
指示ブロックＩＤ記憶領域２９には、ユーザが押圧したブロック、すなわち、ユーザが操作しようとしているブロックのブロックＩＤを示す指示ブロックＩＤが格納される。
【００５４】
その他の記憶領域３０には、プログラム実行中のデータや上記入力フラグ以外の各種フラグ等が格納される。
【００５５】
次に、図１０〜図１３を参照して、携帯ゲーム装置１０によって実行されるゲーム処理について説明する。なお、図１０〜図１２は携帯ゲーム装置１０によって実行されるゲーム処理の全体処理を示すフローチャートである。また、図１３は、図１０のブロック回転処理の詳細な動作を示すサブルーチンである。なお、図１０に示すゲーム処理のスキャンタイムは１フレームであるとする。
【００５６】
図１０において、まず、ゲーム開始に伴う準備処理が行われる（ステップＳ１）。このステップＳ１の処理をより具体的に説明すると、まず、ＣＰＵコア３１は、画面に表示すべきブロックを生成し、一意となるような上記ブロックＩＤを各ブロックに割り振る。次に、当該ブロック５１を不作為に画面表示領域に配置し、画面上の領域とブロックＩＤとを関連付けることで、上述したようなブロックテーブル（図９参照）を作る。続いて、ＬＣＤ１２の画像描画処理が行われる。この処理は、操作対象オブジェクトであるブロック５１と、その他のオブジェクト（例えば背景画像）をＲＡＭ３７の画像データ記憶領域２２から読出し、ＬＣＤ１２に表示することによって行われる。また、このとき、各種フラグを初期化する。当該準備処理の結果、上述の図３に示すようにＬＣＤ１２に不作為に積み上げられているブロック５１が表示される。
【００５７】
次に、後述するようなブロックの回転をキャンセルする表示を行うか否かを示すためのフラグである戻りフラグがオンか否かが判定される（ステップＳ２）。当該判定の結果、オフであれば（ステップＳ２でＮＯ）、処理を次のステップＳ３へ進める。一方、オンのときは（ステップＳ２でＹＥＳ）、回転キャンセル表示処理を行う（ステップＳ１７）。ステップＳ１７の処理については、後述する。
【００５８】
次に、ユーザによるタッチパネル１６への入力があったか否かが判定される（ステップＳ３）。その結果、タッチパネル１６への入力がないときは（ステップＳ３でＮＯ）、入力フラグをオフにする（図１１のステップＳ１８）。次に、第１座標記憶領域２３に座標値が記憶されているか否かが判定される（ステップＳ１９）。すなわち、ダブルタップ操作の一度目のタップ操作が行われているか否かを判定する。換言すれば、当該第１座標記憶領域２３に何らかの座標が記憶されていれば、ダブルタップ操作中（一度目のタップ操作がされた後の状態）であり、何も記憶されていないときは、ダブルタップ操作中ではない（タッチパネル１６への入力操作が全くない状態、または一度目のタップ操作完了から４０フレーム以上経過した状態）ことになる。つまり、過去にタッチパネル１６への入力によって検出された入力座標が存在するか否かを判定することになる。当該判定の結果、何も記憶されていないときは（ステップＳ１９でＮＯ）、そのまま処理を、後述のステップＳ１４へ進める。一方、何らかの座標が記憶されていれば（ステップＳ１９でＹＥＳ）、上記入力継続フレーム数が１０以上か否かを判定する（ステップＳ２０）。これは、ダブルタップ操作として有効な入力操作（一度目のタップ操作）であるか否かを判定するためのものである。すなわち、タッチパネル１６を１０フレーム以上押圧し続けている場合等、入力継続フレーム数が１０以上であれば（ステップＳ２０でＹＥＳ）、ダブルタップ操作として有効な入力操作ではないと判定し、１０フレーム以上でないときは（ステップＳ２０でＮＯ）、ダブルタップ操作として有効な一度目の入力が完了したと判定するものである。そして、入力継続フレーム数が１０以上ではないときは、ダブルタップ継続フレーム数に１を加算する（ステップＳ２１）。続いて、当該ダブルタップ継続フレーム数が４０フレーム以上であるか否かを判定する（ステップＳ２２）。これは、ダブルタップ操作が成立するか否かを判定するためのものである。すなわち、本実施形態では、例え２回タップ操作したとしても、１度目のタップ操作の入力完了から２度目のタップ操作の入力開始までの期間が４０フレーム以内でないときは、ダブルタップ操作とは認識しない。当該判定の結果、４０フレーム以上であれば（ステップＳ２２でＹＥＳ）、ダブルタップ操作は不成立として、第１座標記憶領域２３をクリアする（ステップＳ２３）。続いて、入力継続フレーム数をリセット、すなわち０にする（ステップＳ２４）。一方、４０フレーム以上でなければ（ステップＳ２２でＮＯ）、そのまま処理をステップＳ２４に進める。
【００５９】
図１０に戻り、ステップＳ３の判定の結果、タッチパネル１６への入力があれば（ステップＳ３でＹＥＳ）、入力が継続している時間を測るための、入力時間カウント処理が行われる（ステップＳ４）。具体的には、上記入力継続フレーム数に１が加算される。
【００６０】
次に、入力座標取得処理が行われる（ステップＳ５）。本処理では、タッチパネル１６で押圧された点に対応するＬＣＤ１２上の座標値（以下、入力座標値と呼ぶ）が取得される。
【００６１】
次に、第１座標記憶領域２３に座標値が記憶されているか否かが判定される（ステップＳ６）。本ステップにおける処理は、上述したステップＳ１９と同様である。当該判定の結果、第１座標記憶領域２３に座標値が記憶されていないときは（ステップＳ６でＮＯ）、続いて、入力フラグがオフか否かが判定される（ステップＳ７）。すなわち、新たにタッチパネルへの入力があったのか、タッチパネル１６への入力が継続している状態（タッチパネル１６を押圧し続けている状態）であるのかが判定される。入力フラグがオンであれば（ステップＳ７でＮＯ）、処理を後述するステップＳ１３に進める。
【００６２】
一方、入力フラグがオフであれば（ステップＳ７でＹＥＳ）、新たにタッチパネル１６への入力があったということであるため、入力フラグがオンに設定される（ステップＳ８）。
【００６３】
次に、上記入力座標値が、ＬＣＤ１２に表示されている何れかのブロック５１の領域に含まれるか否かが判定される（ステップＳ１０）。具体的には、上記ブロックテーブル（図９参照）を参照し、入力座標値に対応する画面領域上の座標値のブロックＩＤが０か否かが判定される。その結果、０であれば（ステップＳ１０でＮＯ）、何れのブロック５１をも押圧していないため、そのまま処理をステップＳ１３に進める。一方、０でなければ（ステップＳ１０でＹＥＳ）、入力座標値に対応する画面領域上の座標値のブロックＩＤが指示ブロックＩＤ２７に格納される（ステップＳ１１）。続いて、上記入力座標値が第１座標記憶領域２３に格納される（ステップＳ１２）。
【００６４】
ステップＳ１２の処理の次に、上記ダブルタップ継続フレーム数がリセットされる（ステップＳ１３）。すなわち、ダブルタップ継続フレーム数が０に設定される。続いて、ステップＳ１４において、消去判定処理が行われる。本処理では、横一列に揃ったブロック５１（正方形オブジェクト）の有無の判定、横一列に揃ったブロック５１の正方形オブジェクトの消去、および、ブロックの消去や移動、回転の結果を反映するための上記ブロックテーブルの更新処理が行われる。その後、ゲーム画像の表示処理が行われる（ステップＳ１５）。具体的には、ブロックの消去や移動の表示、後述するブロック回転処理で決定された角度に沿ってブロックが回転するアニメーション表示等が行われる。ステップＳ１５の後、ステップＳ１６において、ゲーム終了か否かが判断され、ＹＥＳの場合、ゲーム処理を終了し、ＮＯの場合、ステップＳ２に戻って、ゲーム処理を繰り返す。
【００６５】
次に、上記ステップＳ６の判定の結果、第１座標記憶領域２３に座標値が記憶されているときの処理（ステップＳ６でＹＥＳ）について、図１２を用いて説明する。図１２において、まず、入力座標値が第１座標記憶領域２３に記憶されている座標値と異なるか否かが判定される（ステップＳ２５）。すなわち、同じ位置を継続して押圧しているか、または同じ位置をダブルタップしたか否かが判定されることになる。当該判定の結果、同じ座標値であれば（ステップＳ２５でＮＯ）、そのまま処理をステップＳ１３に進める。一方、座標値が異なっていれば（ステップＳ２５でＹＥＳ）、入力座標値が、上記ステップＳ１０で記憶した指示ブロックＩＤで示されるブロック（以下、指定ブロックと呼ぶ）に含まれるか否かが判定される（ステップＳ２６）。すなわち、同じブロック５１内でダブルタップ操作を行ったか否かが判定される。具体的には、入力座標値が含まれる画面上の領域のブロックＩＤ（図９参照）が指示ブロックＩＤと一致するか否かが判定される。当該判定の結果、入力座標値が指定ブロックの領域に含まれるとき、つまり、指定ブロックをダブルタップしたときは（ステップＳ２６でＹＥＳ）、入力座標値を第２座標記憶領域２４に格納する（ステップＳ２７）。
【００６６】
次に、第１座標記憶領域２３と第２座標記憶領域２４とに格納されている座標値に基づいて、これらの変化方向と変化量（座標間の距離）を検出する（ステップＳ２８）。具体的には、ＬＣＤ１２の横方向の座標値（Ｘ座標）のうち、ＬＣＤ１２の左端を０とし、右方向に行くに従って値が増加していき、ＬＣＤ１２の右端を最大値とした場合の、第１座標記憶領域２３に格納されている座標値（以下、第１座標値）のＸ座標と、第２座標記憶領域２４に格納されている座標値（以下、第２座標値）のＸ座標とを比較する。そして、第１座標のＸ座標＜第２座標のＸ座標、という関係であれば、変化方向を「右」と判定する。また、第１座標のＸ座標＞第２座標のＸ座標、という関係であれば、変化方向を「左」と判定する。そして、その差分を変化量とする。例えば、ＬＣＤ１２の左上端の座標を（０，０）とした場合、第１座標値が（１０，２０）であり、第２座標値が（２０，２０）であれば、変化方向は「右」であり、変化量は「１０」となる。なお、上述したように、本ゲームにおいてはブロック５１の回転方向は右および左の何れか一方のみであるため、ここでは、Ｙ座標については考慮せずにＸ座標にのみ着目して判定している。
【００６７】
ステップＳ２８における処理の次に、ダブルタップ継続フレーム数が０であるか否かが判定される（ステップＳ２９）。つまり、ダブルタップ操作（タッチパネル１６を一度押圧し、一旦離して再度押圧した）であるか、ドラッグ操作（タッチパネル１６を押圧し続けたままで移動操作した）であるかの判定が行われる。当該判定の結果、ダブルタップ継続フレーム数が０であるとき（ステップＳ２９でＹＥＳ）は、ドラッグ操作であるため、上記ステップＳ２８で検出された変化方向及び変化量に基づいて、指定ブロックを移動させる（ステップＳ３０）。すなわち、連続して検出された少なくとも２つ以上の入力座標を結ぶ方向と量に応じて指定ブロックを移動させる。
【００６８】
一方、ダブルタップ継続フレーム数が０でないとき（ステップＳ２９でＮＯ）は、ダブルタップ操作であるため、指定ブロックを回転させる処理を行う（ステップＳ３１）。図１３は、当該ステップＳ３１で示した回転処理の詳細を示すフローチャートである。図１３において、まず、変化方向が「右」であるか否かが判定される（ステップＳ４１）。当該判定の結果、変化方向が「右」であれば（ステップＳ４１でＹＥＳ）、次に、変化量が１〜１０の範囲内であるか否かを判定する（ステップＳ４２）。これは、当該変化量に応じて、回転する角度を異なるものとするためである。当該判定の結果、変化量が１〜１０の範囲内であれば（ステップＳ４２でＹＥＳ）、指定ブロックを時計回りに９０°回転させる（ステップＳ４３）。一方、変化量が１〜１０の範囲内でないとき（すなわち、１１以上）は、指定ブロックを時計回りに１８０°回転させる（ステップＳ４４）。換言すれば、ダブルタップ操作において、一度目のタップ位置と２度目のタップ位置が近ければ、９０°しか回転せず、遠ければ、１８０°と大きく回転させることになる。
【００６９】
ステップＳ４１の判定の結果、変化方向が「右」でないときは（ステップＳ４１でＮＯ）、続いて、変化方向が「左」であるか否かを判定する（ステップＳ４５）。その結果、変化方向が「左」であれば、ステップＳ４２と同様に変化量が１〜１０の範囲内であるかを判定する（ステップＳ４６）。当該判定の結果、変化量が１〜１０の範囲内であれば（ステップＳ４６でＹＥＳ）、指定ブロックを反時計回りに９０°回転させる（ステップＳ４７）。一方、変化量が１〜１０の範囲内でないとき（すなわち、１１以上）は、指定ブロックを反時計回りに１８０°回転させる（ステップＳ４８）。一方、ステップＳ４５の判定の結果、変化方向が「左」でないときは、そのままブロック回転処理を終了する。
【００７０】
次に、ブロックを回転させた結果、他のブロックと衝突していないかをチェックする処理が行われる（ステップＳ４９）。このステップＳ４９の処理をより具体的に説明すると、まず、回転後の指定ブロックの位置が、その一部についてでも他のブロックの位置と重複していないかを判定する。当該判定の結果、重複していなければ、そのままブロック回転処理を終了する。一方、他のブロックと位置が重複しているときは、戻りフラグをオンに設定する。以上で、ステップＳ２９にかかるブロック回転処理は終了する。
【００７１】
図１２に戻り、ステップＳ３０あるいはＳ３１の処理が終われば、第１座標記憶領域２３および第２座標記憶領域２４をクリアする（ステップＳ３２）。つまり、指定ブロックの移動あるいは回転処理が終わったため、ダブルタップの判定に用いる情報をクリアするものである。その後、処理を上述したステップＳ１３に進める。
【００７２】
次に、上記ステップＳ２６の判定の結果、入力座標値が指定ブロックの領域に含まれないとき（ステップＳ２６でＮＯ）の処理について説明する。このときは、入力座標値が他のブロック５１の領域に含まれているか否かを判定する（ステップＳ３３）。具体的には、上記ブロックテーブルを参照して、入力座標値に該当する画面上の領域のブロックＩＤが０であるか否かが判定される。当該判定の結果、ブロックＩＤが０であれば、そこにはブロックが存在しないことになるため（ステップＳ３３でＮＯ）、処理を上記ステップＳ３２に進める。一方、ブロックＩＤが０でないときは（ステップＳ３３でＹＥＳ）、ダブルタップ操作における一度目の操作で押圧したブロック５１とは異なるブロック５１を押圧したことになる。そのため、上述したステップＳ１１に処理を進め、新たに押圧されたブロックを指定ブロックとする処理を行い、その後の処理を続ける。
【００７３】
次に、図１０に戻り、上記ステップＳ２の判定の結果、上記戻りフラグがオンのとき（ステップＳ２でＹＥＳ）の処理について説明する。この場合は、回転キャンセル表示処理（ステップＳ１７）が行われる。このステップＳ１７の処理では、例えば、指示ブロックを時計回りに９０°回転させた結果、他のブロックと位置が重なるときは（つまり、回転しきれないとき）、当該指示ブロックを、回転させる前の位置に戻す表示をする処理が行われる。具体的には、当該指示ブロックを一旦回転させ、他のブロックと衝突したら、回転させた方向と反対の方向に回転させるアニメーション表示が行われる。そして、指示ブロックが、回転する前の位置に戻れば、上記戻りフラグをオフに設定する。
【００７４】
以上で、本実施形態にかかるゲーム処理は終了する。
【００７５】
このように、第１の実施形態では、ダブルタップ操作における入力座標の変化に基づいて回転方向を決定している。そのため、簡単かつ素早い操作でブロック５１の回転を行うことができ、操作性の良いゲームを提供することができる。また、ドラッグ操作のときには、ブロック５１を移動させるため、操作対象オブジェクトの移動操作と回転操作を独立して行うことができる。これにより、直感的な操作で操作対象オブジェクトを移動させることが可能となる。また、上記変化量に応じてブロック５１を回転させる角度を変えるため、ユーザは直感的に回転量を調節することができ、単純な操作ながら奥の深いブロック５１の操作を行うことができる。
【００７６】
なお、上述の実施形態では、ダブルタップ操作における１度目のタップ位置と２度目のタップ位置が同じブロック５１内で行われなければ、ブロックの回転は行われなかった。しかし、これに限らず、２度目のタップ位置は、同じブロック５１の範囲の外であっても回転するようにしてもよい。すなわち、上述した図１２におけるステップＳ２６やＳ３３の処理を行わないようにしてもよい。これにより、プレイヤに回転操作を行いやすくすることができる。また、上述の実施例では、ダブルタップ操作における１度目のタップ位置と２度目のタップ位置が同じ場合（上述した図１２におけるステップＳ２５でＮＯ）、または１度目のタップ位置のＸ座標と２度目のタップ位置のＸ座標が同じ場合（上述した図１３におけるステップＳ４５でＮＯ）は、回転操作を行わないようにしたが、予め決められた方向（例えば右方向）に回転するようにしてもよい。
【００７７】
また、回転する量についても、上述の実施形態では９０°単位でブロックを回転していたが、これに限らず、上記変化量に応じて、更に細かい単位で回転するようにしてもよい。
【００７８】
また、ブロックの移動についても、一連のドラッグ操作において最初からブロックを指定していない場合であっても、その途中でブロックが指示されれば、当該ブロックを移動するようにしてもよい。例えば、最初はブロックの存在しない場所をスティック１７で押圧し、スティック１７をタッチパネル１６に接触させたまま、あるブロックを横切るようにスティック１７を移動させる。このときに、当該横切ったブロックを移動させるようにしてもよい。
【００７９】
（変形例）
また、上述した実施形態では、回転方向の判定では入力座標のＹ座標は考慮していなかったが、Ｙ座標も考慮して回転処理を行うようにしても良い。これは、特に３Ｄ画像で表示されるゲーム等に有効である。以下、Ｙ座標を考慮した回転処理について説明する。
【００８０】
図１４〜図２１は、３Ｄ画像で表示されているサイコロ（操作対象オブジェクト）を回転させる操作の概要を模式的に示す図である。例えば、当該サイコロを右方向に回転させたい場合、図１４に示すように、サイコロの正面をスティック１７で押圧する。次に、一旦スティック１７をタッチパネル１６から離し、所定の時間内に、最初に押圧した点よりも右側の位置をスティック１７で押圧する（図１５）。すると、当該サイコロが右に回転する（図１６、図１７）。同様に、当該サイコロを上に回転させたい場合は、図１８に示すように、サイコロの正面をスティック１７で押圧する。次に、一旦スティック１７をタッチパネル１６から離し、所定の時間内に、最初に押圧した点よりも上側の位置をスティック１７で押圧する（図１９）。すると、当該サイコロが上に回転する（図２０、図２１）。
【００８１】
次に、上述した回転処理の詳細な処理について説明する。基本的な処理の流れは図１０〜図１２を用いて説明した処理と同様であるが（但し、説明の便宜上、ブロック５１の代りにサイコロを用いて説明する。）、図１３を用いて説明したブロック回転処理が、以下に図２２を用いて説明するオブジェクト回転処理に置き換わる。
【００８２】
図２２は、Ｙ座標も考慮したオブジェクト回転処理の詳細を示すフローチャートである。まず、図２２に示す処理の前提として、上記ステップＳ２６における変化方向の検出で、左右方向に加え、Ｙ座標を比較することで、「上」あるいは「下」の変化方向も検出しておく。例えば、ＬＣＤ１２の縦方向の座標値（Ｙ座標）のうち、ＬＣＤ１２の上端を０とし、下方向に行くに従って値が増加していき、ＬＣＤ１２の下端を最大値とした場合、第１座標のＹ座標＜第２座標のＹ座標、という関係であれば、変化方向を「下」と判定する。また、第１座標のＹ座標＞第２座標のＹ座標、という関係であれば、変化方向を「上」と判定する。また、このとき、Ｘ座標・Ｙ座標ともに変化している場合は、変化量の大きいほうを優先して用いる。例えば、第１座標が（１０，１０）であり、第２座標が（２０，１５）のときは、変化方向は「右」でかつ「下」でもある。また、Ｘ座標の変化量は１０であり、Ｙ座標の変化量は５である。従って、この場合の変化方向については、「右」と決定する。なお、上述のように、変化方向が「右」でかつ「下」である場合、その両方を変化方向と決定するようにしてもよい。
【００８３】
上述のように変化方向を検出したうえで、図２２において、まず、変化方向が「右」であるか否かが判定される（ステップＳ５１）。当該判定の結果、「右」であれば（ステップＳ５１でＹＥＳ）、サイコロ（操作対象オブジェクト）を右方向に９０°回転させる。一方、変化方向が「右」でないときは（ステップＳ２１でＮＯ）、変化方向が「左」であるか否かが判定される（ステップＳ５３）。当該判定の結果、「左」であれば（ステップＳ５３でＹＥＳ）、サイコロを左方向に９０°回転させ（ステップＳ５４）、「左」でなければ（ステップＳ５３でＮＯ）、次に、変化方向が「上」であるか否かを判定する（ステップＳ５５。）当該判定の結果、「上」であれば（ステップＳ５５でＹＥＳ）、サイコロを上方向に９０°回転させ（ステップＳ５６）、「上」でなければ（ステップＳ５５でＮＯ）、次に、変化方向が「下」であるか否かを判定する（ステップＳ５７）。当該判定の結果、「下」であれば（ステップＳ５７でＹＥＳ）、サイコロを下方向に９０°回転させ（ステップＳ５８）、「下」でなければ（ステップＳ５７でＮＯ）、当該オブジェクト回転処理を終了する。
【００８４】
このように、Ｙ座標を考慮した回転処理を行うことで、操作対象オブジェクトに多様な変化を行わせることができ、例えば、３Ｄ空間を用いたゲーム等で多彩な遊び方を提供することが可能となる。
【００８５】
更に、回転する方向について、上述した実施形態では、右方向にダブルタップすれば右回転、というように、ダブルタップの移動方向に沿う形で回転方向を決めていた。これに限らず、ダブルタップの方向と回転方向とを異なる方向にしてもよい。例えば、右方向にダブルタップを行ったときは、上方向にオブジェクトを回転したり、上方向にダブルタップを行ったときは、右方向にオブジェクトを回転する等、必ずしも、ダブルタップの方向と回転方向を合わせないようにしてもよい。これにより、ダブルタップという単純な操作であっても、その変化方向に応じて様々な方向にオブジェクトを回転させることができ、オブジェクトを回転させることを利用するゲーム等において、より多彩な遊び方を提供することができる。また、上述した実施形態では、ダブルタップ操作における１度目のタップ位置と２度目のタップ位置の少なくとも何れか一方が操作対象オブジェクトの表示領域内に含まれているとき、その操作対象オブジェクトを回転させるようにしていたが、これに限らなくてもよい。例えば、操作対象オブジェクトが１つしかない場合であれば、ダブルタップ操作における１度目のタップ位置と２度目のタップ位置の両方ともが操作対象オブジェクトの表示領域内に含まれていなくても操作対象オブジェクトを回転させるようにしてもよい。また、ＬＣＤ１２の任意の領域に図３に示すようなゲーム画面領域とは別に操作領域を設け、操作領域内でダブルタップ操作することによって操作対象オブジェクトを回転させてもよい。
【００８６】
なお、上記実施例では、表示画面上の位置を指定するポインティングデバイスとしてタッチパネルを用いたが、他のポインティングデバイスを用いてもかまわない。ここで、ポインティングデバイスは、表示画面上での入力位置や座標を指定する入力装置であり、例えば、マウス、トラックパッド、トラックボールなどを入力装置として使用し、入力装置から出力される出力値から計算された画面座標系の情報を用いれば、本発明を同様に実現することができる。なお、マウス等のポインティングデバイスの場合、タッチ状態と非タッチ状態とをクリックボタンのオンオフに対応させ、マウス等から出力される出力値から座標を計算する処理をゲーム装置等で行えばよい。
【図面の簡単な説明】
【００８７】
【図１】本発明の一実施形態に係る携帯ゲーム装置１０の外観図
【図２】本発明の一実施形態に係る携帯ゲーム装置１０のブロック図
【図３】本実施形態が想定するゲームの画面の一例
【図４】ドラッグ操作を説明するための図
【図５】ドラッグ操作を説明するための図
【図６】回転操作を説明するための図
【図７】回転操作を説明するための図
【図８】図２のＲＡＭ３７のメモリ空間を図解的に示したメモリマップ
【図９】ブロックテーブルの一例を模式的に示す図
【図１０】本発明の一実施形態に係る携帯ゲーム装置１０の全体的な動作を示すメインルーチンのフローチャート
【図１１】本発明の一実施形態に係る携帯ゲーム装置１０の全体的な動作を示すメインルーチンのフローチャート
【図１２】本発明の一実施形態に係る携帯ゲーム装置１０の全体的な動作を示すメインルーチンのフローチャート
【図１３】図１２のステップＳ３１で示したブロック回転処理の詳細を示したフローチャート
【図１４】回転操作を説明するための図
【図１５】回転操作を説明するための図
【図１６】回転操作を説明するための図
【図１７】回転操作を説明するための図
【図１８】回転操作を説明するための図
【図１９】回転操作を説明するための図
【図２０】回転操作を説明するための図
【図２１】回転操作を説明するための図
【図２２】オブジェクト回転処理の詳細を示したフローチャート
【符号の説明】
【００８８】
１０  携帯ゲーム装置
１１  第１ＬＣＤ
１２  第２ＬＣＤ
１３  ハウジング
１４ａ  音抜き孔
１４ｂ  収納孔
１５  操作スイッチ部
１６  タッチパネル
１７  スティック
１８  メモリカード
１９  スピーカ
３０  電子回路基板
３１  ＣＰＵコア
３２  バス
３３  コネクタ
３４  インターフェース回路
３５  第１ＧＰＵ
３６  第２ＧＰＵ
３７  ＲＡＭ
３８  第１ＶＲＡＭ
３９  第２ＶＲＡＭ
４０  ＬＣＤコントローラ
４１  レジスタ
５１  ブロック
１８０  ＲＯＭ
１８５  ＲＡＭ
【図１】
0004743602.tif 000002
【図２】
0004743602.tif 000003
【図３】
0004743602.tif 000004
【図４】
0004743602.tif 000005
【図５】
0004743602.tif 000006
【図６】
0004743602.tif 000007
【図７】
0004743602.tif 000008
【図８】
0004743602.tif 000009
【図９】
0004743602.tif 000010
【図１０】
0004743602.tif 000011
【図１１】
0004743602.tif 000012
【図１２】
0004743602.tif 000013
【図１３】
0004743602.tif 000014
【図１４】
0004743602.tif 000015
【図１５】
0004743602.tif 000016
【図１６】
0004743602.tif 000017
【図１７】
0004743602.tif 000018
【図１８】
0004743602.tif 000019
【図１９】
0004743602.tif 000020
【図２０】
0004743602.tif 000021
【図２１】
0004743602.tif 000022
【図２２】
0004743602.tif 000023