(57)【要約】【課題】ドラッグ操作の操作性を向上する。【解決手段】情報処理装置は、表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる。情報処理装置は、オブジェクトに対するドラッグ操作の入力座標を取得する。情報処理装置は、ドラッグ操作が開始されてからの入力座標の座標変化量を算出する。オブジェクトは、ドラッグ操作中の入力座標に基づいて移動する。情報処理装置は、座標変化量が大きい場合に、当該座標変化量が小さい場合と比べて、入力座標とオブジェクトの座標との距離が大きくなるように、オブジェクトを入力座標から離す補正を行って当該オブジェクトを移動させる。【選択図】図１１
2019185383.tif 000002
【特許請求の範囲】
【請求項１】
表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理プログラムであって、情報処理装置のコンピュータを、
前記オブジェクトに対する前記ドラッグ操作の入力座標を取得する入力座標取得手段と、
前記ドラッグ操作が開始されてからの前記入力座標の座標変化量を算出する変化量算出手段と、
前記ドラッグ操作中の前記入力座標に基づいて前記オブジェクトを移動させるオブジェクト移動手段として前記コンピュータを機能させ、
前記オブジェクト移動手段は、前記座標変化量が大きい場合に、当該座標変化量が小さい場合と比べて、前記入力座標と前記オブジェクトの座標との距離が大きくなるように、前記オブジェクトを前記入力座標から離す補正を行って当該オブジェクトを移動させる、情報処理プログラム。
【請求項２】
前記入力座標取得手段は、前記ドラッグ操作中において前記入力座標を繰り返し取得し、
前記変化量算出手段は、前記ドラッグ操作が開始された入力座標から現在の前記入力座標までの差分に基づいて前記座標変化量を算出する、請求項１に記載の情報処理プログラム。
【請求項３】
前記オブジェクト移動手段は、
前記座標変化量に基づく補正量を用いて前記入力座標を補正した座標に前記オブジェクトを配置し、
前記ドラッグ操作中における前記差分の最大値に応じた大きさとなるように前記補正量を算出する、請求項２に記載の情報処理プログラム。
【請求項４】
前記変化量算出手段は、前記ドラッグ操作中における前記入力座標の累積移動距離に基づいて前記座標変化量を算出する、請求項１から請求項３のいずれか１項に記載の情報処理プログラム。
【請求項５】
前記オブジェクト移動手段は、前記ドラッグ操作が開始されてから前記座標変化量が所定の閾値以下となる期間において、前記入力座標と前記オブジェクトの座標との位置関係を維持して前記オブジェクトを移動させる、請求項１から請求項４のいずれか１項に記載の情報処理プログラム。
【請求項６】
前記オブジェクト移動手段は、前記ドラッグ操作中の前記入力座標と前記オブジェクトの座標との距離に上限を設定する、請求項１から請求項５のいずれか１項に記載の情報処理プログラム。
【請求項７】
前記オブジェクト移動手段は、前記ドラッグ操作が開始された前記入力座標が、前記オブジェクト内の基準位置を通る所定軸について前記補正の方向と同じ側にある場合、当該入力座標が当該所定軸について当該補正の方向の反対側にある場合に比べて、当該ドラッグ操作中における当該補正の量を前記同じ側において大きく設定する、請求項１から請求項６のいずれか１項に記載の情報処理プログラム。
【請求項８】
前記オブジェクト移動手段は、前記ドラッグ操作中の前記入力座標に対して、前記表示装置に表示される画像における斜め上方向の位置に前記オブジェクトを配置する、請求項１から請求項７のいずれか１項に記載の情報処理プログラム。
【請求項９】
前記情報処理プログラムは、前記ドラッグ操作を行う前記ユーザの手が右手であるか左手であるかを判別する判別手段として前記コンピュータをさらに機能させ、
前記オブジェクト移動手段は、
前記ドラッグ操作を行う前記ユーザの手が右手であると判定される場合、前記ドラッグ操作中の前記入力座標に対して、前記表示装置に表示される画像を基準として左上方向の位置に前記オブジェクトを配置し、
前記ドラッグ操作を行う前記ユーザの手が左手であると判定される場合、前記ドラッグ操作中の前記入力座標に対して、前記表示装置に表示される画像を基準として右上方向の位置に前記オブジェクトを配置する、請求項１から請求項８のいずれか１項に記載の情報処理プログラム。
【請求項１０】
前記オブジェクト移動手段は、前記ドラッグ操作中の前記入力座標または前記オブジェクトの座標が前記表示装置における表示領域の端から所定距離内の位置となることを少なくとも条件として、前記補正に基づく前記オブジェクトの位置が当該端に近づくように、当該補正の方向および量の少なくとも一方を修正する、請求項１から請求項９のいずれか１項に記載の情報処理プログラム。
【請求項１１】
前記オブジェクト移動手段は、前記ドラッグ操作中の前記入力座標または前記オブジェクトの座標が前記表示領域の端から前記所定距離内となり、修正前の前記補正の方向が当該入力座標から当該表示領域の端への向きとは反対側を向く場合、当該補正の方向に基づく前記オブジェクトの位置が当該端に近づくように、当該補正の方向を修正する、請求項１０に記載の情報処理プログラム。
【請求項１２】
前記オブジェクト移動手段は、
前記ドラッグ操作中の前記入力座標が前記表示装置における表示領域の端から所定距離内の位置となることを少なくとも条件として、前記補正の量を減少させる、請求項１から請求項９のいずれか１項に記載の情報処理プログラム。
【請求項１３】
前記オブジェクト移動手段は、前記ドラッグ操作が開始されてからの各前記入力座標または前記オブジェクトの座標が、前記表示領域の端から法線方向に所定距離内の範囲にある間は、当該ドラッグ操作中の前記入力座標を、当該法線方向に垂直な方向へ、前記座標変化量に基づく補正量に応じて補正した座標に前記オブジェクトを配置する、請求項１から請求項１２のいずれか１項に記載の情報処理プログラム。
【請求項１４】
前記オブジェクト移動手段は、前記ドラッグ操作が開始されてからの各前記入力座標または前記オブジェクトの座標が、前記表示領域の端から所定距離内の範囲にある間は、前記オブジェクトを当該ドラッグ操作中の前記入力座標の位置に配置する、請求項１から請求項１２のいずれか１項に記載の情報処理プログラム。
【請求項１５】
前記入力座標取得手段は、前記入力座標を繰り返し取得し、
前記変化量算出手段は、前記ドラッグ操作の前記入力座標が取得されなくなってから所定時間内に前記入力座標が再び取得された場合、当該ドラッグ操作に関して前記座標変化量を継続して算出する、請求項１から請求項１４のいずれか１項に記載の情報処理プログラム。
【請求項１６】
前記入力座標取得手段は、前記表示装置の画面上に設けられるタッチパネルから前記入力座標を取得する、請求項１から請求項１５のいずれか１項に記載の情報処理プログラム。
【請求項１７】
表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理プログラムであって、情報処理装置のコンピュータを、
前記オブジェクトに対する前記ドラッグ操作の入力座標を取得する入力座標取得手段と、
前記ドラッグ操作が開始されてからの経過時間を算出する経過時間算出手段と、
前記ドラッグ操作中の前記入力座標に基づいて前記オブジェクトを移動させるオブジェクト移動手段として前記コンピュータを機能させ、
前記オブジェクト移動手段は、前記経過時間が長い場合に、当該経過時間が短い場合と比べて、前記入力座標と前記オブジェクトの座標との距離が大きくなるように、前記オブジェクトを前記入力座標から離す補正を行って当該オブジェクトを移動させる、情報処理プログラム。
【請求項１８】
表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理装置であって、
前記オブジェクトに対する前記ドラッグ操作の入力座標を取得する入力座標取得手段と、
前記ドラッグ操作が開始されてからの前記入力座標の座標変化量を算出する変化量算出手段と、
前記ドラッグ操作中の前記入力座標に基づいて前記オブジェクトを移動させるオブジェクト移動手段とを備え、
前記オブジェクト移動手段は、前記座標変化量が大きい場合に、当該座標変化量が小さい場合と比べて、前記入力座標と前記オブジェクトの座標との距離が大きくなるように、前記オブジェクトを前記入力座標から離す補正を行って当該オブジェクトを移動させる、情報処理装置。
【請求項１９】
表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理システムであって、
前記オブジェクトに対する前記ドラッグ操作の入力座標を取得する入力座標取得手段と、
前記ドラッグ操作が開始されてからの前記入力座標の座標変化量を算出する変化量算出手段と、
前記ドラッグ操作中の前記入力座標に基づいて前記オブジェクトを移動させるオブジェクト移動手段とを備え、
前記オブジェクト移動手段は、前記座標変化量が大きい場合に、当該座標変化量が小さい場合と比べて、前記入力座標と前記オブジェクトの座標との距離が大きくなるように、前記オブジェクトを前記入力座標から離す補正を行って当該オブジェクトを移動させる、情報処理システム。
【請求項２０】
表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理システムにおいて実行される情報処理方法であって、
前記オブジェクトに対する前記ドラッグ操作の入力座標を取得する入力座標取得ステップと、
前記ドラッグ操作が開始されてからの前記入力座標の座標変化量を算出する変化量算出ステップと、
前記ドラッグ操作中の前記入力座標に基づいて前記オブジェクトを移動させるオブジェクト移動ステップとを備え、
前記オブジェクト移動ステップにおいては、前記座標変化量が大きい場合に、当該座標変化量が小さい場合と比べて、前記入力座標と前記オブジェクトの座標との距離が大きくなるように、前記オブジェクトを前記入力座標から離す補正を行って当該オブジェクトを移動させる、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示装置に表示されるオブジェクトを入力座標に基づいて移動させる情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法に関する。
【背景技術】
【０００２】
従来、表示装置に表示される仮想のオブジェクトをユーザの操作に基づいて移動させる技術がある。例えば、ブロック等のオブジェクトを、ユーザの指またはタッチペンを用いたドラッグ操作によって移動させる情報処理システムがある（例えば、非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】"ＳＵＰＥＲ  ＭＡＲＩＯ  ＭＡＫＥＲ"、［online］、任天堂株式会社、［平成３０年２月２０日検索］、インターネット<http://supermariomaker.nintendo.com/make-it/>
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ユーザがオブジェクトに対するドラッグ操作を行う場合、ドラッグ操作の対象となるオブジェクトが指示体（例えば、指、タッチペン、または、カーソル等）によって隠れてしまい、操作がやりにくくなるおそれがあった。
【０００５】
それ故、本発明の目的は、ドラッグ操作の操作性を向上することができる情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法を提供することである。
【課題を解決するための手段】
【０００６】
上記の課題を解決すべく、本発明は、以下の（１）〜（１７）の構成を採用した。
【０００７】
（１）
本発明の一例は、表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理プログラムである。情報処理プログラムは、情報処理装置のコンピュータを、入力座標取得手段と、変化量算出手段と、オブジェクト移動手段として機能させる。入力座標取得手段は、オブジェクトに対するドラッグ操作の入力座標を取得する。変化量算出手段は、ドラッグ操作が開始されてからの入力座標の座標変化量を算出する。オブジェクト移動手段は、ドラッグ操作中の入力座標に基づいてオブジェクトを移動させる。オブジェクト移動手段は、座標変化量が大きい場合に、当該座標変化量が小さい場合と比べて、入力座標とオブジェクトの座標との距離が大きくなるように、オブジェクトを入力座標から離す補正を行って当該オブジェクトを移動させる。
【０００８】
上記（１）の構成によれば、座標変化量が大きい場合には、オブジェクトと入力座標を比較的大きく離して配置することによって、ドラッグ操作中におけるオブジェクトを見やすく表示することができる。また、座標変化量が小さい場合には、オブジェクトと入力座標との距離を比較的小さくする（０であってもよい）ことによって、オブジェクトを少しだけ移動させるドラッグ操作を行いやすくすることができる。これらによって、ドラッグ操作の操作性を向上することができる。
【０００９】
（２）
入力座標取得手段は、ドラッグ操作中において入力座標を繰り返し取得してもよい。変化量算出手段は、ドラッグ操作が開始された入力座標から現在の入力座標までの差分に基づいて座標変化量を算出してもよい。
【００１０】
上記（２）の構成によれば、ドラッグ操作が開始された開始位置に基づいて座標変化量が算出されるので、ドラッグ操作中において当該開始位置がユーザにとってわかりやすくなる。なお、「差分に基づいて座標変化量を算出する」とは、差分を座標変化量として用いる態様と、差分を用いた何らかの計算結果（例えば、差分と、後述の移動距離とを用いた計算結果）を座標変化量として用いる態様との両方を含む意味である。
【００１１】
（３）
オブジェクト移動手段は、座標変化量に基づく補正量を用いて入力座標を補正した座標にオブジェクトを配置してもよい。オブジェクト移動手段は、ドラッグ操作中における差分の最大値に応じた大きさとなるように補正量を算出してもよい。
【００１２】
上記（３）の構成によれば、ドラッグ操作中において座標変化量が減少した場合でもオブジェクトが見やすい状態を維持しやすくすることができる。これによって、ドラッグ操作の操作性を向上することができる。
【００１３】
（４）
変化量算出手段は、ドラッグ操作中における入力座標の累積移動距離に基づいて座標変化量を算出してもよい。
【００１４】
上記（４）の構成によれば、ユーザは、ドラッグ操作による累積移動距離を長くすることによって、オブジェクトを見やすい位置に表示させることができる。なお、「入力座標の累積移動距離に基づいて座標変化量を算出する」とは、累積移動距離を座標変化量として用いる態様と、累積移動距離を用いた何らかの計算結果（例えば、上記差分と累積移動距離とを用いた計算結果）を座標変化量として用いる態様との両方を含む意味である。
【００１５】
（５）
オブジェクト移動手段は、ドラッグ操作が開始されてから座標変化量が所定の閾値以下となる期間において、入力座標とオブジェクトの座標との位置関係を維持してオブジェクトを移動させてもよい。
【００１６】
上記（５）の構成によれば、ドラッグ操作中においてユーザが入力位置を開始位置からほとんど動かしていない場合（つまり、ユーザが入力位置を動かす意図がない場合）に、当該入力位置から離れた位置にオブジェクトが配置される可能性を低減することができる。これによって、ドラッグ操作に対してユーザが違和感を抱く可能性を低減することができる。
【００１７】
（６）
オブジェクト移動手段は、ドラッグ操作中の入力座標とオブジェクトの座標との距離に上限を設定してもよい。
【００１８】
上記（６）の構成によれば、オブジェクトがユーザによる入力位置から離れすぎてしまい、ユーザが入力位置とオブジェクトとの関係を把握しにくくなってしまう可能性を低減することができる。
【００１９】
（７）
オブジェクト移動手段は、ドラッグ操作が開始された入力座標が、オブジェクト内の基準位置を通る所定軸について補正の方向と同じ側にある場合、当該入力座標が当該所定軸について当該補正の方向の反対側にある場合に比べて、当該ドラッグ操作中における当該補正の量を同じ側において大きく設定してもよい。
【００２０】
上記（７）の構成によれば、オブジェクト内においてドラッグ操作が開始された位置に応じて補正量を調節することができるので、オブジェクトを見やすい位置に表示しやすくなる。
【００２１】
（８）
オブジェクト移動手段は、ドラッグ操作中の入力座標に対して、表示装置に表示される画像における斜め上方向の位置にオブジェクトを配置してもよい。
【００２２】
上記（８）の構成によれば、ドラッグ操作を行うユーザの指によって隠されにくい位置にオブジェクトを表示することができるので、ドラッグ操作の操作性を向上することができる。
【００２３】
（９）
情報処理プログラムは、ドラッグ操作を行うユーザの手が右手であるか左手であるかを判別する判別手段としてコンピュータをさらに機能させてもよい。オブジェクト移動手段は、ドラッグ操作を行うユーザの手が右手であると判定される場合、ドラッグ操作中の入力座標に対して、表示装置に表示される画像を基準として左上方向の位置にオブジェクトを配置してもよい。オブジェクト移動手段は、ドラッグ操作を行うユーザの手が左手であると判定される場合、ドラッグ操作中の入力座標に対して、表示装置に表示される画像を基準として右上方向の位置にオブジェクトを配置してもよい。
【００２４】
上記（９）の構成によれば、ドラッグ操作が左右のいずれの手で行われる場合であっても、オブジェクトを見やすく表示することができるので、ドラッグ操作の操作性を向上することができる。
【００２５】
（１０）
オブジェクト移動手段は、ドラッグ操作中の入力座標またはオブジェクトの座標が表示装置における表示領域の端から所定距離内の位置となることを少なくとも条件として、補正に基づくオブジェクトの位置が当該端に近づくように、当該補正の方向および量の少なくとも一方を修正してもよい。
【００２６】
上記（１０）の構成によれば、ユーザは、オブジェクトを表示領域の端部に配置しやすくなる。
【００２７】
（１１）
オブジェクト移動手段は、ドラッグ操作中の入力座標またはオブジェクトの座標が表示領域の端から所定距離内となり、修正前の補正の方向が当該入力座標から当該表示領域の端への向きとは反対側を向く場合、当該補正の方向に基づくオブジェクトの位置が当該端に近づくように、当該補正の方向を修正してもよい。
【００２８】
上記（１１）の構成によれば、ユーザは、修正前の補正方向とは反対側の向きにある表示領域の端部にオブジェクトを配置しやすくなる。
【００２９】
（１２）
オブジェクト移動手段は、ドラッグ操作中の入力座標が表示装置における表示領域の端から所定距離内の位置となることを少なくとも条件として、補正の量を減少させてもよい。
【００３０】
上記（１２）の構成によれば、ユーザは、オブジェクトを表示領域の端部に配置しやすくなる。
【００３１】
（１３）
オブジェクト移動手段は、ドラッグ操作が開始されてからの各入力座標またはオブジェクトの座標が、表示領域の端から法線方向に所定距離内の範囲にある間は、当該ドラッグ操作中の入力座標を、当該法線方向に垂直な方向へ、座標変化量に基づく補正量に応じて補正した座標にオブジェクトを配置してもよい。
【００３２】
上記（１３）の構成によれば、表示領域の端から法線方向に所定距離内の範囲においてドラッグ操作が行われる場合に、オブジェクトを見やすく表示することができるとともに、ユーザの意図とは異なる方向にオブジェクトが移動する可能性を低減することができる。
【００３３】
（１４）
オブジェクト移動手段は、ドラッグ操作が開始されてからの各入力座標またはオブジェクトの座標が、表示領域の端から所定距離内の範囲にある間は、オブジェクトを当該ドラッグ操作中の入力座標の位置に配置してもよい。
【００３４】
上記（１４）の構成によれば、表示領域の端から法線方向に所定距離内の範囲においてドラッグ操作が行われる場合に、ユーザの意図とは異なる方向にオブジェクトが移動する可能性を低減することができる。
【００３５】
（１５）
入力座標取得手段は、入力座標を繰り返し取得してもよい。変化量算出手段は、ドラッグ操作の入力座標が取得されなくなってから所定時間内に入力座標が再び取得された場合、当該ドラッグ操作に関して座標変化量を継続して算出してもよい。
【００３６】
上記（１５）の構成によれば、ドラッグ操作中に何らかの理由で入力座標が一時的に取得されなくなった場合でも、ユーザはドラッグ操作を継続することができる。
【００３７】
（１６）
入力座標取得手段は、表示装置の画面上に設けられるタッチパネルから入力座標を取得してもよい。
【００３８】
（１７）
本発明の他の一例は、表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理プログラムである。情報処理プログラムは、情報処理装置のコンピュータを、入力座標取得手段と、経過時間算出手段と、オブジェクト移動手段としてコンピュータを機能させる。入力座標取得手段は、オブジェクトに対するドラッグ操作の入力座標を取得する。経過時間算出手段は、ドラッグ操作が開始されてからの経過時間を算出する。オブジェクト移動手段は、ドラッグ操作中の入力座標に基づいてオブジェクトを移動させる。オブジェクト移動手段は、経過時間が長い場合に、当該経過時間が短い場合と比べて、入力座標とオブジェクトの座標との距離が大きくなるように、オブジェクトを入力座標から離す補正を行って当該オブジェクトを移動させる。
【００３９】
上記（１７）の構成によれば、経過時間が長い場合には、オブジェクトと入力座標を比較的大きく離して配置することによって、ドラッグ操作中におけるオブジェクトを見やすく表示することができる。また、経過時間が短い場合には、オブジェクトと入力座標との距離を比較的小さくする（０であってもよい）ことによって、オブジェクトを少しだけ移動させるドラッグ操作を行いやすくすることができる。これらによって、ドラッグ操作の操作性を向上することができる。
【００４０】
なお、本発明の別の一例は、上記（１）〜（１７）における各手段を備える情報処理装置または情報処理システムであってもよい。また、本発明の別の一例は、上記（１）〜（１７）における情報処理装置（または情報処理システム）において実行される情報処理方法であってもよい。
【発明の効果】
【００４１】
上記情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法によれば、ドラッグ操作の操作性を向上することができる。
【図面の簡単な説明】
【００４２】
【図１】本体装置に左コントローラおよび右コントローラを装着した状態の一例を示す図
【図２】本体装置から左コントローラおよび右コントローラをそれぞれ外した状態の一例を示す図
【図３】本体装置の一例を示す六面図
【図４】左コントローラの一例を示す六面図
【図５】右コントローラの一例を示す六面図
【図６】本体装置の内部構成の一例を示すブロック図
【図７】本体装置と左コントローラおよび右コントローラとの内部構成の一例を示すブロック図
【図８】ゲームシステム１の機能的構成の一例を示す機能ブロック図
【図９】オブジェクトの位置を算出する方法の一例を示す図
【図１０】ドラッグ距離と補正基礎値との関係の一例を示す図
【図１１】ドラッグ操作が開始されてからドラッグ距離が増加する場合におけるオブジェクトの移動の一例を示す図
【図１２】ドラッグ距離が増加した後で減少する場合におけるオブジェクトの移動の一例を示す図
【図１３】左手操作モードにおけるオブジェクト配置の一例を示す図
【図１４】現在座標が表示領域の端部に移動する場合における第１修正処理の一例を示す図
【図１５】端部領域においてドラッグ操作によってオブジェクトが移動される様子の一例を示す図
【図１６】開始座標が異なる２通りの場合においてオブジェクトが移動する様子の一例を示す図
【図１７】左右方向に関する開始座標の位置と開始修正率との関係の一例を示す図
【図１８】表示領域の端部付近でドラッグ操作が行われる様子の一例を示す図
【図１９】ゲームシステム１におけるオブジェクト移動処理に用いられる各種情報の一例を示す図
【図２０】ゲームシステム１によって実行されるオブジェクト移動処理の流れの一例を示すフローチャート
【図２１】図２０に示すステップＳ１０の補正ベクトル算出処理の詳細な流れの一例を示すサブフローチャート
【発明を実施するための形態】
【００４３】
［１．ゲームシステムの構成］
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム１の一例は、本体装置（情報処理装置；本実施形態ではゲーム装置本体として機能する）２と左コントローラ３および右コントローラ４とを含む。本体装置２は、左コントローラ３および右コントローラ４がそれぞれ着脱可能である。つまり、ゲームシステム１は、左コントローラ３および右コントローラ４をそれぞれ本体装置２に装着して一体化された装置として利用できる。また、ゲームシステム１は、本体装置２と左コントローラ３および右コントローラ４とを別体として利用することもできる（図２参照）。以下では、本実施形態のゲームシステム１のハードウェア構成について説明し、その後に本実施形態のゲームシステム１の制御について説明する。
【００４４】
図１は、本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図である。図１に示すように、左コントローラ３および右コントローラ４は、それぞれ本体装置２に装着されて一体化されている。本体装置２は、ゲームシステム１における各種の処理（例えば、ゲーム処理）を実行する装置である。本体装置２は、ディスプレイ１２を備える。左コントローラ３および右コントローラ４は、ユーザが入力を行うための操作部を備える装置である。
【００４５】
図２は、本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図である。図１および図２に示すように、左コントローラ３および右コントローラ４は、本体装置２に着脱可能である。なお、以下において、左コントローラ３および右コントローラ４の総称として「コントローラ」と記載することがある。
【００４６】
図３は、本体装置２の一例を示す六面図である。図３に示すように、本体装置２は、略板状のハウジング１１を備える。本実施形態において、ハウジング１１の主面（換言すれば、表側の面、すなわち、ディスプレイ１２が設けられる面）は、大略的には矩形形状である。
【００４７】
なお、ハウジング１１の形状および大きさは、任意である。一例として、ハウジング１１は、携帯可能な大きさであってよい。また、本体装置２単体または本体装置２に左コントローラ３および右コントローラ４が装着された一体型装置は、携帯型装置となってもよい。また、本体装置２または一体型装置が手持ち型の装置となってもよい。また、本体装置２または一体型装置が可搬型装置となってもよい。
【００４８】
図３に示すように、本体装置２は、ハウジング１１の主面に設けられるディスプレイ１２を備える。ディスプレイ１２は、本体装置２が生成した画像を表示する。本実施形態においては、ディスプレイ１２は、液晶表示装置（ＬＣＤ）とする。ただし、ディスプレイ１２は任意の種類の表示装置であってよい。
【００４９】
また、本体装置２は、ディスプレイ１２の画面上にタッチパネル１３を備える。本実施形態においては、タッチパネル１３は、マルチタッチ入力が可能な方式（例えば、静電容量方式）のものである。ただし、タッチパネル１３は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式（例えば、抵抗膜方式）のものであってもよい。
【００５０】
本体装置２は、ハウジング１１の内部においてスピーカ（すなわち、図６に示すスピーカ８８）を備えている。図３に示すように、ハウジング１１の主面には、スピーカ孔１１ａおよび１１ｂが形成される。そして、スピーカ８８の出力音は、これらのスピーカ孔１１ａおよび１１ｂからそれぞれ出力される。
【００５１】
また、本体装置２は、本体装置２が左コントローラ３と有線通信を行うための端子である左側端子１７と、本体装置２が右コントローラ４と有線通信を行うための右側端子２１を備える。
【００５２】
図３に示すように、本体装置２は、スロット２３を備える。スロット２３は、ハウジング１１の上側面に設けられる。スロット２３は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム１およびそれと同種の情報処理装置に専用の記憶媒体（例えば、専用メモリカード）である。所定の種類の記憶媒体は、例えば、本体装置２で利用されるデータ（例えば、アプリケーションのセーブデータ等）、および／または、本体装置２で実行されるプログラム（例えば、アプリケーションのプログラム等）を記憶するために用いられる。また、本体装置２は、電源ボタン２８を備える。
【００５３】
本体装置２は、下側端子２７を備える。下側端子２７は、本体装置２がクレードルと通信を行うための端子である。本実施形態において、下側端子２７は、ＵＳＢコネクタ（より具体的には、メス側コネクタ）である。上記一体型装置または本体装置２単体をクレードルに載置した場合、ゲームシステム１は、本体装置２が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置２単体を充電する機能を有する。また、クレードルは、ハブ装置（具体的には、ＵＳＢハブ）の機能を有する。
【００５４】
図４は、左コントローラ３の一例を示す六面図である。図４に示すように、左コントローラ３は、ハウジング３１を備える。本実施形態においては、ハウジング３１は、縦長の形状、すなわち、上下方向（すなわち、図１および図４に示すｙ軸方向）に長い形状である。左コントローラ３は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング３１は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ３は、横長となる向きで把持されることも可能である。左コントローラ３が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００５５】
左コントローラ３は、アナログスティック３２を備える。図４に示すように、アナログスティック３２は、ハウジング３１の主面に設けられる。アナログスティック３２は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック３２を傾倒することによって傾倒方向に応じた方向の入力（および、傾倒した角度に応じた大きさの入力）が可能である。なお、左コントローラ３は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック３２を押下する入力が可能である。
【００５６】
左コントローラ３は、各種操作ボタンを備える。左コントローラ３は、ハウジング３１の主面上に４つの操作ボタン３３〜３６（具体的には、右方向ボタン３３、下方向ボタン３４、上方向ボタン３５、および左方向ボタン３６）を備える。さらに、左コントローラ３は、録画ボタン３７および−（マイナス）ボタン４７を備える。左コントローラ３は、ハウジング３１の側面の左上に第１Ｌボタン３８およびＺＬボタン３９を備える。また、左コントローラ３は、ハウジング３１の側面の、本体装置２に装着される際に装着される側の面に第２Ｌボタン４３および第２Ｒボタン４４を備える。これらの操作ボタンは、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションプログラム）に応じた指示を行うために用いられる。
【００５７】
また、左コントローラ３は、左コントローラ３が本体装置２と有線通信を行うための端子４２を備える。
【００５８】
図５は、右コントローラ４の一例を示す六面図である。図５に示すように、右コントローラ４は、ハウジング５１を備える。本実施形態においては、ハウジング５１は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ４は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング５１は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ４は、横長となる向きで把持されることも可能である。右コントローラ４が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００５９】
右コントローラ４は、左コントローラ３と同様、方向入力部としてアナログスティック５２を備える。本実施形態においては、アナログスティック５２は、左コントローラ３のアナログスティック３２と同じ構成である。また、右コントローラ４は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ４は、左コントローラ３と同様、ハウジング５１の主面上に４つの操作ボタン５３〜５６（具体的には、Ａボタン５３、Ｂボタン５４、Ｘボタン５５、およびＹボタン５６）を備える。さらに、右コントローラ４は、＋（プラス）ボタン５７およびホームボタン５８を備える。また、右コントローラ４は、ハウジング５１の側面の右上に第１Ｒボタン６０およびＺＲボタン６１を備える。また、右コントローラ４は、左コントローラ３と同様、第２Ｌボタン６５および第２Ｒボタン６６を備える。
【００６０】
また、右コントローラ４は、右コントローラ４が本体装置２と有線通信を行うための端子６４を備える。
【００６１】
図６は、本体装置２の内部構成の一例を示すブロック図である。本体装置２は、図３に示す構成の他、図６に示す各構成要素８１〜９１、９７、および９８を備える。これらの構成要素８１〜９１、９７、および９８のいくつかは、電子部品として電子回路基板上に実装されてハウジング１１内に収納されてもよい。
【００６２】
本体装置２は、プロセッサ８１を備える。プロセッサ８１は、本体装置２において実行される各種の情報処理を実行する情報処理部であって、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のみから構成されてもよいし、ＣＰＵ機能、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）機能等の複数の機能を含むＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）から構成されてもよい。プロセッサ８１は、記憶部（具体的には、フラッシュメモリ８４等の内部記憶媒体、あるいは、スロット２３に装着される外部記憶媒体等）に記憶される情報処理プログラム（例えば、ゲームプログラム）を実行することによって、各種の情報処理を実行する。
【００６３】
本体装置２は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ８４およびＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８５を備える。フラッシュメモリ８４およびＤＲＡＭ８５は、プロセッサ８１に接続される。フラッシュメモリ８４は、主に、本体装置２に保存される各種のデータ（プログラムであってもよい）を記憶するために用いられるメモリである。ＤＲＡＭ８５は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【００６４】
本体装置２は、スロットインターフェース（以下、「Ｉ／Ｆ」と略記する。）９１を備える。スロットＩ／Ｆ９１は、プロセッサ８１に接続される。スロットＩ／Ｆ９１は、スロット２３に接続され、スロット２３に装着された所定の種類の記憶媒体（例えば、専用メモリカード）に対するデータの読み出しおよび書き込みを、プロセッサ８１の指示に応じて行う。
【００６５】
プロセッサ８１は、フラッシュメモリ８４およびＤＲＡＭ８５、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【００６６】
本体装置２は、ネットワーク通信部８２を備える。ネットワーク通信部８２は、プロセッサ８１に接続される。ネットワーク通信部８２は、ネットワークを介して外部の装置と通信（具体的には、無線通信）を行う。本実施形態においては、ネットワーク通信部８２は、第１の通信態様としてＷｉ−Ｆｉの規格に準拠した方式により、無線ＬＡＮに接続して外部装置と通信を行う。また、ネットワーク通信部８２は、第２の通信態様として所定の通信方式（例えば、独自プロトコルによる通信や、赤外線通信）により、同種の他の本体装置２との間で無線通信を行う。なお、上記第２の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置２との間で無線通信可能であり、複数の本体装置２の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【００６７】
本体装置２は、コントローラ通信部８３を備える。コントローラ通信部８３は、プロセッサ８１に接続される。コントローラ通信部８３は、左コントローラ３および／または右コントローラ４と無線通信を行う。本体装置２と左コントローラ３および右コントローラ４との通信方式は任意であるが、本実施形態においては、コントローラ通信部８３は、左コントローラ３との間および右コントローラ４との間で、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信を行う。
【００６８】
プロセッサ８１は、上述の左側端子１７、右側端子２１、および下側端子２７に接続される。プロセッサ８１は、左コントローラ３と有線通信を行う場合、左側端子１７を介して左コントローラ３へデータを送信するとともに、左側端子１７を介して左コントローラ３から操作データを受信する。また、プロセッサ８１は、右コントローラ４と有線通信を行う場合、右側端子２１を介して右コントローラ４へデータを送信するとともに、右側端子２１を介して右コントローラ４から操作データを受信する。また、プロセッサ８１は、クレードルと通信を行う場合、下側端子２７を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置２は、左コントローラ３および右コントローラ４との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置または本体装置２単体がクレードルに装着された場合、本体装置２は、クレードルを介してデータ（例えば、画像データや音声データ）を据置型モニタ等に出力することができる。
【００６９】
ここで、本体装置２は、複数の左コントローラ３と同時に（換言すれば、並行して）通信を行うことができる。また、本体装置２は、複数の右コントローラ４と同時に（換言すれば、並行して）通信を行うことができる。したがって、複数のユーザは、左コントローラ３および右コントローラ４のセットをそれぞれ用いて、本体装置２に対する入力を同時に行うことができる。一例として、第１ユーザが左コントローラ３および右コントローラ４の第１セットを用いて本体装置２に対して入力を行うと同時に、第２ユーザが左コントローラ３および右コントローラ４の第２セットを用いて本体装置２に対して入力を行うことが可能となる。
【００７０】
本体装置２は、タッチパネル１３の制御を行う回路であるタッチパネルコントローラ８６を備える。タッチパネルコントローラ８６は、タッチパネル１３とプロセッサ８１との間に接続される。タッチパネルコントローラ８６は、タッチパネル１３からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ８１へ出力する。
【００７１】
また、ディスプレイ１２は、プロセッサ８１に接続される。プロセッサ８１は、（例えば、上記の情報処理の実行によって）生成した画像および／または外部から取得した画像をディスプレイ１２に表示する。
【００７２】
本体装置２は、コーデック回路８７およびスピーカ（具体的には、左スピーカおよび右スピーカ）８８を備える。コーデック回路８７は、スピーカ８８および音声入出力端子２５に接続されるとともに、プロセッサ８１に接続される。コーデック回路８７は、スピーカ８８および音声入出力端子２５に対する音声データの入出力を制御する回路である。
【００７３】
また、本体装置２は、加速度センサ８９を備える。本実施形態においては、加速度センサ８９は、所定の３軸（例えば、図１に示すｘｙｚ軸）方向に沿った加速度の大きさを検出する。なお、加速度センサ８９は、１軸方向あるいは２軸方向の加速度を検出するものであってもよい。
【００７４】
また、本体装置２は、角速度センサ９０を備える。本実施形態においては、角速度センサ９０は、所定の３軸（例えば、図１に示すｘｙｚ軸）回りの角速度を検出する。なお、角速度センサ９０は、１軸回りあるいは２軸回りの角速度を検出するものであってもよい。
【００７５】
加速度センサ８９および角速度センサ９０は、プロセッサ８１に接続され、加速度センサ８９および角速度センサ９０の検出結果は、プロセッサ８１へ出力される。プロセッサ８１は、上記の加速度センサ８９および角速度センサ９０の検出結果に基づいて、本体装置２の動きおよび／または姿勢に関する情報を算出することが可能である。
【００７６】
本体装置２は、電力制御部９７およびバッテリ９８を備える。電力制御部９７は、バッテリ９８およびプロセッサ８１に接続される。また、図示しないが、電力制御部９７は、本体装置２の各部（具体的には、バッテリ９８の電力の給電を受ける各部、左側端子１７、および右側端子２１）に接続される。電力制御部９７は、プロセッサ８１からの指令に基づいて、バッテリ９８から上記各部への電力供給を制御する。
【００７７】
また、バッテリ９８は、下側端子２７に接続される。外部の充電装置（例えば、クレードル）が下側端子２７に接続され、下側端子２７を介して本体装置２に電力が供給される場合、供給された電力がバッテリ９８に充電される。
【００７８】
図７は、本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図である。なお、本体装置２に関する内部構成の詳細については、図６で示しているため図７では省略している。
【００７９】
左コントローラ３は、本体装置２との間で通信を行う通信制御部１０１を備える。図７に示すように、通信制御部１０１は、端子４２を含む各構成要素に接続される。本実施形態においては、通信制御部１０１は、端子４２を介した有線通信と、端子４２を介さない無線通信との両方で本体装置２と通信を行うことが可能である。通信制御部１０１は、左コントローラ３が本体装置２に対して行う通信方法を制御する。すなわち、左コントローラ３が本体装置２に装着されている場合、通信制御部１０１は、端子４２を介して本体装置２と通信を行う。また、左コントローラ３が本体装置２から外されている場合、通信制御部１０１は、本体装置２（具体的には、コントローラ通信部８３）との間で無線通信を行う。コントローラ通信部８３と通信制御部１０１との間の無線通信は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）の規格に従って行われる。
【００８０】
また、左コントローラ３は、例えばフラッシュメモリ等のメモリ１０２を備える。通信制御部１０１は、例えばマイコン（マイクロプロセッサとも言う）で構成され、メモリ１０２に記憶されるファームウェアを実行することによって各種の処理を実行する。
【００８１】
左コントローラ３は、各ボタン１０３（具体的には、ボタン３３〜３９、４３、４４、および４７）を備える。また、左コントローラ３は、アナログスティック（図７では「スティック」と記載する）３２を備える。各ボタン１０３およびアナログスティック３２は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部１０１へ出力する。
【００８２】
左コントローラ３は、慣性センサを備える。具体的には、左コントローラ３は、加速度センサ１０４を備える。また、左コントローラ３は、角速度センサ１０５を備える。本実施形態においては、加速度センサ１０４は、所定の３軸（例えば、図４に示すｘｙｚ軸）方向に沿った加速度の大きさを検出する。なお、加速度センサ１０４は、１軸方向あるいは２軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ１０５は、所定の３軸（例えば、図４に示すｘｙｚ軸）回りの角速度を検出する。なお、角速度センサ１０５は、１軸回りあるいは２軸回りの角速度を検出するものであってもよい。加速度センサ１０４および角速度センサ１０５は、それぞれ通信制御部１０１に接続される。そして、加速度センサ１０４および角速度センサ１０５の検出結果は、適宜のタイミングで繰り返し通信制御部１０１へ出力される。
【００８３】
通信制御部１０１は、各入力部（具体的には、各ボタン１０３、アナログスティック３２、各センサ１０４および１０５）から、入力に関する情報（具体的には、操作に関する情報、またはセンサによる検出結果）を取得する。通信制御部１０１は、取得した情報（または取得した情報に所定の加工を行った情報）を含む操作データを本体装置２へ送信する。なお、操作データは、所定時間に１回の割合で繰り返し送信される。なお、入力に関する情報が本体装置２へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【００８４】
上記操作データが本体装置２へ送信されることによって、本体装置２は、左コントローラ３に対して行われた入力を得ることができる。すなわち、本体装置２は、各ボタン１０３およびアナログスティック３２に対する操作を、操作データに基づいて判別することができる。また、本体装置２は、左コントローラ３の動きおよび／または姿勢に関する情報を、操作データ（具体的には、加速度センサ１０４および角速度センサ１０５の検出結果）に基づいて算出することができる。
【００８５】
左コントローラ３は、電力供給部１０６を備える。本実施形態において、電力供給部１０６は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ３の各部（具体的には、バッテリの電力の給電を受ける各部）に接続される。
【００８６】
図７に示すように、右コントローラ４は、本体装置２との間で通信を行う通信制御部１１１を備える。また、右コントローラ４は、通信制御部１１１に接続されるメモリ１１２を備える。通信制御部１１１は、端子６４を含む各構成要素に接続される。通信制御部１１１およびメモリ１１２は、左コントローラ３の通信制御部１０１およびメモリ１０２と同様の機能を有する。したがって、通信制御部１１１は、端子６４を介した有線通信と、端子６４を介さない無線通信（具体的には、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信）との両方で本体装置２と通信を行うことが可能であり、右コントローラ４が本体装置２に対して行う通信方法を制御する。
【００８７】
右コントローラ４は、左コントローラ３の各入力部と同様の各入力部を備える。具体的には、各ボタン１１３、アナログスティック５２、慣性センサ（加速度センサ１１４および角速度センサ１１５）を備える。これらの各入力部については、左コントローラ３の各入力部と同様の機能を有し、同様に動作する。
【００８８】
右コントローラ４は、電力供給部１１６を備える。電力供給部１１６は、左コントローラ３の電力供給部１０６と同様の機能を有し、同様に動作する。
【００８９】
［２．ゲームシステムにおける処理の概要］
［２−１．処理の概要］
以下、図８を参照して、本実施形態におけるゲームシステム１によって実行される情報処理の概要について説明する。本実施形態においては、ゲームシステム１は、ユーザによるドラッグ操作に基づいて、ディスプレイ１２に表示されるオブジェクトを移動させる処理を実行する。
【００９０】
ドラッグ操作とは、例えば、操作対象（例えば、オブジェクト）の位置を指定する入力に続けて、当該入力を継続した状態で入力位置を移動させる操作である。本実施形態においては、ゲームシステム１は、ディスプレイ１２の画面上に設けられるタッチパネル１３に対するドラッグ操作を受け付ける。ただし、他の実施形態においては、ドラッグ操作が行われる入力装置はタッチパネルに限らない。例えば、他の実施形態においては、ゲームシステム１は、マウス等のポインティングデバイスを備えていてもよく、当該ポインティングデバイスに対するドラッグ操作を受け付けてもよい。上記のように、ドラッグ操作を行うための入力装置は、画面上のオブジェクトを（例えばユーザの指またはタッチペンによって）直接指定することができる種類の入力装置（例えば、タッチパネル）であってもよいし、表示画面上のオブジェクトをカーソル（換言すれば、ポインタ）によって間接的に指定することができる種類の入力装置（例えば、マウス）であってもよい。
【００９１】
図８は、ゲームシステム１の機能的構成の一例を示す機能ブロック図である。本実施形態においては、ゲームシステム１は、入力座標取得手段１５１と、変化量算出手段１５２と、オブジェクト移動手段１５３と、判別手段１５４とを備える。本実施形態において、上記各手段１５１〜１５４は、本体装置２のプロセッサ８１によって実現される。具体的には、上記各手段１５１〜１５４は、プロセッサ８１がアクセス可能な記憶媒体に記憶された情報処理プログラムをプロセッサ８１が実行することによって実現される。なお、「プロセッサ８１がアクセス可能な記憶媒体」とは、例えば、スロット２３に装着される記憶媒体であってもよいし、フラッシュメモリ８４であってもよい。
【００９２】
入力座標取得手段１５１は、オブジェクトに対するドラッグ操作の入力座標を取得する。ドラッグ操作の入力座標とは、ドラッグ操作の入力（本実施形態においては、タッチパネル１３に対するタッチ入力）の位置を示す座標である。入力座標は、ディスプレイ１２の画面上の位置を特定可能な情報であり、具体的には、画面上の位置を示す座標系における座標である。本実施形態においては、入力座標取得手段１５１は、入力装置（すなわち、タッチパネル１３）から、所定時間に１回の割合で入力座標を繰り返し取得する。また、入力座標取得手段１５１は、取得された入力座標を示す入力座標情報を出力する。
【００９３】
変化量算出手段１５２は、上記入力座標情報を取得し、ドラッグ操作が開始されてからの入力座標の座標変化量を算出する。また、変化量算出手段１５２は、算出された座標変化量を示す変化量情報を出力する。本実施形態においては、座標変化量とは、ドラッグ操作が開始された時点の入力座標から、ドラッグ操作中における現在の入力座標（換言すれば、最後に取得された入力座標。）までの距離である。なお、以下では、ドラッグ操作が開始された時点の入力座標を「開始座標」と呼び、ドラッグ操作中における現在の入力座標を「現在座標」と呼ぶ。また、開始座標から現在座標までの距離（換言すれば、差分）を「ドラッグ距離」と呼ぶ。
【００９４】
なお、座標変化量は、上記ドラッグ距離に限らず、他の指標であってもよい。例えば、他の実施形態においては、変化量算出手段１５２は、座標変化量として、ドラッグ操作が開始されてからの入力座標の移動軌跡の長さ（換言すれば、ドラッグ操作中における入力座標の累積移動距離）を算出してもよい。なお、本実施形態において、座標変化量は、ドラッグ操作が開始されてからドラッグ操作中の現時点までの期間における入力座標の変化を示す指標であり、ドラッグ操作中の一時点における変化量（例えば、ある一時点における入力座標の移動速度）を示す指標ではない。
【００９５】
オブジェクト移動手段１５３は、上記入力座標情報および上記変化量情報を取得する。そして、オブジェクト移動手段１５３は、ドラッグ操作中の入力座標および座標変化量に基づいて、オブジェクトをディスプレイ１２の画面上において移動させる。詳細は後述するが、オブジェクト移動手段１５３は、ドラッグ操作中における現在座標に基づく位置にオブジェクトを移動させる。すなわち、オブジェクトは、ドラッグ操作中における入力座標の移動に応じて移動する。また、本実施形態においては、オブジェクト移動手段１５３は、上記座標変化量に基づく補正量を算出し、当該補正量を用いて現在座標を補正した座標にオブジェクトを配置する。すなわち、本実施形態においては、オブジェクトは、現在座標から少しずれた位置に表示される。詳細は後述するが、これによって、ドラッグ操作を行うユーザの指にオブジェクトが隠れる可能性を低減することができ、オブジェクトを見やすく表示することができる。
【００９６】
判別手段１５４は、ドラッグ操作を行うユーザの手が右手であるか左手であるかを判別する。判別手段１５４による判別の具体的な手法は任意である。また、判別手段は、右手であるか左手であるかを示す操作手情報を出力する。詳細は後述するが、オブジェクト移動手段１５３は、上記操作手情報を取得し、操作手情報に基づいて、オブジェクトをずらす方向を切り替える。したがって、現在座標を基準にオブジェクトが配置される方向は、ドラッグ操作を行うユーザの手が右手であるか左手であるかによって変化する。
【００９７】
［２−２．オブジェクトを移動させる処理］
［２−２−１．移動処理の概要］
図９を参照して、ドラッグ操作に応じてオブジェクトを移動させる（すなわち、入力座標に基づいてオブジェクトの位置を算出する）処理の概要について説明する。図９は、オブジェクトの位置を算出する方法の一例を示す図である。図９は、オブジェクト１６１に対するドラッグ操作が行われる場合において、開始座標Ｐからドラッグ操作が開始され、現在座標Ｑまでドラッグ操作が行われた状態を示している。
【００９８】
図９に示す状態において、変化量算出手段１５２は、変化量情報として、開始座標Ｐから現在座標Ｑまでのドラッグ距離Ｄを算出する。次に、オブジェクト移動手段１５３は、ドラッグ距離Ｄに基づいて、現在座標Ｑを補正するための補正ベクトルＡを算出する。詳細は後述するが、補正ベクトルＡの大きさ（すなわち、補正量）は、ドラッグ距離Ｄの大きさに応じて算出され、大略的には、ドラッグ距離Ｄが大きくなると補正量も大きくなるように算出される。また、補正ベクトルＡの向き（すなわち、補正方向）は、ドラッグ操作を行う手が右手であるか左手であるかに応じて設定される。
【００９９】
オブジェクト移動手段１５３は、補正ベクトルＡを用いて現在座標Ｑを補正する（換言すれば移動する）ことによって、オブジェクト１６１の位置を示すオブジェクト座標Ｏを算出する。図９に示すように、オブジェクト座標Ｏは、補正ベクトルＡの方向（図９では、左上方向）に、補正ベクトルＡの大きさだけ現在座標Ｑを補正した座標として算出される。
【０１００】
なお、図９においては、オブジェクト１６１は、オブジェクト座標Ｏの位置を中心とするように配置される場合を示しているが、本実施形態において、オブジェクト１６１は、必ずしもそのように配置されるわけではない。本実施形態においては、オブジェクト移動手段１５３は、オブジェクト１６１の領域のうちで開始座標Ｐの位置を、配置基準位置に設定する。オブジェクト移動手段１５３は、配置基準位置がオブジェクト座標Ｏの位置となるように、オブジェクト１６１を配置する。ただし、他の実施形態においては、オブジェクト移動手段１５３は、オブジェクト１６１のうちの所定の位置（例えば、中心位置、または、右下の角の位置等）がオブジェクト座標Ｏの位置となるように、オブジェクト１６１を配置してもよい。
【０１０１】
上記のように、本実施形態においては、ゲームシステム１は、現在座標Ｑからずれた位置にオブジェクト１６１を配置することができる。これによれば、ドラッグ操作を行う指によってオブジェクト１６１が隠される可能性を低減することができる。なお、オブジェクト１６１が指で隠されて見にくくなると、オブジェクト１６１の形状および／または種類がわかりにくくなったり、オブジェクト１６１の正確な位置がわかりにくくなったりするおそれがある。これに対して、本実施形態によれば、オブジェクト１６１を見やすく表示することができ、それによってドラッグ操作の操作性を向上することができる。
【０１０２】
［２−２−２．補正量の算出］
次に、補正量を算出する処理について説明する。本実施形態においては、上記補正量（すなわち、現在座標からオブジェクト座標までのずれ量）は、可変である。具体的には、オブジェクト移動手段１５３は、上記ドラッグ距離に応じて補正量を変化させる。以下、補正量を算出する処理の詳細について説明する。
【０１０３】
まず、オブジェクト移動手段１５３は、ドラッグ距離に基づいて補正基礎値を算出する。図１０は、ドラッグ距離と補正基礎値との関係の一例を示す図である。図１０に示すように、補正基礎値は、ドラッグ距離が大きくなるにつれて大きくなるように算出される。ただし、本実施形態においては、ドラッグ距離が所定値（Ｄ０）以下である場合には補正基礎値は０と算出される。また、補正基礎値には上限（図１０に示すａｍａｘ）が設定される。なお、図１０においては、（ドラッグ距離の増加に応じて補正基礎値が増加する範囲において）ドラッグ距離と補正基礎値とが比例する例を示している。ただし、ドラッグ距離と補正基礎値との関係を示す関数は、比例関数に限らず、ドラッグ距離が大きくなるにつれて補正基礎値が次第に大きくなるような任意の関数であってよい。また、本実施形態においては、ドラッグ距離と補正基礎値との関係を示す関数は、連続関数であり、補正基礎値は、ドラッグ距離の連続的な変化に応じて連続的に変化する。
【０１０４】
次に、オブジェクト移動手段１５３は、算出された補正基礎値に基づいて補正量を算出する。本実施形態においては、補正量は、ドラッグ操作が開始されてからの補正基礎値の最大値として算出される。つまり、オブジェクト移動手段１５３は、ドラッグ操作が開始されてからの補正基礎値が最大値を更新したことに応じて（換言すれば、ドラッグ距離が最大値を更新したことに応じて）補正量を増加させる。したがって、ドラッグ操作中において入力座標が開始座標に近づく方向に移動することによってドラッグ距離が減少した場合であっても、補正量は減少しない。このように、本実施形態においては、オブジェクト移動手段１５３は、１回のドラッグ操作中において、補正量を減少させないように算出する。
【０１０５】
なお、上記のように、ドラッグ操作が開始されてからドラッグ距離が所定の閾値（Ｄ０）以下となる期間においては、補正基礎値が０となる。したがって、上記期間においては、補正量は０となる結果、オブジェクト座標は入力座標と等しくなるので、オブジェクト移動手段１５３は、入力座標とオブジェクト座標との位置関係を維持して（本実施形態においては、入力座標とオブジェクト座標とを一致させて）オブジェクト１６１を移動させることとなる。これによれば、ドラッグ操作中においてユーザが入力位置を開始座標からほとんど動かしていない場合に、入力座標から離れた位置にオブジェクト１６１が配置されることを防止することができる。
【０１０６】
また、上述のように、補正基礎値には上限が設けられるので、補正量についても上限が設けられることとなる（具体的には、補正基礎値の上限値が補正量の上限となる）。このように、オブジェクト移動手段１５３は、ドラッグ操作中の入力座標（換言すれば、現在座標）とオブジェクト座標との距離に上限を設定する。これによれば、オブジェクトがユーザによる入力位置から離れすぎてしまい、ユーザが入力位置とオブジェクトとの関係を把握しにくくなってしまう可能性を低減することができる。これによって、ドラッグ操作中のオブジェクトを見やすく表示することができ、ドラッグ操作の操作性を向上することができる。
【０１０７】
なお、オブジェクト移動手段１５３は、ドラッグ操作中において補正量を繰り返し算出する。具体的には、本実施形態においては、補正量は、ドラッグ操作中において入力座標（換言すれば、現在座標）が取得される度に算出される。ただし、他の実施形態においては、オブジェクト移動手段１５３は、ドラッグ操作中において入力座標が所定回数取得される度に１回の割合で補正量を算出してもよい。また、他の実施形態において、ドラッグ操作中において取得された各入力座標を用いて補間処理が行われてもよく、この場合、補間処理によって得られた入力座標について補正量が算出されてもよい。
【０１０８】
図１１および図１２を参照して、上記のように補正量が算出される場合の具体例について説明する。図１１は、ドラッグ操作が開始されてからドラッグ距離が増加する場合におけるオブジェクトの移動の一例を示す図である。
【０１０９】
図１１に示す（ａ）は、ドラッグ操作が開始された時点におけるオブジェクト１６１を示す。なお、開始座標Ｐは、オブジェクト１６１の中心位置であるとする。入力座標（換言すれば、開始座標）Ｐがオブジェクト１６１内の位置である場合、当該オブジェクト１６１がドラッグ操作の操作対象として指定されたこととなる。
【０１１０】
図１１に示す（ｂ）は、現在座標Ｑ１が開始座標Ｐから少しだけ移動した（つまり、ドラッグ距離が小さい）時点におけるオブジェクト１６１を示す。図１１に示す（ｂ）においては、ドラッグ距離Ｄ１が比較的小さいので、補正基礎値も小さい値（例えば、図１０に示すａ１）となり、その結果、補正量（すなわち、補正ベクトルＡ１の大きさ）は比較的小さい値（すなわち、ａ１）となる。そのため、オブジェクト座標Ｏ１は現在座標Ｑ１から少しだけ離れた位置となり、オブジェクト１６１は現在座標Ｑ１から少しだけずれた位置に配置される。
【０１１１】
図１１に示す（ｃ）は、現在座標Ｑ２が開始座標Ｐから大きく移動した（つまり、ドラッグ距離が大きい）時点におけるオブジェクト１６１を示す。図１１に示す（ｃ）においては、ドラッグ距離Ｄ２が比較的大きいので、補正基礎値も大きい値（例えば、図１０に示すａ２）となり、その結果、補正量（すなわち、補正ベクトルＡ２の大きさ）は比較的大きい値（すなわち、ａ２）となる。そのため、オブジェクト座標Ｏ２は現在座標Ｑ２から大きく離れた位置となり、オブジェクト１６１は現在座標Ｑ２から大きくずれた位置に配置される。
【０１１２】
上記のように、オブジェクト移動手段１５３は、座標変化量が大きい場合（例えば、ドラッグ距離Ｄ＝Ｄ２である場合）は、当該座標変化量が小さい場合（例えば、ドラッグ距離Ｄ＝Ｄ１である場合）と比べて、入力座標（換言すれば、現在座標）とオブジェクト１６１の座標との距離が大きくなるように、オブジェクトを入力座標から離して配置する。したがって、本実施形態においては、ユーザがドラッグ操作を開始した後、開始位置から次第に離れるようにドラッグ操作を行う場合、オブジェクトは、ドラッグ操作に応じて移動しつつ、ユーザによるタッチ入力の位置（すなわち、入力座標）から次第に離れるように配置される。
【０１１３】
ここで、ドラッグ操作を開始してから入力座標が少ししか移動していない状態（例えば、図１１の（ｂ）に示す状態）では、ユーザは、操作対象であるオブジェクトを少しだけ移動させるような細かい操作を行うことを意図している可能性が考えられる。そのため、上記の状態において、仮に入力座標とオブジェクト座標とのずれ量を大きくしすぎると、ユーザが操作をしにくく感じるおそれがある。上記を考慮して、本実施形態では、上記の状態では、補正量を小さく設定することによって、ユーザが細かい操作を行いやすくしている。
【０１１４】
一方、ドラッグ操作を開始してから入力座標がある程度移動した状態（例えば、図１１の（ｃ）に示す状態）では、ユーザは、オブジェクトを少しだけ移動させるような細かい操作を行うことを意図している可能性がほとんどないと考えられる。そのため、上記の状態においては、入力座標とオブジェクト座標との距離をある程度大きくしてもユーザは違和感を抱かないと考えられるので、本実施形態においては、補正量を大きく設定することによって、オブジェクトを見やすくしている。
【０１１５】
以上より、本実施形態によれば、ゲームシステム１は、ドラッグ操作を開始した初期段階と、初期段階よりも後の段階とで、補正量を変化させることによって、いずれの段階においてもドラッグ操作を行いやすくすることができる。これによって、ドラッグ操作の操作性を向上することができる。
【０１１６】
なお、本実施形態においては、オブジェクト移動手段１５３は、入力座標の連続的な変化に応じて補正量を連続的に変化させる（図１０）。これによって、ドラッグ操作中にオブジェクトの位置が急激に変化する可能性を低減することができるので、ドラッグ操作の操作性を向上することができる。
【０１１７】
図１２は、ドラッグ距離が増加した後で減少する場合におけるオブジェクトの移動の一例を示す図である。図１２に示す（ａ）は、ドラッグ距離Ｄ３に応じた補正基礎値ａ３に等しい大きさの補正ベクトルＡ３が算出され、補正ベクトルＡ３に基づくオブジェクト座標Ｏ３にオブジェクト１６１が配置されている状態である。また、図１２に示す（ｂ）は、図１２に示す（ａ）の状態から入力座標が開始座標Ｐに近づく方向へ移動した状態である。したがって、図１２に示す（ｂ）の状態では、ドラッグ距離Ｄ４は、上記ドラッグ距離Ｄ３より小さくなっている。
【０１１８】
図１２に示す（ｂ）の状態において、補正基礎値ａ４は、上記補正基礎値ａ３より小さい値となる。ただし、上述のように、補正量は、ドラッグ操作が開始されてからの補正基礎値の最大値となるので、上記状態においては補正量（すなわち補正ベクトルＡ３の大きさ）は減少せずに維持される。したがって、図１２に示す（ｂ）の状態においては、オブジェクト座標Ｏ４は、現在座標Ｑ４から、図１２に示す（ａ）の状態と同じ距離だけ離れた位置になる。つまり、現在座標を基準としたオブジェクト１６１のずれ量は、図１２に示す（ａ）の状態と（ｂ）の状態とで同じになる。
【０１１９】
以上のように、本実施形態においては、オブジェクト移動手段１５３は、ドラッグ操作中におけるドラッグ距離の最大値に応じた大きさとなるように補正量を算出する。換言すれば、オブジェクト移動手段１５３は、ドラッグ操作中においてドラッグ距離が減少した場合には、値を維持するように、補正量を算出する。これによれば、補正量は、ドラッグ操作中において値が減少しないように算出される。ここで、図１２に示した場合のように、ドラッグ距離が一旦増加してから減少する場合には、ドラッグ操作の初期段階とは異なり、ユーザの意図は、オブジェクトを少しだけ移動させる意図ではないと考えられる。そのため、上記の場合には、入力座標からずれた位置にオブジェクトを配置してもユーザは違和感を抱きにくいと考えられる。したがって、本実施形態においては、上記の場合には入力座標からオブジェクトまでの距離を維持することによって、オブジェクトが見やすい状態を維持し、操作性を向上するようにしている。
【０１２０】
［２−２−３．操作を行う手の判別］
本実施形態においては、判別手段１５４は、ドラッグ操作を行うユーザの手が右手であるか左手であるかを判別する。そして、右手であると判別される場合と左手であると判別される場合とで、補正ベクトルの方向（換言すれば、現在座標に対してオブジェクトをずらす方向）を切り替える。
【０１２１】
具体的には、本実施形態においては、ドラッグ操作を行う手が右手であると判別される場合、オブジェクト移動手段１５３は、オブジェクト移動処理における処理モードを右手操作モードに設定する。一方、ドラッグ操作を行う手が左手であると判別される場合、オブジェクト移動手段１５３は、オブジェクト移動処理における処理モードを左手操作モードに設定する。
【０１２２】
右手操作モードにおいては、オブジェクト移動手段１５３は、補正ベクトルの向きを左上方向とする。したがって、右手操作モードにおいては、図９に示したように、現在座標を左上方向にずらした位置にオブジェクトが配置される。
【０１２３】
図１３は、左手操作モードにおけるオブジェクト配置の一例を示す図である。左手操作モードにおいては、図１３に示すように、オブジェクト移動手段１５３は、補正ベクトルＡの向きを右上方向とする。つまり、上記の場合、オブジェクト移動手段１５３は、現在座標Ｑを右上方向に移動させた座標をオブジェクト座標Ｏとして算出する。したがって、オブジェクト１６１は、現在座標Ｑから右上方向にずれた位置に配置される。なお、右手操作モードと左手操作モードとで、補正方向は異なる一方、補正量は同じである。
【０１２４】
ここで、本実施形態においては、上記補正方向は、ディスプレイ１２に表示される画像の方向を基準として設定される。例えば、ディスプレイ１２が横長となる向きに画像が表示される場合、画像の上下方向とは、ディスプレイ１２の短手方向であり、画像の左右方向とは、ディスプレイ１２の長手方向である。一方、ディスプレイ１２が縦長となる向きに画像が表示される場合、画像の上下方向とは、ディスプレイ１２の長手方向であり、画像の左右方向とは、ディスプレイ１２の短手方向である。
【０１２５】
また、ドラッグ操作を行うユーザの手が右手であるか左手であるかを判別する方法は任意である。本実施形態においては、判別手段１５４は、オブジェクト移動処理における処理モードを右手操作モードにするか左手操作モードにするかを、ユーザの設定指示に基づいて予め（すなわち、ドラッグ操作を用いた情報処理を実行する前に）設定しておく。なお、他の実施形態においては、判別手段１５４は、上記の判別を自動的に（すなわち、ユーザによる設定指示なしに）行うようにしてもよい。例えば、判別手段１５４は、ドラッグ操作中において検出されるタッチ領域の形状に基づいて上記の判別を行ってもよい。なお、上記の判別を自動的に行う方法は、従来用いられている判別方法であってもよい。
【０１２６】
以上のように、オブジェクト移動手段１５３は、ドラッグ操作を行うユーザの手が右手であると判定される場合、ドラッグ操作中の入力座標（換言すれば、現在座標）に対して、ディスプレイ１２に表示される画像を基準として左上方向の位置にオブジェクトを配置する（図９）。一方、ドラッグ操作を行うユーザの手が左手であると判定される場合、オブジェクト移動手段１５３は、ドラッグ操作中の入力座標に対して、ディスプレイ１２に表示される画像を基準として右上方向の位置にオブジェクトを配置する（図１３）。これによれば、ドラッグ操作が左右のいずれの手で行われる場合であっても、オブジェクトを見やすく表示することができ、ドラッグ操作の操作性を向上することができる。
【０１２７】
また、上記のように、本実施形態においては、オブジェクト移動手段１５３は、ドラッグ操作中の入力座標に対して、ディスプレイ１２に表示される画像における斜め上方向の位置にオブジェクトを配置する。これによって、ドラッグ操作を行うユーザの指によって隠されにくい位置にオブジェクトを表示することができるので、ドラッグ操作の操作性を向上することができる。
【０１２８】
なお、他の実施形態においては、ゲームシステム１は、ドラッグ操作を行う手の判別を行わなくてもよい（つまり、判別手段１５４を備えていなくてもよい）。このとき、オブジェクト移動手段１５３は、ドラッグ操作中の現在座標に対して上方向（具体的には、ディスプレイ１２に表示される画像を基準とした方向）の位置にオブジェクトを配置してもよい。
【０１２９】
［２−２−４．第１修正処理］
上述のように、本実施形態においては、現在座標から補正方向にずらした位置にオブジェクトが表示される。そのため、表示領域の端部（換言すれば、表示領域の周付近）において、状況によっては、ユーザはドラッグ操作によって所望の位置にオブジェクトを配置しにくくなるおそれがあった。例えば、現在座標から左上方向にずらした位置にオブジェクトが常に配置されるとすれば、表示領域の右端または下端に現在座標が位置する場合、オブジェクトは右端または下端よりも中央寄りに配置され、右端または下端にオブジェクトを配置することができない。そこで、本実施形態においては、オブジェクト移動手段１５３は、現在座標が表示領域の端部に位置する場合に、上述の補正ベクトルを修正する第１修正処理を実行する。以下、第１修正処理について説明する。
【０１３０】
ここで、本実施形態においては、「表示領域」とは、ディスプレイ１２において１つの画像が表示される領域を指す。例えば、ディスプレイ１２の全画面に１つの画像（例えば、ゲーム空間を表すゲーム画像）が表示される場合、ディスプレイ１２の画面領域が１つの表示領域である。また例えば、ディスプレイ１２の画面領域が２つに分割されてそれぞれに異なる画像が表示される場合（例えば、第１のプレイヤのためのゲーム画像が一方の分割された画面領域に表示され、第２のプレイヤのためのゲーム画像が他方の分割された画面領域に表示される場合）、分割された画面領域が１つの表示領域である。本実施形態においては、表示領域は、ドラッグ操作の対象となるオブジェクトを含む画像が表示される領域である。
【０１３１】
なお、本実施形態に関する以下の説明においては、ディスプレイ１２の全画面領域に、ドラッグ操作の対象となるオブジェクトを含む１つの画像が表示されるものとする。つまり、ディスプレイ１２の全画面領域が１つの表示領域であるものとする。
【０１３２】
図１４は、現在座標が表示領域の端部に移動する場合における第１修正処理の一例を示す図である。図１４に示す一点鎖線の上側の図は、ドラッグ操作の現在座標が表示領域の端部に移動する様子を示している。なお、図１４に示す例については、オブジェクト移動処理における処理モードが右手操作モードに設定されているものとして説明を行う。
【０１３３】
ここで、本実施形態においては、表示領域には端部領域が設定される。具体的には、長方形であるディスプレイ１２の４辺についてそれぞれ端部領域が設定される。より具体的には、図１４に示すように、表示領域の右端（換言すれば、右辺）から所定距離Ｂの領域が右端部領域に設定される。また、図示しないが、ディスプレイ１２の左辺から所定距離Ｂの領域が左端部領域に設定され、ディスプレイ１２の上辺から所定距離Ｂの領域が上端部領域に設定され、ディスプレイ１２の下辺から所定距離Ｂの領域が下端部領域に設定される。なお、ディスプレイ１２の４つの角付近においては、２つの端部領域が重複することとなる。
【０１３４】
図１４においては、現在座標が座標Ｑ１１から座標Ｑ１２を介して座標Ｑ１３へ移動している。座標Ｑ１１は、右端部領域外の位置である。座標Ｑ１２は、右端部領域内の位置であり、表示領域の右端から距離ｂ２だけ離れた位置である。座標Ｑ１３は、右端部領域内の位置であり、表示領域の右端からの距離が上記距離ｂ２よりも短い距離ｂ３となる位置である。
【０１３５】
詳細は後述するが、本実施形態においては、現在座標が右端部領域外の位置である場合、第１修正処理において補正ベクトルに対する修正は行われず、現在座標が右端部領域内の位置である場合、第１修正処理において補正ベクトルに対する修正が行われる。この場合、図１４に示すように、オブジェクト移動手段１５３は、オブジェクト１６１が表示領域の端（より具体的には、当該端部領域に対応する端）に近づくように、補正ベクトルを修正する。なお、図１４においては、修正前の補正ベクトルを点線で示している。以下、第１修正処理における補正ベクトルを修正する処理の詳細について説明する。
【０１３６】
本実施形態においては、オブジェクト移動手段１５３は、補正ベクトルの成分のうちで、現在座標が位置する端部領域に関する法線方向に関する成分について修正を行い、当該法線方向に垂直な成分について修正を行わない。ここで、「端部領域に関する法線方向」とは、表示領域の端となる辺のうちで、当該端部領域が設けられる辺における法線方向である。具体的には、右端部領域または左端部領域に関する法線方向は、左右方向であり、上端部領域または下端部領域に関する法線方向は、上下方向である。図１４に示す例においては、現在座標が右端部領域内に位置しているので、補正ベクトルのうち左右方向に関する成分が修正されており、補正ベクトルのうち上下方向に関する成分は修正されていない。
【０１３７】
本実施形態においては、オブジェクト移動手段１５３は、上記方線方向に関する補正ベクトルの成分を、端修正率を用いて修正する。具体的には、端修正率は、現在座標から表示領域の端までの距離に基づいて算出される。
【０１３８】
図１４に示す一点鎖線の下側のグラフは、現在座標から表示領域の右端までの距離と、端修正率との関係の一例を示す。図１４に示すように、現在座標から表示領域の右端までの距離がＢ以上である場合（つまり、現在座標が右端部領域外の位置である場合）、端修正率は１と算出される。また、現在座標から表示領域の右端までの距離がＢ未満である場合（つまり、現在座標が右端部領域外内の位置である場合）、端修正率は１未満と算出される。具体的には、上記距離が小さくなるほど端修正率が小さくなるように算出される。また、本実施形態においては、上記距離がｂ２となる場合に端修正率が０になるように算出される（図１４参照）。また、上記距離がｂ３未満となる場合に端修正率が下限値（−１）となるように算出される。
【０１３９】
なお、図１４に示す例においては、（上記距離の減少に応じて端修正率が減少する期間において）当該距離と端修正率とが比例する例を示している。ただし、上記距離と端修正率との関係を示す関数は、比例関数に限らず、上記距離が小さくなるにつれて端修正率が次第に小さくなるような任意の関数であってよい。なお、本実施形態のように、上記距離に応じて端修正率を連続的に変化させることによって、ドラッグ操作中にオブジェクトの位置が急激に変化する可能性を低減することができるので、ドラッグ操作の操作性を向上することができる。
【０１４０】
図１４に示す例において、現在座標が右端部領域外の座標Ｑ１１である場合、端修正率は１となる。この場合、オブジェクト移動手段１５３は、第１修正処理において、補正ベクトルの法線方向（具体的には、左右方向）の成分に１を乗算するので、補正ベクトルの値は変化しない。つまり、上記の場合、オブジェクト移動手段１５３は補正ベクトルの修正を実質的には行わない。その結果、上述したように、現在座標Ｑ１１を左上方向に補正したオブジェクト座標Ｏ１１の位置にオブジェクト１６１が表示される（図１４参照）。
【０１４１】
また、現在座標が右端部領域内に位置する場合、オブジェクト移動手段１５３は、補正ベクトルの法線方向の成分に、１より小さい値の端修正率を乗算する。したがって、補正ベクトルのうちで左方向を向く成分が小さくなるように修正される。すなわち、補正ベクトルは、オブジェクト１６１から表示領域の右端への向き（すなわち、右向き）に近づくように修正される。したがって、第１修正処理が実行される場合のオブジェクト座標は、第１修正処理が実行されない場合のオブジェクト座標に比べて、表示領域の右端に近づく位置となる。
【０１４２】
例えば、現在座標が、右端までの距離がｂ２である座標Ｑ１２である場合、端修正率は０となる。この場合、補正ベクトルの法線方向（すなわち、左右方向）の成分は０となるので、修正された補正ベクトルＡ１２は上方向を向く。そのため、オブジェクト座標Ｏ１２は現在座標Ｑ１２の上方向にずれた位置となり、当該位置にオブジェクト１６１が表示される（図１４参照）。
【０１４３】
また例えば、現在座標が、右端までの距離がｂ３である座標Ｑ１３である場合、端修正率は負の値（−１）となる。この場合、補正ベクトルの法線方向（すなわち、左右方向）の成分は右向きとなるので、修正された補正ベクトルＡ１３は右上方向を向く。そのため、オブジェクト座標Ｏ１３は現在座標Ｑ１３の右上方向にずれた位置となり、当該位置にオブジェクト１６１が表示される（図１４参照）。
【０１４４】
上記においては、表示領域における右端部領域内に現在座標が位置する場合を例として説明したが、右端部領域以外の他の端部領域内に現在座標が位置する場合も同様である。すなわち、左端部領域に現在座標が位置する場合には、オブジェクトが表示領域の左端に近づくように（換言すれば、補正方向が左向きに近づくように）補正ベクトルが修正される。また、上端部領域に現在座標が位置する場合には、オブジェクトが表示領域の上端に近づくように補正ベクトルが修正される。また、下端部領域に現在座標が位置する場合には、オブジェクトが表示領域の下端に近づくように補正ベクトルが修正される。なお、右手操作モードにおいては補正ベクトルは左上方向を向く。そのため、左端部領域に現在座標が位置する場合、または、上端部領域に現在座標が位置する場合には、補正ベクトルは、その向きが反対になることなく、その大きさが大きくなるように修正される。具体的には、上記の場合には、端修正率は１より大きい値となるように、例えば、１〜２の範囲で設定される。この場合、補正ベクトルは１倍〜２倍の範囲で修正される。
【０１４５】
また、現在座標が、２つの端部領域が重複する領域に位置する場合には、各端部領域に関する各法線方向に関してそれぞれ補正ベクトルが修正される。例えば、現在座標が表示領域の右下の角付近に位置する場合（すなわち、右端部領域内であってかつ下端部領域内に位置する場合）、オブジェクトが表示領域の右端および下端に近づくように（換言すれば、補正方向が右下向きに近づくように）補正ベクトルが修正される。
【０１４６】
以上のように、本実施形態においては、オブジェクト移動手段１５３は、ドラッグ操作中の入力座標（具体的には、現在座標）がディスプレイ１２における表示領域の端から所定距離内の位置となることを少なくとも条件として、補正方向に基づくオブジェクトの位置が当該端に近づくように、補正ベクトルを修正する。なお、補正ベクトルは、補正方向および補正量の少なくとも一方が修正されればよい。これによれば、ユーザは、ドラッグ操作中においてオブジェクトを表示領域の端に配置しやすくなるので、ドラッグ操作の操作性を向上することができる。例えば、修正前の補正方向が左上方向である場合において、入力座標が表示領域の右端部領域内に位置すると、オブジェクトが当該右端に近づくように補正方向が修正される（図１４）。これによって、ユーザは、オブジェクトを右端に配置しやすくなる。また例えば、修正前の補正方向が左上方向である場合において、入力座標が表示領域の左端部領域内に位置すると、オブジェクトが当該左端に近づくように補正方向が修正される。これによって、ユーザは、入力座標を左端まで移動させなくてもオブジェクトを左端に配置することができる。
【０１４７】
なお、本実施形態においては、オブジェクト移動手段１５３は、第１修正処理において、ドラッグ操作中の入力座標（具体的には、現在座標）が端部領域内の位置となることを少なくとも条件として、補正方向を修正した。ここで、他の実施形態においては、オブジェクト移動手段１５３は、第１修正処理において、入力座標に代えて、オブジェクト座標を用いてもよい。すなわち、オブジェクト移動手段１５３は、第１修正処理において、オブジェクト座標が端部領域内の位置となることを少なくとも条件として、補正方向を修正してもよい。
【０１４８】
また、本実施形態においては、オブジェクト移動手段１５３は、ドラッグ操作中の入力座標が表示領域の端から所定距離内となり、修正前の補正方向（例えば、図１４における点線で示される補正ベクトルの方向）が当該入力座標から当該表示領域の端への向き（図１４においては、右向き）とは反対側を向く場合（例えば、図１４において、現在座標が、修正前の補正ベクトルが左上方向を向き、表示領域の端が右側に位置する座標Ｑ１２およびＱ１３となる場合）、補正方向に基づく当該オブジェクトが当該端に近づくように、前記補正方向を修正する。これによって、上述のように、ユーザは、修正前の補正方向とは反対側の向きにある端（例えば、修正前の補正方向が左上方向である場合、右端または下端）にオブジェクトを配置しやすくなる。なお、「補正方向が、入力座標から表示領域の端への向きとは反対側を向く」とは、補正ベクトルと、入力座標から表示領域の端への方向とのなす角度θが、９０°＜θ＜２７０°となることを意味する。
【０１４９】
なお、他の実施形態においては、端部領域は、表示領域の全ての辺に設定されなくてもよい。例えば、他の実施形態においては、オブジェクト移動手段１５３は、上記右手操作モードにおいては、右端部領域および下端部領域を設定し、上記左手操作モードにおいては、左端部領域および下端部領域を設定するようにしてもよい。これによれば、上記実施形態と同様、補正方向とは反対側の向きにある端にオブジェクトを配置しやすくなる。また、他の実施形態においては、表示領域から端部領域が設定される幅（例えば、上述の所定距離Ｂ）は、端部領域毎に異なる長さであってもよい。例えば、右端部領域はディスプレイ１２の右辺から距離Ｂ１までの範囲に設定され、上端部領域はディスプレイ１２の上辺から距離Ｂ２（ただし、距離Ｂ２は距離Ｂ１とは異なる長さ）までの範囲に設定されてもよい。
【０１５０】
また、本実施形態においては、第１修正処理においては、補正ベクトルの法線方向の成分について修正が行われたが、他の実施形態においては、補正ベクトルの２方向の成分（すなわち、法線方向の成分と、法線方向に垂直な成分）について修正が行われてもよい。例えば、オブジェクト移動手段１５３は、補正ベクトルに対して上記端修正率を乗算することによって修正を行ってもよい。具体的には、オブジェクト移動手段１５３は、補正ベクトルの大きさ（すなわち、補正量）を減少させる修正を行ってもよい。なお、このとき、端修正率の下限値は０以上とする。これによれば、現在座標が表示領域の端に近づくほど、オブジェクトは現在座標の近くに配置されることとなる。これによっても本実施形態と同様、ユーザは、ドラッグ操作によって表示領域の端にオブジェクトを配置することができる。
【０１５１】
本実施形態においては、第１修正処理は、ドラッグ操作の入力座標が端部領域外の位置から端部領域内の位置に変化した場合に実行される。したがって、ドラッグ操作の開始座標が端部領域内の位置であった場合において、当該ドラッグ操作の入力座標が端部領域外の位置となることなく端部領域内の位置を維持している状態では、第１修正処理は実行されない。なお、本実施形態においては、上記の状態においては、後述する第２修正処理が実行される。
【０１５２】
なお、他の実施形態においては、第１修正処理は、ドラッグ操作の入力座標が端部領域外の位置から端部領域内の位置に変化した場合に限らず、現在座標が端部領域内の位置にある任意の場合に実行されてもよい。すなわち、オブジェクト移動手段１５３は、ドラッグ操作の開始座標が端部領域内の位置であった場合において、当該ドラッグ操作の入力座標が端部領域外の位置となることなく端部領域内の位置を維持している状態であっても、第１修正処理を実行してもよい。なお、このとき、後述する第２修正処理は実行されない。
【０１５３】
［２−２−５．第２修正処理］
ユーザは、表示領域の端部付近において表示領域の辺に沿ってドラッグ操作を行う場合がある。このような場合、ユーザの意図は、ドラッグ操作によって表示領域の辺に沿ってオブジェクトを移動させることであると推測される。したがって、上記の場合において、上記補正ベクトルによる補正によって、辺に沿った方向とは異なる方向にオブジェクトが移動されると、ユーザがドラッグ操作に違和感を抱くおそれがある。そこで、本実施形態においては、上記の場合において、オブジェクト移動手段１５３は、現在座標から辺に沿った方向にオブジェクトが配置されるように補正ベクトルを修正する第２修正処理を実行する。以下、第２修正処理の詳細を説明する。
【０１５４】
図１５は、端部領域においてドラッグ操作によってオブジェクトが移動される様子の一例を示す図である。図１５においては、オブジェクト１６１に対するドラッグ操作が下端部領域において行われる様子を示している。図１５に示す例においては、ドラッグ操作は、下端部領域内の座標Ｐ２１から、下端部領域内を通って座標Ｑ２１まで行われたものとする。また、図１５に示す例については、オブジェクト移動処理における処理モードが右手操作モードに設定されているものとして説明を行う。
【０１５５】
図１５においては、オブジェクト移動手段１５３は、下端部領域に関する法線方向（すなわち、上下方向）については補正が行われないように、補正ベクトルを修正する。具体的には、オブジェクト移動手段１５３は、第２修正処理において、補正ベクトルのうちで上記法線方向の成分を０にする修正を行う。これによって、現在座標Ｑ２１から左方向を向く補正ベクトルＡ２１に基づいてオブジェクト座標Ｏ２１が算出され、オブジェクト座標Ｏ２１の位置にオブジェクト１６１が表示される（図１５参照）。
【０１５６】
また、端部領域内を開始座標として開始されたドラッグ操作の入力座標が、当該端部座標外の位置となった場合、オブジェクト移動手段１５３は第２修正処理の実行を終了する。この場合、ユーザは、表示領域の辺に沿ってオブジェクトを移動させることを意図していないと推測することができるからである。なお、端部座標外の位置となった入力座標が再度当該端部座標内に入った場合は、上述の第１修正処理が実行される。
【０１５７】
なお、第２修正処理の実行を終了した後で第１修正処理を実行する場合、オブジェクト移動手段１５３は、法線方向についての補正量（すなわち、補正ベクトルにおける法線方向の成分の大きさ）を、第２修正処理の実行終了時からの座標変化量に基づいて算出する。つまり、法線方向についての補正量は、第２修正処理の実行終了時における入力座標から現在座標までの距離に基づいて算出される。これによれば、第２修正処理の実行が終了した後でオブジェクトの位置が急激に変化する可能性を低減することができるので、ドラッグ操作の操作性を向上することができる。なお、他の実施形態においては、上記の場合において、オブジェクト移動手段１５３は、法線方向についての補正量を、ドラッグ操作開始時からの座標変化量に基づいて算出してもよい。
【０１５８】
上記においては、表示領域における下端部領域内に開始座標が位置する場合を例として説明したが、下端部領域以外の他の端部領域内に開始座標が位置する場合も同様である。すなわち、上端部領域内においてドラッグ操作が行われる場合には、下端部領域内においてドラッグ操作が行われる場合と同様、現在座標から左右方向にのみずれた位置にオブジェクトが配置される。右端部領域内または左端部領域内においてドラッグ操作が行われる場合には、現在座標から上下方向にのみずれた位置にオブジェクトが配置される。なお、本実施形態においては、修正前の補正ベクトルは左上方向または右上方向を向くので、右端部領域内または左端部領域内においてドラッグ操作が行われる場合には、第２修正処理によって、真上方向にずれた位置にオブジェクトが配置される。そのため、第２修正処理が実行される場合におけるオブジェクトの位置も第２修正処理が実行されない場合と同様、ドラッグ操作を行うユーザの指に隠れにくく、見やすい位置となっている。
【０１５９】
また、上記においては、オブジェクト移動処理における処理モードが右手操作モードに設定されている場合を例として説明したが、当該処理モードが左手操作モードに設定されている場合、（補正方向が右手操作モードとは異なるものの）右手操作モードと同様の第２修正処理が実行される。すなわち、左手操作モードにおいても右手操作モードと同様に、端部領域内においてドラッグ操作が開始されて継続される場合には、オブジェクト移動手段１５３は、補正ベクトルのうちで、端部領域に関する法線方向の成分を０にする修正を行う。
【０１６０】
以上のように、本実施形態においては、オブジェクト移動手段１５３は、ドラッグ操作が開始されてからの各入力座標が端部領域内の範囲にある間は、当該ドラッグ操作中の入力座標（具体的には、現在座標）を、当該端部領域に関する法線方向に垂直な方向へ補正したオブジェクト座標にオブジェクトを配置する（つまり、入力座標は法線方向に関しては補正されない）。これによれば、ドラッグ操作を行うユーザの意図とは異なる方向にオブジェクトが移動する可能性を低減することができるので、ドラッグ操作の操作性を向上することができる。
【０１６１】
なお、他の実施形態においては、オブジェクト移動手段１５３は、第２修正処理において修正を行うか否かの判定を、入力座標に代えて、オブジェクトの座標（例えば、オブジェクトの中心を示す座標）を用いて行ってもよい。すなわち、他の実施形態においては、オブジェクト移動手段１５３は、オブジェクトの座標が端部領域内の範囲にある間は、ドラッグ操作中の入力座標（具体的には、現在座標）を、当該端部領域に関する法線方向に垂直な方向へ補正したオブジェクト座標にオブジェクトを配置するようにしてもよい。
【０１６２】
なお、他の実施形態においては、オブジェクト移動手段１５３は、上記第２修正処理において、補正ベクトルを０にするように修正してもよい。このとき、補正ベクトルによる補正は行われないので、オブジェクトは現在座標の位置に配置されることになる。このように、オブジェクト移動手段１５３は、ドラッグ操作が開始されてからの各入力座標が端部領域内の範囲にある間は、オブジェクトを当該ドラッグ操作中の入力座標（具体的には、現在座標）の位置に配置してもよい。これによっても本実施形態と同様、ドラッグ操作を行うユーザの意図とは異なる方向にオブジェクトが移動する可能性を低減することができる。
【０１６３】
なお、上記第１修正処理において用いられる端部領域と、上記第２修正処理において用いられる端部領域とは、同じであってもよいし、異なっていてもよい。例えば、端部領域の幅は、上記第１修正処理において用いられる端部領域と、上記第２修正処理において用いられる端部領域とで同じであってもよいし、異なっていてもよい。また例えば、上記第１修正処理においては、上下左右の４つの端部領域が用いられるのに対して、上記第２修正処理においては、下端部領域のみが用いられてもよい。
【０１６４】
［２−２−６．第３修正処理］
本実施形態においては、ドラッグ操作における開始座標が、操作対象となるオブジェクトのうちのどの位置であるかによって、適切な補正量が異なる可能性がある。例えば、上記右手操作モードにおいては、現在座標を左上方向にずらした位置にオブジェクトが配置される。このとき、オブジェクトのうちの左上部分の位置が開始座標となる場合と、右下部分の位置が開始座標となる場合とでは、ドラッグ操作を行う指によって隠れないようにオブジェクトを現在座標からずらすために必要な補正量は異なる。したがって、本実施形態においては、オブジェクト移動手段１５３は、オブジェクト内における開始座標の位置に基づいて（換言すれば、オブジェクトと開始座標との位置関係に基づいて）補正ベクトルを修正する第３修正処理を実行する。以下、第３修正処理の詳細を説明する。
【０１６５】
図１６は、開始座標が異なる２通りの場合においてオブジェクトが移動する様子の一例を示す図である。なお、図１６に示す例については、オブジェクト移動処理における処理モードが右手操作モードに設定されているものとして説明を行う。
【０１６６】
図１６に示す（ａ）は、オブジェクト１６１の中央より右側（より具体的には、中央を通る上下方向の軸より右側）の座標Ｐ３１が開始座標となる場合においてオブジェクトが移動する様子を表す。本実施形態においては、開始座標がオブジェクト１６１の中央より右側となる場合、第３修正処理による補正ベクトルの修正は行われない。したがって、上記の場合、開始座標Ｐ３１からドラッグ距離Ｄ３１だけ離れた現在座標Ｑ３１については、第３修正処理による修正は行われない補正ベクトルＡ３１が用いられる。すなわち、現在座標Ｑ３１から左上方向を向く補正ベクトルＡ３１に基づいてオブジェクト座標Ｏ３１が算出され、オブジェクト座標Ｏ３１の位置にオブジェクト１６１が表示される（図１６（ａ）参照）。
【０１６７】
一方、図１６に示す（ｂ）は、オブジェクト１６１の中央より左側（より具体的には、中央を通る上下方向の軸より左側）の座標Ｐ３２が開始座標となる場合においてオブジェクトが移動する様子を表す。本実施形態においては、開始座標がオブジェクト１６１の中央より左側となる場合、第３修正処理による補正ベクトルに対する修正が行われる。具体的には、上記の場合、オブジェクト移動手段１５３は、補正ベクトルにおける左方向の成分を増加させる修正を行う。したがって、上記の場合、開始座標Ｐ３２からドラッグ距離Ｄ３１（すなわち、図１６（ａ）に示す場合と同じドラッグ距離）だけ離れた現在座標Ｑ３２については、第３修正処理によって修正された補正ベクトルＡ３２が用いられる。詳細は後述するが、補正ベクトルＡ３２は、補正ベクトルＡ３１よりも左方向の成分が増加したベクトルである。したがって、現在座標Ｑ３２から左上方向を向き、補正ベクトルＡ３１よりも大きい補正ベクトルＡ３２に基づいてオブジェクト座標Ｏ３２が算出され、オブジェクト座標Ｏ３２の位置にオブジェクト１６１が表示される（図１６（ｂ）参照）。なお、図１６（ｂ）においては、第３修正処理による修正が行われない補正ベクトルＡ３１を用いて算出される位置に配置されるオブジェクト１６１を、点線で示している。図１６より、第３修正処理によって、オブジェクトが指に隠れにくくなり、より見やすい位置に配置されていることが分かる。
【０１６８】
第３修正処理における修正は、補正ベクトルの左右方向に関する成分に対して開始修正率を乗算することによって行われる。本実施形態においては、開始修正率は、オブジェクト内における開始座標の位置（より具体的には、左右方向に関するオブジェクトの中央から開始座標までの距離）に基づいて算出される。
【０１６９】
図１７は、左右方向に関する開始座標の位置と開始修正率との関係の一例を示す図である。図１７に示すように、開始座標がオブジェクトの中央より右側の領域となる場合、開始修正率は１に設定される。したがって、この場合、第３修正処理による修正は実質的には行われない。一方、開始座標がオブジェクトの中央より左側の領域となる場合、開始修正率は１以上の値に設定される。具体的には、図１７に示すように、上記の場合、開始修正率は、オブジェクトの中央から開始座標までの距離（左右方向についての距離）に比例して増加し、開始座標がオブジェクトの左端の位置となる場合に上限値（ここでは、１．５）となる。
【０１７０】
上記より、本実施形態においては、開始座標がオブジェクト内における左側に位置するほど開始修正率が大きくなる。したがって、開始座標がオブジェクト内における左側に位置するほど、オブジェクトは現在座標から離れた位置に配置されるので、ドラッグ操作を行う指にオブジェクトが隠れにくくなる。
【０１７１】
上記においては、オブジェクト移動処理における処理モードが右手操作モードに設定されている場合を例として説明した。ここで、上記処理モードが左手操作モードに設定されている場合には、オブジェクト移動手段１５３は、開始座標の位置と開始修正率との関係（図１７）を左右反対にして第３修正処理を実行する。すなわち、左手操作モードにおいては、開始座標がオブジェクトの中央より左側の領域となる場合、開始修正率は１に設定され、修正は実質的には行われない。また、開始座標がオブジェクトの中央より右側の領域となる場合、開始修正率は、オブジェクトの中央から開始座標までの距離（左右方向についての距離）に比例して増加するように算出される。また、上記処理モードが左手操作モードに設定されている場合には、オブジェクト移動手段１５３は、開始修正率が１より大きい値となる場合、補正ベクトルにおける右方向の成分を増加させる修正を行う。
【０１７２】
以上のように、本実施形態においては、オブジェクト移動手段１５３は、開始座標が、オブジェクトの基準位置（ここでは、中央）を通る所定軸より補正方向の側（すなわち、左側）である場合、当該開始座標が当該所定軸より補正方向の反対側（例えば、右側）である場合に比べて、当該ドラッグ操作中における補正量を当該補正方向の側に大きく設定する。これによれば、オブジェクト内における開始座標の位置に応じて補正量を調節することができるので、オブジェクトを見やすい位置に表示することができる。これによって、ドラッグ操作の操作性を向上することができる。
【０１７３】
なお、本実施形態においては、上記基準位置をオブジェクトの中央の位置として、中央より右側である場合と左側である場合とで補正量を異ならせるようにした。ここで、他の実施形態においては、基準位置はオブジェクト内の任意の位置でよい。
【０１７４】
また、上記所定軸は、本実施形態においては、上下方向に平行な軸としたが、他の実施形態においては、左右方向に平行な軸であってもよい。すなわち、本実施形態においては、オブジェクト移動手段１５３は、開始座標の左右方向に関する位置に基づいて、左右方向に関する補正量を変化させたが、他の実施形態においては、開始座標の上下方向に関する位置に基づいて、上下方向に関する補正量を変化させてもよい。例えば、オブジェクト移動手段１５３は、開始座標がオブジェクトの中央より上側である場合、開始座標がオブジェクトの中央より下側である場合に比べて補正量が大きくなるようにしてもよい。また、他の実施形態においては、上記所定軸は、斜め方向に平行な軸であってもよく、開始座標の左右方向の位置および上下方向の位置の両方を考慮して補正量を変化させるようにしてもよい。例えば、オブジェクト移動手段１５３は、開始座標がオブジェクトの中心より左上側である場合、開始座標がオブジェクトの中心より右下側である場合に比べて補正量が大きくなるようにしてもよい。
【０１７５】
また、本実施形態においては、オブジェクト移動手段１５３は、第３修正処理において、補正ベクトルの左右方向の成分について修正を行った。ここで、他の実施形態においては、第３修正処理において、補正ベクトルの２方向の成分（すなわち、法線方向の成分と、法線方向に垂直な成分）について修正が行われてもよい。具体的には、オブジェクト移動手段１５３は、補正ベクトルに対して上記開始修正率を乗算する修正を行ってもよい。この場合、修正前後において補正方向は変化せずに補正量が変化することとなる。
【０１７６】
［２−２−７．ドラッグ操作中に入力座標が取得されなかった場合の処理］
本実施形態においては、ドラッグ操作中において何らかの理由で入力座標の取得（換言すれば、検出）が途切れ、その後に入力座標が再度取得された場合、ゲームシステム１は、一定条件下でドラッグ操作が継続していると判断する。これによって、ドラッグ操作がユーザの意図に反して終了されてしまう可能性を低減する。以下、ドラッグ操作を継続させるための処理について説明する。
【０１７７】
図１８は、表示領域の端部付近でドラッグ操作が行われる様子の一例を示す図である。図１８においては、時刻ｔ＝ｔ１〜ｔ４の期間におけるドラッグ操作による入力軌跡を示している。図１８においては、時刻ｔ１において入力座標Ｑ４１が取得され、時刻ｔ２および時刻ｔ３においては、ユーザによる入力位置（図１８において白丸で表される位置）は表示領域外であるために入力座標が取得されず、時刻ｔ４において入力座標Ｑ４２が取得されたものとする。
【０１７８】
本実施形態においては、変化量算出手段１５２は、ドラッグ操作中に入力座標が取得されなくなってからの経過時間を測定する。そして、入力座標が再度取得された場合、変化量算出手段１５２は、上記経過時間が、予め定められた継続判定時間より短いか否かを判定する。なお、継続判定時間の長さは任意であるが、例えば、入力座標に基づきオブジェクト座標が１０回更新される期間（換言すれば、１０フレーム期間）に相当する長さに設定される。
【０１７９】
上記経過時間が継続判定時間より短い場合、変化量算出手段１５２は、ドラッグ操作が継続していると判断する。すなわち、変化量算出手段１５２は、入力座標の取得が中断される前のドラッグ操作における開始座標と、中断後に取得された入力座標とに基づいてドラッグ距離を算出する。このように、上記経過時間が継続判定時間より短い場合には、入力座標の取得が中断される前のドラッグ操作について、ドラッグ距離が継続して算出される。上記の場合、算出されたドラッグ距離に基づくオブジェクト座標の位置にオブジェクトが表示される。例えば、図１８に示す例において、経過時間が継続判定時間よりも短いと仮定すると、入力座標Ｑ４１に基づく位置にオブジェクトが表示された後、入力座標Ｑ４２に基づく位置にオブジェクトが表示される。このようにして、ユーザはドラッグ操作を継続することができる。
【０１８０】
一方、上記経過時間が継続判定時間以上となる場合、変化量算出手段１５２は、ドラッグ操作が終了したと判断し、オブジェクトの移動を終了する。この場合、オブジェクトは、ドラッグ操作中に入力座標が取得されなくなった時点で移動を停止する。例えば、図１８に示す例において、経過時間が継続判定時間以上であると仮定すると、入力座標Ｑ４１に基づく位置に表示されたオブジェクトは、入力座標Ｑ４２が取得されても移動されない。
【０１８１】
なお、図１８においては、ユーザによる入力位置が表示領域外となることが理由で入力座標が取得されない場合を例として示すが、入力座標が取得されなくなる理由は任意である。本実施形態においては、変化量算出手段１５２は、入力座標が取得されなくなる理由にかかわらず、変化量算出手段１５２は、上記経過時間が継続判定時間より短い場合には、ドラッグ操作が継続していると判断する。
【０１８２】
以上のように、本実施形態においては、変化量算出手段１５２は、ドラッグ操作の入力座標が取得されなくなってから所定時間（具体的には上記継続判定時間）内に入力座標が再び取得された場合、当該ドラッグ操作に関して座標変化量を継続して算出する。これによれば、ドラッグ操作中に何らかの理由で入力座標が一時的に取得されなくなった場合でも、ユーザはドラッグ操作を継続することができるので、ドラッグ操作の操作性を向上することができる。
【０１８３】
［３．ゲームシステムにおける処理の具体例］
次に、図１９〜図２１を参照して、ゲームシステム１において実行されるオブジェクト移動処理の具体例について説明する。
【０１８４】
［３−１．処理に用いられるデータ］
図１９は、ゲームシステム１におけるオブジェクト移動処理に用いられる各種情報の一例を示す図である。図１９に示す各種情報は、本体装置２がアクセス可能な記憶媒体（例えば、フラッシュメモリ８４、ＤＲＡＭ８５、および／または、スロット２３に装着されたメモリカード等）に記憶される。
【０１８５】
図１９に示すように、ゲームシステム１は、情報処理プログラムを記憶する。情報処理プログラムは、本実施形態におけるオブジェクト移動処理を実行するためのプログラム（例えば、ゲームプログラム等のアプリケーションプログラム）であり、例えば、フラッシュメモリ８４、および／または、スロット２３に装着されたメモリカードに記憶される。
【０１８６】
また、図１９に示すように、ゲームシステム１は、ドラッグ操作情報、変化量情報、操作手情報、補正ベクトル情報、および、オブジェクト情報を記憶する。これらの情報（換言すれば、データ）は、後述するオブジェクト移動処理（図２０および図２１）において生成されて用いられる。
【０１８７】
ドラッグ操作情報は、ドラッグ操作中における入力座標を示す。本実施形態においては、ドラッグ操作情報は、開始座標を示す入力座標情報と、現在座標を示す入力座標情報と、現在座標の１つ前に取得された入力座標を示す入力座標情報とを少なくとも含む。
【０１８８】
変化量情報は、上述の座標変化量を示す。上述のように、本実施形態においては、変化量情報は、上記ドラッグ距離を示す。また、操作手情報は、上述のように、ドラッグ操作を行うユーザの手が右手であるか左手であるかを示す。また、補正ベクトル情報は、ドラッグ操作中に算出される補正ベクトルを示す。
【０１８９】
オブジェクト情報は、ディスプレイ１２に表示される仮想空間に配置されるオブジェクトに関する情報である。本実施形態においては、オブジェクト情報は、上述のオブジェクト座標を示す情報を含む。なお、オブジェクト情報は、仮想空間に配置されるオブジェクト毎に生成されて記憶される。
【０１９０】
［３−２．ゲームシステムにおいて実行される処理］
図２０および図２１は、ゲームシステム１によって実行されるオブジェクト移動処理の流れの一例を示すフローチャートである。なお、図２０および図２１に示す一連のオブジェクト移動処理は、プロセッサ８１によって上記情報処理プログラムが起動された後における適宜のタイミングで開始される。例えば、ドラッグ操作可能なオブジェクトが配置された仮想空間がディスプレイ１２に表示された場合に、オブジェクト移動処理の実行が開始される。
【０１９１】
なお、本実施形態では、本体装置２のプロセッサ８１が、ゲームシステム１に記憶されている上記情報処理プログラムを実行することによって、図２０および図２１に示す各ステップの処理を実行するものとして説明する。ただし、他の実施形態においては、上記各ステップの処理のうちの一部の処理を、プロセッサ８１とは別のプロセッサ（例えば、専用回路等）が実行するようにしてもよい。また、ゲームシステム１が他の情報処理装置（例えば、サーバ）と通信可能である場合、図２０および図２１に示す各ステップの処理の一部は、他の情報処理装置において実行されてもよい。また、図２０および図２１に示す各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて（または代えて）別の処理が実行されてもよい。
【０１９２】
また、プロセッサ８１は、図２０および図２１に示す各ステップの処理を、メモリ（例えば、ＤＲＡＭ８５）を用いて実行する。すなわち、プロセッサ８１は、各処理ステップによって得られる情報（換言すれば、データ）をメモリに記憶し、それ以降の処理ステップにおいて当該情報を用いる場合には、メモリから当該情報を読み出して利用する。
【０１９３】
図２１に示すステップＳ１において、プロセッサ８１（換言すれば、判別手段１５４）は、処理モードが右手操作モードであるか左手操作モードであるかを判別する。ステップＳ１の処理は、ドラッグ操作を行うユーザの手が右手であるか左手であるかを判別するための処理である。本実施形態では、上記“［２−２−３．操作を行う手の判別］”の欄で述べたように、プロセッサ８１は、ユーザの設定指示に基づいて、処理モードが右手操作モードであるか左手操作モードであるかを判別する。このとき、プロセッサ８１は、判別結果を示す操作手情報をメモリに記憶する。ステップＳ１の次に、ステップＳ２の処理が実行される。
【０１９４】
ステップＳ２において、プロセッサ８１は、初期設定処理を実行する。初期設定処理においては、プロセッサ８１は、以降の処理（すなわち、ステップＳ３〜Ｓ１７の一連の処理）において用いられる各種情報の初期値を設定する。例えば、本実施形態においては、後述する操作中フラグがオフに設定され、後述する第２修正フラグがオフに設定される。また、初期設定処理において、プロセッサ８１は、所定の処理に用いられる設定情報を、ステップＳ１で判別された結果（すなわち、右手操作モードであるか左手操作モードであるか）に応じて設定する。具体的には、補正ベクトルの補正方向は、上記ステップＳ１の判別結果に応じて設定される（上記“［２−２−３．操作を行う手の判別］”参照）。また、第３修正処理における開始修正率の算出方法と、第３修正処理によって補正ベクトルを修正する方向とが、上記ステップＳ１の判別結果に応じて設定される（上記“［２−２−６．第３修正処理］”参照）。ステップＳ２の次に、ステップＳ３の処理が実行される。
【０１９５】
ステップＳ３において、プロセッサ８１（換言すれば、入力座標取得手段１５１）は、タッチパネルに対する入力を示す入力情報を取得する。すなわち、プロセッサ８１は、タッチパネル１３に対して行われた入力を示す入力情報を当該タッチパネル１３から取得する。ここで、タッチパネル１３に対するユーザのタッチ入力が検出される場合、入力情報は上述の入力座標情報を含む。一方、タッチパネル１３に対するユーザのタッチ入力が検出されない場合、入力情報は、タッチ入力がないことを示す情報を含む。ステップＳ３の次に、ステップＳ４の処理が実行される。
【０１９６】
ステップＳ４において、プロセッサ８１は、ドラッグ操作が新たに開始されたか否かを判定する。具体的には、オブジェクトに対するタッチ入力が新たに開始され、かつ、操作中フラグがオフである場合、プロセッサ８１は、ドラッグ操作が新たに開始されたと判定する。なお、このとき、プロセッサ８１は、ドラッグ操作情報に含まれる開始座標を示す入力座標情報として、今回の処理ループにおけるステップＳ３で取得された入力座標を示す入力座標情報をメモリに記憶する。一方、オブジェクトに対するタッチ入力が新たに開始されていない場合、または、操作中フラグがオンである場合、プロセッサ８１は、ドラッグ操作が新たに開始されていないと判定する。
【０１９７】
なお、オブジェクトに対するタッチ入力が新たに開始されたか否かの判定は、ステップＳ３で取得される入力情報に基づいて行うことができる。すなわち、今回の処理ループ（すなわち、ステップＳ３〜Ｓ１７の処理ループ）におけるステップＳ３で取得された入力情報がオブジェクト内の入力座標を示し、前回の処理ループにおけるステップＳ３で取得された入力情報が、タッチ入力がないことを示す場合、プロセッサ８１は、オブジェクトに対するタッチ入力が新たに開始されたと判定する。一方、上記の場合以外は、プロセッサ８１は、オブジェクトに対するタッチ入力が新たに開始されていないと判定する。
【０１９８】
ステップＳ４の判定結果が肯定である場合、ステップＳ５の処理が実行される。一方、ステップＳ４の判定結果が否定である場合、ステップＳ５〜Ｓ８の一連の処理がスキップされて、後述するステップＳ９の処理が実行される。
【０１９９】
ステップＳ５において、プロセッサ８１は、ドラッグ操作中であることを示す操作中フラグをオンに設定する。詳細は後述するが、操作中フラグがオンに設定されている間、入力座標に基づいてオブジェクトが移動する。ステップＳ５の次に、ステップＳ６の処理が実行される。
【０２００】
ステップＳ６において、プロセッサ８１（換言すれば、オブジェクト移動手段１５３）は、開始座標が、表示領域に設定されるいずれかの端部領域内の位置であるか否かを判定する。すなわち、プロセッサ８１は、メモリに記憶されているドラッグ操作情報に含まれる、開始座標を示す入力座標情報に基づいて、ステップＳ６の判定処理を実行する。ステップＳ６の判定結果が肯定である場合、ステップＳ７の処理が実行される。一方、ステップＳ６の判定結果が否定である場合、ステップＳ７の処理がスキップされて、ステップＳ８の処理が実行される。
【０２０１】
ステップＳ７において、プロセッサ８１は、第２修正処理の実行中であることを示す第２修正フラグをオンにする。詳細は後述するが、第２修正フラグがオンに設定されている間、第２修正処理が実行される。ステップＳ７の次に、ステップＳ８の処理が実行される。
【０２０２】
ステップＳ８において、プロセッサ８１は、上述の開始修正率を算出する。開始修正率は、上記“［２−２−６．第３修正処理］”で述べた方法に従って算出される。プロセッサ８１は、ドラッグ操作が継続している間、ステップＳ８で算出した開始修正率をメモリに記憶しておき、当該開始修正率を用いて第３修正処理（ステップＳ３０）を実行する。ステップＳ８の次に、ステップＳ９の処理が実行される。
【０２０３】
ステップＳ９において、プロセッサ８１は、ドラッグ操作中であるか否かを判定する。ステップＳ９の判定は、操作中フラグがオンであるか否かによって行われる。ステップＳ９の判定結果が肯定である場合、ステップＳ１０の処理が実行される。なお、このとき、プロセッサ８１は、ドラッグ操作情報に含まれる現在座標を示す入力座標情報として、今回の処理ループにおけるステップＳ３で取得された入力座標を示す入力座標情報をメモリに記憶する。一方、ステップＳ９の判定結果が否定である場合、ステップＳ１０およびＳ１１の一連の処理がスキップされて、後述するステップＳ１２の処理が実行される。
【０２０４】
ステップＳ１０において、プロセッサ８１は、補正ベクトル算出処理を実行する。以下、図２１を参照して、補正ベクトル算出処理の詳細について説明する。
【０２０５】
図２１は、図２０に示すステップＳ１０の補正ベクトル算出処理の詳細な流れの一例を示すサブフローチャートである。補正ベクトル算出処理においては、まずステップＳ２１において、プロセッサ８１は、今回の処理ループにおいて入力座標が取得されたか否かを判定する。すなわち、プロセッサ８１は、今回の処理ループにおける上記ステップＳ３において、入力座標を示す入力情報が取得されたか、それとも、タッチ入力がないことを示す入力情報が取得されたかを判定する。なお、ステップＳ２１の処理において、タッチ入力がないことを示す入力情報が取得される場合とは、ドラッグ操作の途中で入力座標が取得されなくなった場合である。ステップＳ２１の判定結果が肯定である場合、ステップＳ２２の処理が実行される。一方、ステップＳ２１の判定結果が否定である場合、ステップＳ２２〜Ｓ３１の一連の処理がスキップされて、プロセッサ８１は補正ベクトル算出処理を終了する。
【０２０６】
ステップＳ２２において、プロセッサ８１（換言すれば、変化量算出手段１５２）は、上述の座標変化量を算出する。上述したように、本実施形態においては、プロセッサ８１は、座標変化量として上記ドラッグ距離を算出する。ドラッグ距離は、メモリに記憶されているドラッグ操作情報が示す開始座標および現在座標に基づいて算出される。ステップＳ２２の次に、ステップＳ２３の処理が実行される。
【０２０７】
ステップＳ２３において、プロセッサ８１（換言すれば、オブジェクト移動手段１５３）は、上述の補正基礎値を算出する。補正基礎値は、上記ステップＳ２２で算出されたドラッグ距離に基づいて、上記“［２−２−２．補正量の算出］”で述べた方法に従って算出される。なお、プロセッサ８１は、ドラッグ操作中において算出される補正基礎値をメモリに記憶しておく。ステップＳ２３の次に、ステップＳ２４の処理が実行される。
【０２０８】
ステップＳ２４において、プロセッサ８１（換言すれば、オブジェクト移動手段１５３）は、補正ベクトルを算出する。ステップＳ２４では、プロセッサ８１は、上記第１〜第３修正処理による修正前の補正ベクトルを算出する。すなわち、プロセッサ８１は、上記“［２−２−２．補正量の算出］”の欄で述べた方法に従って、補正基礎値に基づいて補正量を算出する。また、プロセッサ８１は、算出された補正量の大きさを有し、上記ステップＳ２で設定された補正方向を向く補正ベクトルを算出する。このとき、プロセッサ８１は、算出された補正ベクトルを示す補正ベクトル情報をメモリに記憶する。ステップＳ２４の次に、ステップＳ２５の処理が実行される。
【０２０９】
ステップＳ２５において、プロセッサ８１は、第２修正フラグがオンに設定されているか否かを判定する。ステップＳ２５の判定処理は、第２修正処理を実行する条件が満たされているか否か、すなわち、端部領域内から開始されたドラッグ操作の入力座標が当該端部領域内を維持しているか否かを判定するための処理である。ステップＳ２５の判定結果が否定である場合、ステップＳ２６の処理が実行される。一方、ステップＳ２５の判定結果が肯定である場合、後述するステップＳ２８の処理が実行される。
【０２１０】
ステップＳ２６において、プロセッサ８１は、現在座標が、表示領域に設定されるいずれかの端部領域内の位置であるか否かを判定する。すなわち、プロセッサ８１は、メモリに記憶されているドラッグ操作情報に含まれる、現在座標を示す入力座標情報に基づいて、ステップＳ２６の判定処理を実行する。ステップＳ２６の判定結果が肯定である場合、ステップＳ２７の処理が実行される。一方、ステップＳ２６の判定結果が否定である場合、ステップＳ２７の処理がスキップされて、後述するステップＳ３１の処理が実行される。
【０２１１】
ステップＳ２７において、プロセッサ８１（換言すれば、オブジェクト移動手段１５３）は、第１修正処理を実行する。すなわち、プロセッサ８１は、メモリに記憶されているドラッグ操作情報に含まれる、現在座標を示す入力座標情報に基づいて、上記“［２−２−４．第１修正処理］”で述べた方法に従って端修正率を算出する。そして、プロセッサ８１は、算出された端修正率を用いて、上記ステップＳ２４で算出された補正ベクトルを修正する。このとき、プロセッサ８１は、修正後の補正ベクトルを示す補正ベクトル情報をメモリに記憶する。ステップＳ２７の次に、ステップＳ３１の処理が実行される。
【０２１２】
一方、ステップＳ２８において、プロセッサ８１は、現在座標が、開始座標が含まれていた端部領域内であるか否かを判定する。すなわち、プロセッサ８１は、メモリに記憶されているドラッグ操作情報に含まれる、現在座標を示す入力座標情報に基づいて、ステップＳ２８の判定処理を実行する。ステップＳ２８の判定結果が肯定である場合、ステップＳ２９の処理が実行される。一方、ステップＳ２８の判定結果が否定である場合、ステップＳ３０の処理が実行される。
【０２１３】
ステップＳ２９において、プロセッサ８１（換言すれば、オブジェクト移動手段１５３）は、第２修正処理を実行する。すなわち、プロセッサ８１は、上記ステップＳ２４で算出された補正ベクトルを、上記“［２−２−５．第２修正処理］”で述べた方法に従って修正する。このとき、プロセッサ８１は、修正後の補正ベクトルを示す補正ベクトル情報をメモリに記憶する。ステップＳ２７の次に、ステップＳ３１の処理が実行される。
【０２１４】
一方、ステップＳ３０において、プロセッサ８１は、第２修正フラグをオフにする。したがって、１回のドラッグ操作中において、ステップＳ３０の処理が実行された後においては、第２修正処理が実行されない。ステップＳ３０の次に、ステップＳ３１の処理が実行される。
【０２１５】
ステップＳ３１において、プロセッサ８１（換言すれば、オブジェクト移動手段１５３）は、第３修正処理を実行する。すなわち、プロセッサ８１は、上記ステップＳ８で算出された開始修正率を用いて、上記“［２−２−６．第３修正処理］”で述べた方法に従って、補正ベクトルを修正する。ここで、ステップＳ３１において修正の対象となる補正ベクトルは、上記ステップＳ２４で算出された補正ベクトル、または、当該補正ベクトルに対して第１修正処理（ステップＳ２７）若しくは第２修正処理（ステップＳ２９）による修正が行われた補正ベクトルである。なお、プロセッサ８１は、修正後の補正ベクトルを示す補正ベクトル情報をメモリに記憶する。ステップＳ３１の処理が終了すると、プロセッサ８１は補正ベクトル算出処理を終了する。ステップＳ１０の補正ベクトル算出処理が終了すると、ステップＳ１１の処理が実行される。
【０２１６】
図２０に示すステップＳ１１において、プロセッサ８１（換言すれば、オブジェクト移動手段１５３）は、オブジェクト座標を算出する。すなわち、プロセッサ８１は、メモリに記憶されているドラッグ操作情報に含まれる、現在座標を示す入力座標情報と、ステップＳ１０で算出された補正ベクトルとに基づいて、オブジェクト座標を算出する（“［２−２−１．移動処理の概要］”参照）。このとき、プロセッサ８１は、算出されたオブジェクト座標を含むオブジェクト情報をメモリに記憶する。ステップＳ１１の次に、ステップＳ１２の処理が実行される。
【０２１７】
ステップＳ１２において、プロセッサ８１は、今回の処理ループにおいて入力座標が取得されたか否かを判定する。ステップＳ１２の判定処理は、上記ステップＳ２１の判定処理と同様である。ステップＳ１２の判定結果が否定である場合、ステップＳ１３の処理が実行される。なお、このとき、プロセッサ８１は、入力座標が取得されなくなってからの経過時間をカウントする。一方、ステップＳ１２の判定結果が肯定である場合、ステップＳ１３〜Ｓ１５の一連の処理がスキップされて、後述するステップＳ１６の処理が実行される。
【０２１８】
ステップＳ１３において、プロセッサ８１は、入力座標が取得されなくなってからの経過時間が、予め定められた継続判定時間を超えたか否かを判定する。なお、継続判定時間は、上記情報処理プログラムにおいて予め定められている。ステップＳ１３の判定結果が肯定である場合、ステップＳ１４の処理が実行される。一方、ステップＳ１３の判定結果が否定である場合、ステップＳ１４およびＳ１５の一連の処理がスキップされて、後述するステップＳ１６の処理が実行される。
【０２１９】
ステップＳ１４において、プロセッサ８１は、上記操作中フラグをオフに設定する。これによって、ドラッグ操作が終了したと判断されたこととなる。なお、ドラッグ操作中において入力座標が取得されなくなった場合でもステップＳ１４の処理によって操作中フラグがオフに設定されていない期間は、ドラッグ操作が継続していると判断される。したがって、この期間において入力座標が再度取得された場合には、上記ステップＳ９の判定結果は肯定となり、上記ステップＳ１０およびＳ１１の処理によってオブジェクト座標が算出される結果、ドラッグ操作に応じてオブジェクトが移動される。ステップＳ１４の次に、ステップＳ１５の処理が実行される。
【０２２０】
ステップＳ１５において、プロセッサ８１は、第２修正フラグをオフに設定する。ステップＳ１５の次に、ステップＳ１６の処理が実行される。
【０２２１】
ステップＳ１６において、プロセッサ８１（換言すれば、オブジェクト移動手段１５３）は、オブジェクトを含む仮想空間の画像を表示する。すなわち、プロセッサ８１は、ステップＳ１１で算出されたオブジェクト座標にオブジェクトが配置される仮想空間を表す画像を生成し、生成された画像をディスプレイ１２に表示する。なお、ステップＳ３〜Ｓ１７の一連の処理ループが繰り返し実行される場合、ステップＳ１６の処理は、所定時間（例えば、１フレーム時間）に１回の割合で実行される。上記処理ループが繰り返し実行される間において、ドラッグ操作の現在座標が移動する場合には、上記ステップＳ１１で算出されるオブジェクト座標が変化するので、オブジェクトが移動するように表示されることとなる。ステップＳ１６の次に、ステップＳ１７の処理が実行される。
【０２２２】
ステップＳ１７において、プロセッサ８１は、オブジェクト移動処理を終了するか否かを判定する。例えば、プロセッサ８１は、オブジェクトが表示される上記仮想空間の画像の表示を終了する指示がユーザにより行われたかを判定する。ステップＳ１７の判定結果が否定である場合、上記ステップＳ３の処理が再度実行される。本実施形態においては、ステップＳ１７の判定処理の結果が肯定となるまで、ステップＳ３〜Ｓ１７の一連の処理が繰り返し実行される。一方、ステップＳ１７の判定結果が肯定である場合、プロセッサ８１は、上記オブジェクト移動処理を終了する。
【０２２３】
［４．上記実施形態の作用効果および変形例］
上記実施形態においては、情報処理プログラムは、表示装置（すなわち、ディスプレイ１２）に表示されるオブジェクト１６１をユーザのドラッグ操作に基づいて移動させるためのプログラムである。情報処理プログラムは、情報処理装置（すなわち、本体装置２）のコンピュータ（すなわち、プロセッサ８１）を、以下の手段として機能させる。
・オブジェクトに対するドラッグ操作の入力座標を取得する入力座標取得手段１５１
・ドラッグ操作が開始されてからの入力座標の座標変化量（具体的には、ドラッグ距離）を算出する変化量算出手段１５２
・ドラッグ操作中の入力座標に基づいてオブジェクトを移動させるオブジェクト移動手段１５３
また、オブジェクト移動手段１５３は、座標変化量が大きい場合（図１１（ｃ））に、当該座標変化量が小さい場合（図１１（ｂ））と比べて、入力座標（具体的には、現在座標）とオブジェクトの座標との距離が大きくなるように、オブジェクトを入力座標から離す補正を行って当該オブジェクトを移動させる。
【０２２４】
なお、上記における「座標変化量が大きい場合は、当該座標変化量が小さい場合と比べて、入力座標とオブジェクトの座標との距離が大きくなるように」という条件は、座標変化量が特定の値となる状態において当該条件が満たされればよく、座標変化量が取り得る範囲の全ての値について当該条件が満たされることを要求する意味ではない。例えば、「オブジェクト移動手段１５３は、座標変化量が第１の値となる場合は、座標変化量が第１の値よりも小さい第２の値となる場合と比べて、入力座標とオブジェクトの座標との距離が大きくなるように、オブジェクトを入力座標から離す補正を行って移動させる」場合、上記条件は満たされていると言うことができる。
【０２２５】
上記より、本実施形態によれば、座標変化量が大きい場合には、オブジェクトと入力座標とが離れるので、ドラッグ操作中におけるオブジェクトを見やすく表示することができる。また、座標変化量が小さい場合には、オブジェクトと入力座標とが比較的近くに配置される（同じ位置であってもよい）ので、オブジェクトを少しだけ移動させるドラッグ操作を行いやすくすることができる。以上によって、ドラッグ操作の操作性を向上することができる。
【０２２６】
なお、ドラッグ操作の操作対象となるオブジェクトは、任意のオブジェクトであってよい。例えば、オブジェクトは、仮想のゲーム空間に配置されるゲームオブジェクト（例えば、プレイヤキャラクタ、アイテム、あるいは、パズルゲームにおけるブロック等）であってもよい。また、オブジェクトは、ゲームオブジェクト以外のオブジェクトであってもよく、例えば、パーソナルコンピュータまたはスマートフォンにおけるメニュー画面またはウィンドウ内に配置されるアイコンであってもよい。このように、本実施形態は、ゲーム用途に限らず、各種のアプリケーションに適用することが可能である。
【０２２７】
また、オブジェクト移動手段１５３は、入力座標とオブジェクトとの距離を座標変化量に応じて変化させる処理を、仮想空間に配置されるオブジェクト（ただし、ドラッグ操作可能なオブジェクト）のうち、所定の種類のオブジェクトに対してのみ実行するようにしてもよい。そして、オブジェクト移動手段１５３は、上記所定の種類のオブジェクト以外のオブジェクトに対しては、入力座標とオブジェクトとの距離を一定として、ドラッグ操作に応じて当該オブジェクトを移動させてもよい。なお、上記所定の種類のオブジェクトとは、例えば、表示上の大きさが所定値以下となるオブジェクトである。ここで、表示上の大きさが比較的小さいオブジェクトについては、ドラッグ操作を行う指によって隠されると、当該オブジェクトがほとんど見えなくなってしまって見にくくなる可能性が高い。一方、表示上の大きさが比較的大きいオブジェクトについては、ドラッグ操作を行う指によって一部が隠されても見にくくなる可能性が低い。したがって、入力座標と当該オブジェクトとの距離を座標変化量に応じて変化させる処理は、表示上の大きさが所定値以下となるオブジェクトに対してのみ実行されてもよい。
【０２２８】
（座標変化量に関する変形例）
上記実施形態においては、ゲームシステム１は、入力座標（具体的には、現在座標）とオブジェクトとの距離を、座標変化量（具体的には、ドラッグ距離）に応じて変化させた。ここで、他の実施形態においては、ゲームシステム１は、座標変化量に代えて、ドラッグ操作が開始されてからの経過時間に応じて入力座標とオブジェクトとの距離を変化させてもよい。すなわち、ゲームシステム１は、上記変化量算出手段に代えて、ドラッグ操作が開始されてからの経過時間を算出する経過時間算出手段を備えていてもよい。このとき、オブジェクト移動手段１５３は、経過時間が長い場合に、当該経過時間が短い場合と比べて、入力座標とオブジェクトの座標との距離が大きくなるように、オブジェクトを入力座標から離す補正を行って当該オブジェクトを移動させる。
【０２２９】
上記変形例によれば、経過時間が長い場合には、オブジェクトと入力座標を離して配置することによって、ドラッグ操作中におけるオブジェクトを見やすく表示することができる。また、経過時間が短い場合（つまり、座標変化量が小さいと推測される場合）には、オブジェクトと入力座標との距離を小さくする（０であってもよい）ことによって、オブジェクトを少しだけ移動させるドラッグ操作を行いやすくすることができる。したがって、上記変形例によっても上記実施形態と同様に、ドラッグ操作の操作性を向上することができる。なお、上記経過時間算出手段は、ドラッグ操作が実質的に行われている期間（具体的には、ドラッグ操作の入力座標が移動している期間）に時間をカウントし、ドラッグ操作が実質的には行われていない期間（具体的には、ドラッグ操作の入力座標が停止している期間）には時間をカウントするようにしてもよい。
【０２３０】
また、他の実施形態においては、入力座標とオブジェクトの座標との距離は、上記座標変化量と、上記経過時間との両方に基づいて設定されてもよい。
【０２３１】
以上より、情報処理プログラムは、上記座標変化量および上記経過時間のように、ドラッグ操作が継続されることによって増加する指標に基づいて、入力座標とオブジェクトとの距離を設定する。これによって、ドラッグ操作の操作性を向上することができる。
【産業上の利用可能性】
【０２３２】
以上のように、本実施形態は、ドラッグ操作の操作性を向上すること等を目的として、例えば情報処理プログラムまたは情報処理システム等に利用することができる。
【符号の説明】
【０２３３】
１  ゲームシステム
２  本体装置
８１  プロセッサ
１５１  入力座標取得手段
１５２  変化量取得手段
１５３  オブジェクト移動手段
１５４  判別手段
１６１  オブジェクト
Ｐ  開始座標
Ｑ  現在座標
Ｄ  ドラッグ距離
Ａ  補正ベクトル
Ｏ  オブジェクト座標
【図１】
2019185383.tif 000003
【図２】
2019185383.tif 000004
【図３】
2019185383.tif 000005
【図４】
2019185383.tif 000006
【図５】
2019185383.tif 000007
【図６】
2019185383.tif 000008
【図７】
2019185383.tif 000009
【図８】
2019185383.tif 000010
【図９】
2019185383.tif 000011
【図１０】
2019185383.tif 000012
【図１１】
2019185383.tif 000013
【図１２】
2019185383.tif 000014
【図１３】
2019185383.tif 000015
【図１４】
2019185383.tif 000016
【図１５】
2019185383.tif 000017
【図１６】
2019185383.tif 000018
【図１７】
2019185383.tif 000019
【図１８】
2019185383.tif 000020
【図１９】
2019185383.tif 000021
【図２０】
2019185383.tif 000022
【図２１】
2019185383.tif 000023