(57)【要約】【課題】  選択ポインタを移動表示して複数の表示オブジェクトからユーザが所望のオブジェクトを選択可能とする場合において、選択ポインタの移動先の設定を容易且つ適切に行う。【解決手段】  ボタンＡ５０１にアンカー５００が位置する状態で下方向キーが入力された場合のアンカー５００の移動先となるボタンを設定する。この場合、ボタンＡ５０１でアンカーの付加される基準位置（Ｘａ，Ｙａ）より下方向にあるボタンＢ５０２、Ｃ５０３が対象として設定され、それぞれ基準位置（Ｘａ，Ｙａ）から最短距離にある点が求められる。ボタンＢ５０２、Ｃ５０３について位置関係のスコアを、それぞれ、３（Ｘｂ−Ｘａ）＾２＋（Ｙｂ−Ｙａ）＾２、３（Ｘｃ−Ｘａ）＾２＋（Ｙｃ−Ｙａ）＾２、と算出する。スコアの低いボタンＣが、ボタンＡ５０１にアンカー５００が位置する状態で下方向キーが入力された場合のアンカー５００の移動先として設定される。【選択図】    図５
2006331034.tif 000002
【特許請求の範囲】
【請求項１】
直行するｘｙ座標系の座標（ｘ，ｙ）によって位置が規定される２次元の表示空間において表示装置に表示され、該表示空間を移動する選択ポインタの表示により何れかがユーザから選択される複数の表示オブジェクトについて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向に応じた方向情報を入力可能な入力装置から何れかの方向情報が入力された場合に選択ポインタを移動すべき表示オブジェクトを示す移動先情報を設定する移動先情報設定装置であって、
前記複数の表示オブジェクトのそれぞれについて、前記表示空間における座標を示す位置情報を予め記憶した位置情報記憶手段と、
前記複数の表示オブジェクトのそれぞれについて、前記選択ポインタが位置する状態で前記入力装置から方向情報が入力された際の選択ポインタの移動先を示す移動先情報を、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に記憶する移動先情報記憶手段と、
前記複数の表示オブジェクトのそれぞれについて、前記位置情報記憶手段に記憶された位置情報に従って、他の表示オブジェクトに対する位置関係のスコアの算出対象となっている表示オブジェクトと他の表示オブジェクトのｘ座標、ｙ座標の差分をそれぞれｄｘ，ｄｙとするときに、ｄｘに応じた演算に係数αを乗じた値とｄｙに応じた演算に係数βを乗じた値とを加算して、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に位置関係のスコアを算出する位置スコア算出手段と、
前記複数の表示オブジェクトのそれぞれについて、前記位置スコア算出手段が前記算出した位置関係のスコアに応じて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に、算出された位置関係のスコアが最も小さくなる他の表示オブジェクトを移動先とする移動先情報を設定して、前記移動先情報記憶手段に記憶させる移動先情報設定手段とを備え、
αとβの大小関係は、ｘ正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するときと、ｙ正方向またはｙ負方向を算出対象となる方向として位置スコアを算出するときとで反対になる
ことを特徴とする移動先情報設定装置。
【請求項２】
前記位置スコア算出手段は、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に数式１の演算により前記位置関係のスコアを算出する
（数１）
α×ｄｘ×ｄｘ＋β×ｄｙ×ｄｙ
但し、α、βは、０より大きい定数であって、ｘ正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するときは、α＞βであり、ｙ正方向またはｙ負方向を算出対象となる方向として位置スコアを算出するときは、α＜βである
ことを特徴とする請求項１に記載の移動先情報設定装置。
【請求項３】
前記複数の表示オブジェクトのそれぞれについて、前記位置情報記憶手段に記憶された位置情報とともに前記表示空間において占める形状を特定可能な形状情報を予め記憶した形状情報記憶手段をさらに備え、
前記位置スコア算出手段は、前記複数の表示オブジェクトのそれぞれについて、前記位置情報記憶手段に記憶された位置情報と前記形状情報記憶手段に記憶された形状情報に応じて特定される表示オブジェクト間の最短距離に従って、当該表示オブジェクトと他の全ての表示オブジェクトとの位置関係のスコアをｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に算出する
ことを特徴とする請求項１または２に記載の移動先情報設定装置。
【請求項４】
前記位置スコア算出手段は、前記複数の表示オブジェクトのそれぞれについて、当該表示オブジェクトに選択ポインタが位置する際における当該選択ポインタの座標と、他の表示オブジェクトについて前記位置情報記憶手段に記憶された位置情報とに従って、当該表示オブジェクトと他の全ての表示オブジェクトとの位置関係のスコアをｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に算出する
ことを特徴とする請求項１または２に記載の移動先情報設定装置。
【請求項５】
前記複数の表示オブジェクトのそれぞれについて、前記位置情報記憶手段に記憶された位置情報とともに前記表示空間において占める形状を特定可能な形状情報を予め記憶した形状情報記憶手段をさらに備え、
前記位置スコア算出手段は、前記複数の表示オブジェクトのそれぞれについて、当該表示オブジェクトに選択ポインタが位置する際における当該選択ポインタの座標、並びに他の表示オブジェクトの位置情報及び形状情報に応じて特定される選択ポインタと表示オブジェクトとの間の最短距離に従って、当該表示オブジェクトと他の全ての表示オブジェクトとの位置関係のスコアをｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に算出する
ことを特徴とする請求項４に記載の移動先情報設定装置。
【請求項６】
前記位置情報記憶手段に記憶された前記複数の表示オブジェクトの位置情報を変更する位置情報変更手段をさらに備え、
前記位置スコア算出手段は、前記位置情報変更手段により少なくとも１の表示オブジェクトの位置情報が変更されたときに、該変更された位置情報に応じて前記複数の表示オブジェクトのそれぞれについて、当該表示オブジェクトと他の全ての表示オブジェクトとの位置関係のスコアを前記表示空間のｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に算出する
ことを特徴とする請求項１乃至５のいずれか１項に記載の移動先情報設定装置。
【請求項７】
前記位置スコア算出手段により位置スコアが算出されるよりも前に、前記複数の表示オブジェクトのそれぞれについて、前記入力装置から方向情報が入力された際の選択ポインタの移動先を示す移動先情報をｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に外部から入力して、前記移動先情報記憶手段に予め記憶させる外部情報入力手段をさらに備え、
前記位置スコア算出手段は、前記外部情報入力手段により前記移動先情報記憶手段に移動先情報の記憶されていない表示オブジェクト及び方向について、他の表示オブジェクトとの位置関係のスコアを算出する
ことを特徴とする請求項１乃至６に記載の移動先情報設定装置。
【請求項８】
前記移動先情報設定手段により設定された各表示オブジェクトの方向毎の移動先情報が前記移動先情報記憶手段に記憶された後に、前記入力装置から方向情報が入力された際の選択ポインタの移動先を示す移動先情報をｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に外部から入力して、前記移動先情報記憶手段に記憶されている移動先情報を該入力された移動先情報に更新する移動先情報更新手段をさらに備える
ことを特徴とする請求項１乃至７に記載の移動先情報設定装置。
【請求項９】
前記複数の表示オブジェクトのそれぞれについて、前記移動先情報の示す選択ポインタの移動先となっているかどうかを示す情報を記憶する被移動先情報記憶手段と、
前記移動先情報記憶手段に全ての表示オブジェクト、全ての方向についての移動先情報が記憶されたときに、前記被移動先情報記憶手段に選択ポインタの移動先となっていない情報が記憶されているかどうかを判定する移動不可表示オブジェクト判定手段と、
前記移動不可表示オブジェクト判定手段により前記被移動先情報記憶手段に選択ポインタの移動先となっていない情報が記憶されていると判定された場合に、当該移動先となっていない表示オブジェクト以外の他の何れかの表示オブジェクトからの選択ポイントの移動先として当該移動先となっていない表示オブジェクトを設定させるための処理を実行する移動先情報変更処理手段とをさらに備える
ことを特徴とする請求項１乃至８に記載の移動先情報設定装置。
【請求項１０】
前記被移動先情報記憶手段は、前記複数の表示オブジェクトのそれぞれについて、前記移動先情報の示す選択ポインタの移動先となっている数を記憶し、
前記移動先情報変更処理手段は、前記移動不可表示オブジェクト判定手段により前記被移動先情報記憶手段に選択ポインタの移動先となっていない情報が記憶されていると判定されたときに、前記被移動先情報記憶手段に記憶されている移動先となっている数が２以上である表示オブジェクトが選択ポインタの移動先となる表示オブジェクトの移動先情報を、前記移動先情報記憶手段に記憶された移動先情報のうちから変更可能な移動先情報として抽出する変更可能情報抽出手段を備える
ことを特徴とする請求項９に記載の移動先情報設定装置。
【請求項１１】
前記移動先情報変更処理手段は、
前記移動不可表示オブジェクト判定手段により前記被移動先情報記憶手段に選択ポインタの移動先となっていない情報が記憶されていると判定された場合に、当該選択ポインタの移動先となっていない情報の記憶されている表示オブジェクトについて、当該表示オブジェクトと他の全ての表示オブジェクトとの位置関係のスコアを前記位置情報記憶手段に記憶された位置情報に従ってｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に算出する第２の位置スコア算出手段と、
前記第２の位置スコア算出手段により算出された位置関係のスコアに応じて、前記変更可能情報抽出手段の抽出した移動先情報の何れかを前記被移動先情報記憶手段に選択ポインタの移動先となっていない情報が記憶されていると判定された表示オブジェクトを選択ポインタの移動先とする移動先情報に変更して、前記移動先情報記憶手段に記憶させる移動先情報変更手段とを備える
ことを特徴とする請求項１０に記載の移動先情報設定装置。
【請求項１２】
前記位置情報記憶手段に記憶された位置情報に従って、前記複数の表示オブジェクトをそれぞれ前記表示装置に表示させる表示オブジェクト表示手段をさらに備え、
前記位置スコア算出手段は、前記表示オブジェクト表示手段により前記複数のオブジェクトが前記表示装置に表示されるときに、前記複数の表示オブジェクトのそれぞれについて他の全ての表示オブジェクトとの位置関係のスコアをｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に算出する
ことを特徴とする請求項１乃至１１に記載の移動先情報設定装置。
【請求項１３】
前記位置情報記憶手段に位置情報の記憶された複数の表示オブジェクトから、前記選択ポインタを移動させてユーザによる選択を可能とする表示オブジェクトを設定する選択可能オブジェクト設定手段をさらに備え、
前記表示オブジェクト表示手段は、前記選択可能オブジェクト設定手段によりユーザによる選択を可能に設定されているか否かを識別可能に前記複数の表示オブジェクトを表示させ、
前記位置スコア算出手段は、前記選択可能オブジェクト設定手段によりユーザによる選択を可能に設定されている表示オブジェクトについて、他のユーザによる選択を可能に設定されている表示オブジェクトとの位置関係のスコアを算出する
ことを特徴とする請求項１２に記載の移動先情報設定装置。
【請求項１４】
前記位置情報記憶手段に記憶された前記複数の表示オブジェクトの位置情報を変更する位置情報変更手段をさらに備え、
前記表示オブジェクト表示手段は、前記位置情報変更手段により少なくとも１の表示オブジェクトの位置情報が変更されたときに、該変更された位置情報に応じて前記複数の表示オブジェクトを前記表示装置に新たに表示させる
ことを特徴とする請求項１２または１３に記載の移動先情報設定装置。
【請求項１５】
直行するｘｙ座標系の座標（ｘ，ｙ）によって位置が規定される２次元の表示空間において表示装置に表示され、該表示空間を移動する選択ポインタの表示により何れかがユーザから選択される複数の表示オブジェクトについて、前記表示空間における座標を示す位置情報を予め記憶した記憶装置を備えるコンピュータ装置において実行され、前記表示装置に表示された複数の表示オブジェクトのそれぞれに対してｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向に応じた方向情報を入力可能な入力装置から何れかの方向情報が入力された場合に選択ポインタを移動すべき表示オブジェクトを示す移動先情報を設定する移動先情報設定方法であって、
前記複数の表示オブジェクトのそれぞれについて、前記記憶装置に記憶された位置情報に従って、他の表示オブジェクトに対する位置関係のスコアの算出対象となっている表示オブジェクトと他の表示オブジェクトのｘ座標、ｙ座標の差分をそれぞれｄｘ，ｄｙとするときに、ｄｘに応じた演算に係数αを乗じた値とｄｙに応じた演算に係数βを乗じた値とを加算して、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に位置関係のスコアを算出するステップと、
前記複数の表示オブジェクトのそれぞれについて、前記算出した位置関係のスコアに応じて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に、算出された位置関係のスコアが最も小さくなる他の表示オブジェクトを移動先とする移動先情報を選定するステップと、
前記複数の表示オブジェクトのそれぞれについて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に選定された移動先情報を前記記憶装置に記憶させるステップとを含み、
αとβの大小関係は、ｘ正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するときと、ｙ正方向またはｙ負方向を算出対象となる方向として位置スコアを算出するときとで反対になる
ことを特徴とする移動先情報設定方法。
【請求項１６】
直行するｘｙ座標系の座標（ｘ，ｙ）によって位置が規定される２次元の表示空間において表示装置に表示され、該表示空間を移動する選択ポインタの表示により何れかがユーザから選択される複数の表示オブジェクトについて、前記表示空間における座標を示す位置情報を予め記憶した記憶装置を備えるコンピュータ装置の処理装置により実行され、前記表示装置に表示された複数の表示オブジェクトのそれぞれに対してｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向に応じた方向情報を入力可能な入力装置から何れかの方向情報が入力された場合に選択ポインタを移動すべき表示オブジェクトを示す移動先情報を設定するためのプログラムであって、
前記複数の表示オブジェクトのそれぞれについて、前記記憶装置に記憶された位置情報に従って、他の表示オブジェクトに対する位置関係のスコアの算出対象となっている表示オブジェクトと他の表示オブジェクトのｘ座標、ｙ座標の差分をそれぞれｄｘ，ｄｙとするときに、ｄｘに応じた演算に係数αを乗じた値とｄｙに応じた演算に係数βを乗じた値とを加算して、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に位置関係のスコアを算出するステップと、
前記複数の表示オブジェクトのそれぞれについて、前記算出した位置関係のスコアに応じて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に、算出された位置関係のスコアが最も小さくなる他の表示オブジェクトを移動先とする移動先情報を選定するステップと、
前記複数の表示オブジェクトのそれぞれについて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に選定された移動先情報を前記記憶装置に記憶させるステップとを含み、
αとβの大小関係は、ｘ正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するときと、ｙ正方向またはｙ負方向を算出対象となる方向として位置スコアを算出するときとで反対になる
ことを特徴とするプログラム。
【請求項１７】
直行するｘｙ座標系の座標（ｘ，ｙ）によって位置が規定される２次元の表示空間において表示装置に表示され、該表示空間を移動する選択ポインタの表示により何れかがユーザから選択される複数の表示オブジェクトについて、前記表示空間における座標を示す位置情報を予め記憶した記憶装置を備えるコンピュータ装置の処理装置により実行され、前記表示装置に表示された複数の表示オブジェクトのそれぞれに対してｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向に応じた方向情報を入力可能な入力装置から何れかの方向情報が入力された場合に選択ポインタを移動すべき表示オブジェクトを示す移動先情報を設定するためのプログラムを記録した記録媒体であって、
前記プログラムは、
前記複数の表示オブジェクトのそれぞれについて、前記記憶装置に記憶された位置情報に従って、他の表示オブジェクトに対する位置関係のスコアの算出対象となっている表示オブジェクトと他の表示オブジェクトのｘ座標、ｙ座標の差分をそれぞれｄｘ，ｄｙとするときに、ｄｘに応じた演算に係数αを乗じた値とｄｙに応じた演算に係数βを乗じた値とを加算して、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に位置関係のスコアを算出するステップと、
前記複数の表示オブジェクトのそれぞれについて、前記算出した位置関係のスコアに応じて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に、算出された位置関係のスコアが最も小さくなる他の表示オブジェクトを移動先とする移動先情報を選定するステップと、
前記複数の表示オブジェクトのそれぞれについて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に選定された移動先情報を前記記憶装置に記憶させるステップとを含み、
αとβの大小関係は、ｘ正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するときと、ｙ正方向またはｙ負方向を算出対象となる方向として位置スコアを算出するときとで反対になる
ことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、選択ポインタを移動表示して複数の表示オブジェクトからユーザが所望のオブジェクトを選択可能とする場合における選択ポインタの移動先の設定に関するものである。
【背景技術】
【０００２】
情報処理装置を内蔵したデジタル家電では、ユーザが所望の処理を選択するためのメニュー画面が用いられる。このようなメニュー画面は、各々の処理に対応付けられた複数のオブジェクトからユーザが何れかのオブジェクトを選択することで、所望の処理が行われるようにするものである。ゲーム装置でも、特にロールプレイングゲームなどではユーザがゲームを行おうとする街を選択するワールドマップが用いられる。ワールドマップの街は、ユーザにより選択されるオブジェクトということになるので、一種のメニュー画面ということができる。
【０００３】
メニュー画面に含まれる複数のオブジェクトからユーザが所望のオブジェクトを選択するための方法として、マウスやタッチパネルなどにより表示装置上において所望のオブジェクトに対応した座標位置を入力する方法がある。もっとも、マウスやタッチパネルなどの座標位置を直接入力できる入力装置を適用できない装置もあり、また、オブジェクトとは関係ない位置の座標も入力できる入力装置は、必ずしも便利なものとは言えないという面もある。
【０００４】
これに対して、メニュー画面に表示された複数のオブジェクトに選択ポインタ（カーソル）を付していき、入力装置から確定入力を行うことで選択ポインタの付されたオブジェクトを選択するものとした方法もある。この場合、選択ポインタは、例えば、入力装置が備える上下左右の方向キーの操作によって、複数のオブジェクト間で移動させるものとすることができる。この場合、入力された方向データに対してどのように選択ポインタを移動していくかが問題となる。
【０００５】
特許文献１では、現時点で選択ポインタ（カーソル）の表示されているオブジェクト（機能ボタン）に対して、入力装置（ジョイスティック１６）から入力された方向データに対応する上下左右の方向に他のオブジェクトがあれば、選択ポインタの位置を移動するものとしている。特許文献２では、現時点での選択ポインタ（カーソル）の位置に対して、入力装置から入力された方向データに対して所定の角度の範囲内にあるオブジェクト（リンク場所）から選択されるオブジェクトに、選択ポインタを移動するものとしている。
【０００６】
特許文献１及び２では、入力装置から方向データの入力があったときに選択ポインタの移動先を求めるのに対して、特許文献３では、オブジェクト毎に選択ポインタ（カーソル）の移動先となる位置データ（オブジェクト番号）を予め記憶しておき、現時点で選択ポインタの位置するオブジェクトについて記憶された位置データに従って選択ポインタの位置を移動するものとしている。
【０００７】
【特許文献１】特開平６−１３１１１９号公報
【特許文献２】特開平１０−３０１７１７号公報
【特許文献３】特開平９−８１３２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特許文献１では、表示画面における複数のボタンは、上下左右に規則的に配置されていることを前提としている（図４参照）。このため、現時点で選択ポインタの表示されているオブジェクトに対して、入力装置から入力された方向データに対応する上下左右の方向に他のオブジェクトがあるかどうかを容易に判定できる。
【０００９】
しかしながら、例えば、ゲームにおいてプレイヤがゲームを行う街を選択するワールドマップのように、ユーザにとって視覚的に分かりやすいオブジェクトの配置は、必ずしも特許文献１のように上下左右に規則的な配置であるとは限らない。すると、表示画面上の任意の位置に上下左右に不規則な関係で配置されたオブジェクトについて、入力装置からの方向の入力に対して選択ポインタを表示すべきオブジェクトをどのように選択するかが問題となる。
【００１０】
これに対して、特許文献２では、現時点での選択ポインタの位置に対して、入力装置から入力された方向データに対して所定の角度の範囲内にあるオブジェクトを選ぶため、上下左右に不規則な位置関係でオブジェクトが配置されている場合にも適用することができる。
【００１１】
しかしながら、当該角度で最短距離にあるオブジェクトを選ぶだけであるので、入力された方向に完全に合致するオブジェクトがあっても角度的にかなり外れたオブジェクトの方に選択ポインタが移動してしまうこともある。さらに同じ方向の入力を複数行った場合、最初に選択ポインタが表示されていた位置を基準とすると、完全に方向の外れたオブジェクトに選択ポインタの位置が移動してしまう場合もある。このように特許文献２では、ユーザの意図するように選択ポインタが移動されない場合も多かった。
【００１２】
また、上下左右に不規則な位置関係で複数のオブジェクトを配置した場合には、その配置された位置関係によっては、入力装置からどのような順序で方向データの入力を行っても、全く選択ポインタが移動してくることがないオブジェクトも発生し得る。しかしながら、特許文献２では、このような場合の対策を全く考えていなかった。特許文献１のように上下左右に規則的な位置関係で複数のオブジェクトを配置した場合には、全く選択ポインタが移動してくることのないオブジェクトは発生し得ないので、このような場合の対策は、そもそも考えられていなかった。
【００１３】
一方、特許文献３では、予め記憶された移動先の位置データに従って選択ポインタの位置を移動するものとしているため、上下左右に不規則な位置関係で複数のオブジェクトを配置したものにも適用することができる。また、特許文献３では、オブジェクト毎に予め記憶させておく位置データを適切に選んでおけば、特許文献２のような問題が発生することを回避することができる。
【００１４】
もっとも、特許文献３では、予め記憶しておく位置データをどのように設定するかを考慮していない。全てを手動で設定するものとすれば、非常に煩わしい作業が必要となる。仮に特許文献２の技術を組み合わせれば、ある程度までは煩わしい作業から解放される。しかし、上記した特許文献２の問題が生じた場合には、これを回避するための位置データの設定に対して非常に煩わしい作業が必要となってしまう。
【００１５】
本発明は、選択ポインタを移動表示して複数の表示オブジェクトからユーザが所望のオブジェクトを選択可能とする場合において、選択ポインタの移動先の設定を容易且つ適切に行えるようにした移動先情報設定装置及び方法、並びにそのためのプログラム等を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するため、本発明の第１の観点にかかる移動先情報設定装置は、直行するｘｙ座標系の座標（ｘ，ｙ）によって位置が規定される２次元の表示空間において表示装置に表示され、該表示空間を移動する選択ポインタの表示により何れかがユーザから選択される複数の表示オブジェクトについて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向に応じた方向情報を入力可能な入力装置から何れかの方向情報が入力された場合に選択ポインタを移動すべき表示オブジェクトを示す移動先情報を設定する移動先情報設定装置であって、前記複数の表示オブジェクトのそれぞれについて、前記表示空間における座標を示す位置情報を予め記憶した位置情報記憶手段と、前記複数の表示オブジェクトのそれぞれについて、前記選択ポインタが位置する状態で前記入力装置から方向情報が入力された際の選択ポインタの移動先を示す移動先情報を、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に記憶する移動先情報記憶手段と、前記複数の表示オブジェクトのそれぞれについて、前記位置情報記憶手段に記憶された位置情報に従って、他の表示オブジェクトに対する位置関係のスコアの算出対象となっている表示オブジェクトと他の表示オブジェクトのｘ座標、ｙ座標の差分をそれぞれｄｘ，ｄｙとするときに、ｄｘに応じた演算に係数αを乗じた値とｄｙに応じた演算に係数βを乗じた値とを加算して、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に位置関係のスコアを算出する位置スコア算出手段と、前記複数の表示オブジェクトのそれぞれについて、前記位置スコア算出手段が前記算出した位置関係のスコアに応じて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に、算出された位置関係のスコアが最も小さくなる他の表示オブジェクトを移動先とする移動先情報を設定して、前記移動先情報記憶手段に記憶させる移動先情報設定手段とを備え、αとβの大小関係は、ｘ正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するときと、ｙ正方向またはｙ負方向を算出対象となる方向として位置スコアを算出するときとで反対になることを特徴とする。
【００１７】
なお、前記位置情報記憶手段に記憶される位置情報により示される各表示オブジェクトの多次元座標は、当該表示オブジェクトについて予め定められた特定の位置（例えば、重心位置、左上の位置など）の座標とすることができる。
【００１８】
上記の移動先情報設定装置では、入力装置から方向情報が入力されたときにおける選択ポインタの移動先となる表示オブジェクトを示す移動先情報が、移動先情報設定手段により設定されて移動先情報記憶手段に記憶されるものとなる。つまり、何れかの表示オブジェクトに選択ポインタが位置する状態で方向情報が入力されると、当該表示オブジェクトの当該方向情報が示す方向について移動先情報記憶手段に記憶された移動先情報に従って、選択ポインタの位置が移動されるものとなる。このため、ｘ方向及びｙ方向に規則的に配置されていない複数の表示オブジェクト間での選択ポインタを移動させることができる。
【００１９】
ここで、移動先情報記憶手段に記憶される移動先情報は、手作業で設定しなくても、位置スコア算出手段により算出された位置関係のスコアに応じて移動先情報設定手段が設定することができる。位置スコア算出手段は、位置関係のスコアの算出対象となっている表示オブジェクトと他の表示オブジェクトのｘ座標、ｙ座標の差分をｄｘ，ｄｙに応じた演算で位置関係のスコアを算出するものとなっているが、正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するか、ｘ正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するかに応じて、ｘ座標の差分ｄｘとｙ座標の差分ｄｙとに重み付がされることとなる。
【００２０】
また、位置関係のスコアにおいてｘ座標の差分ｄｘとｙ座標の差分ｄｙとに重み付がされていることで、ある程度は遠くてもなるべく入力された方向情報に近い方向にある表示オブジェクトに選択ポインタが移動されるが、方向が近くても遠すぎる表示オブジェクトには選択ポインタが移動されないというように、可能な限りユーザの意図するように選択ポインタの移動先となる移動先情報を設定することができる。しかも、移動先情報の設定を手動で行う必要がないため、煩わしい作業が必要ない。
【００２１】
上記移動先情報設定装置において、前記位置スコア算出手段は、例えば、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に数式１の演算により前記位置関係のスコアを算出することができる。
（数１）
α×ｄｘ×ｄｘ＋β×ｄｙ×ｄｙ
但し、α、βは、０より大きい定数であって、ｘ正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するときは、α＞βであり、ｙ正方向またはｙ負方向を算出対象となる方向として位置スコアを算出するときは、α＜βである。
【００２２】
ここで、例えば、ｘ正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するときは、α：β＝３：１とすることができ、ｙ正方向またはｙ負方向を算出対象となる方向として位置スコアを算出するときは、α：β＝１：３とすることができる。ｄｘ×ｄｘ＋ｄｙ×ｄｙは、表示オブジェクト間の距離の２乗を求める式であるが、この式におけるｘ成分とｙ成分について重み付けを行うだけのものとすることで、適切な位置関係のスコアを簡単な演算で算出することができる。
【００２３】
上記移動先情報設定装置は、前記複数の表示オブジェクトのそれぞれについて、前記位置情報記憶手段に記憶された位置情報とともに前記表示空間において占める形状を特定可能な形状情報を予め記憶した形状情報記憶手段をさらに備えるものとしてもよい。この場合において、前記位置スコア算出手段は、前記複数の表示オブジェクトのそれぞれについて、前記位置情報記憶手段に記憶された位置情報と前記形状情報記憶手段に記憶された形状情報に応じて特定される表示オブジェクト間の最短距離に従って、当該表示オブジェクトと他の全ての表示オブジェクトとの位置関係のスコアをｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に算出することができる。
【００２４】
この場合には、表示オブジェクト間の最短距離によって位置関係のスコアを算出するので、複数の表示オブジェクトの形状や大きさが区々であったとしても、適切な位置関係のスコアを算出することができるようになる。
【００２５】
上記移動先情報設定装置において、前記位置スコア算出手段は、前記複数の表示オブジェクトのそれぞれについて、当該表示オブジェクトに選択ポインタが位置する際における当該選択ポインタの座標と、他の表示オブジェクトについて前記位置情報記憶手段に記憶された位置情報とに従って、当該表示オブジェクトと他の全ての表示オブジェクトとの位置関係のスコアをｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に算出することができる。
【００２６】
ここで、前記複数の表示オブジェクトのそれぞれについて、前記位置情報記憶手段に記憶された位置情報とともに前記表示空間において占める形状を特定可能な形状情報を予め記憶した形状情報記憶手段をさらに備える場合には、前記位置スコア算出手段は、前記複数の表示オブジェクトのそれぞれについて、当該表示オブジェクトに選択ポインタが位置する際における当該選択ポインタの座標、並びに他の表示オブジェクトの位置情報及び形状情報に応じて特定される選択ポインタと表示オブジェクトとの間の最短距離に従って、当該表示オブジェクトと他の全ての表示オブジェクトとの位置関係のスコアをｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に算出することができる。
【００２７】
ここでは、位置関係のスコアを算出する際に、その算出対象となっている表示オブジェクトについては選択ポインタの座標を基準としているので、選択ポインタの位置から考えて最も適切な位置にある他の表示オブジェクトに、入力された方向情報に応じて選択ポインタを移動できるようになる。
【００２８】
上記移動先情報設定装置は、前記位置情報記憶手段に記憶された前記複数の表示オブジェクトの位置情報を変更する位置情報変更手段をさらに備えるものとすることができる。この場合において、前記位置スコア算出手段は、前記位置情報変更手段により少なくとも１の表示オブジェクトの位置情報が変更されたときに、該変更された位置情報に応じて前記複数の表示オブジェクトのそれぞれについて、当該表示オブジェクトと他の全ての表示オブジェクトとの位置関係のスコアを前記表示空間のｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に算出することができる。
【００２９】
複数の表示オブジェクトのうちの何れか１つでも位置情報が変更されれば、選択ポインタの移動先として適切な表示オブジェクトも変わることとなる。ここでは、少なくとも１の表示オブジェクトの位置情報が変更されれば、新たに位置関係のスコアを算出し、これによって移動先情報も新たに設定することができるので、表示オブジェクトの位置が変更される度に最も適切な移動先情報を設定することができる。
【００３０】
上記移動先情報設定装置は、前記位置スコア算出手段により位置スコアが算出されるよりも前に、前記複数の表示オブジェクトのそれぞれについて、前記入力装置から方向情報が入力された際の選択ポインタの移動先を示す移動先情報をｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に外部から入力して、前記移動先情報記憶手段に予め記憶させる外部情報入力手段をさらに備えものとすることができる。この場合において、前記位置スコア算出手段は、前記外部情報入力手段により前記移動先情報記憶手段に移動先情報の記憶されていない表示オブジェクト及び方向について、他の表示オブジェクトとの位置関係のスコアを算出することができる。
【００３１】
ここでは、位置関係のスコアを算出して移動先情報を設定する前に、予め特定の表示オブジェクトの間での移動先情報を設定することができるので、例えば、位置関係としてはより適切な他の表示オブジェクトがあったとしても、関連性の高いオブジェクト間で選択ポインタが移動されるような移動先情報の設定ができ、処理の関連性に応じて表示オブジェクト間で選択ポインタが移動されるようにすることができる。
【００３２】
上記移動先情報設定装置は、前記移動先情報設定手段により設定された各表示オブジェクトの方向毎の移動先情報が前記移動先情報記憶手段に記憶された後に、前記入力装置から方向情報が入力された際の選択ポインタの移動先を示す移動先情報をｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に外部から入力して、前記移動先情報記憶手段に記憶されている移動先情報を該入力された移動先情報に更新する移動先情報更新手段をさらに備えるものとすることができる。
【００３３】
ここでは、位置関係のスコアを算出して移動先情報を設定した後に、特定の表示オブジェクトの間での移動先情報を変更することができるので、例えば、位置関係としてはより適切な他の表示オブジェクトを示すように移動先情報が設定されていても、関連性の高いオブジェクトを示すように移動先情報の設定を変更することができ、処理の関連性に応じて表示オブジェクト間で選択ポインタが移動されるようにすることができる。また、移動先情報設定手段による移動先情報の設定では入力装置からの方向情報の入力によっては選択ポインタが移動してこなくなる表示オブジェクトが発生したとしても、これを修正することができる。
【００３４】
上記移動先情報設定装置は、前記複数の表示オブジェクトのそれぞれについて、前記移動先情報の示す選択ポインタの移動先となっているかどうかを示す情報を記憶する被移動先情報記憶手段と、前記移動先情報記憶手段に全ての表示オブジェクト、全ての方向についての移動先情報が記憶されたときに、前記被移動先情報記憶手段に選択ポインタの移動先となっていない情報が記憶されているかどうかを判定する移動不可表示オブジェクト判定手段と、前記移動不可表示オブジェクト判定手段により前記被移動先情報記憶手段に選択ポインタの移動先となっていない情報が記憶されていると判定された場合に、当該移動先となっていない表示オブジェクト以外の他の何れかの表示オブジェクトからの選択ポイントの移動先として当該移動先となっていない表示オブジェクトを設定させるための処理を実行する移動先情報変更処理手段とをさらに備えるものとすることができる。
【００３５】
このように被移動先情報記憶手段を備え、選択ポインタの移動先情報となっていない情報が記憶されているかどうかを判定することにより、移動先情報設定手段による移動先情報の設定では入力装置からの方向情報の入力によっては選択ポインタが移動してこなくなる表示オブジェクトが発生してしまったことが容易に分かるようになり、移動先情報設定変更処理手段により移動先情報の修正を容易に行うことができるようになる。
【００３６】
ここで、前記被移動先情報記憶手段は、前記複数の表示オブジェクトのそれぞれについて、前記移動先情報の示す選択ポインタの移動先となっている数を記憶するものであってもよい。この場合において、前記移動先情報変更処理手段は、前記移動不可表示オブジェクト判定手段により前記被移動先情報記憶手段に選択ポインタの移動先となっていない情報が記憶されていると判定されたときに、前記被移動先情報記憶手段に記憶されている移動先となっている数が２以上である表示オブジェクトが選択ポインタの移動先となる表示オブジェクトの移動先情報を、前記移動先情報記憶手段に記憶された移動先情報のうちから変更可能な移動先情報として抽出する変更可能情報抽出手段を備えるものとすることができる。
【００３７】
このように被移動先情報記憶手段が移動先情報の示す選択ポインタの移動先となっている数を記憶し、この数が２以上である表示オブジェクトを選択ポインタの移動先としている移動先情報を変更可能な移動先情報として抽出することで、選択ポインタが移動してこなくなる表示オブジェクトが発生してしまった場合に、このような表示オブジェクトを新たに発生させることなく、容易に移動先情報の変更を行うことができるようになる。
【００３８】
また、前記移動先情報変更処理手段は、前記移動不可表示オブジェクト判定手段により前記被移動先情報記憶手段に選択ポインタの移動先となっていない情報が記憶されていると判定された場合に、当該選択ポインタの移動先となっていない情報の記憶されている表示オブジェクトについて、当該表示オブジェクトと他の全ての表示オブジェクトとの位置関係のスコアを前記位置情報記憶手段に記憶された位置情報に従ってｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に算出する第２の位置スコア算出手段と、前記第２の位置スコア算出手段により算出された位置関係のスコアに応じて、前記変更可能情報抽出手段の抽出した移動先情報の何れかを前記被移動先情報記憶手段に選択ポインタの移動先となっていない情報が記憶されていると判定された表示オブジェクトを選択ポインタの移動先とする移動先情報に変更して、前記移動先情報記憶手段に記憶させる移動先情報変更手段とを備えるものとすることもできる。
【００３９】
この場合には、選択ポインタが移動してこなくなる表示オブジェクトが発生してしまった場合に、当該表示オブジェクトに選択ポインタを移動させることとする移動先情報の変更も手動で行う必要がなくなり、移動先情報の設定がさらに容易なものとなる。
【００４０】
上記移動先情報設定装置は、前記位置情報記憶手段に記憶された位置情報に従って、前記複数の表示オブジェクトをそれぞれ前記表示装置に表示させる表示オブジェクト表示手段をさらに備えるものとしてもよい。この場合において、前記位置スコア算出手段は、前記表示オブジェクト表示手段により前記複数のオブジェクトが前記表示装置に表示されるときに、前記複数の表示オブジェクトのそれぞれについて他の全ての表示オブジェクトとの位置関係のスコアをｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に算出することができる。
【００４１】
ここでは、複数の表示オブジェクトを表示装置に表示させる際に位置関係のスコアを算出し、各表示オブジェクトについて方向別に移動先情報を設定することができるので、表示装置に表示される表示オブジェクトやその位置が予め定まっていない場合であっても、本発明を適用することが可能となる。
【００４２】
ここで、上記移動先情報設定装置は、前記位置情報記憶手段に位置情報の記憶された複数の表示オブジェクトから、前記選択ポインタを移動させてユーザによる選択を可能とする表示オブジェクトを設定する選択可能オブジェクト設定手段をさらに備え、前記表示オブジェクト表示手段は、前記選択可能オブジェクト設定手段によりユーザによる選択を可能に設定されているか否かを識別可能に前記複数の表示オブジェクトを表示させ、前記位置スコア算出手段は、前記選択可能オブジェクト設定手段によりユーザによる選択を可能に設定されている表示オブジェクトについて、他のユーザによる選択を可能に設定されている表示オブジェクトとの位置関係のスコアを算出することができる。
【００４３】
ここでは、ユーザによる選択を可能とする表示オブジェクトが選択可能オブジェクト設定手段により設定されるが、選択可能な表示オブジェクトであるか否かは識別可能に表示装置に表示されるので、ユーザは、どの表示オブジェクトが選択可能となっているのかを容易に識別することができる。また、選択可能に設定されている表示オブジェクトを対象として位置関係のスコアが算出され、移動先情報が設定されることとなるので、ユーザにより選択可能な表示オブジェクトの間でのみ選択ポインタを移動させることができ、ユーザが表示オブジェクトの選択を容易に行えるようになる。
【００４４】
なお、前記表示オブジェクト表示手段は、前記選択可能オブジェクト設定手段によりユーザによる選択を可能に設定されている表示オブジェクトと、ユーザによる選択を不能に設定されている表示オブジェクトとを、異なる態様で前記表示装置に表示させるものであってもよい。また、前記表示オブジェクト表示手段は、前記選択可能オブジェクト設定手段によりユーザによる選択を可能に設定されている表示オブジェクトを前記表示装置に表示するが、ユーザによる選択を不能に設定されている表示オブジェクトを前記表示装置に表示しないものとしてもよい。
【００４５】
また、ここでは、前記位置情報記憶手段に記憶された前記複数の表示オブジェクトの位置情報を変更する位置情報変更手段をさらに備えるものとし、前記表示オブジェクト表示手段は、前記位置情報変更手段により少なくとも１の表示オブジェクトの位置情報が変更されたときに、該変更された位置情報に応じて前記複数の表示オブジェクトを前記表示装置に新たに表示させるのとすることができる。
【００４６】
ここで、少なくとも１の表示オブジェクトの位置情報が変更されると、複数の表示オブジェクトを新たに表示装置に表示させ、新たに表示オブジェクトが表示されることで移動先情報の設定も新たに行われるので、表示オブジェクトの位置に応じて常に適切な移動先情報を設定することができる。
【００４７】
上記目的を達成するため、本発明の第２の観点にかかる移動先情報設定方法は、直行するｘｙ座標系の座標（ｘ，ｙ）によって位置が規定される２次元の表示空間において表示装置に表示され、該表示空間を移動する選択ポインタの表示により何れかがユーザから選択される複数の表示オブジェクトについて、前記表示空間における座標を示す位置情報を予め記憶した記憶装置を備えるコンピュータ装置において実行され、前記表示装置に表示された複数の表示オブジェクトのそれぞれに対してｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向に応じた方向情報を入力可能な入力装置から何れかの方向情報が入力された場合に選択ポインタを移動すべき表示オブジェクトを示す移動先情報を設定する移動先情報設定方法であって、前記複数の表示オブジェクトのそれぞれについて、前記記憶装置に記憶された位置情報に従って、他の表示オブジェクトに対する位置関係のスコアの算出対象となっている表示オブジェクトと他の表示オブジェクトのｘ座標、ｙ座標の差分をそれぞれｄｘ，ｄｙとするときに、ｄｘに応じた演算に係数αを乗じた値とｄｙに応じた演算に係数βを乗じた値とを加算して、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に位置関係のスコアを算出するステップと、前記複数の表示オブジェクトのそれぞれについて、前記算出した位置関係のスコアに応じて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に、算出された位置関係のスコアが最も小さくなる他の表示オブジェクトを移動先とする移動先情報を選定するステップと、前記複数の表示オブジェクトのそれぞれについて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に選定された移動先情報を前記記憶装置に記憶させるステップとを含み、αとβの大小関係は、ｘ正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するときと、ｙ正方向またはｙ負方向を算出対象となる方向として位置スコアを算出するときとで反対になることを特徴とする。
【００４８】
上記目的を達成するため、本発明の第３の観点にかかるプログラムは、直行するｘｙ座標系の座標（ｘ，ｙ）によって位置が規定される２次元の表示空間において表示装置に表示され、該表示空間を移動する選択ポインタの表示により何れかがユーザから選択される複数の表示オブジェクトについて、前記表示空間における座標を示す位置情報を予め記憶した記憶装置を備えるコンピュータ装置の処理装置により実行され、前記表示装置に表示された複数の表示オブジェクトのそれぞれに対してｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向に応じた方向情報を入力可能な入力装置から何れかの方向情報が入力された場合に選択ポインタを移動すべき表示オブジェクトを示す移動先情報を設定するためのプログラムであって、前記複数の表示オブジェクトのそれぞれについて、前記記憶装置に記憶された位置情報に従って、他の表示オブジェクトに対する位置関係のスコアの算出対象となっている表示オブジェクトと他の表示オブジェクトのｘ座標、ｙ座標の差分をそれぞれｄｘ，ｄｙとするときに、ｄｘに応じた演算に係数αを乗じた値とｄｙに応じた演算に係数βを乗じた値とを加算して、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に位置関係のスコアを算出するステップと、前記複数の表示オブジェクトのそれぞれについて、前記算出した位置関係のスコアに応じて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に、算出された位置関係のスコアが最も小さくなる他の表示オブジェクトを移動先とする移動先情報を選定するステップと、前記複数の表示オブジェクトのそれぞれについて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に選定された移動先情報を前記記憶装置に記憶させるステップとを含み、αとβの大小関係は、ｘ正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するときと、ｙ正方向またはｙ負方向を算出対象となる方向として位置スコアを算出するときとで反対になることを特徴とする。
【００４９】
上記目的を達成するため、本発明の第４の観点にかかるコンピュータ読み取り可能な記録媒体は、直行するｘｙ座標系の座標（ｘ，ｙ）によって位置が規定される２次元の表示空間において表示装置に表示され、該表示空間を移動する選択ポインタの表示により何れかがユーザから選択される複数の表示オブジェクトについて、前記表示空間における座標を示す位置情報を予め記憶した記憶装置を備えるコンピュータ装置の処理装置により実行され、前記表示装置に表示された複数の表示オブジェクトのそれぞれに対してｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向に応じた方向情報を入力可能な入力装置から何れかの方向情報が入力された場合に選択ポインタを移動すべき表示オブジェクトを示す移動先情報を設定するためのプログラムを記録した記録媒体であって、前記プログラムは、前記複数の表示オブジェクトのそれぞれについて、前記記憶装置に記憶された位置情報に従って、他の表示オブジェクトに対する位置関係のスコアの算出対象となっている表示オブジェクトと他の表示オブジェクトのｘ座標、ｙ座標の差分をそれぞれｄｘ，ｄｙとするときに、ｄｘに応じた演算に係数αを乗じた値とｄｙに応じた演算に係数βを乗じた値とを加算して、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に位置関係のスコアを算出するステップと、前記複数の表示オブジェクトのそれぞれについて、前記算出した位置関係のスコアに応じて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に、算出された位置関係のスコアが最も小さくなる他の表示オブジェクトを移動先とする移動先情報を選定するステップと、前記複数の表示オブジェクトのそれぞれについて、ｘ正方向、ｘ負方向、ｙ正方向、ｙ負方向の別に選定された移動先情報を前記記憶装置に記憶させるステップとを含み、αとβの大小関係は、ｘ正方向またはｘ負方向を算出対象となる方向として位置スコアを算出するときと、ｙ正方向またはｙ負方向を算出対象となる方向として位置スコアを算出するときとで反対になることを特徴とする。
【発明を実施するための最良の形態】
【００５０】
以下、添付図面を参照して、本発明の実施の形態について説明する。
【００５１】
［第１の実施の形態］
図１は、この実施の形態で適用されるコンピュータ装置のブロック図である。この実施の形態では、実行用の機種において開発支援ツール１１２により実行用プログラム１１１を作成し、これを実行用の機種にインストールして実行させるものである。すなわち、この実施の形態で適用されるコンピュータ装置としては、開発用の機種と実行用の機種とが存在するが、両者の差は僅かなものであり、特にハードウェア的な構成にはほとんど差がない。
【００５２】
この実施の形態で適用されるコンピュータ装置は、開発用の機種であっても実行用の機種であっても、ＣＰＵ１０１と、メインメモリ１０２と、入力装置１０３と、表示装置１０４と、ハードディスクドライブ（ＨＤＤ）１０５と、ＣＤ−ＲＯＭ／ＤＶＤドライブ１０６とを備えている。実行用の機種においては、ＨＤＤ１０５に作成を終了した実行用プログラム１１１だけが格納されているが、開発用の機種においては、ＨＤＤ１０５に開発支援ツール１１２も格納されている。開発用の機種におけるＣＤ−ＲＯＭ／ＤＶＤドライブ１０６は、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体１２１に対してデータの読み書きが可能であるが、実行用の機種においては、読み取り専用であってもよい。
【００５３】
ＣＰＵ１０１は、ＨＤＤ１０５に記憶された実行用プログラム１１１または開発支援ツール１１２を処理プログラムとしてメインメモリ１０２に転送させ、メインメモリ１０２に転送されたプログラムを実行する。メインメモリ１０２は、ＨＤＤ１０５から転送された処理プログラムの記憶領域として用いられる他、ＣＰＵ１０１が処理プログラムを実行する際のデータの一時記憶領域（ワークエリア）として用いられる。
【００５４】
入力装置１０３は、実行用プログラム１１１の開発者または使用者からの指示をＣＰＵ１０１に入力する。入力装置１０３は、開発用の機種においても実行用の機種においても、上下左右の方向を入力するするための４つの方向キーと、確定入力するための確定キーと、順送りキー及び逆送りキーとを備えている。通常のキーボードを入力装置１０３として適用する場合、確定キーとしてはリターンキーを、順送りキーとしてはＴＡＢキーを、逆送りキーとしてはＳＨＩＦＴ＋ＴＡＢキーを割り当てることができる。開発用の機種においては、入力装置１０３としてマウスも備えている。
【００５５】
表示装置１０４は、ＣＰＵ１０１の制御に応じて、実行用プログラム１１１におけるメニュー画面２００などを表示する。開発用の機種における表示装置１０４は、開発途上のメニュー画面２００を表示することもできる。ＨＤＤ１０５は、実行用プログラム１１１及び開発支援ツール１１２の記憶領域である。開発用の機種では、ＣＤ−ＲＯＭ／ＤＶＤドライブ１０６により記録媒体１２１から開発支援ツール１１２が読み取られて、ＨＤＤ１０５に格納される。実行用プログラム１１１は、ＣＰＵ１０１が開発支援ツール１１２を実行することにより作成されて、ＨＤＤ１０５に記憶される。
【００５６】
開発用の機種において作成されてＨＤＤ１０５に記憶されている実行用プログラム１１１は、ＣＤ−ＲＯＭ／ＤＶＤドライブ１０６により記録媒体１２１に書き込まれ、実行用の機種で実行可能な実行用プログラム１１１として提供される。実行用の機種では、ＣＤ−ＲＯＭ／ＤＶＤドライブ１０６により記録媒体１２１から実行用プログラム１１１が読み取られて、ＨＤＤ１０５に格納される。
【００５７】
図２は、実行用プログラム１１１の実行時に表示装置１０４に表示されるメニュー画面を示す図である。メニュー画面２００の表示であるかどうかに関わらず、表示装置１０４上における位置は、２次元直交座標系のＸ座標及びＹ座標で示される。表示装置１０４の左上の画素の座標が（０，０）であり、他の画素についても１画素分が１つの座標に対応する。また、左右方向がＸ軸方向であり、右方向がＸの正方向、左方向がＸの負方向である。上下方向がＹ軸方向であり、下方向がＹの正方向、上方向がＹの負方向である。
【００５８】
また、図２に示すように、メニュー画面２００においては、互いに異なる処理が割り付けられた複数のボタン２０１〜２０９が表示され、ボタン２０１〜２０９の位置は、任意の位置に設定することができ、図２に示すように不規則な状態で並べられたものとすることができる。ボタン２０１〜２０９のサイズも任意である。また、ボタン２０１〜２０９の何れかに、三角形形状の選択ポインタとしてのアンカー（カーソル）２１０が付加されるものとなる。ボタン２０１〜２０９に対してアンカー２１０の付加される位置は、三角形の右側の頂点を基準とし、これがボタン２０１〜２０９の左側の辺の中央に位置するように定めるものとする。
【００５９】
アンカー２１０の位置は、入力装置１０３の上下左右の方向キー、順送りキーまたは逆送りキーの操作によりボタン２０１〜２０９の間で移動させることができる。順送りキーの操作では、左から右、上から下の順でアンカー２１０が移動され、逆送りキーの操作では、右から左、下から上の順でアンカー２１０が移動される。つまり、ボタン２０１〜２０９の順番は、その表示位置に応じて定められることとなる。
【００６０】
上下左右の方向キーの操作では、現時点アンカー２１０の位置するボタンについて定められている上下左右のリンク（後述）に従って、アンカー２１０の位置が移動する。確定キーが操作されると、メニュー画面２００からアンカー２１０の位置するボタンに割り付けられた処理にジャンプするものとなる。なお、メニュー画面２００は、ユーザの所望する処理を選択して実行するための入口の画面であり、例えば、実行用プログラム１１１がゲームのプログラムであれば、ワールドマップに対応させることができ、ここではワールドマップから選択される街が、各ボタンに対応する。
【００６１】
図３は、図２のメニュー画面２００に表示される各ボタンについてのボタンデータを示す図である。このボタンデータ３００は、メニュー画面２００に表示されるボタン２０１〜２０９のそれぞれについて用意されて実行用プログラム１１１に含まれるデータとなる。図示するように、ボタンデータ３００は、ボタンＩＤ３０１と、ボタン名３０２と、処理リンク３０３と、左上位置３０４と、ボタンサイズ３０５と、右リンク３０６と、左リンク３０７と、上リンク３０８と、下リンク３０９と、アンカー表示フラグ３１０とを含んでいる。
【００６２】
ボタンＩＤ３０１は、ボタン２０１〜２０９を一意に識別するための識別情報である。ボタン名３０２は、ボタン２０１〜２０９のそれぞれの名前であり、ここに記された名前が表示装置１０４においてボタン内の領域に表示される。処理リンク３０３は、当該ボタンにアンカー２１０が付加されているときに入力装置１０３の確定キーの入力があった場合に、メニュー画面２００から移行される処理へのリンクを、当該処理の処理名で示すものである。メニュー画面２００に新たなボタンを付加するときには、ボタン名３０２及び処理リンク３０３の入力は必須となり、その入力があると、新たなボタンに対してボタンＩＤ３０１が自動的に付与される。つまり、ボタンデータ３００においてボタンＩＤ３０１、ボタン名３０２及び処理リンク３０３が設定されていないボタンは存在しない。
【００６３】
左上位置３０４は、当該ボタンが表示装置１０４に表示される際の左上位置のＸ座標及びＹ座標である。ボタンサイズ３０５は、当該ボタンのＸ方向の長さとＹ方向の長さとを示す。ボタン２０１〜２０９のいずれも同じ大きさであると予め定められているのであれば、ボタン２０１〜２０９に共通したボタンサイズを実行用プログラム１１１に含まれるデータとして登録しておくことで、ボタン毎のボタンデータ３００にボタンサイズ３０５を含まないものとすることができる。
【００６４】
各ボタンは、左上位置３０４を左上の頂点として、ボタンサイズ３０５で定められる長方形の領域を表示装置１０４上において占めるものとなる。ボタン２０１〜２０９のそれぞれに対応したアンカー２１０の位置は、左上位置３０４及びＹ方向のボタンサイズ３０５により定めることができる。また、ボタンの順序は、左上位置３０４の座標に応じて定められるものであり、Ｙ座標が小さいほど順序が小さく、Ｙ座標が同じであればＸ座標が小さいほど順序が小さい。
【００６５】
右リンク３０６は、当該ボタンにアンカーが付加されているときに入力装置１０３の右方向キーの入力があった場合に、アンカーが移動される他のボタンへのリンクを、移動先のボタンのボタンＩＤで示すものである。同様に、左リンク３０７、上リンク３０８、下リンク３０９は、それぞれ左方向キー、上方向キー、下方向キーの入力があった場合に、アンカーが移動される他のボタンへのリンクを、移動先のボタンのボタンＩＤで示す。アンカー表示フラグ３１０は、当該ボタンにアンカー２１０が付加されているときにセットされるフラグである。
【００６６】
図３のボタンデータ３００に示す右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９は、実行用の機種で実行される実行用プログラム１１１においては既に設定済みとなっているが、開発途上の実行用プログラム１１１において最初から設定されている訳ではない。開発途上の実行用プログラム１１１においてボタン２０１〜２０９の左上位置３０４とボタンサイズ３０５とが定められると、開発支援ツール１１２により、各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９が自動的に定められて、実行用プログラム１１１が生成されることとなる。各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の自動設定については後述する。
【００６７】
もっとも、ボタン２０１〜２０９の位置と大きさの関係によっては、実行用プログラム１１１においても、右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９のいずれか３つまでが設定されていないボタンもあり得る。右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の全てが設定されていないボタンはあり得ない。右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の自動設定によっては、入力装置１０３の方向キーの操作によってはアンカーが移動してこないボタンも発生し得るが、その場合の対策については後述する。
【００６８】
また、全部または一部のボタンについての右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９を、自動設定に先だって入力装置１０３の操作により手動で設定することもできる。先に手動設定されている場合には、改めて右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９が自動設定されることはない。また、各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９が自動設定された後に、入力装置１０３の操作により手動で設定をやり直すこともできる。
【００６９】
次に、入力装置１０３の方向キーの操作によってはアンカーが移動してこないボタンの発生に対する対策について説明する。方向キーの操作によってアンカーが移動してこないボタンというのは、他のボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９のいずれでも、リンク先として定められていないボタンである。従って、全てのボタンが他のボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９のいずれかでリンク先として定められれば、方向キーの操作によってアンカーが移動してこないボタンがなくなることとなる。
【００７０】
このため、開発支援ツール１１２では、各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９を自動設定する際に、図４に示す被リンク数テーブルをメインメモリ１０２に用意するものとなる。図示するように、被リンク数テーブル４００は、全てのボタンについてのボタンＩＤ４０１と、被リンク数４０２とを対応付けて登録するものとなる。被リンク数４０２は、自動設定に先立つ手動設定の際、或いは自動設定において各ボタンの右リンク３０６、左リンク３０７、上リンク３０８或いは下リンク３０９が設定されると、設定されたリンク先のボタンＩＤに対応するものが１ずつ加算されることとなる。
【００７１】
全てのボタンについての右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の自動設定が終了した後に、被リンク数４０２が０となっているボタンがあれば、当該ボタンが他の何れかのボタンの右リンク３０６、左リンク３０７、上リンク３０８または下リンク３０９でリンクされるように、リンク先の再設定がされることとなる。もっとも、自動設定終了時にリンクされていないボタンをリンク先として設定することができるのは、リンク先のボタンの被リンク数４０２が２以上となっているボタンに限られる。なお、リンク先の再設定についても詳細を後述する。
【００７２】
次に、各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の自動設定について詳細に説明する。図５は、各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９を自動設定する手法を模式的に示す図である。ここでは、説明を簡単にするため、図５に示すようにメニュー画面２００においてボタンＡ５０１、ボタンＢ５０２、ボタンＣ５０３、ボタンＤ５０４の４つだけが存在し、ここでボタンＡ５０１の下リンク３０９を設定する場合を例として説明する。
【００７３】
この場合、まず、ボタンＡ５０１の基準位置として、ボタンＡ５０１に対してアンカー５００が付加されることとなる位置、すなわち左側の辺の中央位置が定められる。このボタンＡ５０１の基準位置における座標を（Ｘａ，Ｙａ）とする。ボタンＡ５０１の基準位置（Ｘａ，Ｙａ）に対して、ボタンＤ５０４は下側に位置する範囲がない、すなわちいずれの範囲においてもＹ座標がＹａよりも大きくならないので、ボタンＡ５０１の下リンク３０９として設定される対象から除かれる。
【００７４】
ボタンＢ５０２及びボタンＣ５０３は、ボタンＡ５０１の基準位置（Ｘａ，Ｙａ）よりも下側に位置する範囲があるので、ボタンＡ５０１の下リンク３０９として設定され得ることとなる。ここで、ボタンＢ５０２については、ボタンＡ５０１の基準位置（Ｘａ，Ｙａ）から最短距離にある点の位置（Ｘｂ，Ｙｂ）が求められ、ボタンＣ５０３についても、ボタンＡ５０１の基準位置（Ｘａ，Ｙａ）から最短距離にある点の位置（Ｘｃ，Ｙｃ）が求められる（ここでは、Ｘｃ＝Ｘａ）。
【００７５】
次に、ボタンＢ５０２、ボタンＣ５０３のそれぞれについて、ボタンＡ５０１からの位置関係のスコアが算出される。ここで、ボタンＢ５０２の位置関係のスコアは、ボタンＡ５０１の基準位置（Ｘａ，Ｙａ）とボタンＢの最短距離にある点の位置（Ｘｂ，Ｙｂ）とにより、３（Ｘｂ−Ｘａ）＾２＋（Ｙｂ−Ｙａ）＾２と求められる（＾は、べき乗を表す）。ボタンＣ５０３の位置関係のスコアは、ボタンＡ５０１の基準位置（Ｘａ，Ｙａ）とボタンＢの最短距離にある点の位置（Ｘｃ，Ｙｃ）とにより、３（Ｘｃ−Ｘａ）＾２＋（Ｙｃ−Ｙａ）＾２と求められる。
【００７６】
ここで、ボタンＢ５０２の最短距離にある点の位置（Ｘｂ，Ｙｂ）の方が、ボタンＡ５０１の基準位置（Ｘａ，Ｙａ）からのＹ座標の差も、  ボタンＡ５０１の基準位置（Ｘａ，Ｙａ）からの距離も小さい。しかし、位置関係のスコアは、ボタンＣ５０３の方がボタンＢ５０２よりも小さいこととなる。そこで、ボタンＡ５０１の下リンク３０９は、ボタンＣ５０３に設定されることとなる。
【００７７】
なお、右リンク３０６、左リンク３０７または上リンク３０８も、上記と同様に位置関係のスコアによって定められることとなるが、下リンク３０９を設定する場合とは次のような違いがある。ここで、右リンク３０６、左リンク３０７または上リンク３０８を設定しようとするボタンの基準位置を（Ｘｓ，Ｙｓ）、この基準位置（Ｘｓ，Ｙｓ）から最短距離にある他のボタンの点の位置を（Ｘｏ，Ｙｏ）とすると、位置関係のスコアの一般式は、右リンク３０６または左リンク３０７を設定する場合は数式２に、上リンク３０８及び下リンク３０９を設定する場合には数式３となる。
【００７８】
（数２）
（Ｘｏ−Ｘｓ）＾２＋３（Ｙｏ−Ｙｓ）＾２
（数３）
３（Ｘｏ−Ｘｓ）＾２＋（Ｙｏ−Ｙｓ）＾２
【００７９】
また、基準位置（Ｘｓ，Ｙｓ）よりもＸ座標の大きな位置を範囲として含まない他のボタンは、右リンク３０６として設定される対象から除かれ、基準位置（Ｘｓ，Ｙｓ）よりもＸ座標の小さな位置を範囲として含まない他のボタンは、左リンク３０７として設定される対象から除かれ、基準位置（Ｘｓ，Ｙｓ）よりもＹ座標の小さな位置を範囲として含まない他のボタンは、上リンク３０８として設定される対象から除かれる。
【００８０】
このように右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９は、リンク元のボタンについてアンカーの付される基準位置と、リンク先の候補としたボタンで該基準位置から最短距離にある点の位置に従って求められる。従って、図２に示したボタンＧ２０７をリンク元として上リンク３０８を設定しようとする場合、リンク先についてもアンカーの付される位置に基づいてスコアを算出すればボタンＣ２０３やボタンＤ２０４の方がボタンＦ２０６よりもスコアが小さくなるが、最短距離にある点の位置に基づいてスコアを算出すると、ボタンＦ２０６の方がボタンＣ２０３やボタンＤ２０４よりもスコアが小さくなる。このため、ボタンＧ２０７の上リンク３０８は、ボタンＦ２０６に設定されることとなる。
【００８１】
次に、何れのボタンの何れの方向からもリンクされていないボタンが生じた場合のリンク先の再設定について説明する。被リンク数テーブル４００において被リンク数４０２が０となっているボタンがあった場合、そのボタンを参照元のボタンと、他のボタンを参照先のボタンとして処理を行う。参照先のボタンについて、右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の何れかにおいてリンク先としているボタンの被リンク数４０２が２以上であれば、そのような参照先のボタンの当該方向のリンクがリンク先を変更可能なものとして抽出される（この方向のリンクを変更可能リンクという）。
【００８２】
次に、参照先のボタンのアンカー位置により定められる基準位置に応じて参照先のボタンへの変更可能リンクとなっている方向に対しての位置関係のスコアが、右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９を自動設定した場合と同じようにして求められる。変更可能リンクが複数あった場合には、それぞれについて位置関係のスコアが求められ、その位置関係のスコアが最低の変更可能リンクが、実際にリンク先を変更されるものとして選ばれる。そして、選ばれた変更可能リンクにおけるリンク先を参照元のボタンを示すものに書き換えるものとなる。
【００８３】
以下、この実施の形態にかかるコンピュータ装置において実行される処理について説明する。この実施の形態における処理としては、開発用の機種において開発支援ツール１１２の実行により実行用の機種で実行可能な実行用プログラム１１１を作成するための処理と、実行用の機種において作成の完了した実行用プログラム１１１を実行する処理とがある（但し、実行用プログラム１１１の実行は、開発用の機種においても可能である）。
【００８４】
まず、開発用の機種における処理について説明する。開発用の機種においては、最初、ＨＤＤ１０５に開発支援ツール１１２が格納されている。この開発支援ツール１１２を実行して、実行用プログラム１１１を作成していく。作成中及び作成を完了した実行用プログラム１１１がＨＤＤ１０５に格納されていくこととなる。実行用プログラムの作成で本発明に関わるのは、メニュー画面２００に表示される各ボタンについての右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の設定なので、それまでに必要なボタンの指定とボタンに対応付けられた処理の指定（すなわち、ボタンデータ３００へのボタンＩＤ３０１、ボタン名３０２及び処理リンク３０３の設定）は、完了しているものとする。以下では、この状態で、メニュー画面の設定を行う場合について説明する。
【００８５】
図６は、メニュー設定処理を示すフローチャートである。メニュー設定処理が開始すると、ＣＰＵ１０１は、ＨＤＤ１０５に格納されている開発途上の実行用プログラム１１１に含まれるボタンデータ３００に、左上位置３０４及びボタンサイズ３０５が設定されていないボタンが含まれているかどうかを判定する（ステップＳ１０１）。左上位置３０４及びボタンサイズ３０５が設定されていないボタンがなければ、そのままステップＳ１０３の処理に進む。
【００８６】
左上位置３０４及びボタンサイズ３０５が設定されていないボタンがあれば、ＣＰＵ１０１は、他のボタンの左上位置３０４及びボタンサイズ３０５を参照して、メニュー画面２００において他のボタンと重なって表示されないように、当該ボタンの左上位置３０４及びボタンサイズ３０５を設定する。ボタンサイズ３０５は、通常デフォルトのサイズに設定され、デフォルトのサイズではメニュー画面２００に空いている領域がないときには、これより小さいサイズに設定される（ステップＳ１０２）。そして、ステップＳ１０３の処理に進む。ステップＳ１０３では、ＣＰＵ１０１は、各ボタンのボタンデータ３００におけるボタン名３０２、左上位置３０４及びボタンサイズ３０５に従って、全てのボタンを表示装置１０４に表示させる。
【００８７】
次に、ＣＰＵ１０１は、全てのボタンについて右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９が設定されているかどうかを判定する（ステップＳ１０４）。右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の設定されていないボタンがあれば、ステップＳ１０９の処理に進む。
【００８８】
右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の設定されていないボタンがなければ、ＣＰＵ１０１は、入力装置１０３からメニュー設定を終了する旨の入力があったかどうかを判定する（ステップＳ１０５）。メニュー設定を終了する旨の入力がなければ、ＣＰＵ１０１は、入力装置１０３から何れかのボタンの位置を移動する旨の入力があったかどうかを判定する（ステップＳ１０６）。ボタンの位置を移動する旨の入力もなければ、ステップＳ１０５の処理に戻る。
【００８９】
ボタンの位置を移動する旨の入力があれば、ＣＰＵ１０１は、当該入力に従ってボタンの位置を移動させ、表示装置１０４に表示させる（ステップＳ１０７）。そして、ボタンの位置を移動する旨の入力が終了したかどうかを判定する（ステップＳ１０８）。ボタンの位置を移動する旨の入力が終了していなければ、ステップＳ１０６の処理に戻る。ボタンの位置を移動する旨の入力が終了していれば、ステップＳ１０９の処理に進む。
【００９０】
ステップＳ１０９では、ＣＰＵ１０１は、詳細を後述するリンク先設定処理を行い、各ボタンに対して右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９を設定する。リンク先設定処理を終了すると、ステップＳ１０５の処理に戻る。ステップＳ１０５において、メニュー設定を終了する旨の入力があった場合には、メニュー設定処理を終了する。
【００９１】
図７は、ステップＳ１０９のリンク先設定処理を詳細に示すフローチャートである。リンク先設定処理では、ＣＰＵ１０１は、全てのボタンのボタンデータ３００についての右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９をクリアする。ここで、右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９をクリアするとは、リンク先とすべき他のボタンがない旨を示す所定のデータを登録することである。ＣＰＵ１０１は、また、被リンク数テーブル４００における全てのボタンについての被リンク数を０にクリアする（ステップＳ２０１）。
【００９２】
次に、ＣＰＵ１０１は、何れかのボタンについて右リンク３０６、左リンク３０７、上リンク３０８または下リンク３０９を手動で設定する旨の指示が入力装置１０３から入力されたかどうかを判定する（ステップＳ２０２）。右リンク３０６、左リンク３０７、上リンク３０８または下リンク３０９を手動で入力する旨の指示が入力されなければ、ステップＳ２０５の処理に進む。
【００９３】
右リンク３０６、左リンク３０７、上リンク３０８または下リンク３０９を手動で入力する旨の指示が入力されていれば、ＣＰＵ１０１は、入力装置１０３からの入力に従って指定されたボタンの指定された方向についてリンク先となる他のボタンを設定して、指定されたボタンのボタンデータ３００に登録する（ステップＳ２０３）。その後、ＣＰＵ１０１は、リンク先の手動設定を終了する旨の入力があったかどうかを判定する（ステップＳ２０４）。リンク先の手動設定を終了する旨の入力がなければ、ステップＳ２０３の処理に戻る。リンク先の手動設定を終了する旨の入力があれば、ステップＳ２０５の処理に進む。
【００９４】
ステップＳ２０５に進むと、ＣＰＵ１０１は、処理対象となるリンク元のボタンを１つずつ変えながらループ１処理を行う（ステップＳ２０５−Ｓ２０５’）。ループ１処理においては、ＣＰＵ１０１は、処理対象となるリンク元を設定する方向を右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９で順次変更しながらループ２処理を行う（ステップＳ２０６−Ｓ２０６’）。
【００９５】
ループ２処理においては、ＣＰＵ１０１は、処理対象となっているリンク元のボタンの処理対象となっている方向について、リンク先が既に手動で設定されているかどうかを判定する（ステップＳ２０７）。リンク先が既に手動で設定されていれば、ステップＳ２１７の処理に進む。さらに、ＣＰＵ１０１は、メインメモリ１０２に記憶される記録スコアを最大値に初期化する（ステップＳ２０８）。そして、ステップＳ２０９の処理に進む。
【００９６】
ステップＳ２０９に進むと、ＣＰＵ１０１は、処理対象となるリンク先のボタンを１つずつ変えながらループ３処理を行う（ステップＳ２０９−Ｓ２０９’）。ループ３処理においては、ＣＰＵ１０１は、処理対象となっているリンク元のボタンと処理対象となっているリンク先のボタンとが同一のボタンであるかどうかを判定する（ステップＳ２１０）。同一のボタンであれば、ステップＳ２０９’の処理に進み、ループ３を抜けるかどうかの判定を行うものとなる。
【００９７】
同一のボタンでなければ、ＣＰＵ１０１は、処理対象となっているリンク先のボタンが処理対象となっているリンク元のボタンに対して処理対象となっている方向にあるかどうかを判定する。ここでの判定は、リンク元のボタンについてはアンカーの付される基準位置を、リンク先のボタンについてはボタンの全範囲を基準として行う（ステップＳ２１１）。処理対象となっているリンク先のボタンが処理対象となっているリンク元のボタンに対して処理対象となっている方向になければ、ステップＳ２０９’の処理に進み、ループ３を抜けるかどうかの判定を行うものとなる。
【００９８】
処理対象となっているリンク先のボタンが処理対象となっているリンク先のボタンが処理対象となっているリンク元のボタンに対して処理対象となっている方向にあれば、ＣＰＵ１０１は、所定対象となっているリンク元のボタンにアンカーの付される基準位置から最短距離にある処理対象となっているリンク先のボタン上の点を求める（ステップＳ２１２）。
【００９９】
ＣＰＵ１０１は、処理対象となっている方向が上下または左右の何れかにより数式２または数式３の演算を行って、所定対象となっているリンク元のボタンに対する所定対象となっているリンク先のボタンの位置関係のスコアを算出する（ステップＳ２１３）。ＣＰＵ１０１は、算出した位置関係のスコアがメインメモリ１０２に記憶されている記録スコアよりも小さいかどうかを判定する（ステップＳ２１４）。算出した位置関係のスコアが記録スコア以上であれば、ステップＳ２０９’の処理に進み、ループ３を抜けるかどうかの判定を行うものとなる。
【０１００】
算出した位置関係のスコアが記録スコアよりも小さければ、ＣＰＵ１０１は、算出した位置関係のスコアを新たな記録スコアとしてメインメモリ１０２に記憶させる（ステップＳ２１５）。ＣＰＵ１０１は、処理対象となっているリンク元のボタンの処理対象となっている方向についてのリンクに、処理対象となっているリンク先のボタンのボタンＩＤを設定する。例えば、処理対象となっているリンク元のボタンがボタン２０１、処理対象となっている方向が右、処理対象となっているリンク先のボタンがボタン２０２である場合には、ボタン２０１についてのボタンデータ３００に含まれる右リンク３０６に、ボタン２０２のボタンＩＤを登録する（ステップＳ２１６）。そして、ステップＳ２０９’の処理に進み、ループ３を抜けるかどうかの判定を行うものとなる。
【０１０１】
全てのボタンをリンク先のボタンとして処理を終了するとループ３を抜け、ＣＰＵ１０１は、処理対象となっているリンク元のボタンの処理対象となっている方向についてのリンクが他のボタンを示していれば、被リンク数テーブル４００における当該他のボタンの被リンク数４０２を１加算する（ステップＳ２１７）。そして、ステップＳ２０６’の処理に進み、ループ２を抜けるかどうかの判定を行うものとなる。
【０１０２】
全ての方向についての処理を終了するとループ２を抜け、ステップＳ２０５’でループ１を抜けるかどうかの判定を行うものとなる。全てのボタンをリンク元のボタンとして処理を終了すると、ループ１を抜け、ＣＰＵ１０１は、詳細を後述するリンク先再設定処理を行い、被リンク数が０であったボタンに対して何れかのボタンからアンカーが移動してくるようにリンクの再設定を行うリンク先再設定処理を行う（ステップＳ２１８）。なお、リンク先再設定処理の詳細については後述する。
【０１０３】
リンク先再設定処理を終了すると、ＣＰＵ１０１は、何れかのボタンについて右リンク３０６、左リンク３０７、上リンク３０８または下リンク３０９を手動で設定変更する旨の指示が入力装置１０３から入力されたかどうかを判定する（ステップＳ２１９）。右リンク３０６、左リンク３０７、上リンク３０８または下リンク３０９を手動で設定変更する旨の指示が入力されなければ、そのままリンク先設定処理を終了して、図６のフローチャートに復帰する。
【０１０４】
右リンク３０６、左リンク３０７、上リンク３０８または下リンク３０９を手動で設定変更する旨の指示が入力されていれば、ＣＰＵ１０１は、入力装置１０３からの入力に従って指定されたボタンの指定された方向についてリンク先となる他のボタンを設定して、指定されたボタンのボタンデータ３００に登録する（ステップＳ２２０）。その後、ＣＰＵ１０１は、リンク先の設定変更を終了する旨の入力があったかどうかを判定する（ステップＳ２２１）。リンク先の手動設定を終了する旨の入力がなければ、ステップＳ２２０の処理に戻る。リンク先の手動設定を終了する旨の入力があれば、リンク先設定処理を終了して、図６のフローチャートに復帰する。
【０１０５】
図８は、ステップＳ２１８のリンク先再設定処理を詳細に示すフローチャートである。リンク先再設定処理では、ＣＰＵ１０１は、処理対象となる参照元のボタンを１つずつ変えながらループ４処理を行う（ステップＳ３０１−Ｓ３０１’）。ループ４処理においては、処理対象となる参照元のボタンについて被リンク数テーブル４００に登録されている被リンク数が０であるかどうかを判定する（ステップＳ３０２）。被リンク数が０でなければ、ステップＳ３０１’の処理に進み、ループ４を抜けるかどうかの判定を行うものとなる。
【０１０６】
被リンク数が０であれば、ＣＰＵ１０１は、メインメモリ１０２に記憶される記録スコアを最大値に初期化し（ステップＳ３０３）、ステップＳ３０４の処理に進む。ステップＳ３０４に進むと、ＣＰＵ１０１は、参照先のボタンを１つずつ変えながらループ５処理を行う（ステップＳ３０４−Ｓ３０４’）。ループ５処理においては、ＣＰＵ１０１は、処理対象となっている参照元のボタンと処理対象となっている参照先のボタンとが同一のボタンであるかどうかを判定する（ステップＳ３０５）。同一のボタンであれば、ステップＳ３０４’の処理に進み、ループ５を抜けるかどうかの判定を行うものとなる。
【０１０７】
同一のボタンでなければ、ＣＰＵ１０１は、処理対象となる参照先のボタンについてのリンクの方向を右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９で順次変更しながらループ６処理を行う（ステップＳ３０６−Ｓ３０６’）。ループ６処理においては、参照先のボタンの処理対象となるリンクが示す他のボタンについて被リンク数テーブル４００に登録されている被リンク数が２以上となっているかどうかを判定する（ステップＳ３０７）。被リンク数が１以下であれば、ステップＳ３０６’の処理に進み、ループ６を抜けるかどうかの判定を行うものとなる。
【０１０８】
被リンク数が２以上であれば、ＣＰＵ１０１は、処理対象となっている参照元のボタンが処理対象となっている参照先のボタンに対して処理対象となっている方向にあるかどうかを判定する。ここでの判定は、参照先のボタンについてはアンカーの付される基準位置を、参照元のボタンについてはボタンの全範囲を基準として行う（ステップＳ３０８）。処理対象となっている参照元のボタンが処理対象となっている参照先のボタンに対して処理対象となっている方向になければ、ステップＳ３０６’の処理に進み、ループ３を抜けるかどうかの判定を行うものとなる。
【０１０９】
処理対象となっている参照元のボタンが処理対象となっている参照先のボタンに対して処理対象となっている方向にあれば、所定対象となっている参照先のボタンにアンカーの付される基準位置から最短距離にある処理対象となっている参照元のボタン上の点を求める（ステップＳ３０９）。
【０１１０】
ＣＰＵ１０１は、処理対象となっている方向が上下または左右の何れかにより数式２または数式３の演算を行って、所定対象となっている参照先のボタンに対する所定対象となっている参照元のボタンの位置関係のスコアを算出する（ステップＳ３１０）。ＣＰＵ１０１は、算出した位置関係のスコアがメインメモリ１０２に記憶されている記録スコアよりも小さいかどうかを判定する（ステップＳ３１１）。算出した位置関係のスコアが記録スコア以上であれば、ステップＳ３０６’の処理に進み、ループ６を抜けるかどうかの判定を行うものとなる。
【０１１１】
算出した位置関係のスコアが記録スコアよりも小さければ、ＣＰＵ１０１は、算出した位置関係のスコアを新たな記録スコアとしてメインメモリ１０２に記憶させる（ステップＳ３１２）。ＣＰＵ１０１は、処理対象となっている参照先のボタンの処理対象となっている方向をリンク元候補としてメインメモリ１０２に記憶する。既にリンク元候補が記憶されていた場合には、リンク元候補を更新して記憶する（ステップＳ３１３）。そして、ステップＳ３０６’の処理に進み、ループ６を抜けるかどうかの判定を行うものとなる。ループ６を抜けると、ステップＳ３０４’の処理に進み、さらにループ５を抜けるかどうかの判定を行うものとなる。
【０１１２】
ループ５を抜けると、ＣＰＵ１０１は、リンク元候補としてメインメモリ１０２に記憶されているボタンの当該方向のリンクに登録されている他のボタンについて、被リンク数テーブル４００に登録されているリンク数を１減少させる（ステップＳ３１４）。ＣＰＵ１０１は、さらに、リンク元候補としてメインメモリ１０２に記憶されているボタンの当該方向のリンクに参照元のボタンのボタンＩＤを登録する。例えば、被リンク数が０であった参照元のボタンがボタン２０６、リンク候補としてボタン２０５の左リンクが記憶されていた場合には、ボタン２０５についてのボタンデータ３００の左リンク３０７にボタン２０６のボタンＩＤを登録する（ステップＳ３１５）。そして、ステップＳ３０１’の処理に進み、ループ４を抜けるかどうかの判定を行うものとなる。ループ４を抜けると、リンク先再設定処理を終了し、図７のフローチャートに復帰する。
【０１１３】
以上のようにして、各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９が設定されると、全てのボタンのボタンデータ３００が整えられていることとなる。プログラムの他の部分の作成も完了していれば、実行用プログラム１１１の完成となり、開発用の機種のＨＤＤ１０５に格納された実行用プログラム１１１をＣＤ−ＲＯＭ／ＤＶＤドライブ１０６により記録媒体１２１に書き出すことができる。
【０１１４】
記録媒体１２１に書き込まれた実行用プログラムを実行用の機種のＣＤ−ＲＯＭ／ＤＶＤドライブ１０６により読み取り、ＨＤＤ１０５に格納させると、実行用の機種で当該実行用プログラム１１１を実行することができる。なお、開発用の機種では、記録媒体１２１に書き出さなくても、そのまま実行用プログラム１１１を実行できることとなる。以下、実行用プログラム１１１の実行による実行用の機種における処理（開発用の機種でも可能な処理）について説明する。ここでは、本発明に関連する処理として、メニュー画面２００が表示されているときの処理を説明する。
【０１１５】
図９は、実行用の機種においてメニュー画面２００が表示装置１０４に表示される際に行われる処理を示すフローチャートである。メニュー画面２００を表示装置１０４に表示させる際には、ＣＰＵ１０１は、ボタン２０１〜２０９のうちの先頭位置（すなわち、左上の位置）にあるボタン（図２の例ではボタン２０１）についてのアンカー表示フラグ３１０をセットする（ステップＳ４０１）。ＣＰＵ１０１は、アンカー表示フラグ３１０のセットされている先頭位置のボタンにアンカー２１０を付して、ボタン２０１〜２０９を表示装置１０４に表示させる（ステップＳ４０２）。
【０１１６】
次に、ＣＰＵ１０１は、入力装置１０３から順送りキーの入力があったかどうかを判定する（ステップＳ４０３）。順送りキーの入力があった場合には、ボタン２０１〜２０９のうちの最終位置（すなわち、右下の位置）にあるボタン（図２の例ではボタン２０９）のアンカー表示フラグ３１０がセットされ、当該最終位置のボタンにアンカー２１０が付されているかどうかを判定する（ステップＳ４０４）。
【０１１７】
最終位置のボタンにアンカー２１０が付されているのでなければ、ＣＰＵ１０１は、現在アンカー２１０の付されているボタンの次の位置にあるボタン（図２の例でボタン２０１にアンカーが付されていればボタン２０２）のアンカー表示フラグ３１０をセットし、これまでアンカー２１０の付されていたボタンのアンカー表示フラグ３１０をリセットする（ステップＳ４０５）。そして、ステップＳ４０７の処理に進む。
【０１１８】
最終位置のボタンにアンカー２１０が付されていれば、ＣＰＵ１０１は、先頭位置のボタンのアンカー表示フラグ３１０をセットし、これまでアンカー２１０の付されていた最終位置のボタンのアンカー表示フラグ３１０をリセットする（ステップＳ４０６）。そして、ステップＳ４０７の処理に進む。ステップＳ４０７では、ＣＰＵ１０１は、新たにアンカー表示フラグ３１０のセットされたボタンにアンカー２１０を移動させて、ボタン２０１〜２０９を表示装置１０４に表示させる。そして、ステップＳ４０３の処理に戻る。
【０１１９】
ステップＳ４０３で順送りキーの入力がなければ、ＣＰＵ１０１は、入力装置１０３から逆送りキーの入力があったかどうかを判定する（ステップＳ４０８）。逆送りキーの入力があった場合には、ボタン２０１〜２０９のうちの先頭位置にあるボタンのアンカー表示フラグ３１０がセットされ、当該先頭位置のボタンにアンカー２１０が付されているかどうかを判定する（ステップＳ４０９）。
【０１２０】
先頭位置のボタンにアンカー２１０が付されているのでなければ、ＣＰＵ１０１は、現在アンカー２１０の付されているボタンの前の位置にあるボタン（図２の例でボタン２０２にアンカーが付されていればボタン２０１）のアンカー表示フラグ３１０をセットし、これまでアンカー２１０の付されていたボタンのアンカー表示フラグ３１０をリセットする（ステップＳ４１０）。そして、ステップＳ４１２の処理に進む。
【０１２１】
先頭位置のボタンにアンカー２１０が付されていれば、ＣＰＵ１０１は、最終位置のボタンのアンカー表示フラグ３１０をセットし、これまでアンカー２１０の付されていた先頭位置のボタンのアンカー表示フラグ３１０をリセットする（ステップＳ４１１）。そして、ステップＳ４１２の処理に進む。ステップＳ４１２では、ＣＰＵ１０１は、新たにアンカー表示フラグ３１０のセットされたボタンにアンカー２１０を移動させて、ボタン２０１〜２０９を表示装置１０４に表示させる。そして、ステップＳ４０３の処理に戻る。
【０１２２】
ステップＳ４０８で逆送りキーの入力もなければ、ＣＰＵ１０１は、入力装置１０３から上下左右の何れかの方向キーの入力があったかどうかを判定する（ステップＳ４１３）。何れかの方向キーの入力があった場合には、ＣＰＵ１０１は、アンカー表示フラグ３１０がセット、すなわち現時点でアンカー２１０の付されているボタンの入力された方向のリンクを参照する。例えば、現時点でボタン２０１にアンカー２１０が付されており、下方向キーが入力されたのであれば、ボタン２０１についてのボタンデータ３００の下方向リンク３０９を参照する（ステップＳ４１４）。
【０１２３】
ＣＰＵ１０１は、ここでリンクを参照した結果として、当該ボタンの当該方向のリンクに他のボタンのボタンＩＤが登録されているかどうかを判定する（ステップＳ４１５）。当該ボタンの当該方向のリンクに他のボタンのボタンＩＤが登録されていなければ、そのままステップＳ４０３の処理に戻る。すなわち、アンカー２１０の位置を移動させることなく、メニュー画面２００の表示をそのまま継続することとなる。
【０１２４】
当該ボタンの当該方向のリンクに他のボタンのボタンＩＤが登録されていれば、ＣＰＵ１０１は、登録されてるボタンＩＤ３０１に対応するアンカー表示フラグ３１０をセットし、これまでアンカー２１０の付されていたボタンのアンカー表示フラグ３１０をリセットする（ステップＳ４１６）。ＣＰＵ１０１は、新たにアンカー表示フラグ３１０のセットされたボタンにアンカー２１０を移動させて、ボタン２０１〜２０９を表示装置１０４に表示させる（ステップＳ４１７）。そして、ステップＳ４０３の処理に戻る。
【０１２５】
ステップＳ４１３で何れの方向キーの入力もなかった場合には、ＣＰＵ１０１は、入力装置１０３から確定キーの入力があったかどうかを判定する（ステップＳ４１８）。確定キーの入力もなければ、そのままステップＳ４０３の処理に戻る。確定キーの入力があった場合には、ＣＰＵ１０１は、図９のフローチャートの処理から、アンカー２１０の付されているボタン、すなわちアンカー表示フラグ３１０のセットされているボタンについての処理リンク３０３で示されている処理に制御を移すものとなる。
【０１２６】
以上説明したように、この実施の形態では、実行用の機種においてメニュー画面２００を表示した状態で入力装置１０３の上下左右の方向キーを入力した場合のアンカー２１０の移動先は、ボタン毎にボタンデータ３００の右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９として記憶されている。そして、例えば、ボタン２０１にアンカー２１０が位置する状態で右方向キーの入力があった場合には、ボタン２０１の右リンク３０６に他のボタンのボタンＩＤが登録されていれば、当該他のボタンにアンカー２１０が移動するものとなる。このため、メニュー画面２００におけるボタンの配置が規則的なものでなかったとしても、ボタン間でアンカー２１０の位置を移動させることができる。
【０１２７】
ここで、各ボタンのボタンデータ３００に登録されている右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９は、開発用の機種において実行用プログラム１１１を作成する際において、ボタン毎、方向毎に他のボタンに対する位置関係のスコアを算出して、この位置関係のスコアに応じて自動的に設定されるものとなっている。このため、各ボタンについての右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の設定について、開発者は、手作業での煩わしい検証を行わなくても済む。
【０１２８】
また、位置関係のスコアは、これが小さい他のボタンほど右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９として設定されやすいものとなっているが、右リンク３０６及び左リンク３０７を求める際はＹ方向の成分がＸ方向の成分の３倍に評価され、上リンク３０８及び下リンク３０９を求める際はＸ方向の成分がＹ方向の成分の３倍に評価される。このように位置関係のスコアを求める際に重み付けを行うことで、ある程度は遠くてもなるべく入力された方向に近い方向にあるボタンにアンカー２１０が移動されるが、方向が近くても遠すぎるボタンにはアンカー２１０が移動されないというように、可能な限りユーザの意図を反映してアンカー２１０が移動されるようにすることができる。
【０１２９】
また、位置関係のスコアを求める式は、数式２、数式３に示したように、リンク元のボタンについてアンカー２１０の付される基準位置と、リンク先の他のボタンでこの基準位置から最短距離となる点の距離を求める式に重みを付けただけのものであるので、比較的簡単な計算で位置関係のスコアを算出することができる。また、リンク先の他のボタンについて最短距離となる点で位置関係のスコアを算出するので、複数のボタンの形状（ここでは、縦横比）や大きさが区々であったとしても、適切な位置関係のスコアを算出することができる。リンク元のボタンについてはアンカー２１０の付される位置を基準位置としているので、アンカー２１０の位置から考えて最も適切な位置にあるボタンにアンカー２１０が移動されるようにすることができる。
【０１３０】
また、各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９は、位置関係のスコアに応じて自動的に設定することが可能であるが、予め特定のボタンの特定の方向についてのリンク先を手動で設定することができるようになっている。各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９のうちで自動設定されるのは、予め手動設定のされなかったものである。このため、例えば、特定のボタンについて位置関係としてはより適切な他のボタンがあったとしても、当該ボタンの処理の関連性としてリンク先に設定するのに適切なボタンがあれば、優先的に右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の設定を行うことで、ユーザが処理を選択しやすいメニュー画面２００を生成することができるようになる。
【０１３１】
ところで、各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９を位置関係のスコアに応じて自動設定する場合には、入力装置１０３の方向キーの入力によっては何れのボタンからもアンカー２１０が移動してこないこととなるボタンが発生し得る。ここで、開発支援ツール１１２においては、被リンク数テーブル４００が用意され、被リンク数４０２が０となっているボタンがあれば、何れかのボタンの何れかの方向でアンカー２１０が移動してくるようにリンク先再設定処理を行っている。このため、アンカー２１０の移動してこないボタンがなくなるように、容易にリンク先の修正を行うことができる。
【０１３２】
しかも、リンク先再設定処理においては、被リンク数４０２が０であったボタンを参照元、他のボタンの各方向を参照先として位置関係のスコアを算出し、この位置関係のスコアに応じて被リンク数が０であったボタンをリンク先とする修正を行うようにしている。このため、最初の自動設定で被リンク数が０であったボタンに対しても、適切な方向性でアンカー２１０が移動してくるようにすることができる。また、被リンク数が０であったボタンをリンク先とするように修正できるのは、最初の自動設定でリンク先としたボタンの被リンク数４０２が２以上であったものに限られている。このため、リンク先の修正を行うことで、新たに被リンク数が０となるボタンを発生させるといった問題を生じさせることがない。
【０１３３】
さらに、リンク先再設定処理を終了した後には、特定のボタンの特定の方向についてのリンク先を手動で設定変更することができるようになっている。このため、例えば、特定のボタンについて位置関係としてはより適切な他のボタンがリンク先として設定されたとしても、当該ボタンの処理の関連性としてリンク先に設定するのに適切な他のボタンがあれば、右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の設定を変更することで、ユーザが処理を選択しやすいメニュー画面２００を生成することができるようになる。
【０１３４】
また、実行用プログラム１１１の開発途上においては、メニュー画面２００における各ボタンの位置を任意に変更することが可能であるが、ボタンの位置が変更されれば、新たなボタンの位置で各ボタンについての位置関係のスコアが算出され、各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９を設定するものとしている。このため、ボタンの位置に応じて常に適切な状態で各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９が設定されるものとなる。
【０１３５】
［第２の実施の形態］
上記の第１の実施の形態では、プログラムの開発時においてメニュー画面２００に表示される各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９を設定する場合について説明した。これは、メニュー画面２００に表示される各ボタンに対応付けられた処理が、実行用の機種のユーザによっていつでも選択可能であることを前提としたものである。
【０１３６】
もっとも、プログラムによっては処理の進行状況に応じて必ずしも全てのボタンに対応付けられた処理をユーザが選択できるとは限らないものがある。ユーザが選択できない処理に対応したボタンにアンカーが移動されると、ユーザが当該処理を選択できるかどうかを迷ってしまう場合がある。そこで、この実施の形態では、メニュー画面２００が表示されるときに、ユーザが有効に選択できるボタンの間でのみアンカーが移動できるようにしたものを説明する。
【０１３７】
この実施の形態では、メニュー画面２００に表示される各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９は、開発時に予めなされるのではなく、実行時に実行用プログラム１１１によりなされるものとなる。但し、各ボタンについてのメニュー画面２００上における表示位置やサイズは、記録媒体１２１に格納されて実行用プログラム１１１として提供されるまでに開発時において予め設定されているものとする。図４に示した被リンク数テーブル４００は、ここでは実行用プログラム１１１により生成されて、メインメモリ１０２に記憶される。
【０１３８】
図１０は、この実施の形態においてメニュー画面２００に表示される各ボタンのボタンデータを示す図である。このボタンデータ３００’には、ボタンＩＤ３０１、ボタン名３０２、処理リンク３０３、左上位置３０４、ボタンサイズ３０５、右リンク３０６、左リンク３０７、上リンク３０８、下リンク３０９、及びアンカー表示フラグ３１０に加えて、ボタン有効フラグ３２０が含まれている。
【０１３９】
ボタンＩＤ３０１、ボタン名３０２、処理リンク３０３、左上位置３０４、及びボタンサイズ３０５は、第１の実施の形態におけるものと同じで、開発時において予め設定されて、ボタンデータ３００として設定されている。右リンク３０６、左リンク３０７、上リンク３０８、下リンク３０９、及びアンカー表示フラグ３１０は、メニュー画面２００の表示の際に設定される。ボタン有効フラグ３２０は、当該ボタンに対応付けられた処理が選択可能な状態でセットされ、当該ボタンに対応付けられた処理が選択不能な状態でリセットされるフラグである。
【０１４０】
以下、この実施の形態における処理について説明する。この実施の形態においても、本発明に関わるのは、メニュー画面２００を表示装置１０４に表示させる際の処理と、メニュー画面２００に表示される各ボタンを有効（対応する処理を選択可能）としたり、無効（対応する処理を選択不能）とする処理である。以下では、これらの処理のみを説明するものとする。
【０１４１】
図１１は、この実施の形態においてメニュー画面２００が表示装置１０４に表示される際に行われる処理を示すフローチャートである。ＣＰＵ１０１は、ボタン有効フラグ３２０がセットされてるボタンの中で先頭位置にあるボタンについて、そのアンカー表示フラグ３１０をセットする（ステップＳ５０１）。次に、ＣＰＵ１０１は、リンク先設定処理を行って、有効なボタンのみを対象として、右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９を設定するリンク先設定処理を行う（ステップＳ５０２）。
【０１４２】
ステップＳ５０２のリンク先設定処理は、図７に示したリンク設定処理とほぼ同じであるが、リンク先の手動設定（ステップＳ２０２〜Ｓ２０４、及びＳ２１９〜Ｓ２２１）がない点で、図７に示したリンク先設定処理と異なる。また、ループ１で順次処理対象とされるリンク元のボタンは、ボタン有効フラグ３２０がセットされているボタンに限られ、ループ３で順次処理対象とされるリンク先のボタンも、ボタン有効フラグ３２０がセットされているボタンに限られる。さらに、リンク先設定処理においてリンク先再設定処理を行う場合にも、ループ４で順次処理対象とされる参照元のボタンも、ボタン有効フラグ３２０がセットされているボタンに限られ、ループ５で順次処理対象となる参照先のボタンも、ボタン有効フラグ３２０がセットされているボタンに限られる。
【０１４３】
リンク先設定処理が終了し、ボタン有効フラグ３２０がセットされている各ボタンについて右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９が設定されると、ＣＰＵ１０１は、アンカー表示フラグ３１０のセットされているボタンにアンカー２１０を付して、ボタン２０１〜２０９を表示装置１０４に表示させる。但し、ここでは、ボタン有効フラグ３２０がセットされているボタンは明表示、ボタン有効フラグ３２０のリセットされているボタンは暗表示して、各ボタンを表示させる（ステップＳ５０３）。
【０１４４】
表示装置１０４にメニュー画面２００が表示されると、ＣＰＵ１０１は、図９のステップＳ４０３〜Ｓ４１８と同様の処理を行うものとなる（ステップＳ５０４）。但し、順送りキーの入力があった場合には、ボタン有効フラグ３２０がセットされているボタンのみを対象として表示位置に応じた順番でアンカー表示フラグ３１０をセットし、アンカー２１０を移動させる。また、逆送りキーの入力があった場合も、ボタン有効フラグ３２０がセットされているボタンのみを対象として表示位置に応じて逆順でアンカー表示フラグ３１０をセットし、アンカー２１０を移動させる。
【０１４５】
図１２は、この実施の形態において、メニュー画面のボタンから選択されて実行される処理の例を示すフローチャートである。ここでは、処理Ｂに対応したボタンを有効なものとする処理を含む処理Ａを例として説明する。ＣＰＵ１０１は、処理Ａの実行状態に応じた処理を順次行う（ステップＳ６０１）。ここで行った処理により、処理Ｂに対応したボタンを有効なものとする特定のイベントが発生したかどうかを、ＣＰＵ１０１が判定する（ステップＳ６０２）。特定のイベントが発生していなければ、ステップＳ６０１の処理に戻る。
【０１４６】
特定のイベントが発生した場合には、ＣＰＵ１０１は、処理Ｂに対応するボタンのボタン有効フラグ３２０をセットする（ステップＳ６０３）。その後、ＣＰＵ１０１は、処理Ｂに対応するボタンのボタン有効フラグ３２０をセットした後の処理として定められた所定の事後処理を行う。この事後処理は、処理Ａを終了させるものであってもよい（ステップＳ６０４）。
【０１４７】
なお、ボタン有効フラグ３２０をリセットする場合の処理も、図１２と同様の処理により行うことができる。例えば、処理Ｄに対応したボタンを無効なものとする処理を含む処理Ｃでは、特定のイベントが発生すると、処理Ｄに対応するボタンのボタン有効フラグ３２０をリセットするものとすることができる。同一の処理に対応するボタン有効フラグ３２０が、他の処理においてセットされ、さらに他の処理においてリセットされるものとしてもよい。
【０１４８】
以上説明したように、この実施の形態では、各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９は、開発時において予め設定されてボタンテーブル３００に登録されているものではなく、実行用プログラム１１１によりメニュー画面２００を表示装置１０４に表示させるときに、ボタン間の位置関係のスコアに応じて設定されるようになっている。各ボタンは、ボタン有効フラグ３２０のセット／リセットにより対応する処理を選択できたりできなかったりするものである。
【０１４９】
ここでは、メニュー画面２００を表示させる度に各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９を設定するので、処理を選択できるボタンが変化しても、適切なリンクを設定することができる。また、右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の設定対象となるボタンは、リンク元についてもリンク先についてもボタン有効フラグ３２０がセットされているものだけである。このため、ユーザは、メニュー画面２００において処理を選択できるボタンの間でアンカー２１０を移動させて、所望のボタンに応じた処理を選択できるようになる。さらに、メニュー画面２００において、ボタン有効フラグ３２０がセットされているか否かに応じてボタンの表示態様が異なっている。このため、ユーザは、どのボタンに対応した処理が選択可能となっているのかが容易に分かるようになる。
【０１５０】
また、この実施の形態では、実行用プログラム１１１により被リンク数テーブル４００を生成するものとなり、図８に示したリンク先再設定処理と同様の処理も行うことができるので、メニュー画面２００を生成する際に各ボタンの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９を設定しても、方向キーの入力によってアンカー２１０が移動してこなくなるボタンが発生するのを防ぐことができる。
【０１５１】
［第１、第２の実施の形態の変形例］
本発明は、上記の第１、第２の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形態様について説明する。
【０１５２】
上記の第１、第２の実施の形態では、メニュー画面２００に表示されるボタンの形状は、長方形形状に統一されているものとしていた。しかしながら、ボタンの形状は、これに限るものではなく、円形、楕円形や長方形以外の多角形など、任意の形状とすることができる。例えば、円形状のボタンを適用する場合には、左上位置３０４に代えてボタンの中心位置を、ボタンサイズに代えてボタンの大きさの半径を、ボタンデータ３００として記憶させておけばよい。また、ボタン毎に異なる形状であってもよい。
【０１５３】
上記の第１、第２の実施の形態では、リンク元であるアンカー２１０の位置するボタンからリンク先となる他のボタンへの位置関係のスコアは、リンク元のボタンではアンカー２１０の位置に応じた基準位置を、リンク先のボタンでは当該基準位置から最短距離にある点の位置を対象として、求められるものとしていた。しかしながら、ボタンとボタンとの位置関係のスコアを求める際の対象となる互いのボタンの位置はこれに限るものではない。
【０１５４】
例えば、互いのボタンの特定位置（例えば、左上位置３０４、重心位置）を対象として、位置関係のスコアを求めるものとしてもよい。リンク元のボタンだけではなく、リンク先のボタンについてもアンカーの付されることとなる位置を対象として、位置関係のスコアを求めるものとしてもよい。或いは、互いのボタンの範囲内で距離が最小となる点を双方のボタンについて求め、これらの点の位置を対象として位置関係のスコアを求めるものとしてもよい。
【０１５５】
上記の第１、第２の実施の形態では、右リンク３０６または左リンク３０７を設定する場合には数式２に従って、上リンク３０８または下リンク３０９を設定する場合には数式３に従って、位置関係のスコアを算出するものとしていた。しかしながら、位置関係のスコアを算出するための指揮はこれに限るものではなく、右リンク３０６、左リンク３０７、上リンク３０８または下リンクを設定しようとするボタンの基準位置を（Ｘｓ，Ｙｓ）、この基準位置（Ｘｓ，Ｙｓ）から最短距離にある他のボタンの点の位置を（Ｘｏ，Ｙｏ）とした場合に、数式４に従って位置関係のスコアを求めることができる。
【０１５６】
（数４）
α（Ｘｏ−Ｘｓ）＾２＋β（Ｙｏ−Ｙｓ）＾２
但し、α、βは、０より大きい定数であって、右リンク３０６または左リンク３０７を算出する場合には、α＜βであり、上リンク３０８または下リンク３０９を算出する場合には、α＞βである。
【０１５７】
また、位置関係のスコアを求める式としては、例えば、数式５や数式６のようなものも適用することができる。
【０１５８】
（数５）
α×｜Ｘｏ−Ｘｓ｜＋β×｜Ｙｏ−Ｙｓ｜
但し、α、βは、０より大きい定数であって、右リンク３０６または左リンク３０７を算出する場合には、α＜βであり、上リンク３０８または下リンク３０９を算出する場合には、α＞βである。
【０１５９】
（数６）
α／（（Ｘｏ−Ｘｓ）＾２）＋β／（（Ｙｏ−Ｙｓ）＾２）
但し、α、βは、０より大きい定数であって、右リンク３０６または左リンク３０７を算出する場合には、α＞βであり、上リンク３０８または下リンク３０９を算出する場合には、α＜βである。
【０１６０】
このように位置関係のスコアは、Ｘ方向及びＹ方向の座標の差分を２乗したものに限るものではなく、さらに数式７に示す一般式で表すことができる。
【０１６１】
（数７）
α×ｆ（Ｘｏ−Ｘｓ）＋β×ｆ（Ｙｏ−Ｙｓ）
但し、ｆ（ｋ）は、ｋを用いた所定の演算を表し、αとβの大小関係は、右リンク３０６または左リンク３０７を算出する場合と、上リンク３０８または下リンク３０９を算出する場合とで逆になる。
【０１６２】
上記の第１、第２の実施の形態では、全てのボタンをリンク先のボタンとして右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９を設定した後に、なおも被リンク数４０２が０となっているボタンが存在すれば、リンク先再設定処理において当該ボタンが何れかのボタンの何れかの方向のリンクからのリンク先となるように、リンク先となるボタンの再設定を自動的に行っていた。これにより、入力装置１０３の方向キーをどのように操作してもアンカー２１０の移動してこないボタンが発生するのを防ぐものとしていた。
【０１６３】
しかしながら、第２の実施の形態では、入力装置１０３の方向キーをどのように操作してもアンカー２１０の移動してこないボタンが発生するのを防ぐために、必ずしもリンク先の再設定を自動的に行う処理を行わなければならないが、第１の実施の形態では、必ずしもこのような自動的な設定は必要ない。例えば、被リンク数４０２が０となっているボタンが存在する場合には、そのようなボタンを表示装置１０４に表示するだけであってもよい。
【０１６４】
また、単に被リンク数４０２が０となっているボタンを表示装置１０４に表示するだけではなく、そのようなボタンをリンク先に設定することが可能なリンク元のボタン及びリンクの方向を表示装置１０４に表示するものとしてもよい。ここで、表示装置１０４に表示されるボタン及び方向は、被リンク数４０２が２以上となっているボタンをリンク先とするものと言うことになる。
【０１６５】
このように被リンク数４０２が０となっているボタンや、これをリンク先に設定することが可能なリンク元のボタン及びリンクの方向を表示装置１０４に表示するものとすることで、ステップＳ２１９〜Ｓ２２１において開発者がリンク先を手動で変更するものとしても、リンク先をどのように変更すればよいかが開発者に容易に分かるようになり、煩雑な作業が必要となるのをある程度まで防ぐことができるようになる。
【０１６６】
上記の第２の実施の形態では、ボタン有効フラグ３２０がセットされているボタンは明表示、ボタン有効フラグ３２０のリセットされているボタンは暗表示して、メニュー画面２００において各ボタンを表示していた。もっとも、ボタン有効フラグ３２０がセットされているか否かを区別可能とする表示態様の差はこれに限るものではなく、ボタン有効フラグ３２０のリセットされているボタンは、背景色に対して半透明画像で表示したり、ボタン名３０２をボタン内に表示しないものとしてもよい。また、ボタン有効フラグ３２０のセットされているボタンはメニュー画面２００において表示するが、ボタン有効フラグ３２０のリセットされているボタンはメニュー画面２００において表示しないものとしてもよい。
【０１６７】
上記の第２の実施の形態では、メニュー画面２００に表示される各ボタンは、ボタン有効フラグ３２０をセット／リセットすることで、対応する処理を選択可能にしたり選択不能にしたりすることがあったが、各々のボタンのメニュー画面２００における表示位置が変わることはなかった。もっとも、メニュー画面２００に表示される各ボタンの表示位置も、入力装置１０３からの入力によってユーザが変更できるようにしたり、或いは処理の進行状況に応じて変更されるものとしてもよい。
【０１６８】
ここで、少なくとも１のボタンについて表示位置を変更する旨が指示された場合には、変更された位置で新たにメニュー画面２００を表示装置１０４に表示させるものとし、この際に、リンク先設定処理もやり直すものとしてもよい。これにより、ボタンの位置が変更されても、新たなボタンの位置に応じて各ボタンからの右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の設定を常に適切なものとすることができる。
【０１６９】
なお、ボタン有効フラグ３２０のリセットされているボタンについては、リンク元としてもリンク先としても右リンク３０６、左リンク３０７、上リンク３０８及び下リンク３０９の設定対象とならないので、その表示位置を変更する旨が指示されたとしても、メニュー画面２００の表示を新たに行うのみで、リンク先設定処理をやり直さないものとしても構わない。
【０１７０】
上記の第１の実施の形態では、開発用の機種も実行用の機種も、ハードウェア的には同一構成のコンピュータ装置により実現されるものとしていた。しかしながら、開発用の機種と実行用の機種とが異なるものであってもよい。例えば、実行用の機種としては、ゲーム専用機、カーナビゲーションシステム、デジタル家電、携帯電話機などを適用することができ、これらの実行用の機種で実行される実行用プログラム１１１を開発するために、パーソナルコンピュータやワークステーションなどを開発用の機種として適用することができる。
【０１７１】
上記の第１の実施の形態では、開発支援ツール１１２のプログラムは、記録媒体１２１に格納されて配布され、開発用の機種のＨＤＤ１０５にインストールされて格納されるものとしていた。また、開発用の機種で作成された実行用プログラム１１１のプログラム及びデータは、記録媒体１２１に書き出されて配布され、実行用の機種のＨＤＤ１０５にインストールされて格納されるものとしていた。上記の第２の実施の形態では、実行用プログラム１１１が記録媒体１２１に格納されて配布され、実行用の機種となるコンピュータ装置のＨＤＤ１０５にインストールされて格納されるものとしていた。
【０１７２】
これに対して、開発用の機種においては開発支援ツール１１２を、ＨＤＤ１０５に予め格納して適用してもよい。また、開発用の機種で作成された実行用プログラムをＨＤＤ１０５に予め格納した実行用の機種を提供するものとしてもよい。開発支援ツール１１２、実行用プログラム１１１ともに、インターネット上に存在するサーバ装置が有する固定ディスク装置に格納しておき、開発用の機種、実行用の機種として適用されるコンピュータ装置にインターネットを介して配信するものとしてもよい。例えば、実行用の機種において、サーバ装置から受信した実行用プログラム１１１のプログラム及びデータは、ＨＤＤ１０５に保存し、実行時にメインメモリ１０２にロードすることができる。
【図面の簡単な説明】
【０１７３】
【図１】本発明の第１の実施の形態において適用されるコンピュータ装置の構成を示すブロック図である。
【図２】図１の実行用プログラムの実行時に表示装置に表示されるメニュー画面を示す図である。
【図３】本発明の第１の実施の形態において、メニュー画面に表示される各ボタンについてのボタンデータの構成を示す図である。
【図４】メニュー画面に表示される各ボタンについての被リンク数を登録する被リンク数テーブルを示す図である。
【図５】メニュー画面に表示される各ボタンの右リンク、左リンク、上リンク及び下リンクを自動設定する手法を模式的に示す図である。
【図６】開発用の機種において実行されるメニュー設定処理を示すフローチャートである。
【図７】図６のリンク先設定処理を詳細に示すフローチャートである。
【図８】図７のリンク先再設定処理を詳細に示すフローチャートである。
【図９】実行用の機種においてメニュー画面が表示される際に実行される処理を示すフローチャートである。
【図１０】本発明の第２の実施の形態において、メニュー画面に表示される各ボタンについてのボタンデータの構成を示す図である。
【図１１】本発明の第２の実施の形態において、メニュー画面が表示される際に実行される処理を示すフローチャートである。
【図１２】本発明の第２の実施の形態において、メニュー画面のボタンから選択されて実行される処理の例を示すフローチャートである。
【符号の説明】
【０１７４】
１０１  ＣＰＵ
１０２  メインメモリ
１０３  入力装置
１０４  表示装置
１０５  ＨＤＤ
１０６  ＣＤ−ＲＯＭ／ＤＶＤドライブ
１１１  実行用プログラム
１１２  開発支援ツール
１２１  記録媒体
２００  メニュー画面
２０１〜２０９  ボタン
２１０  アンカー
３００  ボタンデータ
４００  被リンク数テーブル
【図１】
2006331034.tif 000003
【図２】
2006331034.tif 000004
【図３】
2006331034.tif 000005
【図４】
2006331034.tif 000006
【図５】
2006331034.tif 000007
【図６】
2006331034.tif 000008
【図７】
2006331034.tif 000009
【図８】
2006331034.tif 000010
【図９】
2006331034.tif 000011
【図１０】
2006331034.tif 000012
【図１１】
2006331034.tif 000013
【図１２】
2006331034.tif 000014