説明

表示制御プログラムおよび表示制御装置

【課題】スクロール操作に対する情報の把握を容易にするとともに表示情報の視認性を高めることができる表示制御プログラムおよび表示制御装置を提供する。
【解決手段】ユーザの操作データが示す操作内容に基づいてスクロール量を算出し、表示装置に表示される表の表示範囲を、スクロール量に基づいて当該表に対して移動させる。各描画領域に対して、それぞれ文字列を描画する描画開始位置が表示範囲内か否かを判断し、描画開始位置が表示範囲外である描画領域に対して、当該描画領域の描画開始位置を表示範囲内の当該描画領域内に変更する。そして、描画領域にそれぞれ設定されている描画開始位置から当該描画領域内に文字列を配置して、表示範囲内の表を、配置した文字列と共に表示装置に表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、表示制御プログラムおよび表示制御装置に関し、より特定的には、複数の描画領域内にそれぞれ文字列を表示する表示制御プログラムおよび表示制御装置に関する。
【背景技術】
【0002】
従来、画像や文字等の多量の情報を画面に表示する際に、表示装置の一画面内に全ての情報が表示できないときは、表示情報をスクロール等することによって画面内に表示される内容を変更するようにしている。例えば、電子番組表のように、時間軸と放送局軸とに応じて複数の番組セルがマトリックス状に配置された情報を表示することがある。このような電子番組表をスクロールして表示する方法として、時間軸の1時間分をスクロール単位として電子番組表をページ移動またはページ切換を行う表示方法がある(例えば、特許文献1参照)。また、インターネット等のwebブラウザ上で表示される電子番組表では、ユーザのポインティング等のスクロール操作に応じて電子番組表の表示範囲が移動するものが知られている(例えば、非特許文献1)。
【特許文献1】特開2002−320166号公報
【非特許文献1】“インターネットTVガイド”、[online]、株式会社東京ニュース通信社、[平成19年12月18日検索]、インターネット<URL:http://www.tvguide.or.jp/>
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上記特許文献1で開示された表示方法は、電子番組表のページ移動またはページ切換を行った結果、電子番組表の番組セル情報の一部が表示画面外に出てしまった場合、その表示をどのように制御するかについて記載されていない。また、上記非特許文献1で記載された電子番組表は、ユーザのスクロール操作により、電子番組表の番組セル情報の一部が表示領域外に出てしまうと、表示領域内には表示領域内となった番組セル情報の残りの部分のみが表示される。したがって、ユーザは、一部が領域外に出てしまった番組セル情報の内容を的確に把握することが困難になるとともに、視認性も悪くなってしまう。
【0004】
それ故に、本発明の目的は、スクロール操作に対する情報の把握を容易にするとともに表示情報の視認性を高めることができる表示制御プログラムおよび表示制御装置を提供することである。
【課題を解決するための手段】
【0005】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号、ステップ番号(ステップをSと略称しステップ番号のみを記載する)、図面番号等は、本発明の理解を助けるために後述する最良の形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0006】
第1の発明は、複数の描画領域内にそれぞれ所定の文字列を描画して、当該描画領域を表形式に配列した表を表示(図9〜図12)する装置(5)のコンピュータ(10)で実行される表示制御プログラムである。表示制御プログラムは、操作データ取得手段(ステップ53を実行するCPU10;以下、単にステップ番号のみ記載する)、スクロール量算出手段(S55)、表示範囲移動手段(S56)、描画開始位置判断手段(S131)、描画開始位置変更手段(S133)、文字列配置手段(S132、S134)、および表示制御手段(S132、S134)として、コンピュータを機能させる。操作データ取得手段は、ユーザの操作データ(Da)を取得する。スクロール量算出手段は、操作データが示す操作内容に基づいて、スクロール量(scv)を算出する。表示範囲移動手段は、表示装置(2)に表示される表の表示範囲を、スクロール量に基づいて当該表に対して移動させる(図24)。描画開始位置判断手段は、各描画領域に対して、それぞれ文字列を描画する描画開始位置が表示範囲内か否かを判断する。描画開始位置変更手段は、描画開始位置が表示範囲外であると描画開始位置判断手段が判断した描画領域に対して、当該描画領域の描画開始位置を表示範囲内の当該描画領域内に変更する(xsc,ysc)。文字列配置手段は、描画領域にそれぞれ設定されている描画開始位置から、当該描画領域内に文字列を配置する。表示制御手段は、表示範囲内の表を、文字列配置手段が配置した文字列と共に表示装置に表示する。
【0007】
第2の発明は、上記第1の発明において、描画開始位置判断手段は、その一部分が表示範囲内に含まれて他の部分が表示範囲外となる描画領域に対して、描画開始位置が表示範囲内か否かを判断する。
【0008】
第3の発明は、上記第1または第2の発明において、表示範囲移動手段は、スクロール量に基づいて、表示範囲を描画領域のスクロール方向の長さより短い距離(va)だけ単位時間毎に移動させる。描画開始位置判断手段は、表示範囲移動手段が表示範囲を移動させる毎に、描画開始位置が表示範囲内か否かを判断する。
【0009】
第4の発明は、上記第1または第2の発明において、スクロール量算出手段は、操作データが示す操作内容に基づいて、単位時間毎のスクロール量を示すスクロール速度(va)を当該単位時間毎に算出する。表示範囲移動手段は、スクロール速度に基づいて単位時間毎に当該表に対して表示範囲を移動させる。
【0010】
第5の発明は、上記第1または第2の発明において、描画領域拡大縮小手段(S57)、文字サイズ判定手段(S98〜S101)、および文字サイズ変更手段(S97、S102)として、さらにコンピュータを機能させる。描画領域拡大縮小手段は、その一部分が表示範囲内に含まれて他の部分が表示範囲外となる描画領域に対して、当該描画領域を表示範囲内に含まれる領域のみに拡大縮小する。文字サイズ判定手段は、描画領域拡大縮小手段が描画領域を拡大縮小した場合、当該描画領域に描画する文字列の文字サイズを変更するか否かを判定する。文字サイズ変更手段は、文字サイズ判定手段が描画領域に描画する文字サイズを変更すると判定した場合、当該描画領域に描画する文字サイズを変更する。文字列配置手段は、文字サイズ変更手段が変更した描画領域の文字サイズで、当該描画領域の描画開始位置から当該描画領域内に文字列を配置する。
【0011】
第6の発明は、上記第5の発明において、文字サイズ判定手段は、文字数算出手段(S98)および文字数判定手段(S99〜S100)を含む。文字数算出手段は、描画領域の大きさに基づいて、当該描画領域内に配置可能な文字数を算出する。文字数判定手段は、文字数算出手段によって算出された描画領域内に配置可能な文字数が所定数(3文字)以上か否かに応じて、当該描画領域に描画する文字列の文字サイズを変更するか否かを判定する。文字サイズ変更手段は、文字数判定手段によって文字数が所定数以上であると判定された描画領域について相対的に大きな文字サイズに変更し、文字数判定手段によって文字数が所定数未満であると判定された描画領域について相対的に小さな文字サイズに変更する。
【0012】
第7の発明は、上記第6の発明において、文字サイズ変更手段は、文字数判定手段によって文字数が所定数未満であると判定された描画領域について、当該描画領域に配置する文字サイズを1段階小さくする(S102)。文字数算出手段は、文字サイズ変更手段が文字サイズを縮小した場合、当該文字サイズを縮小した対象の描画領域の大きさおよび当該縮小後の文字サイズに基づいて、描画領域内に配置可能な文字数をそれぞれ算出する。文字数判定手段は、文字サイズ変更手段が文字サイズを縮小したことに応じて、文字数算出手段が算出した文字数が所定数以上であるか否かを判定する。
【0013】
第8の発明は、上記第7の発明において、文字列配置手段は、文字サイズ変更手段が最小の文字サイズまで縮小した状態で描画領域内に配置可能な文字数が所定数未満であると文字数判定手段が判定した場合、当該描画領域を空白にする(S104)。
【0014】
第9の発明は、上記第6の発明において、文字数算出手段は、行数算出手段(S113)および行別文字数算出手段(S118〜S120)を含む。行数算出手段は、描画領域の一辺の長さおよび当該描画領域に配置する文字サイズに応じた文字の当該一辺方向の長さに基づいて、当該描画領域内に配置可能な文字行数を算出する。行別文字数算出手段は、描画領域の他辺の長さおよび当該描画領域に配置する文字サイズに応じた文字の当該他辺方向の長さに基づいて、当該描画領域内の各行に配置可能な行別文字数を算出する。文字数算出手段は、文字行数および行別文字数を用いて描画領域内に配置可能な文字数を算出する。文字列配置手段は、文字サイズ変更手段が変更した描画領域の文字サイズで、当該描画領域の描画開始位置から文字行数に応じた行数で当該描画領域内に文字列を配置する。
【0015】
第10の発明は、上記第1または第2の発明において、表は、一方の軸が時間軸および他方の軸が放送局軸に定義されたマトリックス状に複数の描画領域を表形式に配列した番組表である。文字列配置手段は、少なくとも番組名を示す文字列を当該番組の放送局および放送時刻に応じた描画領域内に配置する。
【0016】
第11の発明は、複数の描画領域内にそれぞれ所定の文字列を描画して、当該描画領域を表形式に配列した表を表示する表示制御装置である。表示制御装置は、操作データ取得手段、スクロール量算出手段、表示範囲移動手段、描画開始位置判断手段、描画開始位置変更手段、文字列配置手段、および表示制御手段を備える。操作データ取得手段は、ユーザの操作データを取得する。スクロール量算出手段は、操作データが示す操作内容に基づいて、スクロール量を算出する。表示範囲移動手段は、表示装置に表示される表の表示範囲を、スクロール量に基づいて当該表に対して移動させる。描画開始位置判断手段は、各描画領域に対して、それぞれ文字列を描画する描画開始位置が表示範囲内か否かを判断する。描画開始位置変更手段は、描画開始位置が表示範囲外であると描画開始位置判断手段が判断した描画領域に対して、当該描画領域の描画開始位置を表示範囲内の当該描画領域内に変更する。文字列配置手段は、描画領域にそれぞれ設定されている描画開始位置から、当該描画領域内に文字列を配置する。表示制御手段は、表示範囲内の表を、文字列配置手段が配置した文字列と共に表示装置に表示する。
【発明の効果】
【0017】
上記第1の発明によれば、スクロール操作に対する情報の把握を容易にするとともに表示情報の視認性を高めることができる。例えば、スクロール操作によって描画領域の描画開始位置が表示範囲外に出てしまったときは、描画開始位置を表示範囲内の当該描画領域内の位置に変更するので、スクロール操作における各描画領域の文字列情報の把握が容易になるとともに表の視認性を向上させることができる。
【0018】
上記第2の発明によれば、表示範囲の外縁に位置する描画領域に対してのみ描画開始位置判断処理が行われるため、処理対象となる描画領域が少なくなり処理が容易となる。
【0019】
上記第3および第4の発明によれば、描画領域単位よりも細かい単位での滑らかなスクロールを行うことができるとともに、スクロール操作における表示において情報把握の容易性と視認性とを向上させることができる。
【0020】
上記第5の発明によれば、スクロール操作によって各描画領域の一部が表示範囲外となったとき、その描画領域に表示される文字列の文字サイズを適切に変更することができる。
【0021】
上記第6の発明によれば、描画領域のサイズ変化に応じて、所定数以上の文字数が描画できないときは相対的に小さな文字サイズの文字列が表示され、所定数以上の文字数が描画できるときは相対的に大きな文字サイズの文字列が表示されるため、できる限り大きな文字サイズで文字列を表示できるとともに、描画可能な文字数の減少を抑えることができ、情報把握の容易性と視認性とを維持することができる。
【0022】
上記第7の発明によれば、描画領域のサイズ変化によって所定数以上の文字数が描画できないときは、当該所定数以上の文字数が描画できる文字サイズまで文字サイズを縮小するので、描画可能な文字数の減少を抑えることができ、描画領域内に所定数以上の文字数の情報をそれぞれ確保することができる。
【0023】
上記第8の発明によれば、最小の文字サイズでも描画領域内に配置する文字数が所定数未満の場合、当該描画領域が空白で表示されるため、不充分な情報を描画領域内に表示することによる乱雑な表示や視認性の低下を防止することができる。
【0024】
上記第9の発明によれば、簡単な処理で描画領域毎に描画可能な文字数を効率よく算出することができる。また、描画領域内に複数行を用いた文字列描画が可能となるため、スクロール操作によって描画領域が削減されたときに、効率よく所定文字数以上の文字列を配置することができる。
【0025】
上記第10の発明によれば、ユーザのスクロール操作に応じて番組表に記述される番組情報の視認性を高め、番組情報の視認性を高めるための操作性を向上させることができる。
【0026】
本発明の表示制御装置によれば、上述した表示制御プログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0027】
図1を参照して、本発明の一実施形態に係る表示制御プログラムを実行する表示制御装置について説明する。以下、説明を具体的にするために、当該表示制御装置の一例の据置型のゲーム装置本体5を含むゲームシステムについて説明する。なお、図1は据置型のゲーム装置3を含むゲームシステム1の外観図であり、図2はゲーム装置本体5のブロック図である。以下、当該ゲームシステム1について説明する。
【0028】
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置本体5から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、ゲームプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体5に与えるためのコントローラ7とを備えている。
【0029】
また、ゲーム装置本体5は、無線コントローラモジュール19(図2参照)を内蔵する。無線コントローラモジュール19は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体5からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体5とを無線通信によって接続する。さらに、ゲーム装置本体5には、当該ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。
【0030】
また、ゲーム装置本体5には、後述する各種データやゲームソフト処理におけるセーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ17(図2参照)が搭載される。ゲーム装置本体5は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。また、ゲームプログラム等は、光ディスク4に限らず、フラッシュメモリ17に予め記録されたものを実行するようにしてもよい。さらに、ゲーム装置本体5は、フラッシュメモリ17に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置本体5のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0031】
本願発明の表示制御プログラムは、第1の例としてゲーム装置本体5内の不揮発性記憶装置(例えば、フラッシュメモリ17)に予め記録されている。また、本願発明の表示制御プログラムは、第2の例として光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給される。また、本願発明の表示制御プログラムは、第3の例として有線または無線の通信回線を通じてゲーム装置本体5に供給される。そして、当該表示制御プログラムを実行するゲーム装置本体5は、有線または無線の通信回線を通じてゲーム装置本体5に供給される番組表データを用いて、当該番組表データが示す番組表をモニタ2に表示する。
【0032】
コントローラ7は、無線コントローラモジュール19を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報等の送信データを無線送信する。コントローラ7は、主にモニタ2の表示画面に表示されるオブジェクト等を操作するための操作手段である。コントローラ7は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)とが設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7は、ゲーム装置本体5の無線コントローラモジュール19から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
【0033】
次に、図2を参照して、ゲーム装置本体5の内部構成について説明する。図2は、ゲーム装置本体5の構成を示すブロック図である。ゲーム装置本体5は、CPU(Central Processing Unit)10、システムLSI(Large Scale Integration)11、外部メインメモリ12、ROM/RTC(Read Only Memory/Real Time Clock)13、ディスクドライブ14、AV−IC(Audio Video−Integrated Circuit)15、およびフラッシュメモリ17等を有する。
【0034】
CPU10は、フラッシュメモリ17等に記録された表示制御プログラムを実行することによって表示制御処理を実行するものであり、表示制御プロセッサとして機能する。また、CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については、後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出された表示制御プログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置本体5の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ35または外部メインメモリ12に読み出したデータを書き込む。
【0035】
また、システムLSI11には、入出力プロセッサ31、GPU(Graphics Processor Unit)32、DSP(Digital Signal Processor)33、VRAM(Video RAM)34、および内部メインメモリ35が設けられる。図示は省略するが、これらの構成要素31〜35は、内部バスによって互いに接続される。
【0036】
GPU32は、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM34は、GPU32がグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU32は、VRAM34に記憶されたデータを用いて画像データを作成する。
【0037】
DSP33は、オーディオプロセッサとして機能し、内部メインメモリ35や外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。そして、スピーカ2aから音を出力させる場合、DSP33は、上記サウンドデータを読み出し、AV−IC15およびAVコネクタ16を介して、モニタ2に備えるスピーカ2aに出力させる。また、コントローラ7に搭載されたスピーカ706(図7参照)から音を出力させる場合、DSP33は、上記サウンドデータを読み出し、無線コントローラモジュール19およびアンテナ23を介して、音声データをコントローラ7に送信する。
【0038】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、AVコネクタ16を介して、読み出した画像データをモニタ2に出力するとともに、読み出した音声データをモニタ2に内蔵されるスピーカ2aに出力する。これによって、画像がモニタ2に表示されるとともに音がスピーカ2aから出力される。
【0039】
入出力プロセッサ(I/Oプロセッサ)31は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ31は、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、および外部メモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0040】
入出力プロセッサ31は、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ31は、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介して当該データをネットワークに送信する。また、入出力プロセッサ31は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータ(例えば、電子番組表データ)を、ネットワーク、アンテナ22、および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10は、ゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムや表示制御プログラムの実行動作で利用する。フラッシュメモリ17には、ゲーム装置本体5と他のゲーム装置や各種サーバとの間で送受信されるデータの他、上述したようにゲーム装置本体5を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0041】
また、入出力プロセッサ31は、アンテナ23および無線コントローラモジュール19を介して、コントローラ7から送信される操作データ等を受信し、内部メインメモリ35または外部メインメモリ12のバッファ領域に記憶(一時記憶)する。なお、内部メインメモリ35には、外部メインメモリ12と同様に、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりしてもよく、CPU10のワーク領域やバッファ領域として用いられてもかまわない。
【0042】
さらに、入出力プロセッサ31には、拡張コネクタ20および外部メモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ31は、拡張コネクタ20や外部メモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0043】
また、ゲーム装置本体5(例えば、前部主面)には、当該ゲーム装置本体5の電源ボタン24、ゲーム処理のリセットボタン25、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトボタン26等が設けられている。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置本体5の各構成要素に対して、図示しないACアダプタを経て電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置本体5の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0044】
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
【0045】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0046】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。ユーザが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばユーザが十字キー72aを操作することによって、番組表をスクロールさせて表示したり、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0047】
なお、十字キー72aは、上述したユーザの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、ユーザによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。
【0048】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、ユーザがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置本体5が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。例えば、操作ボタン72b(1番ボタン)または操作ボタン72c(2番ボタン)を押下することによって、番組表で表示される各番組の文字サイズを変更することができる。また、操作ボタン72e(マイナスボタン)または操作ボタン72g(プラスボタン)を押下することによって、表示された番組表の時間軸を変更することができる。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、ユーザが不意に誤って押下することのないタイプのボタンである。
【0049】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体5の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、ユーザが不意に誤って押下することのないタイプのボタンである。
【0050】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をユーザに通知するために用いられる。具体的には、無線コントローラモジュール19からコントローラ7へ、複数のLED702のうち、上記コントローラ種別に対応するLEDを点灯させるための信号が送信される。
【0051】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5に示すスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
【0052】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、ユーザがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該ユーザの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。例えば、ユーザが操作ボタン72iを押下しながらコントローラ7で指し示す位置を移動させることによって、番組表をスクロール表示することができる。
【0053】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0054】
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
【0055】
図5において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。また、無線モジュール753(図7参照)およびアンテナ754によって、コントローラ7がワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。
【0056】
また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ7の動きを良好な感度でゲーム装置本体5等が判定することができる。例えば、コントローラ7は、3軸の加速度センサ701を備えている。この3軸の加速度センサ701は、3方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。そして、加速度センサ701でそれぞれ検知された加速度を示すデータは、通信部75に出力される。
【0057】
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
【0058】
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体5から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているユーザの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、ユーザが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
【0059】
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
【0060】
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
【0061】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
【0062】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体5からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体5から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体5から送信された振動データ(例えば、バイブレータ704をONまたはOFFする信号)等に応じて、バイブレータ704を作動させる。
【0063】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、加速度データ、処理結果データ)を無線コントローラモジュール19へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、無線コントローラモジュール19への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術を用いて、操作情報を示す電波信号を所定周波数の搬送波を用いてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からの加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置本体5の無線コントローラモジュール19でその電波信号を受信し、ゲーム装置本体5で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、加速度データ、および処理結果データ)を取得する。そして、ゲーム装置本体5のCPU10は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0064】
ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、ユーザは、一方の手(例えば右手)でコントローラ7を把持する。そして、ユーザは、コントローラ7の前面(撮像情報演算部74が撮像する光の入射口側)がモニタ2に向くようにコントローラ7を把持する。一方、モニタ2の表示画面近傍には、2つのマーカ8Lおよび8Rが設置される(図1参照)。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力し、撮像情報演算部74の撮像対象となる。
【0065】
図8に示すように、マーカ8Lおよび8Rは、それぞれ視野角θ1を有している。また、撮像素子743は、視野角θ2を有している。例えば、マーカ8Lおよび8Rの視野角θ1は共に34°(半値角)であり、撮像素子743の視野角θ2は41°である。そして、撮像素子743の視野角θ2の中にマーカ8Lおよび8Rが共に存在し、マーカ8Lの視野角θ1の中でかつマーカ8Rの視野角θ1の中に撮像素子743が存在するとき、ゲーム装置本体5は、2つのマーカ8Lおよび8Rによる高輝度点に関する位置データを用いてコントローラ7が指し示す位置を算出する。
【0066】
ユーザがその前面がモニタ2に向くようにコントローラ7を把持することによって、撮像情報演算部74には2つのマーカ8Lおよび8Rが出力した赤外光が入射する。そして、赤外線フィルタ741およびレンズ742を介して、入射した赤外光を撮像素子743が撮像し、当該撮像画像を画像処理回路744が処理する。ここで、撮像情報演算部74では、マーカ8Lおよび8Rから出力される赤外線成分を検出することで、上記撮像画像における当該マーカ8Lおよび8Rの位置情報(対象画像の位置)等を取得する。具体的には、画像処理回路744は、撮像素子743が撮像した画像データを解析して、まず面積情報からマーカ8Lおよび8Rからの赤外光ではあり得ない画像を除外し、さらに輝度が高い点をマーカ8Lおよび8Rそれぞれの位置として判別する。そして、撮像情報演算部74は、判別されたそれらの輝点の重心位置等の位置情報を取得し、上記処理結果データとして出力する。ここで、上記処理結果データである位置情報は、撮像画像における所定の基準点(例えば、撮像画像の中央や左上隅)を原点とした座標値として出力するものでもよく、所定のタイミングにおける輝点位置を基準点として、当該基準位置からの現在の輝点位置の差をベクトルとして出力するものでもよい。つまり、上記対象画像の位置情報は、撮像素子743が撮像した撮像画像に対して所定の基準点を設定した場合に、当該基準点に対する差として用いられるパラメータである。このような位置情報をゲーム装置本体5へ送信することによって、ゲーム装置本体5では、基準からの上記位置情報の差に基づいて、マーカ8Lおよび8Rに対する撮像情報演算部74、すなわちコントローラ7の動き、姿勢、位置等に応じた信号の変化量を得ることができる。具体的には、コントローラ7が動かされることによって、通信部75から送信される画像内の高輝度点の位置が変化するため、高輝度点の位置の変化に対応させた方向入力や座標入力を行うことで、コントローラ7が指し示している位置を操作入力としたり、コントローラ7の移動方向に沿った方向入力や座標入力を行ったりすることができる。なお、後述する表示制御処理動作例では、撮像情報演算部74が撮像画像におけるマーカ8Lおよび8Rの対象画像それぞれの重心位置の座標を少なくとも取得し、上記処理結果データとして出力する例を用いる。
【0067】
このように、コントローラ7の撮像情報演算部74によって、固定的に設置されたマーカ(実施例では、2つのマーカ8Lおよび8Rからの赤外光)を撮像することによって、ゲーム装置本体5におけるゲーム処理において、コントローラ7から出力されるデータを処理してコントローラ7の動き、姿勢、位置等に対応した操作が可能となり、ボタンを押下するような操作ボタンや操作キーとは異なった直感的な操作入力となる。また、上述したように上記マーカは、モニタ2の表示画面近傍に設置されているため、マーカに対する位置をモニタ2の表示画面に対するコントローラ7の動き、姿勢、位置等に換算することも容易に行うことができる。つまり、コントローラ7の動き、姿勢、位置等による処理結果データは、モニタ2の表示画面に直接作用する操作入力(例えば、コントローラ7が指し示す位置を入力)として用いることができる。
【0068】
次に、図9〜図13を参照して、ユーザの操作に応じてモニタ2に表示される画面例について説明する。なお、図9は、モニタ2に表示される番組表がスクロール表示される第1の状態を示す画面例である。図10は、モニタ2に表示される番組表がスクロール表示される第2の状態を示す画面例である。図11は、モニタ2に表示される番組表がスクロール表示される第3の状態を示す画面例である。図12は、モニタ2に表示される番組表がスクロール表示される第4の状態を示す画面例である。図13は、モニタ2に表示される番組表の番組セルC2がスクロール表示される一連の表示態様変化の一例を示す画面例である。
【0069】
図9〜図12において、モニタ2には横軸を時間軸、縦軸を放送局軸としたマトリックス状の番組表が表示される。具体的には、各テレビ局が放送する時間帯に応じた番組セルがそれぞれ設定され、各番組セル内に番組名が文字で記述される。ここで、ユーザは、コントローラ7の所定ボタンを押下したり、コントローラ7で指し示す位置を変更したりすることによって、番組名の文字サイズを変更したり、番組表をスクロールしたり、時間軸の長さを伸縮したりすることができる。例えば、ユーザは、操作ボタン72b(1番ボタン)または操作ボタン72c(2番ボタン)を押下することによって、番組名の文字サイズを変更する。また、ユーザは、操作ボタン72e(マイナスボタン)または操作ボタン72g(プラスボタン)を押下することによって、表示された番組表の時間軸の長さを伸縮させる。さらに、ユーザは、操作ボタン72iを押下しながらコントローラ7で指し示す位置を移動させたり、操作ボタン72a(十字キー)を押下したりすることによって、番組表をスクロール表示することができる。以下の説明においては、番組表をスクロール表示させる表示例について説明する。
【0070】
例えば、図9において、時間軸が19時台〜21時台までの3時間分で、放送局軸がテレビ局A〜Eまでの5局分の番組表が表示されている。また、図9の表示態様は、各テレビ局の番組セル内に記述されている番組名の大半が、現在の表示目標となっている文字サイズである文字サイズ「中」で、当該番組名の先頭から番組名が記述されている。また、放送時間が短い番組では、番組名の先頭から文字サイズ「小」や「極小」で番組名が記述されたり、番組名が記述されなかったりして、各番組セルが表示される。例えば、テレビ局Aの19時台に放送される番組セルには、番組名「ABCDEF」が文字サイズ「中」で記述されている。また、テレビ局Bの20時台前半に放送される番組セルには、番組名「abcd」が文字サイズ「小」で記述されている。なお、本実施形態で番組セルに表示される文字サイズは、「大」、「中」、「小」、および「極小」の4つの文字サイズである。ここで、テレビ局Dの19時台から20時台後半まで放送される番組セルC1に注目する。図9に示す番組表では、19時台の最初から20時台の終わりまで全て表示されているため、番組セルC1には、番組名「ABCDEFGHIJKL」が文字サイズ「中」で12文字記述されている。
【0071】
以下、この状態で表示された番組表に対して、当該番組表で表示されていない右側の時間帯を表示するためのスクロール操作をユーザが行った場合を説明する。なお、右側の時間帯を表示するためのスクロール操作する場合、ユーザは、右方向のスクロール操作(例えば、操作ボタン72iを押下しながらコントローラ7で番組表の右側を指し示す、あるいは操作ボタン72a(十字キー)の右方向を押下する)を行う。そして、このスクロール操作に応じて、表示されている各番組セルが左方向へ移動して、現在表示されていない番組表の右側から新たな番組セルが出現する。なお、各番組セルが移動する移動速度は、ユーザのスクロール操作に応じて決定される。例えば、表示されている番組表の中心や表示画面の中心からコントローラ7で指し示された位置までの距離および方向に応じて、各番組セルの移動速度および移動方向が決定される。
【0072】
図10では、上述したスクロール操作によって、図9に示した番組表の状態から時間軸が約30分左へ移動した番組表が表示されている。これによって、時間軸が19時台後半〜22時台前半までの3時間分で、放送局軸がテレビ局A〜Eまでの5局分の番組表が表示されている。このスクロール操作に応じたスクロール表示によって、番組表の右側から22時台の新たな番組セル(例えば、テレビ局A、D、E)の一部が出現して表示されている。一方、19時台の番組セルについては、上記スクロール表示によって、その表示領域の左側が未表示領域となって削減される。本実施形態では、削減された領域を除いた番組セルを描画領域として、当該描画領域に当該番組名の先頭から番組名が記述される。具体的には、削減された領域を除いた番組セルの左端から、各番組セルの番組名が記述されるため、番組表の左端には常に各番組セルの番組名の先頭が配置されることになる。つまり、図9および図10を比較すれば明らかなように、番組表の左端に位置する番組セルでは、あたかもスクロール操作によって番組名が移動しないような表現となる。
【0073】
例えば、番組セルC1においては、番組名「ABCDEFGHI」が文字サイズ「中」で当該番組名の先頭から9文字記述されている。ここで、図9に示した表示状態と比較すると、番組セルC1に記述されている文字数が3文字減少している。これは、図10に示す番組表では、19時台の後半から20時台の終わりまでが表示されているため、番組セルC1の19時台前半の描画領域が削減されたことに起因している。
【0074】
図11では、上述したスクロール操作によって、図10に示した番組表の状態から時間軸が約1時間分さらに左へ移動した番組表が表示されている。これによって、時間軸が20時台前半途中〜23時台前半途中までの3時間分で、放送局軸がテレビ局A〜Eまでの5局分の番組表が表示されている。このスクロール操作に応じたスクロール表示によって、番組表の右側から23時台の新たな番組セルの一部(例えば、テレビ局C、E)が出現して表示されている。一方、20時台の番組セルについては、上記スクロール表示によって、その表示領域の左側が未表示領域となって削減される。
【0075】
例えば、番組セルC1においては、番組名「ABCD」が文字サイズ「中」で当該番組名の先頭から4文字記述されている。ここで、図10に示した表示状態と比較すると、番組セルC1に記述されている文字数がさらに5文字減少している。これは、図11に示す番組表では、20時台ではその後半のみが表示されているため、番組セルC1の19時台〜20時台前半の描画領域が削減されたことに起因している。
【0076】
図12では、上述したスクロール操作によって、図11に示した番組表の状態から時間軸が約30分さらに左へ移動した番組表が表示されている。これによって、時間軸が20時台後半〜23時台前半までの3時間分で、放送局軸がテレビ局A〜Eまでの5局分の番組表が表示されている。このスクロール操作に応じたスクロール表示によって、20時台の番組セルについては、その表示領域の左側がさらに未表示領域となって削減されている。
【0077】
例えば、番組セルC1においては、番組名「ABCD」の文字サイズが「小」に変更されて、2行2列の表示形式で当該番組名の先頭から4文字記述されている。ここで、図11に示した表示状態と比較すると、番組セルC1に記述されている文字サイズが縮小されたことによって、同じ文字数が確保されている。これは、図12に示す番組表では、20時台ではその後半の一部のみが表示されているため、番組セルC1の19時台〜20時台前半となる大半の描画領域が削減されたことと、モニタ2に表示する番組名を少なくとも3文字記述することをルールとしていることとに起因している。具体的には、描画領域が削減された番組セルC1が文字サイズ「中」では3文字記述できないサイズであり、文字サイズ「小」では2行2列の表示形式で4文字記述できるサイズとなっている。このような場合、番組セルC1には文字サイズ「小」で番組名が記述される。
【0078】
図13において、番組セルC2に記述される番組名が、スクロール表示によって移り変わっていく様子を示す。なお、図13においては、斜線領域が番組セルを表示可能な表示領域の左端を示し、ユーザの右方向へのスクロール操作に応じて各番組セルが当該左端方向へスクロール移動する例を示している。また、番組セルC2は、9文字の番組名「ABCDEFGHI」が文字サイズ「中」で記述されるセルであるとする。また、各番組セルに表示する番組名は、少なくとも3文字記述することをルールとする。
【0079】
図13における状態Aでは、番組セルC2の全領域が表示領域内にあり、当該番組セルC2の描画領域が、文字サイズ「中」で9文字以上記述可能なサイズである。したがって、状態Aの番組セルC2には、番組名「ABCDEFGHI」が先頭からそのまま文字サイズ「中」で記述される。
【0080】
図13における状態Bでは、番組セルC2の左端が表示領域の左端と接している。この場合も、状態Aと同様に番組セルC2の描画領域が、文字サイズ「中」で9文字以上記述可能なサイズである。したがって、状態Bの番組セルC2には、番組名「ABCDEFGHI」が先頭からそのまま文字サイズ「中」で記述される。
【0081】
図13における状態Cおよび状態Dでは、番組セルC2の左端が表示領域外に外れたために番組セルC2の描画領域が削減されているが、削減された描画領域が文字サイズ「中」でまだ9文字以上記述可能なサイズである。したがって、状態Cおよび状態Dの番組セルC2には、表示領域内となる番組セルの左端(つまり、削減された描画領域の左端)から番組名「ABCDEFGHI」がそのまま文字サイズ「中」で記述される。
【0082】
図13における状態Eでは、番組セルC2の左端がさらに表示領域外に外れたために番組セルC2の描画領域が削減されており、削減された描画領域が文字サイズ「中」で6文字記述可能なサイズに変化している。したがって、状態Eの番組セルC2には、番組名「ABCDEFGHI」が先頭から6文字だけ文字サイズ「中」で、表示領域内となる番組セルの左端から記述される。
【0083】
図13における状態Fでは、番組セルC2の左端がさらに表示領域外に外れたために番組セルC2の描画領域がさらに削減されており、削減された描画領域が文字サイズ「中」で4文字記述可能なサイズに変化している。したがって、状態Fの番組セルC2には、番組名「ABCDEFGHI」が先頭から4文字だけ文字サイズ「中」で、表示領域内となる番組セルの左端から記述される。
【0084】
図13における状態Gでは、番組セルC2の左端がさらに表示領域外に外れたために番組セルC2の描画領域がさらに削減されており、削減された描画領域が文字サイズ「小」で2行2列の表示形式で4文字記述可能なサイズに変化している。したがって、状態Gの番組セルC2には、番組名「ABCDEFGHI」が先頭から4文字だけ文字サイズ「小」で、表示領域内となる番組セルの左端から2行2列の表示形式で記述される。
【0085】
図13における状態Hでは、番組セルC2の左端がさらに表示領域外に外れたために番組セルC2の描画領域がさらに削減されており、削減された描画領域が文字サイズ「極小」で3行2列の表示形式で6文字記述可能なサイズに変化している。したがって、状態Hの番組セルC2には、番組名「ABCDEFGHI」が先頭から6文字だけ文字サイズ「極小」で、表示領域内となる番組セルの左端から3行2列の表示形式で記述される。
【0086】
図13における状態Iでは、番組セルC2の左端がさらに表示領域外に外れたために番組セルC2の描画領域がさらに削減されており、削減された描画領域が文字サイズ「極小」で3行1列の表示形式で3文字記述可能なサイズに変化している。したがって、状態Iの番組セルC2には、番組名「ABCDEFGHI」が先頭から3文字だけ文字サイズ「極小」で、表示領域内となる番組セルの左端から3行1列の表示形式で記述される。なお、図13における状態Iから、番組セルC2の左端がさらに表示領域外に外れて、削減された描画領域が文字サイズ「極小」でも3文字記述できないサイズに変化したとき、当該番組セルには番組名が表示されない。
【0087】
次に、ゲームシステム1において行われる表示制御処理の詳細を説明する。まず、図14および図15を参照して、表示制御処理において用いられる主なデータについて説明する。なお、図14は、ゲーム装置本体5の外部メインメモリ12および/または内部メインメモリ35(以下、2つのメインメモリを総称して、単にメインメモリと記載する)に記憶される主なデータの一例を示す図である。図15は、図14に示す番組セルデータDb2の詳細な内容の一例を示す図である。
【0088】
図14に示すように、メインメモリには、操作情報Daおよび番組表データDb等が記憶される。なお、メインメモリには、図14に示す情報に含まれるデータの他、情報処理や表示制御処理に必要なデータが適宜記憶される。
【0089】
操作情報Daは、コントローラ7から送信データとして送信されてくる一連の操作情報(キーデータ、加速度データ、および処理結果データ)が格納され、最新の操作情報に更新される。操作情報Daには、上述の処理結果データの位置情報に相当する第1座標データDa1および第2座標データDa2が含まれる。第1座標データDa1は、撮像素子743が撮像した撮像画像に対して、2つのマーカ8Lおよび8Rのうちの一方の画像の位置(撮像画像内における位置)を示すデータである。第2座標データDa2は、他方のマーカの画像の位置(撮像画像内における位置)を示すデータである。例えば、撮像画像におけるマーカの画像の位置は、撮像画像におけるxy座標系によって表される。
【0090】
また、操作情報Daには、撮像画像から得られる処理結果データの一例の座標データ(第1座標データDa1および第2座標データDa2)の他、操作部72から得られるキーデータDa3等が含まれる。なお、ゲーム装置本体5に備える無線コントローラモジュール19は、コントローラ7から所定間隔例えば5msごとに送信される一連の操作情報を受信し、無線コントローラモジュール19に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられた最新の操作情報がゲーム処理間隔である1フレーム毎(例えば1/60秒毎)に読み出されて、メインメモリの操作情報Daが更新される。
【0091】
番組表データDbは、モニタ2に番組表を表示するための情報が格納される。番組表データDbは、表示領域座標データDb1、番組セルデータDb2、スクロールベクトルデータDb3、表示目標文字サイズデータDb4、および画像データDb5等を含む。
【0092】
表示領域座標データDb1は、番組表に対してモニタ2に表示する表示領域の位置(例えば、表示領域の左上端の位置と右下端の位置)を示す座標データが格納される。番組セルデータDb2は、番組表に含まれる各番組セルの情報を示すデータが格納され、詳細は後述する。スクロールベクトルデータDb3は、ユーザの操作入力によって設定される番組表のスクロール速度およびスクロール方向(スクロールベクトルscv)を示すデータが格納される。表示目標文字サイズデータDb4は、番組表を表示する文字サイズの目標(例えば、ユーザの操作によって設定される)となる表示目標文字サイズを示すデータが格納される。画像データDb5は、番組表をモニタ2に表示するための各種画像を示すデータが格納される。
【0093】
図15において、番組セルデータDb2は、無線通信モジュール18およびアンテナ22を介してネットワークに接続される各種サーバと通信することによって得られる電子番組表データを用いて、適宜その情報が更新される。番組セルデータDb2は、番組表に設定されている番組セル毎にそれぞれ設定される。番組セルデータDb2は、番組セル毎に、番組セル番号Db2a、番組文字列データDb2b、番組文字数データDb2c、テレビ局データDb2d、番組セル座標データDb2e、描画領域幅データDb2f、描画領域高さデータDb2g、描画文字サイズデータDb2h、描画可能行数データDb2i、描画可能文字数データDb2j、および描画開始位置データDb2k等を含んでいる。
【0094】
番組セル番号Db2aは、番組セル毎に設定される連番(例えば、図15では番組セル番号「1」)を示すデータが格納される。番組文字列データDb2bは、番組セル毎に記述される番組名(例えば、図15では番組文字列「ABCDEFGH」)を示す文字列データが格納される。番組文字数データDb2cは、番組セル毎の番組名の文字数(例えば、図15では番組文字数「8」)を示すデータが格納される。テレビ局データDb2dは、番組セルが配置されるテレビ局(例えば、図15ではテレビ局「A」)を示すデータが格納される。番組セル座標データDb2eは、番組表における番組セル毎の位置(例えば、図15では左上端座標(xsa,ysa)、右下端座標(xsb,ysb))を示すデータが格納される。描画領域幅データDb2fは、番組セル毎に番組名を当該番組セル内に記述可能な描画領域幅(例えば、図15では描画領域幅「dw」)を示すデータが格納される。描画領域高さデータDb2gは、番組セル毎に番組名を当該番組セル内に記述可能な描画領域高さ(例えば、図15では描画領域高さ「dh」)を示すデータが格納される。描画文字サイズデータDb2hは、番組セル毎に番組名を当該番組セル内に記述する文字サイズ(例えば、図15では文字サイズ「小」)を示すデータが格納される。描画可能行数データDb2iは、番組セル毎に番組名を当該番組セル内に記述可能な描画行数(例えば、図15では描画可能行数「2」)を示すデータが格納される。描画可能文字数データDb2jは、番組セル毎に番組名を当該番組セル内に記述可能な描画文字数(例えば、図15では描画可能文字数「4」)を示すデータが格納される。描画開始位置データDb2kは、番組セルの描画領域の一部が削減された場合に番組名の先頭文字を描画開始する位置(例えば、図15では削減された描画領域の左上座標(xsc,ysc))を示すデータが格納される。
【0095】
次に、図16〜図26を参照して、ゲーム装置本体5において行われる表示制御処理の詳細を説明する。なお、図16は、ゲーム装置本体5において実行される表示制御処理の流れの一例を示すフローチャートである。図17は、図16のステップ57における描画領域幅算出処理の詳細な動作を示すサブルーチンである。図18は、図16のステップ58における番組表表示更新処理の詳細な動作を示すサブルーチンである。図19は、図18のステップ98における描画可能文字数算出処理の詳細な動作を示すサブルーチンである。図20は、図18のステップ103における番組セル描画処理の詳細な動作を示すサブルーチンである。図21は、スクロールベクトルscvの大きさvaの第1の設定例を示すグラフである。図22は、スクロールベクトルscvの大きさvaの第2の設定例を示すグラフである。図23は、番組表に対する表示領域の設定例を説明するための図である。図24は、スクロール操作に応じた表示領域の設定例を説明するための図である。図25は、番組セルに設定される描画領域幅dwおよび描画領域高さdhの設定例を説明するための図である。図26は、番組セルの一部分が表示領域内となった場合に設定される描画領域幅dw、描画領域高さdh、および描画開始位置(xsc,ysc)の設定例を説明するための図である。なお、図16〜図20に示すフローチャートにおいては、表示制御処理のうち、主に番組セル内の文字をモニタ2に表示する処理について説明し、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図16〜図20では、CPU10が実行する各ステップを「S」と略称する。
【0096】
ゲーム装置本体5の電源ボタン24がオンされると、ゲーム装置本体5のCPU10は、ROM/RTC13に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4や他の記録媒体に記憶された表示制御プログラムがメインメモリに読み込まれ、CPU10によって当該表示制御プログラムの実行が可能となる状態となる。図16に示すフローチャートは、以上の処理が完了した後に行われる表示制御処理を示すフローチャートである。
【0097】
図16において、CPU10は、初期設定を行い(ステップ51)、処理を次のステップに進める。例えば、上記ステップ51における初期設定では、無線通信モジュール18およびアンテナ22を介してネットワークに接続される各種サーバと通信することによって得られる電子番組表データを用いて、番組セルデータDb2に記述される各情報を適宜最新の情報に更新し、番組表の初期設定を行う。また、上記ステップ51における初期設定では、番組表を表示するための各パラメータを初期化する。例えば、CPU10は、上述したメインメモリに格納される各データが示すパラメータをそれぞれデフォルトの値に設定する。
【0098】
次に、CPU10は、番組表の表示処理を行い(ステップ52)、処理を次のステップに進める。具体的には、CPU10は、上記ステップ51で設定されたデフォルトの設定状態に基づいて、番組表を作成してモニタ2に表示する。
【0099】
次に、CPU10は、コントローラ7から受信した操作情報を取得し(ステップ53)、処理を次のステップに進める。そして、CPU10は、取得した最新の操作情報を用いて操作情報Daを更新する。ここで、ステップ53で取得される操作情報には、マーカ8Lおよび8Rの撮像画像内における位置を示す処理結果データの他、コントローラ7の操作部72がどのように操作されたか示すキーデータが含まれている。ここでは、通信部75は、所定の時間間隔(例えば5ms間隔)で操作情報をゲーム装置本体5へ送信する。そして、CPU10は、送信された最新の操作情報を1フレーム毎に利用して、第1座標データDa1、第2座標データDa2、およびキーデータDa3を更新する。
【0100】
次に、CPU10は、ユーザが番組表のスクロール操作を行ったか否かを判断する(ステップ54)。具体的には、CPU10は、操作情報Daの第1座標データDa1、第2座標データDa2、およびキーデータDa3を参照して、ユーザの操作内容を決定する。例えば、ユーザが操作ボタン72aまたは操作ボタン72iを押下した場合、CPU10は、番組表のスクロール操作が行われたと判断する。そして、CPU10は、ユーザが番組表のスクロール操作を行った場合(ステップ54でYes)、次のステップ55に処理を進める。一方、ユーザが番組表のスクロール操作とは異なる操作を行った場合(ステップ54でNo)、CPU10は、ユーザの操作に応じたその他の処理を行って(ステップ60)、次のステップ58に処理を進める。
【0101】
ステップ55において、CPU10は、上記ステップ53で取得した操作情報に基づいて、ユーザの操作に応じたスクロール速度およびスクロール方向を示すスクロールベクトルscvを算出し、スクロールベクトルデータDb3を更新して、処理を次のステップに進める。以下、スクロールベクトルscvの算出例について説明する。
【0102】
例えば、ユーザが操作ボタン72iを押下してスクロール操作した場合、コントローラ7で指し示された位置に応じてスクロールベクトルscvを算出する。まず、CPU10は、コントローラ7で指し示された位置を算出するために、第1座標データDa1が示す位置から第2座標データDa2が示す位置への方向と、第1座標データDa1が示す位置と第2座標データDa2が示す位置との中点を算出する。ここで、上記中点は、撮像画像内における対象画像(マーカ8Lおよび8R)を1つの画像とみなした場合、その1つの画像の位置を示すことになる。そして、上記中点と所定の基準位置との差によって、モニタ2に対するコントローラ7の位置の変化による画像位置の変化を算出することができる。
【0103】
ここで、マーカ8Lおよび8Rと、モニタ2の表示画面と、コントローラ7との位置関係について考える。例えば、モニタ2の上面に2つのマーカ8Lおよび8Rを設置し(図1参照)、上面が上方向を向いたコントローラ7を用いてプレイヤがモニタ2の表示画面の中央を指し示した場合(すなわち、撮像情報演算部74の撮像画像の中央に表示画面中央が撮像されている状態)を考える。このとき、撮像情報演算部74の撮像画像において、対象画像の中点(マーカ8Lおよび8Rの中点)位置と撮像画像の中央とは一致しない。具体的には、上記撮像画像における対象画像の位置は、撮像画像の中心から上方の位置となる。このような位置に対象画像が位置する場合に、表示画面中央を指し示しているという基準位置の設定を行う。一方、コントローラ7で指し示す位置を移動させると、撮像画像中の対象画像の位置も移動する(コントローラ7の移動方向は逆方向となる)ので、撮像画像中の対象画像の位置の移動に対応させて表示画面を指し示す位置を移動させる処理を行うことによって、コントローラ7で指し示された表示画面基準の位置を算出することができる。
【0104】
ここで、基準位置の設定は、予めプレイヤが表示画面の所定位置を指し示し、そのときの対象画像の位置を当該所定位置と対応させて記憶しておくようにしてもよいし、対象画像と表示画面との位置関係が固定的であれば、予め設定されていても良い。このような表示画面に対する指し示し位置は、上記中点からモニタ2の表示画面基準の座標を算出する関数を用いた線形変換で算出される。この関数は、ある撮像画像から算出される中点座標の値を、当該撮像画像が撮像される時のコントローラ7によって指し示される表示画面上の位置に変換するものである。この関数によって、中点座標から表示画面を基準とした指し示し位置を算出することができる。なお、上面が上方向以外(例えば、右方向)を向いたコントローラ7を用いてプレイヤがモニタ2の表示画面を指し示した場合、方向データDb1に格納された方向を用いて中点座標を補正して、補正された中点を用いて上述したように表示画面を基準とした指し示し位置を算出する。
【0105】
次に、CPU10は、算出した表示画面を基準とした指し示し位置を、対応する番組表における位置(指示位置)にさらに変換する。例えば、指し示し位置に対応する番組表の指示位置は、モニタ2の表示画面上における位置に表示される番組表の位置に透視投影される位置となる。そして、CPU10は、対応する番組表のスクロール基準位置(例えば、モニタ2に表示されている番組表の中心)から上記指示位置を結ぶ方向に応じて、スクロールベクトルscvの方向を設定する。また、CPU10は、上記スクロール基準位置から上記指示位置までの距離に応じて、スクロールベクトルscvの大きさvaを設定する。
【0106】
図21を参照して、ユーザが操作ボタン72iを押下し続けてスクロール操作した場合のスクロールベクトルscvの設定例について説明する。CPU10は、上記スクロール基準位置から上記指示位置までの距離に応じて、スクロールベクトルscvの大きさvaに対する最大値vamaxを設定する。例えば、CPU10は、上記スクロール基準位置から上記指示位置までの距離が長いほど、最大値vamaxを大きな値に設定する。そして、図21に示すように、CPU10は、番組表がスクロール移動する距離が所定の距離に到達するまで、0から最大値vamaxまで漸増的に変化するように大きさvaを設定して、その後、最大値vamaxで一定とする。後述により明らかとなるが、このようなスクロールベクトルscvの設定によって、コントローラ7で指し示す方向に応じて番組表がスクロールし、その指し示す位置が上記スクロール基準位置から遠いほどスクロール速度が速くなるようなスクロール操作が可能となる。
【0107】
図22を参照して、ユーザが操作ボタン72a(十字キー)を押下し続けてスクロール操作した場合のスクロールベクトルscvの設定例について説明する。CPU10は、スクロールベクトルscvの大きさvaに対する最大値vamaxを所定の値に設定する。また、CPU10は、操作ボタン72aが押下されている方向に応じて、スクロールベクトルscvの方向を上下左右の何れかに設定する。そして、図22に示すように、CPU10は、スクロール方向が番組表の時間軸方向である場合、番組表がスクロール移動する距離が当該番組表の30分および1時間分に相当する距離に到達する毎に、大きさvaの増減が切り替わるように設定する。具体的には、CPU10は、スクロール操作が始まると、スクロール距離が番組表の30分に相当する距離に到達するまで、0から最大値vamaxより小さい第1の極大値vap1に漸増的に変化するように大きさvaを設定する。その後、CPU10は、スクロール距離が番組表の1時間分に相当する距離に到達するまで、第1の極大値vap1から0に漸減的に変化するように大きさvaを設定する。また、CPU10は、スクロール距離が番組表の1時間分に相当する距離から1時間30分に相当する距離に到達するまで、0から最大値vamaxより小さく第1の極大値vap1より大きい第2の極大値vap2に再び漸増的に変化するように大きさvaを設定する。その後、CPU10は、スクロール距離が番組表の2時間分に相当する距離に到達するまで、第2の極大値vap1から0に再び漸減的に変化するように大きさvaを設定する。そして、CPU10は、同様に最大値vamaxを極大値とするように大きさvaを増減させる。そして、CPU10は、0から最大値vamaxまで漸増的に変化するように大きさvaを設定して、その後、最大値vamaxで一定とする。後述により明らかとなるが、このようなスクロールベクトルscvの設定によって、番組表の時間単位で節度感があるスクロール移動が実現され、十字キーを押下する方向に応じて番組表がスクロール表示される。
【0108】
次に、CPU10は、スクロールベクトルscvに応じて表示領域の座標を更新して(ステップ56)、処理を次のステップに進める。具体的には、算出されたスクロールベクトルscvに応じて、表示領域の左上端の位置と右下端の位置とを示す座標を算出して表示領域座標データDb1を更新する。
【0109】
以下、図23および図24を参照して、表示領域の設定例について説明する。図23に示すように、番組表に設定されている座標系を基準として配置される位置が表示領域の位置として設定される。例えば、縦軸を放送局軸、横軸を時間軸とした番組表が設定されており、当該番組表の左上端の位置を座標(x0,y0)とし、当該番組表の右下端の位置を座標(xmax,ymax)とする座標系(以下、番組表座標と記載する)が番組表に設定されている。そして、表示領域は、番組表内の一部分に配置される。例えば、表示領域の左上端の位置(座標(xa,ya))と右下端の位置(座標(xb,yb))とを番組表座標で設定することによって、表示領域の配置位置と表示領域のサイズとを設定している。
【0110】
図24に示すように、上記ステップ56においては、ユーザの操作に応じて設定されたスクロールベクトルscvに応じて、表示領域の左上端の位置(座標(xa,ya))と右下端の位置(座標(xb,yb))とを番組表座標で移動させることによって、表示領域の座標を更新している。例えば、スクロールベクトルSCVが番組表の右方向へ大きさvaである場合、番組座標系における表示領域の左上端の位置および右下端の位置が、それぞれ座標(xa+va,ya)および座標(xb+va,yb)に移動する。このように表示領域は、スクロールベクトルscvの大きさをスクロール速度とし、スクロールベクトルscvの方向をスクロール方向として移動する。つまり、表示領域は、スクロールベクトルscvの大きさvaを単位時間あたりの移動距離として移動することになり、スクロールベクトルscvの大きさvaがスクロール速度となる。したがって、上記スクロール速度に相当する表示画像におけるドット単位で、後述する表示制御処理が行われる。例えば、スクロールベクトルscvの大きさvaが表示画像における1ドットである場合、表示領域も1ドット単位で移動して、後述する表示制御処理も1ドット単位で行われることになる。
【0111】
図16に戻り、CPU10は、上記ステップ56の処理の後、描画領域幅算出処理を行って(ステップ57)、次のステップ58に処理を進める。以下、図17を参照して、ステップ57で行う描画領域幅算出処理について説明する。
【0112】
図17において、CPU10は、処理対象とする番組セル番号を示す変数Nを1に設定し(ステップ81)、処理を次のステップに進める。
【0113】
次に、CPU10は、番組セル番号Nの番組セル座標と表示領域座標とを比較して(ステップ82)、番組セルが表示領域内か否か(ステップ83)、および番組セルの左部分が表示領域外か否か(ステップ84)を判断する。そして、CPU10は、番組セル番号Nの番組セルの左部分が表示領域外で、番組セルの右部分が表示領域内である場合(ステップ83でYes、ステップ84でYes)、次のステップ85に処理を進める。また、CPU10は、番組セル番号Nの番組セルの全部分が表示領域内である場合、または番組セル番号Nの番組セルの右部分が表示領域外で、番組セルの左部分が表示領域内である場合(ステップ83でYes、ステップ84でNo)、次のステップ86に処理を進める。また、CPU10は、番組セル番号Nの番組セルの全部分が表示領域外である場合(ステップ83でNo)、次のステップ88に処理を進める。
【0114】
例えば、図25に示すように、番組セル内には矩形の描画領域が設定されている。描画領域のサイズは、描画領域幅dwおよび描画領域サイズdhで定義される。そして、番組セルの位置は、描画領域の左上端の位置(座標(xsa,ysa))と右下端の位置(座標(xsb,ysb))とが番組表座標によって設定され、それらの座標を示すデータが番組セル座標データDb2eに格納されている。上記ステップ83およびステップ84においては、CPU10は、番組セル番号Nの番組セル座標データDb2eと表示領域座標データDb1とを参照して、番組セル番号Nの番組セルの左上端座標(xsa,ysa)および右下端座標(xsb,ysb)と表示領域の左上端座標(xa,ya)および右下端座標(xb,yb)とを所得する。そして、これらの座標を用いて、番組セル番号Nの番組セルと表示領域との位置関係を分析する。
【0115】
ステップ85において、CPU10は、番組セル番号Nの番組セルにおいて表示領域内となる描画領域幅dwを算出して、次のステップ87に処理を進める。例えば、図26に示すように、番組セルの左部分が表示領域外となった場合、表示領域の左端から当該番組セルの描画領域の右端までの幅が描画領域幅dwとして算出される。
【0116】
ステップ86において、CPU10は、現在設定されている時間軸に応じた描画領域幅dwを用いて番組セル番号Nの番組セルの描画領域幅dwを設定して、次のステップ87に処理を進める。例えば、CPU10は、現在設定されている時間軸に応じて、上記ステップ51で設定されたデフォルトの値または時間軸が変更されている場合にその値を用いて番組セル番号Nの番組セルの描画領域幅dwを設定する。なお、上記ステップ86においては、番組セル番号Nの番組セルにおける描画領域の一部分が表示領域外に配置される状態から、描画領域の全部分が表示領域内に配置される状態に変化したときに描画領域幅dwを変更することが必要となり、他の状態においては描画領域幅dwが不変となる。したがって、描画領域幅dwが不変となる状態においては、上記ステップ86による処理を省略してもかまわない。この場合、番組セル番号Nの番組セルにおける描画領域の一部分が表示領域外に配置される状態から、描画領域の全部分が表示領域内に配置される状態に変化したときにのみ、上記ステップ86の処理を行うことになる。
【0117】
ステップ87において、CPU10は、上記ステップ85で算出された描画領域幅dwまたは上記ステップ86で設定された描画領域幅dwを用いて、番組セル番号Nの描画領域幅データDb2fを更新して、次のステップ88に処理を進める。
【0118】
ステップ88において、CPU10は、現在の変数Nが番組セルデータDb2に記述されている番組セル毎の連番の最後(Nmax)であるか否かを判断する。そして、CPU10は、N<Nmaxの場合、現在の変数Nに1を加算して(ステップ89)、上記ステップ82に戻って処理を繰り返す。一方、CPU10は、N=Nmaxの場合、当該サブルーチンによる処理を終了する。
【0119】
図16に戻り、上記ステップ57またはステップ60の処理の後、CPU10は、番組表表示更新処理を行って(ステップ58)、次のステップ59に処理を進める。以下、図18を参照して、ステップ58で行う番組表表示更新処理について説明する。
【0120】
図18において、CPU10は、番組表の時間軸に沿ってそれぞれ並列されて表示されるテレビ局(図23参照)の何れか1つを選択する(ステップ91)。そして、CPU10は、選択したテレビ局の表示範囲上端が表示領域より下か否か(ステップ92)、および選択したテレビ局の表示範囲下端が表示領域より上か否か(ステップ93)を判断する。そして、CPU10は、選択したテレビ局の表示範囲の少なくとも一部分が表示領域内にある場合(ステップ92およびステップ93が何れもNo)、次のステップ94に処理を進める。一方、選択したテレビ局の表示範囲が全て表示領域外にある場合(ステップ92またはステップ93がYes)、次のステップ106に処理を進める。例えば、図23に示すテレビ局B〜テレビ局Fは、それらテレビ局の表示範囲の少なくとも一部分が表示領域内にあるとそれぞれ判断される。一方、テレビ局Aやテレビ局Gは、それらのテレビ局の表示範囲が全て表示領域外にあるとそれぞれ判断される。
【0121】
ステップ94において、CPU10は、現在選択されているテレビ局に含まれる番組セルの何れか1つを選択する。そして、CPU10は、選択した番組セルの描画範囲右端が表示領域より左か否か(ステップ95)、および選択した番組セルの描画範囲左端が表示領域より右か否か(ステップ96)を判断する。そして、CPU10は、選択した番組セルの描画範囲の少なくとも一部分が表示領域内にある場合(ステップ95およびステップ96が何れもNo)、次のステップ97に処理を進める。一方、選択した番組セルの描画範囲が全て表示領域外にある場合(ステップ95またはステップ96がYes)、次のステップ105に処理を進める。例えば、図23に示すテレビ局Cが選択されている場合、番組C1〜番組C4は、それら番組セルの描画範囲の少なくとも一部分が表示領域内にあるとそれぞれ判断される。一方、番組C5は、その番組セルの描画範囲が全て表示領域外にあると判断される。
【0122】
ステップ97において、CPU10は、現在の表示目標となっている文字サイズを用いて現在選択している番組セルの描画文字サイズを変更して、処理を次のステップに進める。具体的には、CPU10は、表示目標文字サイズデータDb4を参照して表示目標文字サイズを取得し、当該表示目標文字サイズを用いて現在選択している番組セルの描画文字サイズデータDb2hを更新する。
【0123】
次に、CPU10は、描画可能文字数算出処理を行い(ステップ98)、処理を次のステップに進める。以下、図19を参照して、描画可能文字数算出処理の詳細な動作について説明する。
【0124】
図19において、CPU10は、現在の文字数を0に設定し(ステップ111)、描画可能文字数を0に設定する(ステップ112)。次に、CPU10は、現在選択されている番組セルの描画領域に描画可能な文字行数を算出する(ステップ113)。そして、CPU10は、現在の行数を1に設定し(ステップ114)、処理を次のステップに進める。例えば、上記ステップ113において、CPU10は、現在選択している番組セルの描画領域高さデータDb2gを参照して、描画領域高さdhを取得する。また、CPU10は、現在選択している番組セルの描画文字サイズデータDb2hを参照して、描画文字サイズを取得する。そして、CPU10は、取得した描画領域高さdhを、取得した描画文字サイズに予め設定されている行高さで除算することによって描画可能な文字行数を算出して、現在選択している番組セルの描画可能行数データDb2iを更新する。
【0125】
次に、CPU10は、現在の行数が現在選択している番組セルに描画可能な文字行数を超えたか否かを判断する(ステップ115)。例えば、CPU10は、現在選択している番組セルの描画可能行数データDb2iを参照して描画可能な文字行数を取得し、現在の行数が当該描画可能な文字行数を超えているか否かを判断する。そして、CPU10は、現在の行数が現在選択している番組セルに描画可能な文字行数を超えていない場合、次のステップ116に処理を進める。一方、CPU10は、現在の行数が現在選択している番組セルに描画可能な文字行数を超えている場合、次のステップ122に処理を進める。
【0126】
ステップ116において、CPU10は、現在の幅を0に設定する。そして、CPU10は、現在の文字数が現在選択している番組セルの番組文字数に達したか否かを判断する(ステップ117)。例えば、CPU10は、現在選択している番組セルの番組文字数データDb2cを参照して番組文字数を取得し、現在の文字数が当該番組文字数に到達しているか否かを判断する。そして、CPU10は、現在の文字数が現在選択している番組セルの番組文字数に達していない場合、次のステップ118に処理を進める。一方、CPU10は、現在の文字数が現在選択している番組セルの番組文字数に達した場合、次のステップ122に処理を進める。
【0127】
ステップ118において、CPU10は、現在の幅に次の文字幅を加算する。そして、CPU10は、現在の幅が描画領域の幅を超えたか否かを判断する(ステップ119)。すなわち、現在の行において描画可能な文字数を超えたか否かを判断する。例えば、CPU10は、現在選択している番組セルの描画領域幅データDb2fを参照して描画領域幅dwを取得する。そして、CPU10は、取得した描画領域幅dwと現在の幅とを比較して、現在の幅が描画領域の幅を超えたか否かを判断する。そして、CPU10は、現在の幅が描画領域の幅を超えていない場合、現在の文字数に1を加算して(ステップ120)、上記ステップ117に戻って処理を繰り返す。一方、CPU10は、現在の幅が描画領域の幅を超えている場合、現在の行数に1を加算して(ステップ121)、上記ステップ115に戻って処理を繰り返す。このようにして、現在選択している番組セルに描画可能な文字数を行毎に算出する。
【0128】
ここで、上記ステップ118で用いる次の文字幅とは、現在選択している番組セルに記述する番組文字において、現在の文字数としてカウントされている文字の次に記述される文字の文字幅を示している。例えば、図15に示す番組セルデータDb2の例において現在の文字数が「2」の場合、次に記述される文字「C」の文字幅が次の文字幅として採用される。ここで、一般的に文字幅は、文字サイズやフォントが同じであっても異なることが多い。例えば、上記ステップ118においては、予めゲーム装置本体5内に設定されているフォントデータ等を参照して、文字種毎の文字幅を取得する。従って、番組セルの各行に描画可能な文字数は行毎にそれぞれ異なることがある。
【0129】
上記ステップ115でYesと判断された場合、または上記ステップ117でYesと判断された場合、CPU10は、現在の文字数を用いて現在選択している番組セルの描画可能文字数を設定して(ステップ122)、当該サブルーチンによる処理を終了する。例えば、CPU10は、現在の文字数を用いて現在選択している番組セルの描画可能文字数データDb2iを更新する。ここで、上記ステップ115でYesと判断される場合は、現在の行数が現在選択している番組セルに描画可能な文字行数を超えている場合であり、すなわち、現在選択している番組セルの描画領域に、現在の文字数より多い文字が描画できない場合である。一方、上記ステップ117でYesと判断される場合は、現在の文字数が現在選択している番組セルの番組文字数に達した場合であり、すなわち、現在選択している番組セルの描画領域に、現在の文字数より多く描画する文字がない場合である。このように、描画可能文字数算出処理においては、番組セルに設定されている描画文字サイズを基準として、当該番組セルに記述する文字数が当該番組セル描画可能な文字数制限に達した場合、または記述するべき番組名称の文字数に到達した場合、それらの文字数を描画可能文字数として算出する。
【0130】
図18に戻り、上記ステップ98の描画可能文字数算出処理の後、CPU10は、選択されている番組セルの描画可能文字数が番組文字数と同じか否かを判断する(ステップ99)。例えば、CPU10は、選択されている番組セルの番組文字数データDb2cおよび描画可能文字数データDb2jを参照して番組文字数および描画可能文字数を取得し、取得した描画可能文字数が番組文字数と同じか否かを判断する。そして、CPU10は、描画可能文字数が番組文字数と異なる場合、次のステップ100に処理を進める。一方、CPU10は、描画可能文字数が番組文字数と同じである場合、次のステップ103に処理を進める。
【0131】
ステップ100において、CPU10は、選択されている番組セルの描画可能文字数が3文字以上であるか否かを判断する。例えば、CPU10は、選択されている番組セルの描画可能文字数データDb2jを参照して描画可能文字数を取得し、取得した描画可能文字数が3以上か否かを判断する。そして、CPU10は、描画可能文字数が2文字以下である場合、次のステップ101に処理を進める。一方、CPU10は、描画可能文字数が3文字以上である場合、次のステップ103に処理を進める。
【0132】
ステップ101において、CPU10は、選択されている番組セルの描画文字サイズが最小であるか否かを判断する。例えば、CPU10は、選択されている番組セルの描画文字サイズデータDb2hを参照して描画文字サイズを取得し、取得した描画文字サイズが最小の文字サイズ(例えば、文字サイズ「極小」)であるか否かを判断する。そして、CPU10は、描画文字サイズが最小でない場合、描画文字サイズを1段階小さく設定して選択されている番組セルの描画文字サイズデータDb2hを更新し(ステップ102)、上記ステップ98に戻って処理を繰り返す。一方、CPU10は、描画文字サイズが最小である場合、次のステップ104に処理を進める。
【0133】
ステップ103において、CPU10は、番組セル描画処理を行って、処理を次のステップ105に進める。以下、図20を参照して、番組セル描画処理の詳細な動作について説明する。
【0134】
図20において、選択されている番組セルの番組セル座標と表示領域座標とを比較して、番組セルの左部分が表示領域外か否かを判断する(ステップ131)。そして、CPU10は、選択されている番組セルの全部分が表示領域内である場合、または番組セルの右部分が表示領域外で、番組セルの左部分が表示領域内である場合、次のステップ132に処理を進める。一方、CPU10は、選択されている番組セルの左部分が表示領域外(すなわち、番組セルの右部分が表示領域内)である場合、次のステップ133に処理を進める。なお、上記ステップ131においては、CPU10は、選択されている番組セルの番組セル座標データDb2eと表示領域座標データDb1とを参照して、当該番組セルの左上端座標(xsa,ysa)および右下端座標(xsb,ysb)と表示領域の左上端座標(xa,ya)および右下端座標(xb,yb)とを所得する。そして、これらの座標を用いて、選択されている番組セルと表示領域との位置関係を分析する。
【0135】
ステップ132において、CPU10は、選択されている番組セルの描画領域の左端から当該描画領域内に、設定された描画文字サイズで描画可能文字数の文字を配置して描画し、当該サブルーチンによる処理を終了する。例えば、CPU10は、選択されている番組セルの番組セルデータDb2を参照して、設定された描画文字サイズで描画可能文字数の番組名の文字列を、当該番組セルの描画領域内の左端から横書きで配置して記述する。また、番組セルの描画領域内における複数行を使って描画可能文字数が確保されている場合、当該描画領域内には当該複数行を用いて記述された番組名の文字列が配置されて描画される。このように、番組セルの描画領域の左端が描画開始位置として機能しており、当該描画開始位置が表示領域内に配置されている場合、その描画開始位置(すなわち、描画領域の左端)から番組名が記述されることになる。
【0136】
一方、ステップ133において、CPU10は、選択されている番組セルの描画領域において表示領域内となる領域の左上端位置に描画開始位置を設定し、当該番組セルの描画開始位置データDb2kを更新して、次のステップに処理を進める。例えば、CPU10は、選択されている番組セルの番組セル座標データDb2eと表示領域座標データDb1とを参照して、当該番組セルの左上端座標(xsa,ysa)および右下端座標(xsb,ysb)と表示領域の左上端座標(xa,ya)および右下端座標(xb,yb)とを所得する。そして、CPU10は、これらの座標を用いて描画開始位置(xsc,ysc)を算出する。具体的には、番組セルと表示領域とが図26に示すような位置関係にある場合、描画開始位置の時間軸座標値(横方向座標)が表示領域の左上端座標の時間軸座標値となり、描画開始位置の放送局軸座標値(縦方向座標)が番組セルの左上端座標の放送局軸座標値となる。つまり、描画開始位置(xsc,ysc)は、
xsc←xa
ysc←ysa
で設定される。
【0137】
次に、CPU10は、上記ステップ133で設定された描画開始位置から表示範囲内に位置する描画領域内に、設定された描画文字サイズで描画可能文字数の文字を配置して描画し(ステップ134)、当該サブルーチンによる処理を終了する。例えば、CPU10は、選択されている番組セルの番組セルデータDb2を参照して、設定された描画文字サイズで描画可能文字数の番組名の文字列を、表示領域内に属している当該番組セルの描画領域内の描画開始位置から横書きで配置して記述する。このとき、CPU10は、描画領域の一部が表示領域外にあるため、当該表示領域内に制限した描画領域を用いて番組名の文字列を配置して描画する。また、番組セルの描画領域内における複数行を使って描画可能文字数が確保されている場合、当該描画領域内には当該複数行を用いて記述された番組名の文字列が配置されて描画される。このように、描画開始位置として機能している描画領域の左端が表示領域外に配置されている場合、その描画開始位置を表示領域内に移動(すなわち、座標(xsc,ysc)に移動)させて、移動後の描画開始位置から番組名が記述されることになる。
【0138】
図18に戻り、上記ステップ101で描画文字サイズが最小であると判断された場合、CPU10は、選択されている番組セルの描画領域内に文字を描画せず(つまり、空白)に(ステップ104)、処理を次のステップ105に進める。つまり、描画文字サイズが最小であっても3文字以上描画領域内に記述できない番組セルの場合、当該番組セルは空白にして描画される。
【0139】
ステップ105において、CPU10は、現在選択されているテレビ局において処理されていない番組セルがあるか否かを判断する。そして、CPU10は、現在選択されているテレビ局において未処理の番組セルが残っている場合、上記ステップ94に戻って処理を繰り返す。一方、CPU10は、現在選択されているテレビ局において未処理の番組セルがない場合、次のステップ106に処理を進める。
【0140】
ステップ106において、CPU10は、番組表において処理されていないテレビ局があるか否かを判断する。そして、CPU10は、番組表において未処理のテレビ局が残っている場合、上記ステップ91に戻って処理を繰り返す。一方、CPU10は、番組表における全てのテレビ局が処理された場合、当該サブルーチンによる処理を終了する。
【0141】
図16に戻り、上記ステップ58の処理の後、CPU10は、番組表の表示を終了するか否かを判断する(ステップ59)。表示を終了する条件としては、例えば、番組表が表示終了となる条件が満たされたことや、ユーザが番組の表示を終了する操作を行ったこと等がある。CPU10は、表示を終了しない場合に上記ステップ53に戻って処理を繰り返し、表示を終了する場合に当該フローチャートによる処理を終了する。
【0142】
このように、本実施形態に係る表示制御プログラムを実行するゲーム装置本体5では、スクロール操作に対する情報の把握を容易にするとともに表示情報の視認性を高めることができる。例えば、番組表をスクロール表示する際、番組セルに記載する番組名が表示範囲外に出たときは当該番組名を表示範囲内に移動して表示されるため、スクロール操作に対する情報の把握が容易となるとともに、番組表の視認性を向上させることができる。また、番組表をスクロール表示する際、当該番組表の左端に位置する各番組セルの描画領域の大きさと表示する文字サイズとに基づいて、当該描画領域内に描画可能な文字数を算出し、描画可能文字数に応じて、各描画領域内にそれぞれ描画される文字サイズを決定するため、番組表の視認性を高めることができる。さらに、スクロール操作に対する番組名の表示位置移動や文字サイズ変更が処理周期毎に行われるため、番組セル単位よりも細かい単位で滑らかなスクロール表示することができ、スクロール操作時の情報把握の容易性と視認性とを向上させることができる。
【0143】
なお、上述した説明では、番組名を記述する文字サイズが4段階(「大」、「中」、「小」、「極小」)に設定された例を用いたが、設定する文字サイズは4段階でなくてもかまわない。例えば、2段階や3段階の文字サイズを用いて番組名を記述してもいいし、5段階以上の文字サイズを用いて番組名を記述してもかまわない。
【0144】
また、上述した説明では、各番組セルに番組名を少なくとも3文字記述することをルールとしたが、他の態様のルールでもかまわない。例えば、番組セルに少なくとも記述する文字数を、ユーザが設定してもかまわない。
【0145】
また、表示目標文字サイズデータDb4として設定された文字サイズが、現在の表示目標となる文字サイズとして説明した。この表示目標文字サイズデータDb4として設定された文字サイズは、ユーザ操作に応じて変更可能にしてもかまわない。また、この表示目標文字サイズデータDb4として設定された文字サイズは、表示される番組表のサイズや表示される時間軸の長さに応じて変更されてもかまわない。
【0146】
また、上記ステップ57における描画領域幅算出処理においては、描画領域の左部分が表示領域から外れた際(図26参照)、描画領域の幅方向に対して描画領域幅dwの再設定を行っている。この場合、スクロール操作によって描画領域の左側の一部が表示領域外となった場合、当該表示領域内に制限した描画領域を用いて番組名を描画し、スクロール操作によって描画領域の右側の一部が表示領域外となった場合、当該表示領域外となった一部を含めた描画領域(すなわち、領域制限なし)を用いて番組名が描画される。この処理において、描画領域の一部が表示領域の左に外れた場合および描画領域の一部が表示領域の右に外れた場合共に、描画領域幅dwの再設定を行ってもかまわない。描画領域の一部が表示領域の右に外れた場合、上記ステップ133において、番組セルの描画領域において表示領域内となる領域の右下端位置に描画終了位置を設定する。そして、設定された描画終了位置までの表示範囲内に位置する描画領域内に、設定された描画文字サイズで描画可能文字数の文字を配置して描画する。
【0147】
また、上述した説明では、主に左右方向にスクロールする例を用いたが、スクロール方向は上下方向であってもかまわない。例えば、上記ステップ57における描画領域幅算出処理において、描画領域の一部が表示領域から外れた際、描画領域の高さ方向に対して描画領域高さdhの再設定が行われる。そして、描画領域の一部が表示領域の上に外れた場合に、描画領域高さdhの再設定を行う。そして、描画領域の上端が表示領域から外れた場合、表示領域内となる描画領域の上端を描画開始位置に設定して、当該表示領域内に制限した描画領域を用いて番組名を描画する。なお、スクロール方向が上下方向である場合に、描画領域の一部が表示領域の下に外れた場合も同様の方法で、表示領域内となる描画領域の下端を描画終了位置に設定して、当該表示領域内に制限した描画領域を用いて番組名を描画すればよい。
【0148】
また、上述した処理手順から明らかであるが、ユーザが求めるスクロール量に到達するまで、番組表の表示範囲がスクロールベクトルscvの大きさvaずつ連続的に変化する。これに伴って、上述した番組セル内に記述される番組名の表示態様変化も、大きさvaの単位長ずつ連続的に変化する。したがって、大きさvaを番組セル長より短く設定することによって、番組表の表示範囲や番組名の表示態様変化を単位時間毎に番組セル長よりも小さい単位長ずつ連続的に変化させることができる。また、大きさvaが表示画像の1ドットに設定された場合、非常に細かい1ドットを移動単位としたスクロール表示処理が可能となることは言うまでもない。
【0149】
また、上述した説明では、ユーザのスクロール操作方向に表示領域を移動させることによって、表示される番組セルが当該スクロール操作方向とは逆にスクロール移動する例を説明したが、他の方向に番組セルがスクロール移動してもかまわない。例えば、ユーザのスクロール操作方向と逆に表示領域を移動させることによって、表示される番組セルが当該スクロール操作方向と同じ方向にスクロール移動してもかまわない。
【0150】
また、番組セルに記述する番組文字列データDb2bで示される文字列の文字毎に優先順位を設定しておき、番組名の全ての文字が記述できないときに優先順位の高い文字から順に表示するようにしてもかまわない。例えば、他の番組と重複が多い文字に対する優先順位を相対的に低く設定すれば、少ない文字数で番組名が表示されたとしても他の番組との区別が容易となる。
【0151】
また、上述した説明では、横軸を時間軸、縦軸を放送局軸としたマトリックス状の番組表を用いたが、他の態様の番組表でもかまわない。例えば、横軸を放送局軸、縦軸を時間軸としたマトリックス状の番組表でも、本発明を適用することができる。この場合、番組セルの描画領域の一部が表示領域外か否かの判断を、当該描画領域の縦方向(高さ)に対して行えば、同様の表示制御処理が可能となる。
【0152】
また、上述した説明では、2次元の仮想世界に配置された2次元の番組表例を用いたが、3次元の仮想空間に配置された番組表に対する表示制御も可能であることは言うまでもない。
【0153】
また、上述した説明では、横軸を放送局軸、縦軸を時間軸としたマトリックス状の番組表における各番組セルに記述する文字列の表示制御を行う例を用いたが、番組表とは異なる他の態様で記述される文字列の表示制御も可能である。例えば、一方の軸をゲーム種類の軸、他方の軸を時間軸としたマトリックス状のゲームスケジュール表における各セルに記述する文字列の表示制御を行ってもかまわない。また、双方の軸が時刻軸、日付軸、曜日軸、ユーザ軸等から選ばれたマトリックス状のスケジュール表における各セルに記述する文字列の表示制御を行ってもかまわない。さらに、複数の行および列を有するマトリックス状の表における各セルに記述する文字列の表示制御を行ってもかまわない。このように、本発明は、番組表以外であっても、表形式の各セルに記述する文字列に対して適用可能であり、上述した番組表で得られる効果と同様の効果が得られることは言うまでもない。
【0154】
また、撮像素子743で撮像した画像データを解析してマーカ8Lおよび8Rからの赤外光の位置座標やそれらの重心座標等を取得し、それらを処理結果データとしてコントローラ7内で生成してゲーム装置本体5へ送信する態様を説明したが、他の処理段階のデータをコントローラ7からゲーム装置本体5へ送信してもかまわない。例えば、撮像素子743が撮像した画像データをコントローラ7からゲーム装置本体5へ送信し、CPU10において上記解析処理を行って処理結果データを取得してもかまわない。この場合、コントローラ7に設けられた画像処理回路744が不要となる。また、上記画像データの解析途中のデータをコントローラ7からゲーム装置本体5へ送信してもかまわない。例えば、画像データから得られる輝度、位置、および面積等を示すデータをコントローラ7からゲーム装置本体5へ送信し、CPU10において残りの解析処理を行って処理結果データを取得してもかまわない。
【0155】
また、上述した説明では、2つのマーカ8Lおよび8Rからの赤外光を、コントローラ7の撮像情報演算部74の撮像対象としたが、他のものを撮像対象にしてもかまわない。例えば、1つまたは3つ以上のマーカをモニタ2の近傍に設置し、それらのマーカからの赤外光を撮像情報演算部74の撮像対象としてもかまわない。また、モニタ2の表示画面自体や他の発光体(室内灯等)を撮像情報演算部74の撮像対象としてもかまわない。撮像対象とモニタ2の表示画面との配置関係に基づいて、当該表示画面に対するコントローラ7の指し示し位置を演算すれば、様々な発光体を撮像情報演算部74の撮像対象として用いることができる。
【0156】
また、上述した説明では、コントローラ7とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
【0157】
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等や、表示制御処理で用いる各数式、定数、処理順序等は、単なる一例に過ぎず他の形状、数、設置位置、数式、定数、処理順序であっても、本発明を実現できることは言うまでもない。また、コントローラ7における撮像情報演算部74の位置(撮像情報演算部74の光入射口)は、ハウジング71の前面でなくてもよく、ハウジング71の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0158】
また、上述した説明では、コントローラ7に対する操作に応じて処理を行う据置型のゲーム装置本体5に本願発明を適用した例を説明したが、携帯ゲーム装置にも適用することができる。例えば、携帯ゲーム装置の本体に設けられた操作ボタンに対する操作に応じて、上述した表示制御処理を実行する。このように本願発明を適用することで、携帯ゲーム装置等においても、本発明の表示制御処理を実現することができる。
【0159】
また、上述した説明では、据置型や携帯型のゲーム装置に本願発明を適用した例を説明したが、本発明は、入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置や携帯型の情報処理装置にも適用することができる。携帯型の情報処理装置としては、例えば一般的なパーソナルコンピュータ、携帯電話機、PDA(Personal Digital Assistant)等のデバイスに適用することができる。また、本発明は、テレビ受信機、DVD(Digital Versatile Disc)レコーダ、ビデオレコーダ等の放送受信装置における番組表の表示制御にも適用することができる。
【0160】
また、本発明の表示制御プログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されるだけでなく、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されてもよい。なお、表示制御プログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。また、当該表示制御プログラムは、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。
【0161】
以上、本発明を詳細に説明してきたが、上述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【0162】
本発明に係る表示制御プログラムおよび表示制御装置は、スクロール操作に対する情報の把握を容易にするとともに表示情報の視認性を高めることができ、複数の描画領域内にそれぞれ所定の文字を表示するためのプログラムや装置等として有用である。
【図面の簡単な説明】
【0163】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置本体5の機能ブロック図
【図3】図1のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面前方から見た斜視図
【図5】図3のコントローラ7の上筐体を外した状態を示す斜視図
【図6】図4のコントローラ7の下筐体を外した状態を示す斜視図
【図7】図3のコントローラ7の構成を示すブロック図
【図8】マーカ8Lおよび8Rと撮像情報演算部74との視野角を説明するための図
【図9】モニタ2に表示される番組表がスクロール表示される第1の状態を示す画面例
【図10】モニタ2に表示される番組表がスクロール表示される第2の状態を示す画面例
【図11】モニタ2に表示される番組表がスクロール表示される第3の状態を示す画面例
【図12】モニタ2に表示される番組表がスクロール表示される第4の状態を示す画面例
【図13】モニタ2に表示される番組表の番組セルC2がスクロール表示される一連の表示態様変化の一例を示す画面例
【図14】ゲーム装置本体5のメインメモリに記憶される主なデータの一例を示す図
【図15】図12に示す番組セルデータDb2の詳細な内容の一例を示す図
【図16】ゲーム装置本体5において実行される表示制御処理の流れを示すフローチャート
【図17】図16のステップ57における描画領域幅算出処理の詳細な動作を示すサブルーチン
【図18】図16のステップ58における番組表表示更新処理の詳細な動作を示すサブルーチン
【図19】図18のステップ98における描画可能文字数算出処理の詳細な動作を示すサブルーチン
【図20】図18のステップ103における番組セル描画処理の詳細な動作を示すサブルーチン
【図21】スクロールベクトルscvの大きさvaの第1の設定例を示すグラフ
【図22】スクロールベクトルscvの大きさvaの第2の設定例を示すグラフ
【図23】番組表に対する表示領域の設定例を説明するための図
【図24】スクロール操作に応じた表示領域の設定例を説明するための図
【図25】番組セルに設定される描画領域幅dwおよび描画領域高さdhの設定例を説明するための図
【図26】番組セルの一部分が表示領域内となった場合に設定される描画領域幅dwおよび描画領域高さdhの設定例を説明するための図
【符号の説明】
【0164】
1…ゲームシステム
2…モニタ
2a、706…スピーカ
3…ゲーム装置
4…光ディスク
5…ゲーム装置本体
10…CPU
11…システムLSI
12…外部メインメモリ
13…ROM/RTC
14…ディスクドライブ
15…AV−IC
16…AVコネクタ
17…フラッシュメモリ
18…無線通信モジュール
19…無線コントローラモジュール
20…拡張コネクタ
21…外部メモリカード用コネクタ
22、23…アンテナ
24…電源ボタン
25…リセットボタン
26…イジェクトボタン
31…入出力プロセッサ
32…GPU
33…DSP
34…VRAM
35…内部メインメモリ
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
704…バイブレータ
707…サウンドIC
708…アンプ
8…マーカ

【特許請求の範囲】
【請求項1】
複数の描画領域内にそれぞれ所定の文字列を描画して、当該描画領域を表形式に配列した表を表示する装置のコンピュータで実行される表示制御プログラムであって、
前記コンピュータを、
ユーザの操作データを取得する操作データ取得手段と、
前記操作データが示す操作内容に基づいて、スクロール量を算出するスクロール量算出手段と、
表示装置に表示される前記表の表示範囲を、前記スクロール量に基づいて当該表に対して移動させる表示範囲移動手段と、
前記各描画領域に対して、それぞれ前記文字列を描画する描画開始位置が前記表示範囲内か否かを判断する描画開始位置判断手段と、
前記描画開始位置が前記表示範囲外であると前記描画開始位置判断手段が判断した前記描画領域に対して、当該描画領域の描画開始位置を前記表示範囲内の当該描画領域内に変更する描画開始位置変更手段と、
前記描画領域にそれぞれ設定されている前記描画開始位置から、当該描画領域内に文字列を配置する文字列配置手段と、
前記表示範囲内の前記表を、前記文字列配置手段が配置した文字列と共に前記表示装置に表示する表示制御手段として機能させる、表示制御プログラム。
【請求項2】
前記描画開始位置判断手段は、その一部分が前記表示範囲内に含まれて他の部分が前記表示範囲外となる前記描画領域に対して、前記描画開始位置が前記表示範囲内か否かを判断する、請求項1に記載の表示制御プログラム。
【請求項3】
前記表示範囲移動手段は、前記スクロール量に基づいて、前記表示範囲を前記描画領域のスクロール方向の長さより短い距離だけ単位時間毎に移動させ、
前記描画開始位置判断手段は、前記表示範囲移動手段が前記表示範囲を移動させる毎に、前記描画開始位置が前記表示範囲内か否かを判断する、請求項1または2に記載の表示制御プログラム。
【請求項4】
前記スクロール量算出手段は、前記操作データが示す操作内容に基づいて、単位時間毎のスクロール量を示すスクロール速度を当該単位時間毎に算出し、
前記表示範囲移動手段は、前記スクロール速度に基づいて前記単位時間毎に当該表に対して前記表示範囲を移動させる、請求項1または2に記載の表示制御プログラム。
【請求項5】
その一部分が前記表示範囲内に含まれて他の部分が前記表示範囲外となる前記描画領域に対して、当該描画領域を前記表示範囲内に含まれる領域のみに拡大縮小する描画領域拡大縮小手段と、
前記描画領域拡大縮小手段が前記描画領域を拡大縮小した場合、当該描画領域に描画する文字列の文字サイズを変更するか否かを判定する文字サイズ判定手段と、
前記文字サイズ判定手段が前記描画領域に描画する文字サイズを変更すると判定した場合、当該描画領域に描画する文字サイズを変更する文字サイズ変更手段として、さらに前記コンピュータを機能させ、
前記文字列配置手段は、前記文字サイズ変更手段が変更した前記描画領域の文字サイズで、当該描画領域の前記描画開始位置から当該描画領域内に文字列を配置する、請求項1または2に記載の表示制御プログラム。
【請求項6】
前記文字サイズ判定手段は、
前記描画領域の大きさに基づいて、当該描画領域内に配置可能な文字数を算出する文字数算出手段と、
前記文字数算出手段によって算出された前記描画領域内に配置可能な文字数が所定数以上か否かに応じて、当該描画領域に描画する文字列の文字サイズを変更するか否かを判定する文字数判定手段とを含み、
前記文字サイズ変更手段は、前記文字数判定手段によって前記文字数が前記所定数以上であると判定された描画領域について相対的に大きな文字サイズに変更し、前記文字数判定手段によって前記文字数が前記所定数未満であると判定された描画領域について相対的に小さな文字サイズに変更する、請求項5に記載の表示制御プログラム。
【請求項7】
前記文字サイズ変更手段は、前記文字数判定手段によって前記文字数が前記所定数未満であると判定された描画領域について、当該描画領域に配置する文字サイズを1段階小さくし、
前記文字数算出手段は、前記文字サイズ変更手段が文字サイズを縮小した場合、当該文字サイズを縮小した対象の描画領域の大きさおよび当該縮小後の文字サイズに基づいて、前記描画領域内に配置可能な文字数をそれぞれ算出し、
前記文字数判定手段は、前記文字サイズ変更手段が文字サイズを縮小したことに応じて、前記文字数算出手段が算出した文字数が所定数以上であるか否かを判定する、請求項6に記載の表示制御プログラム。
【請求項8】
前記文字列配置手段は、前記文字サイズ変更手段が最小の文字サイズまで縮小した状態で前記描画領域内に配置可能な文字数が前記所定数未満であると前記文字数判定手段が判定した場合、当該描画領域を空白にする、請求項7に記載の表示制御プログラム。
【請求項9】
前記文字数算出手段は、
前記描画領域の一辺の長さおよび当該描画領域に配置する文字サイズに応じた文字の当該一辺方向の長さに基づいて、当該描画領域内に配置可能な文字行数を算出する行数算出手段と、
前記描画領域の他辺の長さおよび当該描画領域に配置する文字サイズに応じた文字の当該他辺方向の長さに基づいて、当該描画領域内の各行に配置可能な行別文字数を算出する行別文字数算出手段とを含み、
前記文字数算出手段は、前記文字行数および前記行別文字数を用いて前記描画領域内に配置可能な文字数を算出し、
前記文字列配置手段は、前記文字サイズ変更手段が変更した前記描画領域の文字サイズで、当該描画領域の前記描画開始位置から前記文字行数に応じた行数で当該描画領域内に文字列を配置する、請求項6に記載の表示制御プログラム。
【請求項10】
前記表は、一方の軸が時間軸および他方の軸が放送局軸に定義されたマトリックス状に前記複数の描画領域を表形式に配列した番組表であり、
前記文字列配置手段は、少なくとも番組名を示す文字列を当該番組の放送局および放送時刻に応じた前記描画領域内に配置する、請求項1または2に記載の表示制御プログラム。
【請求項11】
複数の描画領域内にそれぞれ所定の文字列を描画して、当該描画領域を表形式に配列した表を表示する表示制御装置であって、
ユーザの操作データを取得する操作データ取得手段と、
前記操作データが示す操作内容に基づいて、スクロール量を算出するスクロール量算出手段と、
表示装置に表示される前記表の表示範囲を、前記スクロール量に基づいて当該表に対して移動させる表示範囲移動手段と、
前記各描画領域に対して、それぞれ前記文字列を描画する描画開始位置が前記表示範囲内か否かを判断する描画開始位置判断手段と、
前記描画開始位置が前記表示範囲外であると前記描画開始位置判断手段が判断した前記描画領域に対して、当該描画領域の描画開始位置を前記表示範囲内の当該描画領域内に変更する描画開始位置変更手段と、
前記描画領域にそれぞれ設定されている前記描画開始位置から、当該描画領域内に文字列を配置する文字列配置手段と、
前記表示範囲内の前記表を、前記文字列配置手段が配置した文字列と共に前記表示装置に表示する表示制御手段とを備える、表示制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate


【公開番号】特開2009−175517(P2009−175517A)
【公開日】平成21年8月6日(2009.8.6)
【国際特許分類】
【出願番号】特願2008−14940(P2008−14940)
【出願日】平成20年1月25日(2008.1.25)
【出願人】(000233778)任天堂株式会社 (1,115)
【出願人】(391041718)株式会社ハル研究所 (38)
【Fターム(参考)】