(ゲームシステムの全体構成)
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、コントローラ5、およびセンサバー6を含む。本システムは、コントローラ5を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
ゲーム装置3には、テレビ2が接続コードを介して接続される。テレビ2は、家庭用テレビジョン受像機等の表示装置である。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、センサバー6が設置される。センサバー6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6Rおよび6Lは、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。センサバー6はゲーム装置3に接続されており、ゲーム装置3はセンサバー6が備える各赤外LEDの点灯を制御することが可能である。
コントローラ5は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与える入力装置である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。
(ゲーム装置3の内部構成)
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
図2において、ゲーム装置3は、各種プログラムを実行する、例えばCPU(セントラルプロセッシングユニット)10を備える。CPU10は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ13等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU10には、メモリコントローラ11を介して、GPU(Graphics Processing Unit)12、メインメモリ13、DSP(Digital Signal Processor)14、およびARAM(Audio RAM)15が接続される。また、メモリコントローラ11には、所定のバスを介して、通信ユニット16、ビデオI/F(インターフェース)17、フラッシュメモリ18、LED制御部19、オーディオI/F20、およびディスクI/F21が接続されている。ビデオI/F(インターフェース)17はテレビ2に、LED制御部19はセンサバー6に、オーディオI/F20はテレビ2に搭載されるスピーカ2aおよびディスクドライブ22に、ディスクI/F21はディスクドライブ22に、それぞれ接続されている。
GPU12は、CPU10の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU12は、図示しない画像処理専用のメモリやメインメモリ13の一部の記憶領域を用いて画像処理を行う。GPU12は、当該画像処理によってテレビ2に表示すべきゲーム画像データやムービー映像を生成し、メモリコントローラ11およびビデオI/F17を介してテレビ2に適宜出力する。
メインメモリ13は、CPU10で使用される記憶領域であって、CPU10の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ13は、CPU10によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ13に記憶されたゲームプログラムがCPU10によって実行される。
DSP14は、ゲームプログラム実行時にCPU10において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM15が接続される。ARAM15は、DSP14が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP14は、ARAM15に記憶されたサウンドデータを読み出し、メモリコントローラ11およびオーディオI/F20を介してスピーカ2aに出力させる。
メモリコントローラ11は、データ転送を統括的に制御するものであり、上述した通信ユニット16、フラッシュメモリ18、LED制御部19、各種I/F17,20および21、ならびにネットワーク通信部23が接続される。
通信ユニット16は、ゲーム装置3とコントローラ5との間のデータの送受信を行う。コントローラ5は、自機に対する操作内容を示す操作データをゲーム装置3へ送信する。通信ユニット16は、コントローラ5から操作データを受信し、受信した操作データをメモリコントローラ11を介してCPU10へ出力する。CPU10は、上記操作データに応じてゲーム処理を実行する。また、コントローラ5の動作を制御するための制御データがコントローラ5へ送信される場合、当該制御データは通信ユニット16へ出力される。通信ユニット16は、入力された制御データをコントローラ5へ送信する。
ビデオI/F17には、テレビ2が接続され、GPU12によって生成された画像データは、ビデオI/F17を介してテレビ2へ出力される。フラッシュメモリ18は、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能する。ゲーム装置3は、フラッシュメモリ18に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をテレビ2に表示することができる。LED制御部19にはセンサバー6が備える赤外LEDが接続される。CPU10は、当該赤外LEDを点灯させる場合、LED制御部19に給電指示を行う。給電指示に従ってLED制御部19が赤外LEDに給電を行うことによって、赤外LEDが点灯する。本実施形態では、少なくともゲームプログラムの実行が開始されている間は赤外LEDが点灯される。オーディオI/F20にはテレビ2に内蔵されるスピーカ2aが接続され、DSP14がARAM15から読み出したサウンドデータや、ディスクドライブ22から直接出力されるサウンドデータがスピーカ2aから出力される。ディスクI/F21には、ディスクドライブ22が接続される。ディスクドライブ22は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ディスクI/F21やオーディオI/F20に出力する。
ネットワーク通信部23は、無線LANに接続する機能を有しており、インターネット等のネットワーク24に接続されている。ゲーム装置3は、ネットワーク通信部23を介して外部から後述するニュースデータやゲームプログラムや種々のデータを取得したり、外部へデータを送信したりすることが可能である。
(コントローラ5の構成)
次に、図3〜図6を参照して、コントローラ5について説明する。図3および図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図であり、図4は、コントローラ5を下側前方から見た斜視図である。
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。ユーザ(プレイヤ)は、コントローラ5を用いることによって、それに設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字キー32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源32hは、その上面がハウジング31の上面に埋没している。これによって、ユーザがホームボタン32fまたは電源32hを誤って押下することを防止することができる。
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、他のコントローラ)を接続するために利用される。
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をユーザに通知したり、コントローラ5の電池残量をユーザに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
また、コントローラ5は撮像情報演算部35(図5B)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ49(図5A)からの音を外部に放出するための音抜き孔31aが形成されている。
次に、図5Aおよび図5Bを参照して、コントローラ5の内部構造について説明する。図5Aおよび図5Bは、コントローラ5の内部構造を示す図である。なお、図5Aは、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bは、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bに示す斜視図は、図5Aに示す基板30を裏面から見た斜視図となっている。
図5Aにおいて、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ49等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図5B参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、無線モジュール44(図6)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
一方、図5Bにおいて、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ48が設けられている。バイブレータ48は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ48が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ48は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ48がコントローラ5の中心よりも端側に配置することによって、バイブレータ48の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5Aおよび図5Bに示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ49に音声信号を出力するアンプ等を備えている。
なお、図3〜図5A、図5Bに示したコントローラ5の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
図6は、コントローラ5の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、コネクタ33、撮像情報演算部35、通信部36、および加速度センサ37を備えている。コントローラ5は、自機の姿勢に応じたデータを操作データとしてゲーム装置3へ送信するものである。
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示すデータを通信部36のマイコン42へ出力する。
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、3軸または2軸の加速度センサは、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ5を基準に設定されるXYZ座標系における3次元のベクトルとして表される。加速度センサ37が検出した加速度(加速度ベクトル)を示すデータ(加速度データ)は、通信部36へ出力される。
なお、後述する本実施形態における処理では、上記加速度センサ37から出力されるデータは使用しないので、コントローラ5は、加速度センサ37を有しない構成であってもよい。
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、テレビ2の表示画面近傍に配置されるセンサバー6のマーカ6Rおよび6Lは、テレビ2の前方に向かって赤外光を出力する赤外LEDで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、マーカ6Rおよび6Lの画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ6Rおよび6L)の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(姿勢)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。なお、他の実施形態では、コントローラ5は、マーカ座標を算出するために必要なデータ(例えば、撮像画像のデータ)をゲーム装置3へ送信し、ゲーム装置3が当該データに基づいてマーカ座標を算出するようにしてもよい。
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。
操作部32、撮像情報演算部35、および加速度センサ37からマイコン42へ出力されたデータは、一時的にメモリ43に格納される。これらのデータは、上記操作データとしてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3の通信ユニット16への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側の通信ユニット16で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部36から通信ユニット16への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で各操作データをゲーム装置3の通信ユニット16へ出力する。
上記コントローラ5を用いることによって、ユーザは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ5によって画面上の任意の位置を指示する操作を行うことができる。
図7を参照して、上記ゲーム装置に対する操作の例について説明する。図7は、ユーザがコントローラ5を用いて操作を行うときの様子を示す図解図である。本実施形態では、ユーザは、図7に示すように、コントローラ5によってテレビ2の画面上の位置Pを指し示す操作を行う。ここで、位置Pは、コントローラ5によって指し示される画面上の位置であり、理想的には、コントローラ5の前端部から上記長手方向に延ばした直線とテレビ2の画面とが交わる位置である。ただし、厳密に当該位置である必要はなく、その周辺の位置をゲーム装置3によって算出することができればよい。以下では、コントローラ5によって指し示される画面上の位置を「ポインティング位置」と呼ぶ。本実施形態では、ポインティング位置にはカーソルが表示され、ユーザは、カーソルを操作することによって画面上の位置を指定する指示を行う。
なお、本実施形態においては、ゲーム装置3は、上記コントローラ5によって指し示されるポインティング位置に表示されるカーソルを用いて、画面上の位置を指定する指示を行うが、他の実施形態においては、画面上の位置を指定する指示はどのような方法で行われてもよい。ゲーム装置3は、例えば、ボタン、マウス、またはスティック等の入力装置によって画面上の位置を指定する指示入力を受け付けるようにしてもよい。
(ゲーム装置3における処理の概要)
以下、本実施形態においてゲーム装置3で行われる処理の概要について説明する。本実施形態において、ゲーム装置3は、外部のサーバからネットワークを介して世界各地のニュースを取得し、取得したニュースをユーザに提示するものである。ゲーム装置3は、地図のデータと、サーバから取得したニュース情報が地図上の各地点に関連付けられたデータを格納している。ゲーム装置3は、これらのデータを用いて地図を表示し、地図上の地点を選択する操作をユーザに行わせることによって当該地点に関連付けられたニュース情報をユーザに提示する。以下では、地図上の地点のうち、ニュース情報が関連付けられた地点を「ニュース地点」と呼ぶ。
本実施形態では、ユーザにニュース情報を提示する際の処理は、大別して、地図表示モード、一覧表示モード、本文表示モードという3つのモードに分けられる。地図表示モードは、地図と、地図上の各ニュース地点に関連付けられたニュース情報を表すアイコンとを表示し、ユーザにニュース情報のグループを選択させるモードである。一覧表示モードは、地図表示モードにおいてユーザに選択されたグループに含まれるニュース情報の一覧を表示し、一覧のうちから1つのニュース情報をユーザに選択させるモードである。本文表示モードは、一覧表示モードにおいてユーザに選択されたニュース情報の内容(ニュースの本文や画像等)を表示することによってニュースをユーザに提示するモードである。以下、図8〜図15を用いて、これらのモード毎に本実施形態の処理の概要を説明する。
まず、地図表示モードにおける処理の概要を説明する。地図表示モードにおいて、ゲーム装置3は、表示すべき地図の画像を生成する。本実施形態において、表示される地図は地球儀(世界地図)であり、3次元の仮想空間において球体で構築されている(図9参照)。仮想空間には、テレビ2の画面に表示すべき画像を生成するための仮想カメラが設定される。ゲーム装置3は、仮想カメラから見た地図の画像を生成し、生成された画像をテレビ2に表示させる。また、本実施形態では、仮想カメラの移動、またはオブジェクトの移動によって地図を拡大・縮小する(つまり地図の縮尺を変更する)操作、および、仮想カメラの俯角を変更する操作が可能である。
図8は、ある縮尺で生成される地図51の画像を示す図である。また、図9は、図8に示す画像から地図51の縮尺が変更された(縮尺が大きくされた)場合に生成される地図51の画像を示す図である。図8および図9においては、日本付近の地図画像が生成される場合を例とする。また、札幌(ニュース地点52)、東京(ニュース地点53)、および京都(ニュース地点54)の3地点がニュース地点である場合を例として説明する。なお、図9においては、球形の地図51の全体の画像が生成されるので、実際には日本以外の国の画像を含む画像が生成されるが、説明を簡単にするため図9においては地図51上に日本のみを示している。
図8および図9に示すように、地図51上には、上記ニュース地点52〜54が存在し、各ニュース地点52〜54にはニュース情報が関連付けられている。また、各ニュース地点52〜54には基準領域が設定される。基準領域は、画面の表示領域上(地図画像上)において設定される領域であり、ニュース地点の表示位置に基づいて決められる。本実施形態において、基準領域は、ニュース地点の表示位置から所定距離r1内の範囲の領域であって、つまり半径r1の円形領域である。図8および図9においては、ニュース地点52の基準領域55、ニュース地点53の基準領域56、および、ニュース地点54の基準領域57がそれぞれ設定される。
ゲーム装置3は、地図51の画像を生成すると、表示される各ニュース地点52〜54に関連付けられたニュース情報をグループに区分する。本実施形態では、ニュース地点同士の間隔が所定の基準より近いニュース情報同士によるグループが設定される。具体的には、ゲーム装置3は、所定の基準に従って1つのニュース情報が関連付けられたニュース地点を基準地点として選択する。そして、基準地点と、当該基準地点からの表示領域上の距離が所定距離r2以内となるニュース地点に関連付けられたニュース情報とを1つのグループに設定する。ゲーム装置3は、基準地点の選択処理と当該基準地点に関連付けられたニュース情報を含むグループの設定処理とを繰り返すことによって、各ニュース情報をグループに区分する。なお、上記所定距離r2は、上記所定距離r1の2倍の値である。つまり、2つのニュース地点の基準領域が重なる場合、当該2つのニュース地点間の表示領域上の距離は所定距離r2以内となる。
例えば図8に示す画像の場合、互いの基準領域が重なるようなニュース地点の組は存在しないので、3つのニュース地点53a〜55aは、それぞれ別のグループに設定される。つまり、図8では、1つのグループは1つのニュース情報に対応し、ニュース地点52(札幌)に関連付けられたニュース情報からなるグループと、ニュース地点53(東京)に関連付けられたニュース情報からなるグループと、ニュース地点54(京都)に関連付けられたニュース情報からなるグループという、3つのグループが設定される。
一方、図9に示す画像の場合、図8に示す画像に比べて地図51の画像が縮小されている(地図の縮尺が大きくされている)。したがって、各ニュース地点間の表示上の距離は、図8に示す画像に比べて短くなっている。その結果、図9に示す画像においては、3つのニュース地点52〜54の基準領域55〜57は、表示領域上において互いに重なっている。したがって、図9に示す画像の場合、3つのニュース地点52〜54に関連付けられたニュース情報は1つのグループに設定される。以上に説明したように、本実施形態においては、表示上の距離が所定距離r2よりも近い複数のニュース地点のそれぞれに関連付けられた各ニュース情報は、1つのグループに区分される。
グループを設定した後、ゲーム装置3は、グループ毎に判定領域を設定する。判定領域は、画面の表示領域上において設定される領域であり、グループが選択されたか否かを判定するために用いられる領域である。つまり、ゲーム装置3は、カーソルによって指定された位置が判定領域内である場合、当該判定領域が設定されたグループが選択されたと判断する。本実施形態では、ゲーム装置3は、グループに含まれる上記基準地点に設定される基準領域を当該グループの判定領域として設定する。例えば、図8に示す画像については、ニュース地点52に関連付けられたニュース情報からなるグループに対しては基準領域55が判定領域として設定され、ニュース地点53に関連付けられたニュース情報からなるグループに対しては基準領域56が判定領域として設定され、ニュース地点54に関連付けられたニュース情報からなるグループに対しては基準領域57が判定領域として設定される。一方、図9に示す画像については、例えばニュース地点53が上記基準地点であるとすると、ニュース地点52〜54に関連付けられたニュース情報からなるグループに対しては基準領域56が判定領域として設定される(図10参照)。
上述のようにグループが設定されると、ゲーム装置3は、地図51の画像とともに、ニュース情報を表すアイコンをテレビ2に表示させる。図11は、地図表示モードにおいてテレビ2の画面に表示される画像の一例を示す図である。なお、図11は、図8に示す地図画像が生成される場合においてテレビ2の画面に表示される画像を示している。図11に示すように、テレビ2の画面には、地図51、アイコン62a〜62e、カーソル63、および各種ボタン64〜67が表示される。なお、図11において、アイコン62aは、札幌に関連付けられているニュース情報を表し、アイコン62b、62c、および62dは、東京に関連付けられているニュース情報を表し、アイコン62eは、京都に関連付けられているニュース情報を表す。
本実施形態においては、アイコンは、グループ毎にまとめて、基準地点の位置に表示される。つまり、1つのグループに複数のニュース情報が含まれる場合、各ニュース情報のアイコンは、まとめて表示される。また、1つのグループに含まれるニュース地点が1つである場合でも、ニュース地点に複数のニュース情報が関連付けられている場合、各ニュース情報のアイコンは、まとめて表示される。
例えば、図11においては、東京には3つのニュース情報が関連付けられているので、東京には3つのアイコン62b、62c、および62dがまとめて表示されている。図11においては、3つのアイコン62b、62c、および62dは、それぞれ表示位置が所定距離だけずらされて重なって見えるように表示される。一方、図12は、図9に示す地図画像が生成される場合においてテレビ2の画面に表示される画像を示す。図12においては、札幌、東京、および京都の3つのニュース地点は1つのグループに区分されるので、これらのニュース地点に関連付けられているニュース情報を表すアイコン62a〜62eは、1つにまとめて表示される。なお、図12では、基準地点を東京としている。また、図13は、地図表示モードにおいてテレビ2の画面に表示される画像の他の一例を示す図である。図13は、札幌に関連付けられたニュース情報が1つのグループに区分され、東京および京都に関連付けられたニュース情報が1つのグループに区分された場合に表示される画像を示している。図13においては、札幌に関連付けられているニュース情報を表すアイコン62aは単独で表示され、東京または京都に関連付けられているニュース情報を表すアイコン62b〜52eは1つにまとめて表示される。以上のように、本実施形態では、1つのグループに区分されたアイコンはまとめて表示されるので、ユーザは、設定されたグループを容易に把握することができる。
また、本実施形態においては、図11〜図13に示されるように、アイコンが表示される各グループの基準地点の地名(図11〜図13の例では、札幌、東京、京都)が、アイコンに関連付けて(アイコンの付近に)表示される。
カーソル63は、ゲーム装置3によって算出される上記ポインティング位置に表示される。本実施形態では、ユーザは、コントローラ5によってカーソル63を画面上で移動させ、カーソル63によって画面上の位置を指定する。カーソルによる画面上の位置の指定は、カーソル63が当該位置を指示している状態で、例えば所定のボタン(例えばAボタン32d)を押下することによって行われる。本実施形態では、カーソル63によって画面上の位置を指定することによって各種の操作が行われる。例えば、グループを選択する操作は、カーソル63を用いて行われる。また、本実施形態では、地図表示モードにおいて、地図51を移動(スクロール)させる操作が可能である。詳細は後述するが、この操作においてもカーソル63が用いられる。
また、本実施形態では、地図表示モードにおいて、地図51を拡大・縮小する(地図の縮尺を変更する)操作、および仮想カメラの俯角を変更する操作が可能である。詳細は後述するが、図11等に示す各種ボタン64〜67は、これらの操作を行うためのボタンである。拡大ボタン65は、地図51を拡大する指示を表すボタンであり、縮小ボタン64は、地図51を縮小する指示を表すボタンである。また、俯角増加ボタン67は、仮想カメラの俯角を大きくする指示を表すボタンであり、俯角減少ボタン66は、仮想カメラの俯角を小さくする指示を表すボタンである。なお、仮想カメラの俯角とは、仮想カメラの視線と当該視線と交わる部分における地図表面とのなす角度である。ユーザは、カーソル63を用いてこれらのボタン64〜67を選択することによって、各ボタン64〜67に応じた指示を行うことができる。
以上のように、地図表示モードにおいては、ニュース情報を表すアイコンが地図とともに表示される。なお、上述したように、地図表示モードにおいては、地図51を拡大・縮小する操作、および、仮想カメラの俯角を変更する操作が可能である。これらの操作が行われた場合、ニュース地点間の表示上の距離は変化する。したがって、本実施形態では、ゲーム装置3は、1フレーム毎にグループの設定を行い、各ニュース情報のグループ分けをリアルタイムに変化させる。その結果、アイコンがいくつかの他のアイコンとまとめて表示されるか、単独で表示されるかについてもリアルタイムで変化する。
地図表示モードにおいて、ユーザは、地図を移動させたり縮尺を変更したりしながら、所望のグループを選択する。グループの選択は、カーソル63によって行われる。具体的には、カーソル63によって画面上の位置が指定されると、ゲーム装置3は、指定された位置がいずれかのグループの判定領域内であるか否かを判定する。そして、指定された位置がいずれかのグループの判定領域内である場合、当該判定領域が設定されているグループが選択されたと判断する。
グループが選択されると、ゲーム装置3は、選択されたグループに含まれているニュース情報の一覧をユーザに提示する。つまり、当該ニュース情報の一覧を表す画像がテレビ2に表示される。これによって、処理のモードは地図表示モードから一覧表示モードへ移行されたことになる。
図14は、一覧表示モードにおいてテレビ2の画面に表示される画像の一例を示す図である。図14に示す画面には、上記カーソル63、一覧画像71、上スクロールボタン72、および、下スクロールボタン73が表示される。
一覧画像71は、選択されたグループに含まれるニュース情報の一覧を表す。具体的には、一覧画像71には、当該ニュース情報毎のニュースの見出しを表す画像(図14において×××…で示している)が含まれる。なお、本実施形態においては、ニュース一覧に表示すべきニュース情報が複数である場合、各ニュース情報の見出し画像は所定の順序に上下に並べられており、所定個数(図14では9個)の見出し画像が同時に画面に表示される。
上スクロールボタン72および下スクロールボタン73は、一覧画像71をスクロールさせる指示を表すボタンである。すなわち、上スクロールボタン72は、見出し画像の1個分の長さだけ画面の上方向に一覧画像71をスクロールさせる指示を表す。また、下スクロールボタン73は、見出し画像の1個分の長さだけ画面の下方向に一覧画像71をスクロールさせる指示を表す。ユーザは、これらのボタン72および73をカーソル63によって指定することによって、各ボタン72および73に応じた指示を行うことができる。以上のように、一覧画像71を上下にスクロールさせることによって、選択されたグループに含まれるニュース地点に関連付けられている全てのニュース情報を表示させることができる。
一覧表示モードにおいて、ユーザは、その内容を閲覧したいニュース情報を選択する。ニュース情報の選択は、どのような方法であってもよいが、例えば、一覧画像71内の各欄うちで、所望のニュース情報が表示されている欄(見出し画像)をカーソル63を用いて指定することによって行われる。ニュース情報が選択されると、ゲーム装置3は、選択されたニュース情報の内容をユーザに提示する。つまり、当該ニュース情報の本文および画像等がテレビ2に表示される。これによって、処理のモードは一覧表示モードから本文表示モードへ移行されたことになる。
図15は、本文表示モードにおいてテレビ2の画面に表示される画像の一例を示す図である。図15に示す画面には、上記地図51、上記カーソル63、ニュース内容画像75、および、復帰ボタン79が表示される。図15に示すように、本文表示モードにおいては、選択されたニュース情報の本文が表示される。
ニュース内容画像75は、上記選択ニュース情報の内容、すなわち、見出し76、本文77、およびニュース画像78を含む。ニュース内容画像75が表示されることによって、ユーザにニュースが提示されたこととなる。また、本実施形態では、選択されたニュース情報のニュース内容画像75に加えて、地図51が画面に表示される。本文表示モードにおいては、選択されたニュース情報が関連付けられているニュース地点を示すマーク(図15に示す○印)および地名(図15では東京)が地図51上に表示される。この画像によって、ユーザは、閲覧しているニュースがどのニュース地点に関連付けられているかを知ることができる。また、復帰ボタン79は、上記地図表示モードへ復帰する指示を表すボタンである。ユーザは、復帰ボタン79をカーソル63によって選択することによって、地図表示モードの画面(図11)を表示させることができる。
以上のように、本実施形態では、ニュース地点間の表示上の距離に応じて、各ニュース情報(各ニュース地点と言っても良い)はグループに区分される(図12)。例えば、複数のニュース地点が密集して表示される場合、これらのニュース地点に関連付けられたニュース情報が1つのグループに設定される。そして、カーソル63によってまずグループが選択されるようにする。さらに、グループが選択された場合には、選択されたグループに含まれるニュース情報の一覧が表示され(図14)、一覧の中からニュース情報を選択することによってニュースの内容が表示される(図15)。以上の処理によって、本実施形態によれば、複数のニュース地点が密集して表示される場合であっても、ユーザが意図しないニュース地点(ニュース情報)を誤って選択することを防止することができ、ニュース情報の選択操作を容易に行うことができる。
(ゲーム装置3における処理の詳細)
次に、ゲーム装置3において実行される処理の詳細について説明する。まず、ゲーム装置3における処理において用いられる主なデータについて図16〜図18を用いて説明する。図16は、ゲーム装置3の記憶装置(メインメモリ13およびフラッシュメモリ18等)に設けられる記憶領域を示す図である。図16に示すように、ゲーム装置3の記憶装置には、表示制御プログラム領域81および処理用データ領域82等が設けられる。
表示制御プログラム領域81は、本発明に係る表示制御プログラムを記憶する領域である。表示制御プログラムは、地図を表示するとともに、外部のサーバから取得したニュース情報を表示するための処理をゲーム装置3に実行させるためのプログラムである。本実施形態では、表示制御プログラムは予めゲーム装置3の記憶装置に記憶されているものとするが、他の実施形態では、当該プログラムは光ディスク4に記憶されており、ゲーム装置3が適宜のタイミングで当該プログラムを光ディスク4から読み出すようにしてもよい。
処理用データ領域82は、ゲーム装置3において実行される処理(図19等参照)において用いられるデータを記憶するための領域である。処理用データ領域82には、配信データ83、カーソルデータ86、および判定領域データ87が記憶されるとともに、第1ニュースバッファ84および第2ニュースバッファ85が設けられる。なお、処理用データ領域82には、図16に示すデータの他、コントローラ5から取得される操作データや、地図画像のデータおよび各ニュース地点の地図上の位置を示すデータを含む地図データ等、処理に必要なデータが記憶される。
配信データ83は、外部のサーバから配信されて取得されるデータであり、ニュース地点に関連付けられたニュース情報のデータを含んでいる。図17は、配信データの一例を示す図である。図17に示すように、配信データ83には、ヘッダ92およびニュース情報データ93が含まれる。ヘッダ92には、例えば、配信データに含まれるニュース情報の数、および、配信データの配信日時等、処理に必要な情報が含まれている。
ニュース情報データ93は、1個のニュース情報を示すデータである。なお、配信データには通常、複数個のニュース情報データが含まれている。ニュース情報データ93は、ニュースIDデータ94、地名データ95、位置データ96、見出しデータ97、および本文データ98等を含む。ニュースIDデータ94は、ニュース情報を識別するための番号を示す。地名データ95は、ニュース情報が関連付けられるニュース地点の地名を示す。位置データ96は、ニュース情報が関連付けられるニュース地点の地図上における位置を示す。本実施形態では、地図は球体の世界地図であるので、地図上の位置を緯度および経度によって表す。すなわち、位置データ96は、ニュース情報が関連付けられたニュース地点の緯度および経度を示す。他の実施形態においては、位置データ96は、3次元、または2次元の座標であってもよいし、あらかじめ地名と位置の対応がついている場合には、地名データ95を位置データに替える構成であってもよい。見出しデータ97は、ニュース情報の見出しを示す。本文データ98は、ニュース情報の本文を示す。なお、ニュース情報データには、図17に示すデータの他に、日時を示すデータや、ニュース情報に関連する映像や画像のデータが含まれていてもよい。
なお、配信データのデータ構造は上記に限らず、何らかの形で地図上の地点とニュース情報とが関連付けられたデータが含まれていればよい。例えば、他の実施形態においては、地名データとニュース情報データとを別にして、それぞれが配信データに含まれるようなデータ構造としてもよい。このとき、ニュース情報データには、配信データに含まれる地名データを指定するポインタが含まれる。このようなデータ構造とすることによって、ニュース情報データ毎に地名データを有する必要がないので、複数のニュース情報データが同じ地名データを重複して含むことがなく、配信データのデータ量を低減することができる。
図16の説明に戻り、第1ニュースバッファ84は、メインメモリ13に現在記憶されている全てのニュース情報を格納するためのバッファ領域である。第1ニュースバッファ84に格納されるニュース情報は、所定の順番(例えば、ニュースの日時が新しい順)で格納されている。以下、先頭から第n(nは1以上の整数)番目に格納されるニュース情報を「第nのニュース情報」と呼ぶこととする。なお、本実施形態においては、配信データに含まれるニュース情報データと同じデータが第1ニュースバッファ84に格納されているわけではなく、実際には、第1ニュースバッファ84には、配信データとして記憶されているニュース情報データを指定するためのポインタが格納されている。例えば、現在記憶されているニュース情報データにはそれぞれインデックス番号が付されており、ポインタは当該インデックス番号を指定する。本実施形態のようにポインタを用いることによって、第1ニュースバッファ84に必要なメモリ領域を低減することができる。
第2ニュースバッファ85は、画面に表示すべきニュース情報からなるグループを格納するためのバッファ領域である。図18は、第2ニュースバッファ85に格納されるデータのデータ構造を概念的に示す図である。図18に示すように、第2ニュースバッファ85には、1以上のグループに区分されて複数のニュース情報(図18では、第1〜第6ニュース情報)が格納される。以下では、第n(nは1以上の整数)番目に生成されたグループを「第nのグループ」と呼ぶこととする。また、1つのグループ内に含まれるニュース情報は、リンク構造によって順番に接続されている。例えば図18においては、第1グループには、第1、第3および第4ニュース情報が含まれており、第1、第3、第4の順に接続されている。同様に、第2グループには、第2および第5ニュース情報が含まれており、第2、第5の順に接続されている。また、第3グループには、第6ニュース情報のみが含まれる。
なお、詳細は後述するが、第2ニュースバッファ85においては、同じグループに含まれるニュース地点に関連付けられているニュース情報が、同じグループとなるように構成される。したがって、本実施形態において、ニュース情報をグループに区分することは、ニュース地点をグループに区分することを意味している。
図18に示すようなデータ構造は、ポインタを用いて実現することができる。本実施形態では、第2ニュースバッファ85には、ニュース情報データに相当する要素(データ)として、配信データとして記憶されているニュース情報データを指定するためのニュース情報指定ポインタと、自己の次に接続される要素を指定するための次要素指定ポインタとが格納される。なお、上記要素には、リンクの先頭であることを示すデータが含まれていてもよい。当該データにより、第2ニュースバッファ85に格納される複数のニュース情報のうちから、リンクの先頭となるニュース情報を容易に検索することができる。
カーソルデータ86は、カーソルの表示領域上(画面上)における位置を示すデータである。また、判定領域データ87は、上記判定領域の表示領域上における位置を示すデータである。カーソルデータ86および判定領域データ87は、カーソルを用いた操作によって地図上の地点からなるグループが選択されたか否かを判定するために用いられる。
次に、ゲーム装置3において行われる処理の詳細な流れを、図19〜図24を用いて説明する。図19は、ゲーム装置3において実行される処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ13等の各ユニットが初期化される。そして、CPU10によって当該上記表示制御プログラムの実行が開始される。図19に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
まずステップS1において、CPU10は、サーバからネットワークを介して配信される配信データを受信し、受信した配信データを配信データ83としてメインメモリ13に記憶する。配信データには、1以上のニュース情報データが含まれている。また、配信データは定期的にサーバから取得されてフラッシュメモリ18に記憶され、ステップS1においてフラッシュメモリ18からメインメモリ13に転送される構成であってもよい。そのような構成とすることで、常に最新の情報を取得することができる。
続くステップS2において、CPU10は、第1ニュースバッファを生成する。すなわち、ステップS1で格納された配信データに含まれている各ニュース情報が第1ニュースバッファ84にそれぞれ格納される。なお、上述したように、各ニュース情報は、所定の順番(例えば、ニュースの日時が新しい順)となるようにソートされて第1ニュースバッファ84に格納される。
上記ステップS1およびS2の後、ステップS3〜S14の処理ループが繰り返し実行される。なお、1回の当該処理ループは、1フレーム時間(例えば1/60秒)に1回の割合で実行される。
なお、本実施形態では、1回に受信される1つの配信データに基づいて作成される第1ニュースバッファを用いて、ニュース情報をユーザに提示する処理(後述するステップS3〜S14)が行われる。ここで、他の実施形態においては、複数個の配信データに基づいて作成される第1ニュースバッファを用いて上記処理を行うようにしてもよい。例えば、サーバは、所定時間間隔(例えば1時間間隔)でゲーム装置3へ配信データを送信し、ゲーム装置3は、最新のものから順に所定数の配信データ(例えば、1日分(24個)の配信データ)を記憶しておくようにしてもよい。このとき、古くなった配信データは削除される。
ステップS3において、CPU10は、コントローラ5から操作データを取得する。すなわち、コントローラ5から送信されてくる操作データを通信ユニット16が受信し、受信された操作データがメインメモリ13に記憶される。これによって、現時点における各操作ボタン32a〜32iの操作状況を示すデータ、および、現時点におけるマーカ座標を示すマーカ座標データがメインメモリ13に記憶される。
続くステップS4において、CPU10は、カーソルの表示位置を算出する。上述したように、カーソルはポインティング位置に表示され、ポインティング位置は上記マーカ座標データを用いて算出される。算出されたポインティング位置を示すデータは、カーソルデータ86としてメインメモリ13に記憶される。なお、ポインティング位置を算出するためのアルゴリズムは、撮像画像から画面上のポインティング位置を算出するものであればどのようなものであってもよい。一例として、以下に示すようなアルゴリズムを用いてポインティング位置を算出することが考えられる。
以下、ポインティング位置の算出方法の一例を説明する。まずCPU10は、メインメモリ13に記憶されているマーカ座標データにより示される2つのマーカ座標の中点を算出する。この中点の位置は、撮像画像に対応する平面上の位置を表すためのxy座標系によって表現される。このxy座標系は、撮像画像の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とするものとする。次に、CPU10は、当該中点の位置を示す座標を、テレビ2の画面上の位置を表すための座標系(x’y’座標系)の座標に変換する。なお、x’y’座標系が、画面の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とするものとすれば、上記変換は次のように行うことができる。すなわち、中点座標のx成分の正負を反転させて所定の割合(例えば、撮像画像のx軸方向の長さを、テレビ2の画面のx’軸方向の長さに一致させる割合)でスケーリングすることによって、ポインティング位置のx’成分を得ることができる。また、中点座標のy成分を所定の割合(例えば、撮像画像のy軸方向の長さを、テレビ2の画面のy’軸方向の長さに一致させる割合)でスケーリングすることによって、指示位置のy’成分を得ることができる。以上のようにして算出されたx’y’座標値により示される位置がポインティング位置となる。また、より正確なポインティング位置の算出方法の例としては、上記2つのマーカ座標を結ぶベクトルがy軸に平行になるように撮像画像の中央を中心として2つのマーカ座標の中点を回転する処理を行い、回転後の当該中点に対して上記変換処理を行う。このような回転による補正処理を行うことによって、コントローラ5が傾いている場合等にも、ポインティング位置を正確に算出することができる。
ステップS4の次のステップS5において、CPU10は、3次元の仮想空間内に球体の地図オブジェクトを配置する。なお、地図オブジェクトの配置処理は、1フレーム毎に行わなくてもよく、当該処理が必要な適宜のタイミング(例えば、地図が表示されるタイミングや、地図オブジェクトが変化するタイミング)でのみ行うようにしてもよい。
ステップS6において、CPU10は、現在の処理モードが本文表示モードであるか否かを判定する。本実施形態では、ゲーム装置3における処理モードは、地図表示モード、一覧表示モード、および本文表示モードのいずれかに設定されている。また、図19に示す処理の開始時には、ゲーム装置3における処理モードは地図表示モードに設定されている。ステップS6の判定結果が肯定である場合、後述するステップS10の処理が実行される。一方、ステップS6の判定結果が否定である場合、ステップS7の処理が実行される。
ステップS7において、CPU10は、現在の処理モードが一覧表示モードであるか否かを判定する。ステップS7の判定結果が肯定である場合、後述するステップS9の処理が実行される。一方、ステップS7の判定結果が否定である場合、すなわち、現在の処理モードが地図表示モードである場合、ステップS8の処理が実行される。
ステップS8においては、地図表示モードにおける処理(地図表示モード処理)が実行される。以下、図20を参照して、地図表示モード処理の詳細を説明する。
図20は、図19に示す地図表示モード処理(ステップS8)の流れを示すフローチャートである。地図表示モード処理においては、まずステップS21において、CPU10は、コントローラ5による操作に応じて地図の表示態様を変更する。具体的には、CPU10は、地図が移動したり、拡大・縮小したり、仮想カメラの視線に対する地表面の角度が変化したりするように、仮想カメラの位置、向き、および視野角を変更する。これによって、地図の移動、地図の拡大・縮小、および、仮想カメラの俯角の変更が行われ、場合によってはニュース地点間の表示上の距離が変更される。
地図の移動は、カーソルを用いた操作に従って行われる。具体的には、移動操作は、地図が表示されている領域にカーソルが位置する状態で所定のボタン(例えばAボタン32d)を押下し、当該所定のボタンを押下したままカーソルを移動させることによって行われる。具体的には、CPU10は、カーソルの移動した方向に応じて、仮想カメラを球体の地図の表面に沿って移動させる。これによって、画面に表示されている地図は、カーソルの移動した方向に応じてスクロールされる。例えば、カーソル63を所定のボタンを押下したまま左方向に移動した場合、地図は左方向にスクロールされる。なお、ゲーム装置3は、マーカ座標データを用いてコントローラ5のZ軸周りの回転を算出することが可能である。したがって、他の実施形態においては、コントローラ5のZ軸周りの回転に応じて、地図を回転させるようにしてもよい。
また、地図の拡大・縮小は、図11に示した拡大ボタン65および縮小ボタン64がカーソルによって指定されたことに応じて行われる。すなわち、CPU10は、カーソルによって拡大ボタン65が指定されると、仮想カメラを球体の地図の表面に近づける方向に移動させ、カーソルによって縮小ボタン64が指定されると、仮想カメラを球体の地図の表面から遠ざける方向に移動させる。また、仮想カメラの位置を変更することに代えて、仮想カメラの視野角を変更するようにしてもよい。以上のように、地図は、拡大ボタン65/縮小ボタン64が指定されたことに応じて拡大/縮小して表示される。また、CPU10は、コントローラ5のプラスボタン32gが押下されたことに応じて地図の拡大を行い、コントローラ5のマイナスボタン32eが押下されたことに応じて地図の縮小を行うようにしてもよい。
また、仮想カメラの俯角の変更は、図11に示した俯角増加ボタン67および俯角減少ボタン66がカーソルによって指定されたことに応じて行われる。すなわち、CPU10は、カーソルによって俯角増加ボタン67が指定されると、仮想カメラの俯角が増加するように仮想カメラの向きを変更し、カーソルによって俯角減少ボタン66が指定されると、仮想カメラの俯角が減少するように仮想カメラの向きを変更する。なお、仮想カメラを移動させることによっても俯角を変更することができる。このように、地図は、俯角増加ボタン67/俯角減少ボタン66が指定されたことに応じて俯角が増加/減少して表示される。
ステップS21の次のステップS22において、グループ設定処理が実行される。グループ設定処理は、表示される地図上のニュース地点をグループに区分する処理である。本実施形態では、グループ設定処理においては、CPU10は、画面に表示するニュース情報のうちでグループが設定されていないニュース情報に関して1つのグループを新規に設定し、表示領域上において、当該ニュース情報が関連付けられたニュース地点からの距離が所定距離(r2)よりも短いニュース地点に関連付けられたニュース情報を当該グループにさらに含める処理を、グループが設定されていないニュース情報が存在しなくなるまで繰り返す。以下、図22を参照して、グループ設定処理の詳細を説明する。
図21は、図20に示すグループ設定処理(ステップS22)の流れを示すフローチャートである。グループ設定処理においては、まずステップS31において、CPU10は、第1ニュースバッファ84に格納されている先頭のニュース情報を指定する。具体的には、第1カウンタiの値をi=1とする。第1カウンタiは、第1ニュースバッファ84に格納されている第iのニュース情報を表す。なお、以下、グループ設定処理の説明において、ステップS31または後述するステップS41で指定されているニュース情報を「指定ニュース情報」と呼ぶ。ステップS31の次にステップS32の処理が実行される。
ステップS32において、CPU10は、指定ニュース情報が画面に表示される可能性がないか否かを判定する。ステップS32の判定は、例えば、仮想カメラの視線ベクトルと、球体の地図の中心から指定ニュース情報が関連付けられている地点へのベクトルとを用いて行われる。すなわち、上記2つのベクトルの内積が負となる場合、仮想カメラから(仮想カメラの)視線方向を見たときに上記地点は球体の表側に位置するので、指定ニュース情報は画面に表示される可能性があると判断することができる。一方、上記2つのベクトルの内積が正となる場合、仮想カメラから(仮想カメラの)視線方向を見たときに上記地点は球体の裏側に位置するので、指定ニュース情報は画面に表示される可能性がないと判断することができる。なお、ステップS32の処理は、画面に表示される可能性がない指定ニュース情報を、ステップS33以降で実行されるグループ区分処理の対象から可能な限り除外する目的で行われるものであり、画面に表示される指定ニュース情報を抽出する目的で行われるものではない。つまり、ステップS32の判定処理おいては、実際には画面に表示されない指定ニュース情報に対して判定結果が否定となることもある。ステップS32の判定結果が否定である(指定ニュース情報が画面に表示される可能性がある)場合、ステップS33の処理が実行される。一方、ステップS32の判定結果が肯定である(指定ニュース情報が画面に表示される可能性がない)場合、後述するステップS40の処理が実行される。
ステップS33において、CPU10は、第2ニュースバッファ85に格納されている第1のグループを指定する。具体的には、第2カウンタjの値をj=1とする。第2カウンタjは、第2ニュースバッファ85に格納される第jのグループを表す。なお、以下、グループ設定処理の説明において、ステップS33または後述するステップS38で指定されているグループを「指定グループ」と呼ぶ。ステップS33の次にステップS34の処理が実行される。
ステップS34において、CPU10は、指定グループにニュース情報が含まれているか否か(指定グループが存在するか否か)を判定する。ステップS34の判定は、第2ニュースバッファ85に格納されているグループ(ニュース情報を含むグループ)の数と、上記第2カウンタjの値とを用いて行われる。すなわち、第2カウンタjの値が、ニュース情報を含むグループの数よりも小さい場合、指定グループにニュース情報が含まれていると判定され、第2カウンタjの値が上記数以上である場合、指定グループにニュース情報が含まれていないと判定される。ステップS34の判定結果が否定である場合、ステップS35の処理が実行される。一方、ステップS34の判定結果が肯定である場合、後述するステップS36の処理が実行される。
ステップS35においては、CPU10は、指定ニュース情報を指定グループの先頭に追加する。具体的には、第2ニュースバッファ85に新たなニュース情報として指定ニュース情報を追加し、当該指定ニュース情報を先頭に含むグループを第2ニュースバッファ85に追加する。より具体的には、指定ニュース情報を表す新たな要素が第2ニュースバッファ85に追加して記憶される。この要素においては、ニュース情報データを指定するためのニュース情報指定ポインタは、指定ニュース情報のニュース情報データを指定する。また、次に接続される要素を指定するための次要素指定ポインタは、次に接続される要素がないことを示す。以上のステップS35の処理によって、第jのグループが新たに設定されたこととなる。ステップS35の次に、後述するステップS40の処理が実行される。
一方、ステップS36においては、CPU10は、指定ニュース情報が関連付けられているニュース地点の表示位置と、指定グループの先頭のニュース情報が関連付けられているニュース地点の表示位置との間の表示上の距離を算出する。具体的には、まず、上記2つのニュース地点の表示領域上の表示位置が算出される。ニュース地点の表示位置は、ステップS5で配置された地図と、ステップS21で設定された仮想カメラの位置および向きとに基づいて、3次元空間における地図上のニュース地点を所定の投影平面に投影することによって得られる。次に、算出された上記2つのニュース地点の表示位置の間の距離が算出される。CPU10は、以上の計算によって上記距離を算出する。
続くステップS37において、CPU10は、ステップS36で算出された距離が、所定距離r2未満であるか否かを判定する。ここで、本実施形態では、所定距離r2は、ニュース地点に基準領域を設定するために用いられる基準(具体的には、半径r1)に基づいて設定され、具体的には、上記基準領域の半径r1の2倍の値である。ステップS37の判定処理は、指定ニュース情報が関連付けられているニュース地点の表示位置と、指定グループの先頭の指定ニュース情報が関連付けられているニュース地点の表示位置とが所定距離よりも近いか否かを判定するための処理である。つまり、ステップS37においては、指定ニュース情報が関連付けられているニュース地点を、指定グループに含めるか否かが判定される。ステップS37の判定結果が否定である場合、ステップS38の処理が実行される。一方、ステップS37の判定結果が肯定である場合、後述するステップS39の処理が実行される。
以上のように、本実施形態では、上記ステップS36およびS37の処理において、ステップS35で指定グループの先頭に追加されたニュース情報に関連付けられているニュース地点と、指定ニュース情報に関連付けられているニュース地点との表示位置が比較される。つまり、本実施形態では、グループの先頭のニュース情報が関連付けられているニュース地点が、上記基準地点として用いられる。
ステップS38において、CPU10は、現在の指定グループの次のグループを新たに指定する。具体的には、第2カウンタjの値をインクリメント(1加算)する。ステップS38の後、ステップS34の処理が再度実行される。
一方、ステップS39において、CPU10は、指定ニュース情報を指定グループのリストの最後に追加する。具体的には、指定ニュース情報を表す新たな要素が第2ニュースバッファ85に追加して記憶される。この要素においては、ニュース情報指定ポインタは、指定ニュース情報のニュース情報データを指定する。また、次要素指定ポインタは、次に接続される要素がないことを示す。さらに、上記新たに追加された要素の前に接続される要素において、次要素指定ポインタが当該新たに追加された要素を指定するように変更される。以上のステップS39の処理によって、指定ニュース情報が指定グループのリストの最後に追加されたこととなる。ステップS39の次に、ステップS40の処理が実行される。
ステップS40において、CPU10は、第1ニュースバッファ84に格納されている全てのニュース情報を指定したか否かを判定する。ステップS40の判定処理は、全てのニュース情報をグループに区分したか否かを判定する処理である。ステップS40の判定結果が否定である場合、ステップS41の処理が実行される。一方、ステップS40の判定結果が肯定である場合、CPU10は、グループ設定処理を終了する。
ステップS41において、CPU10は、現在の指定ニュース情報の次のニュース情報を新たに指定する。具体的には、第1カウンタiの値をインクリメントする。ステップS41の後、ステップS32の処理が再度実行される。
以上のグループ設定処理によって、第1ニュースバッファ84に格納されている各ニュース情報がグループに区分される。すなわち、各ニュース情報は、先頭から順に1つずつ指定され、すでに設定されているグループ(他のニュース情報を含むグループ)に含まれるか否かが判定される(ステップS36およびS37)。そして、判定結果が肯定の場合(ステップS37でYes)、当該グループのリストの最後にニュース情報が追加され、判定結果が否定の場合(ステップS37でNo)、次のグループが指定され(ステップS38)、上記と同様の判定が行われる(ステップS36およびS37)。また、すでに設定されているグループにニュース情報が含められない場合(ステップS34でNo)、当該ニュース情報を先頭に含むグループが新たに設定される(ステップS35)。第1ニュースバッファ84に格納されている各ニュース情報について以上の処理を実行することによって、各ニュース情報にグループが設定されたこととなる。
また、上記ステップS36およびS37において、指定ニュース情報に関連付けられているニュース地点と、指定グループの先頭のニュース情報に関連付けられているニュース地点との表示上の距離が近い(所定距離r2内である)場合(ステップS37でYes)、当該指定ニュース情報と当該先頭のニュース情報とは同じグループに設定される(ステップS39)。つまり、指定ニュース情報に関連付けられているニュース地点と、指定グループの先頭のニュース情報に関連付けられているニュース地点とは、同じグループに設定されたこととなる。このように、上記グループ設定処理によって、地図上の各ニュース地点にグループが設定されたこととなる。
以上に説明したグループ設定処理においては、グループの先頭のニュース情報が関連付けられたニュース地点のみが、指定ニュース情報が関連付けられたニュース地点との比較(ステップS37)の対象となる。つまり、グループの先頭のニュース情報が関連付けられたニュース地点が基準地点となる。そのため、基準地点の表示位置は、グループに含まれる他の全てのニュース地点から表示領域上で所定距離r1以内の位置となる。これによれば、表示位置が所定距離r1の2倍よりも離れた位置となる2つのニュース地点が1つのグループに区分されることはない。つまり、1つのグループに区分されるニュース地点の範囲が必要以上に大きくなることはなく、グループを適切に設定することができる。
なお、本実施形態におけるグループ設定処理では、第1ニュースバッファ84に格納される順番が若いニュース情報が先に指定されるので、順番が若いニュース情報が優先して基準地点となる。したがって、第1ニュースバッファ84に格納される順番を所定の基準に従って決定することによって、優先して基準地点となるニュース情報の種類を決定することができる。例えば、ニュースの日時が新しい順にニュース情報を第1ニュースバッファ84に格納することで、新しいニュース情報が優先して基準地点となるようにすることができる。また、ニュース情報に優先度を設定しておき(具体的には、配信データ83に含まれるニュース情報データ93に、優先度を示すデータを含める)、第1ニュースバッファ84における格納順を当該優先度に従って決定するようにしてもよい。
図20の説明に戻り、ステップS22の次のステップS23において、画像生成処理が実行される。画像生成処理は、地図表示モードにおいてテレビ2に表示すべき画像(例えば図11に示す画像)を生成するための処理である。以下、図23を参照して、画像生成処理の詳細を説明する。
図22は、図20に示す画像生成処理(ステップS23)の流れを示すフローチャートである。画像生成処理においては、まずステップS50において、CPU10は、第2ニュースバッファ85に格納されているグループのうちの先頭のグループ(第1グループ)を指定する。具体的には、上記第2カウンタjの値がj=1に設定される。なお、以下、画像生成処理の説明において、ステップS50または後述するステップS58で指定されているグループを「指定グループ」と呼ぶ。ステップS50の次にステップS51の処理が実行される。
ステップS51において、CPU10は、第2ニュースバッファ85に格納されている全てのグループに対してステップS52以降の処理を実行したか否かを判定する。ステップS51の判定は、第2ニュースバッファ85に格納されているグループの数と、上記第2カウンタjの値とを用いて行われる。すなわち、第2カウンタjの値が、ニュース情報を含むグループの数よりも大きい場合、全てのグループに対してステップS52以降の処理を実行したと判定され、第2カウンタjの値が上記数以下である場合、ステップS52以降の処理を実行していないグループが存在すると判定する。ステップS51の判定結果が否定である場合、ステップS52の処理が実行される。一方、ステップS51の判定結果が肯定である場合、後述するステップS59の処理が実行される。
ステップS52において、CPU10は、指定グループの先頭のニュース情報を指定する。具体的には、第3カウンタkの値をk=1とする。第3カウンタkは、指定グループの先頭からk番目のニュース情報を示す。なお、以下、画像生成処理の説明において、ステップS52または後述するステップS56で指定されているニュース情報を「指定ニュース情報」と呼ぶ。
続くステップS53において、CPU10は、指定ニュース情報の3次元空間における位置(すなわち、指定ニュース情報に関連付けられているニュース地点の位置)を読み出す。CPU10は、指定ニュース情報に対応するニュース情報データ93に含まれる位置データ96をメインメモリ13から読み出す。なお、指定ニュース情報に対応するニュース情報データ93は、第2ニュースバッファ85に格納されている指定ニュース情報の要素に含まれているニュース情報指定ポインタにより指定されている。上記ステップS53においては、グループの先頭のニュース情報に関連付けられているニュース地点の位置が読み出される。したがって、ステップS53において読み出される位置は、基準地点の位置である。ステップS53の次にステップS54の処理が実行される。
ステップS54において、CPU10は、指定ニュース情報を表すアイコンのオブジェクトを生成し、当該オブジェクトを3次元仮想空間に配置する。アイコンのオブジェクトは、指定ニュース情報の内容(見出し、本文、および画像等)を用いて生成される。本実施形態では、指定ニュース情報に対応するニュース情報データに画像データが含まれている場合、当該画像データを用いてアイコンのオブジェクトが生成される。また、指定ニュース情報に対応するニュース情報データに画像データが含まれていない場合には、当該ニュース情報データに含まれている見出しデータおよび本文データを用いてアイコンのオブジェクトが生成される。
また、アイコンのオブジェクトの配置位置は、上記ステップS53において読み出された位置データ96に基づいて決定される。具体的には、アイコンのオブジェクトは、上記位置データ96により示される位置(基準地点の位置)から所定の高さだけ上方(球形の地図の表面に対して垂直な方向)の位置に配置される。
ステップS55において、CPU10は、指定グループに含まれる全てのニュース情報のアイコンを仮想空間に配置したか否かを判定する。ステップS55の判定処理は、指定ニュース情報がリンクの最後であるか否かによって行われる。なお、指定ニュース情報がリンクの最後であるか否かは、第2ニュースバッファ85に格納されている指定ニュース情報の要素に含まれている次要素指定ポインタを参照することにより知ることができる。ステップS55の判定結果が否定である場合、ステップS56の処理が実行される。一方、ステップS55の判定結果が肯定である場合、後述するステップS58の処理が実行される。
ステップS56においては、CPU10は、指定グループにおいて現在の指定ニュース情報の次に接続されている指定ニュース情報を新たに指定する。具体的には、第3カウンタkの値がインクリメントされる。
続くステップS57において、CPU10は、指定グループに含まれるニュース情報のアイコンのオブジェクトであって、ステップS54ですでに配置されているアイコンのオブジェクトの配置位置をずらす。具体的には、当該アイコンのオブジェクトは、上記所定の高さだけ上方の位置にずらして配置される。ステップS57の次に、ステップS54の処理が再度実行される。次に実行されるステップS54においては、ステップS56で新たに指定された指定ニュース情報のアイコンが、基準地点の位置から上記所定の高さだけ上方の位置に配置される。したがって、上記ステップS54〜S57の処理が繰り返されることによって、1つのグループに含まれるニュース情報のアイコンが上方に重ねて表示されることになる(図12参照)。また、上記ステップS53においては基準地点の位置が特定されるので、以降のステップS54〜S57の処理においては、1つのグループに含まれる各ニュース情報のアイコンは、上記基準地点の位置に重ねて配置される。
本実施形態では、上記ステップS54〜S57によって、1つのグループに含まれるニュース情報のアイコンは、第1ニュースバッファ84に格納されている順番に上から配置されることになる。したがって、第1ニュースバッファ84に格納される順番を所定の基準に従って決定することによって、1つのグループに含まれるアイコンの配置順を当該所定の基準に従って決定することができる。例えば、ニュース情報に優先度を設定しておき、第1ニュースバッファ84における格納順を当該優先度に従って決定することによって、ニュース情報のアイコンを優先度が高いほど上に配置されるようにすることができる。また、他の実施形態では、上記ステップS59の処理の前にアイコンの配置を変更する処理を実行するようにしてもよい。例えば、ニュース情報データに画像データが含まれているニュース情報が最上部に配置されるように、アイコンの配置を変更するようにしてもよい。
一方、ステップS58において、CPU10は、現在の指定グループの次のグループを新たに指定する。具体的には、第2カウンタjの値をインクリメントする。ステップS58の後、ステップS51の処理が再度実行される。以降、ステップS51の判定結果が肯定となるまで、すなわち、第2ニュースバッファ85に格納されている全てのグループに含まれるニュース情報のアイコンを仮想空間に配置するまで、ステップS51〜S58の処理ループが繰り返し実行される。
一方、ステップS59において、CPU10は、画面に表示すべき画像を生成する。すなわち、まず、当該地図およびオブジェクトを仮想カメラから見た画像が透視変換処理によって生成される。さらに、生成された画像に、カーソルおよび各種ボタン64〜67の画像を重ねることによって、画面に表示すべき画像が生成される(図11および図12)。地図表示モードにおいては、ステップS59で生成された画像がテレビ2の画面に表示される(後述するステップS13)。ステップS59の後、CPU10は画像生成処理を終了する。
以上のように、本実施形態では、地図表示モードにおいては、画面に表示すべき地図の画像が生成される度にグループ設定処理(ステップS22)が実行されるので、グループ分けがリアルタイムに実行されることとなる。ここで、ステップS21で地図の縮尺や仮想カメラの俯角が変更された場合には、複数のニュース地点が近接して表示され、各ニュース地点を画面上で個別に指定することが難しくなる場合がある。これに対して、本実施形態では、グループ分けがリアルタイムに実行されるので、地図の表示状況に応じて適切なグループ分けが行われることとなる。
また、本実施形態では、各グループに設定される判定領域は画面上には表示されないが、他の実施形態においては、判定領域を画面上に表示するようにしてもよい。これによれば、カーソルによって判定領域内の位置を指定する操作がより容易になる。さらにこのとき、判定領域と同じ大きさ・形状のアイコンを判定領域の位置に表示するようにしてもよい。
図20の説明に戻り、ステップS23の次のステップS24において、CPU10は、第2ニュースバッファ85において設定されている各グループに対して上記判定領域を設定する。本実施形態では、グループに対して設定される判定領域は、当該グループに含まれる基準地点に設定される基準領域である(図10参照)。すなわち、判定領域は、グループに含まれる基準地点の表示位置に基づいて設定され、具体的には、基準地点の表示位置を中心とした半径r1の円形領域として設定される。したがって、本実施形態では、各グループに設定される判定領域はすべて同じ大きさおよび形状となるので、グループ毎に大きさまたは形状が異なる場合に比べて、カーソルによるグループの指定操作が容易になる。
上記ステップS24においては、設定された判定領域を示すデータが判定領域データ87としてメインメモリ13に記憶される。ここで、判定領域は、予め定められた半径r1の円形領域であるので、基準地点の表示位置を示すデータによって判定領域を特定することができる。したがって、本実施形態では、CPU10は、基準地点の表示位置を示すデータを判定領域データ87としてメインメモリ13に記憶する。なお、メインメモリ13には、グループ毎に設定された各判定領域を示すデータが判定領域データ87として記憶される。
以上のように、本実施形態では、基準地点に設定される基準領域が判定領域として用いられた。ここで、他の実施形態においては、判定領域は、グループに含まれる各ニュース地点を含む領域として設定されてもよい。具体的には、グループに含まれる各ニュース地点の各基準領域からなる領域を判定領域として設定してもよい。これによれば、グループに含まれるニュース地点の位置は全て判定領域内となるので、カーソルによってニュース地点の位置を指定すれば確実に当該ニュース地点を含むグループを選択することができる。また、他の実施形態においては、グループに含まれる各ニュース地点の表示位置に基づいて算出される位置(例えば、各ニュース地点の表示位置の重心位置)を中心とした半径r1の円形領域を、判定領域として設定するようにしてもよい。これによれば、グループに含まれる各ニュース地点の数および表示位置に応じて位置が変化するように判定領域を設定することができる。
ステップS24の次のステップS25において、CPU10は、ユーザによって操作されるカーソルによってグループが選択されたか否かを判定する。具体的には、まず、ステップS3において取得された操作データを参照して、所定のボタン(例えばAボタン32d)が現在押下されているか否かが判定される。所定のボタンが押下されていない場合、ステップS25の判定結果は否定となる。一方、所定のボタンが押下されている場合、CPU10は、カーソル位置が、ステップS24で設定された判定領域のいずれかの内部に位置するか否かを判定する。なお、カーソル位置を示すデータは、カーソルデータ86としてメインメモリ13に記憶されている。カーソル位置が判定領域のいずれかの内部に位置する場合、ステップS25の判定結果は肯定となる。なお、この場合、CPU10は、カーソル位置がその内部に位置する判定領域が設定されるグループを示すデータをメインメモリ13に記憶しておく。一方、カーソル位置が判定領域のいずれの内部にも位置しない場合、ステップS25の判定結果は否定となる。ステップS25の判定結果が肯定である場合、ステップS26の処理が実行される。一方、ステップS25の判定結果が否定である場合、ステップS26の処理がスキップされて、地図表示モード処理が終了される。
ステップS26においては、CPU10は、処理モードを地図表示モードから一覧表示モードに変更する。これによって、次のフレーム処理(ステップS3〜S14の処理)においては、ステップS7の判定結果が肯定となり、一覧表示モード処理が実行されることになる。ステップS26の後、CPU10は、地図表示モード処理を終了する。なお、地図表示モード処理の次に、図19に示すステップS13の処理が実行される。
図19の説明に戻り、ステップS9においては、一覧表示モード処理が実行される。一覧表示モード処理は、地図表示モードにおいて選択されたグループに含まれるニュース地点に関連付けられているニュース情報の一覧を表示する処理である。以下、図23を参照して、一覧表示モード処理の詳細を説明する。
図23は、図19に示す一覧表示モード処理(ステップS9)の流れを示すフローチャートである。一覧表示モード処理においては、まずステップS61において、CPU10は、直前の地図表示モードにおいて選択されたグループに含まれる先頭のニュース情報を指定する。具体的には、第3カウンタkの値をk=1とする。一覧表示モード処理において、第3カウンタkは、直前の地図表示モードにおいて選択されたグループの先頭からk番目のニュース情報を示す。なお、以下、一覧表示モード処理の説明において、ステップS61または後述するステップS65で指定されているニュース情報を「指定ニュース情報」と呼ぶ。
続くステップS62において、CPU10は、指定ニュース情報の見出しデータをメインメモリ13から読み出す。すなわち、CPU10は、指定ニュース情報に対応するニュース情報データ93に含まれる見出しデータ97をメインメモリ13から読み出す。続くステップS63において、CPU10は、ステップS62で読み出した見出しデータ97を用いて、指定ニュース情報の見出しの画像を生成し、生成した画像を一覧画像(図14に示す一覧画像71)に配置する。なお、見出し画像は、一覧画像の上から順に下に向かって並べて配置される。
続くステップS64において、CPU10は、直前の地図表示モードにおいて選択されたグループに含まれる全てのニュース情報の見出し画像が一覧画像に配置されたか否かを判定する。ステップS64の判定処理は、上記ステップS55と同様、指定ニュース情報がリンクの最後であるか否かによって行われる。ステップS64の判定結果が否定である場合、ステップS65の処理が実行される。一方、ステップS64の判定結果が肯定である場合、後述するステップS66の処理が実行される。
ステップS65において、CPU10は、指定グループにおいて現在の指定ニュース情報の次に接続されている指定ニュース情報を新たに指定する。具体的には、第3カウンタkの値がインクリメントされる。ステップS65の次に、ステップS62の処理が再度実行される。以降、ステップS64において、全てのニュース情報の見出し画像が一覧画像に配置されたと判定されるまで、ステップS62〜S65の処理が繰り返し実行される。これによって、ニュース情報の見出し画像が一覧画像の上から順に下に向かって並べて配置されていく。そして、ステップS64の判定結果が肯定となった場合、一覧画像が生成されたことになる。
上述したように、ニュース情報の見出し画像は下に向かって並べて配置されるので、一覧画像の縦の長さは、画面に表示可能な長さよりも長くなることがある。したがって、ステップS66において、CPU10は、生成された一覧画像のうちで、画面に表示する範囲を決定する。具体的には、一覧表示モードの開始時においては、一覧画像の最上部から所定の長さの範囲が、画面に表示する範囲として決定される。また、上スクロールボタン72が一覧表示モード中にカーソルによって指定された場合、画面に表示する範囲は、見出し画像1つ分だけ上側に移動され、下スクロールボタン73が一覧表示モード中にカーソルによって指定された場合、画面に表示する範囲は、見出し画像1つ分だけ下側に移動される。
続くステップS67において、CPU10は、一覧表示モードにおいて表示すべき画像を生成する。すなわち、まず、ステップS62〜S65の処理によって生成された一覧画像から、ステップS66で決定された表示範囲の画像を抽出する。さらに、抽出された画像に、カーソルの画像および上スクロールボタン72および下スクロールボタン73の画像を重ねることによって、画面に表示すべき画像が生成される(図14)。一覧表示モードにおいては、ステップS67で生成された画像がテレビ2の画面に表示される(後述するステップS13)。
ステップS67の次のステップS68において、CPU10は、ユーザによって操作されるカーソルによってニュース情報が選択されたか否かを判定する。具体的には、まず、ステップS3において取得された操作データを参照して、所定のボタン(例えばAボタン32d)が現在押下されているか否かが判定される。所定のボタンが押下されていない場合、ステップS68の判定結果は否定となる。一方、所定のボタンが押下されている場合、CPU10は、カーソル位置が、表示される一覧画像に含まれる見出し画像のいずれかの内部に位置するか否かを判定する。なお、カーソル位置を示すデータは、カーソルデータ86としてメインメモリ13に記憶されている。カーソル位置が見出し画像のいずれかの内部に位置する場合、ステップS68の判定結果は肯定となる。なお、この場合、CPU10は、カーソル位置がその内部に位置する見出し画像に対応するニュース情報を示すデータをメインメモリ13に記憶しておく。一方、カーソル位置が見出し画像のいずれの内部にも位置しない場合、ステップS68の判定結果は否定となる。ステップS68の判定結果が肯定である場合、ステップS69の処理が実行される。一方、ステップS68の判定結果が否定である場合、ステップS69の処理がスキップされて、一覧表示モード処理が終了される。
ステップS69においては、CPU10は、処理モードを一覧表示モードから本文表示モードに変更する。これによって、次のフレーム処理(ステップS3〜S14の処理)においては、ステップS6の判定結果が肯定となり、本文表示モードにおける処理(ステップS10〜S12)が実行されることになる。ステップS69の後、CPU10は、一覧表示モード処理を終了する。なお、一覧表示モード処理の次に、図19に示すステップS13の処理が実行される。
図19の説明に戻り、ステップS10〜S12においては、本文表示モードにおける処理が実行される。すなわち、ステップS10において、CPU10は、本文表示モードにおいて表示すべき画像を生成する。ステップS10の処理においては、まず、直前の一覧表示モードにおいて選択されたニュース情報の見出しデータおよび本文データが読み出される。すなわち、CPU10は、当該ニュース情報に対応するニュース情報データ93に含まれる見出しデータ97および本文データ98をメインメモリ13から読み出す。なお、当該ニュース情報データ93に画像データが含まれる場合には、見出しデータ97および本文データ98に加えて画像データが読み出される。CPU10は、読み出されたデータを用いてニュース内容画像を生成する。次に、CPU10は、地図表示モードと同様の処理によって地図の画像を生成する。さらに、CPU10は、ニュース内容画像と地図の画像と復帰ボタンの画像とを重ねて、本文表示モードにおいて表示すべき画像を生成する(図15)。本文表示モードにおいては、ステップS10で生成された画像がテレビ2の画面に表示される(後述するステップS13)。
ステップS10の次のステップS11において、CPU10は、本文表示モードから地図表示モードへ復帰するための復帰操作が行われたか否かを判定する。ステップS11の判定は、画面上の復帰ボタンがカーソルによって選択されたか否かによって行われる。ステップS11の判定結果が肯定である場合、ステップS12の処理が実行される。一方、ステップS11の判定結果が否定である場合、ステップS12の処理がスキップされて、ステップS13の処理が実行される。
ステップS12においては、CPU10は、処理モードを本文表示モードから地図表示モードに変更する。これによって、次のフレーム処理(ステップS3〜S14の処理)においては、ステップS7の判定結果が否定となり、地図表示モード処理が実行されることになる。ステップS12の次に、ステップS13の処理が実行される。
ステップS13においては、CPU10は、ステップS10、ステップS23、またはステップS67で生成された画像をテレビ2に表示させる。これによって、図11〜図15に示したような画像が表示されることとなる。続くステップS14において、CPU10は、処理を終了するか否かを判定する。ステップS14の判定は、例えば、処理を終了するための所定の操作がユーザによって行われたか否かによって行われる。ステップS14の判定結果が否定の場合、ステップS3の処理が再度実行される。以降、ステップS14において処理を終了すると判定されるまで、ステップS3〜S14の処理ループが繰り返し実行される。一方、ステップS14の判定結果が肯定の場合、CPU10は、図19に示す処理を終了する。
以上の処理に示したように、本実施形態によれば、ニュース情報が関連付けられてたニュース地点が画面に表示される際、各ニュース地点間の表示上の距離が近いニュース地点については1つのグループに区分されるようにグループが設定される(ステップS22)。そして、グループに対して判定領域が設定される(ステップS24)。ユーザがカーソルによって画面上の位置を指定した場合、当該判定領域を用いてグループが選択されたか否かが判定され(ステップS25)、選択されたグループを単位としてニュース情報の一覧が表示される(ステップS9)。このように、本実施形態では、複数のニュース地点が近接して表示される場合には、当該複数のニュース地点がまとめて選択されるようにする。これによって、複数のニュース地点が近接して表示されるために各ニュース地点を画面上で指定することが難しい場合であっても、ユーザが意図しないニュース地点を誤って選択することを防止することができ、ニュース情報の選択操作を容易に行うことができる。
なお、上記実施形態においては、基準領域および判定領域を円形領域として設定する場合を例として説明したが、領域の形状はこれに限らず、地図上に予め設定される任意の形状の領域を基準領域または判定領域として用いてもよい。例えば、日本については日本全域を都道府県毎に分割し、都道府県毎に分割された領域をニュース地点の基準領域として用いてもよい。すなわち、ニュース地点に対応する基準領域は、当該ニュース地点を含む都道府県の領域として設定されてもよい。このとき、ゲーム装置3は、ニュース地点の表示領域上の位置に対して基準領域を設定するための所定の基準として、都道府県毎に分割された領域の情報を記憶しておけばよい。そして、当該情報に基づいて、ニュース地点に対して基準領域を設定すればよい。また、都道府県毎の領域を基準領域として用いる場合、判定領域は、基準地点から所定距離内の領域としてもよいし、基準地点を含む都道府県の領域として設定されてもよいし、グループに含まれるニュース地点に対応する都道府県の領域を全て含む領域として設定されてもよい。
なお、上記のように基準領域として都道府県毎の領域が用いられる場合、上記ステップS36およびS37において、比較対象となる2つのニュース情報が関連付けられるニュース地点の基準領域が隣接しているか否かを判定するようにしてもよい。すなわち、この判定結果が肯定である場合、当該2つのニュース情報を1つのグループに設定し(ステップS39の処理を実行し)、判定結果が否定である場合、当該2つのニュース情報を別々のグループに設定する(ステップS38の処理を実行する)ようにしてもよい。このように、ステップS37の判定処理は、ニュース地点同士の間隔が所定の基準より近いニュース情報同士によるグループが設定されればよく、当該所定の基準は、距離に関する基準に限られない。
さらに、他の実施形態においては、2つのニュース情報を1つのグループに設定するか否かの判定は、ニュース地点の地名が表示される位置に基づいて行われてもよい。例えば、地名を表示する位置が予め決められている場合、縮尺等の変化によって2つのニュース地点の地名が重なって表示される可能性がある。このような場合に、ニュース情報を1つのグループにするように、グループを設定してもよい。具体的には、ゲーム装置3は、次のような処理を行う。まず、各ニュース地点には、当該ニュース地点の地名を表示する位置(地点)が予め定められているとする(したがって、ニュース情報が関連付けられている地点は、当該地名を表示する地点とみなすことができる。)。ステップS37において、CPU10は、ステップS35で指定グループの先頭に追加されたニュース情報に関連付けられているニュース地点と、指定ニュース情報に関連付けられているニュース地点とについて、ニュース地点の地名を表示する位置(地点)を比較する。そして、比較の結果、2つの地名の表示位置の間の距離が所定距離以下である場合、2つのニュース情報を1つのグループに含めると判定する。逆に、2つの地名の表示位置の間の距離が所定距離よりも遠い場合、2つのニュース情報を1つのグループに含めると判定する。以上のように、ニュース情報が関連付けられる地点は、当該ニュース情報が直接関連付けられる地点の他に、当該ニュース地点に直接関連付けられる地点に関連付けられる地点(ニュース地点に間接的に関連付けられる)地点であってもよい。
また、上記実施形態においては、ゲーム装置3が3次元の仮想空間として地図を構築して画面に表示させる場合を例として説明したが、本発明は、2次元平面として地図が構築される場合にも適用可能である。すなわち、ゲーム装置3は、2次元平面上に地図のうちで表示すべき領域の位置および大きさを決定し、当該領域内の地図の画像をテレビ2に表示させる。なお、上記領域の位置および大きさは、ユーザの操作によって変更可能とする。以上によって地図上のニュース地点の表示位置が決定されるので、上記実施形態のグループ設定処理と同様の方法で、ニュース地点をグループに区分することができる。つまり、グループ設定処理においては、以上のように決定された領域に基づいて決められるニュース地点の表示位置を用いてグループの設定が行われる。
また、他の実施形態においては、表示装置の画面に表示される仮想空間は実際の地図に限らず、仮想世界の地図であってもよいし、地図以外の所定の空間(平面)であってもよい。前者の例としては、例えば、ゲームマップ上の地点に配置されたオブジェクト(例えばアイテムを示す)がゲームマップとともに表示される場合が考えられる。また、後者の例としては、例えば、パーソナルコンピュータにおいて使用されるOSのデスクトップ画面のように、所定の仮想平面に、ファイルやプログラムを表すアイコンが配置される場合が考えられる。
また、上記実施形態においては、仮想空間内の所定位置にニュース情報が関連付けられる場合を例として説明したが、所定位置に関連付けられる情報は、ユーザによって選択されることによって内容が表示される種類のものであれば、どのようなものであってもよい。例えば、仮想空間がゲームマップである場合には、ゲームマップ上の所定位置に関連付けられる情報は、当該所定位置に存在するアイテムや敵の情報であってもよい。