以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。
(実施の形態1)
図1は、本発明の実施の形態1によるボクシングゲームシステムの全体構成を示すブロック図である。図1に示すように、このボクシングゲームシステムは、アダプタ1、カートリッジ3、グローブ型入力具7L(図には現れていない。)、グローブ型入力具7R、及びテレビジョンモニタ5を備える。アダプタ1、カートリッジ3、及びグローブ型入力具7L,7Rによりボクシングゲームシステムが構成される。
アダプタ1には、カートリッジ3が装着される。また、アダプタ1は、AVケーブル9により、テレビジョンモニタ5に接続される。グローブ型入力具7L及びグローブ型入力具7Rは、それぞれ、プレイヤ11の左手及び右手で把持される。
図2(a)は、図1のグローブ型入力具7Lの前方右側からの斜視図、図2(b)は、グローブ型入力具7Lの前方左側からの斜視図、図2(c)は、グローブ型入力具7Rの下方左側からの斜視図である。ここで、「前方」、「左」、及び「右」とは、プレイヤ11から見た方向である。
図2(b)、図2(c)に示すように、グローブ型入力具7Lの前方下部及び左側面には、それぞれ、再帰反射シート21a及び21bが取り付けられる。また、図2(c)に示すように、グローブ型入力具7Lの右側面内側と左側面内側との間に、グリップ23Lが取り付けられる。プレイヤ11は、このグリップ23Lを左手で把持する。プレイヤ11が右手で把持するグローブ型入力具7Rは、グローブ型入力具7Lと左右対称の構造となっている。
ここで、再帰反射シート21a及び21bは、機能的には同じものであり、本実施の形態で使用する後述のイメージセンサ161の解像度では両者を区別できないため、再帰反射シート21a及び21bを1つの再帰反射シートと考えることもできる。つまり、図では、これらを別々のものとしているが、そうする理由はなく、一体のものであってもよい。再帰反射シート21a及び21bを包括して表現するときは、再帰反射シート21と表記する。
図3は、図1のアダプタ1及びカートリッジ3の斜視図である。図4は、アダプタ1の後方側からの斜視図である。
図3に示すように、アダプタ1は、上面、下面、左右の側面、前面、及び背面を有する平たい直方体形状を有する。アダプタ1の前面左側には、電源スイッチ45、リセットスイッチ43、及び、電源ランプ41、が設けられ、前面右側には、赤外線フィルタ33が設けられる。この赤外線フィルタ33は、赤外線以外の光をカットして、赤外線だけを透過させるフィルタであり、この赤外線フィルタ33の裏側には、赤外線センサ(図示せず)が配置されている。また、アダプタ1の上面の前縁近傍には、方向キー37a〜37dが設けられる。さらに、方向キー37aの左側には、キャンセルキー39が設けられ、方向キー37dの右側には、決定キー35が設けられる。
図4に示すように、アダプタ1の背面には、AVジャック83、電源ジャック85、ビデオジャック81V、Lチャンネルオーディオジャック81L、及び、Rチャンネルオーディオジャック81R、が設けられる。なお、ビデオジャック81V、Lチャンネルオーディオジャック81L、及び、Rチャンネルオーディオジャック81R、を包括して表現するときは、AVジャック81と表記する。AVジャック83は、外部出力端子であり、テレビジョンモニタ5の外部入力端子に接続される。一方、AVジャック81は、様々な外部機器(例えば、DVD(digitalversatiledisc)プレーヤ)の出力端子に接続することができる入力端子である。
アダプタ1の上面中央には開口が形成されており、その中にはアダプタ1の上面とほぼ面一となるように天板31が配置されている。アダプタ1の内部には、天板31を上方向に付勢するとともに、天板31の上面が上記した高さとなるように天板31を支持する昇降機構が設けられている。この昇降機構により、天板31は、開口部内を昇降自在に設けられている。この天板31にカートリッジ3を置いて、押下げ、さらに、カートリッジ3前面側にスライドさせて、コネクタ32にカートリッジ3を装着する(図1参照)。このカートリッジ3には、後述の高速プロセッサ91及びメモリ93等が内蔵されている。また、当然、昇降機構によって天板31の下方向への移動量は規制され、天板31上のカートリッジ3を下方向に押下げた場合、カートリッジ3は所定位置で止まる。
図3に戻って、カートリッジ3は、平たい直方体状の本体および撮像ユニット51からなる。カートリッジ3の本体正面には、後述の端子t1〜t24を含む接合部57が設けられ、アダプタ1のコネクタ32に接続される。カートリッジ3の本体上面には、撮像ユニット51が取付けられる。この場合、撮像ユニット51の表面が、カートリッジ3の表面に対して所定角度(例えば40度)傾斜するように取り付けられる。撮像ユニット51の表面中央部には、円形の赤外線フィルタ55が取り付けられ、それを取り囲むように、赤外発光ダイオード53a〜53dが配置される。なお、赤外発光ダイオード53a〜53dを包括して表現するときは、赤外発光ダイオード53と表記する。
図5は、アダプタ1の電気的構成を示す図である。図5に示すように、このアダプタ1は、コネクタ32、拡張コネクタ63、拡張コネクタ周辺回路65、リセットスイッチ43、水晶発振回路67、キーブロック69、赤外線信号受信回路(IR受信回路)71、オーディオアンプ73、内部電源電圧発生回路75、AC/DCコンバータ等からなる電源回路79、電源スイッチ45、スイッチングレギュレータ77、電源ジャック85、AVジャック83、ビデオジャック81V、Lチャンネルオーディオジャック81L、及びRチャンネルオーディオジャック81Rを含む。コネクタ32は、24本の端子T1〜T24を含み、接地されたシールド部材61で覆われている。コネクタ32の端子T1,T2,T22,T24は接地される。
図示しない電源ケーブルから供給される交流電圧は、電源ジャック85を介して、電源回路79に与えられる。電源回路79は、与えられた交流電圧を、直流電圧に変換し、これを電源電圧Vcc0として、ラインw20に出力する。電源スイッチ45は、オンの場合、ラインw20とラインw54とを接続して、スイッチングレギュレータ77に電源電圧Vcc0を与えるとともに、ラインw9からのビデオ信号VD及びラインw12,w13からのオーディオ信号AL2,AR2をそれぞれ、ラインw14,w15,w16に出力して、AVジャック83に与える。従って、これらのビデオ信号VD及びオーディオ信号AL2,AR2は、AVケーブル9を介して、テレビジョンモニタ5に与えられ、テレビジョンモニタ5は、ビデオ信号VDに応じた映像を映し出し、また、オーディオ信号AL2,AR2に応じた音声をスピーカ(図示せず)から出力する。
一方、電源スイッチ45は、オフの場合、ラインw17,w18,w19をそれぞれ、ラインw14,w15,w16に接続する。これにより、ビデオジャック81Vから入力されたビデオ信号、オーディオジャック81Lから入力されたLチャンネルオーディオ信号、及び、オーディオジャック81Rから入力されたRチャンネルオーディオ信号、がAVジャック83に与えられる。従って、ジャック81V,81L,81Rからのビデオ信号及びオーディオ信号は、AVジャック83から、AVケーブル9を介して、テレビジョンモニタ5に与えられる。このように、電源スイッチ45がオフの場合は、外部機器からジャック81V,81L,81Rに入力されたビデオ信号及びオーディオ信号を、テレビジョンモニタ5に出力できる。
スイッチングレギュレータ77は、電源スイッチ45がオンの場合、電源回路79よりラインw54を介して電源電圧Vcc0を受け、ラインw50とw22との上にそれぞれ接地電位GNDと電源電圧Vcc1とを発生する。一方、スイッチングレギュレータ77は、電源スイッチ45がオフの場合は、電源電圧Vcc0の供給を受けないので、電源電圧Vcc1を発生しない。
内部電源電圧発生回路75は、スイッチングレギュレータ77から与えられた接地電位GND及び電源電圧Vcc1からラインw23,w24及びw25上にそれぞれ電源電圧Vcc2、Vcc3及びVcc4を発生する。ラインw22は、コネクタ32の端子T7,T8に接続され、ラインw23は、コネクタ32の端子T11,T12接続され、ラインw24は、コネクタ32の端子T15,T16に接続され、ラインw25は、コネクタ32の端子T18,T19に接続される。Vcc0>Vcc1>Vcc2>Vcc3>Vcc4とする。なお、電源スイッチ45がオフの場合は、電源電圧Vcc1は発生しないため、電源電圧Vcc1,Vcc2,Vcc3及びVcc4が、コネクタ32を介して、カートリッジ3に供給されることはない。
オーディオアンプ73は、端子T21に接続されたラインw11からのRチャンネルオーディオ信号AR1及び端子T20に接続されたラインw10からのLチャンネルオーディオ信号AL1を増幅して、増幅後のRチャンネルオーディオ信号AR2及びLチャンネルオーディオ信号AL2をそれぞれ、ラインw13及びw12に出力する。ビデオ信号VDを電源スイッチ45に入力するラインw9は、コネクタ32の端子T23に接続される。
ラインw9、w12及びw13を円筒形のフェライト87で覆うことにより、これらのラインから電磁波が外部に放射されることを防止する。
IR受信回路71は、受信したデジタル変調された赤外線信号を、デジタル復調して、ラインw8に出力する。ラインw8は、コネクタ32の端子T17に接続される。
キーブロック69は、キャンセルキー39、方向キー37a〜37d、及び決定キー35、並びに、図示しないシフトレジスタを含む。このシフトレジスタは、各キー39,37a〜37d,35及び後述の端子TE7からパラレルに入力される信号をシリアル信号に変換して、ラインw3に出力する。このラインw3は、コネクタ32の端子T6に接続される。また、キーブロック69には、端子T10に接続されるラインw5から、クロックが入力され、端子T9に接続されるラインw4から、制御信号が入力される。
水晶発振回路67は、一定周波数(例えば、3.579545MHz)のクロックを発振して、ラインw2に供給する。ラインw2は、コネクタ32の端子T3に接続される。
リセットスイッチ43は、システムをリセットするためのリセット信号をラインw1に出力する。ラインw1は、コネクタ32の端子T4に接続される。
拡張コネクタ63は第1の端子〜第9の端子(これらを以後TE1〜TE9と呼ぶ。)を有している。端子TE2,TE4及びTE6は、拡張コネクタ周辺回路65を介して、それぞれ、コネクタ32の端子T13,T14及びT5に接続される。従って、端子TE2、TE4及びTE6を介して、拡張コネクタ63に接続された外部機器に信号の入出力を行なうことができる。端子TE9及びTE8には、それぞれ、ラインw4及びw5が接続される。従って、拡張コネクタ63に接続された外部機器に対して、端子TE8を介して、キーブロック69へのクロックと同じクロックを供給でき、また、端子TE9を介して、キーブロック69への制御信号と同じ制御信号を供給できる。
端子TE3及びTE5には、拡張コネクタ周辺回路65を介して、それぞれ、電源電圧Vcc1及びVcc2が与えられる。従って、拡張コネクタ63に接続された外部機器に対して、端子TE3及びTE5を通じて電源電圧Vcc1及びVcc2を供給できる。端子TE1は接地される。端子TE7は、拡張コネクタ周辺回路65を介して、キーブロック69に含まれる上述のシフトレジスタの所定入力端子に接続される。
図6は、カートリッジ3の電気的構成を示す図である。図6に示すように、カートリッジ3は、高速プロセッサ91、メモリ93、撮像ユニット51、端子t1〜t24、アドレスバス95、データバス97、及び振幅設定回路99を含む。振幅設定回路99は、抵抗101及び103を含む。
高速プロセッサ91は、リセット信号を入力するリセット入力/RESET、クロックSCLK2を入力するクロック入力XT、データの入出力のための入出力ポート(I/Oポート)IO0〜IOn(nは自然数。例えば、n=24)、アナログ信号を入力するためのアナログ入力ポートAIN0〜AINk(kは自然数。例えば、k=6)、オーディオ信号AL1,AR1を出力するためのオーディオ出力AL,AR、ビデオ信号VDを出力するためのビデオ出力VO、制御信号(例えば、チップイネーブル信号、アウトプットイネーブル信号、ライトイネーブル信号等)を出力するための制御信号出力ポート、データバス、及び、アドレスバス、を含む。メモリ93は、アドレスバス、データバス、及び、制御信号(例えば、チップイネーブル信号、アウトプットイネーブル信号、ライトイネーブル信号等)を入力するための制御信号入力ポートを含む。メモリ93は、例えば、ROM(readonlymemory)やフラッシュメモリ等の任意のメモリを使用できる。
高速プロセッサ91の制御信号出力ポートは、メモリ93の制御信号入力ポートに接続される。高速プロセッサ91のアドレスバス及びメモリ93のアドレスバスは、アドレスバス95に接続される。高速プロセッサ91のデータバス及びメモリ93のデータバスは、データバス97に接続される。ここで、高速プロセッサ91の制御信号出力ポートは、例えば、アウトプットイネーブル信号を出力するOE出力ポート、チップイネーブル信号を出力するCE出力ポート、ライトイネーブル信号を出力するWE出力ポート、等を含む。また、メモリ93の制御信号入力ポートは、例えば、高速プロセッサ91のOE出力ポートに接続されるOE入力ポート、高速プロセッサ91のCE出力ポートに接続されるCE入力ポート、高速プロセッサ91のWE出力ポートに接続されるWE入力ポート、等を含む。
メモリ93は、チップイネーブル信号が入力されたときに、自分がアクセス先として選択されたと認識し、これとほぼ同時に入力されたアドレス信号及びアウトプットイネーブル信号に応答して、データ信号を出力する。アドレス信号は、アドレスバス95を介してメモリ93に入力され、データ信号は、データバス97を介して高速プロセッサ91に入力される。また、メモリ93は、チップイネーブル信号が入力されたときに、自分がアクセス先として選択されたと認識し、これとほぼ同時に入力されたアドレス信号及びライトイネーブル信号に応答して、データ信号を取込み、書き込みを行なう。アドレス信号は、アドレスバス95を介してメモリ93に入力され、データ信号は、高速プロセッサ91からデータバス97を介してメモリ93に入力される。
端子t1〜t24は、カートリッジ3がアダプタ1に装着されたとき、アダプタ1のコネクタ32の端子T1〜T24に一対一に接続される。端子t1,t2,t22,t24は、接地される。端子t3は、振幅設定回路99に接続される。つまり、振幅設定回路99の抵抗101の一方端は端子t3に接続され、他方端は、高速プロセッサ91のクロック入力XT及び抵抗103の一方端に接続される。抵抗103の他方端は接地される。このように、振幅設定回路99は、抵抗分圧回路である。
アダプタ1の水晶発振回路67が発振したクロックSCLK1は、端子t3を介して、振幅設定回路99に入力され、クロックSCLK1より振幅が小さいクロックSCLK2が生成されて、クロック入力XTに供給される。つまり、クロックSCLK2の振幅は、抵抗101と抵抗103との比で定まる値に設定される。
端子t4は、高速プロセッサ91のリセット入力/RESETに接続される。端子t4をリセット入力/RESETに接続するラインには、抵抗105の一方端及びコンデンサ107の一方端が接続される。抵抗105の他方端には電源電圧Vcc3が供給され、コンデンサ107の他方端は接地される。
端子t5,t13及びt14は、それぞれ、高速プロセッサ91のI/OポートIO12,IO13及びIO14に接続される。従って、高速プロセッサ91は、端子t5,t13及びt14を介して、図5の拡張コネクタ63に接続された外部機器に信号を入出力できる。
端子t7,t8からは、電源電圧Vcc1が供給される。端子t11,t12からは、電源電圧Vcc2が供給される。端子t15,t16からは、電源電圧Vcc3が供給される。端子t18,t19からは、電源電圧Vcc4が供給される。電源電圧Vcc2は、高速プロセッサ91のアナログ回路に供給され、電源電圧Vcc3は、高速プロセッサ91のデジタル回路に供給される。
端子t6,t9,t10及びt17は、それぞれ、高速プロセッサ91のI/OポートIO15,IO16,IO17及びIO18に接続される。従って、高速プロセッサ91は、端子t6を介して、キーブロック69からの出力信号を受けることができる。また、高速プロセッサ91は、端子t9を介して、拡張コネクタ63に接続された外部機器及びキーブロック69に制御信号を与えることができる。さらに、高速プロセッサ91は、端子t10を介して、拡張コネクタ63に接続された外部機器及びキーブロック69にクロックを与えることができる。さらに、高速プロセッサ91は、端子t17を介して、IR受信回路71の出力信号を受け取ることができる。
端子t20及びt21は、それぞれ、高速プロセッサ91のオーディオ出力AL及びARに接続される。端子t23は、高速プロセッサ91のビデオ出力VOに接続される。従って、高速プロセッサ91は、端子t20及びt21を介して、アダプタ1のオーディオアンプ73に、オーディオ信号AL1及びAR1を与えることができ、また、端子t23を介して、アダプタ1の電源スイッチ45に、ビデオ信号VDを与えることができる。
カートリッジ3には、シールド113が施してある。シールド113を設けることで、高速プロセッサ91等の回路から発生する電磁波が、外部に放射されることを極力防止できる。
撮像ユニット51は、赤外発光ダイオード53、イメージセンサ161、LED駆動回路92、及び赤外線フィルタ55を含む。イメージセンサ161の出力端子は、高速プロセッサ91のアナログ入力AIN0に接続される。
イメージセンサ161は、端子t3からのクロックSCLK1に応答して動作する。イメージセンサ161からのフレームアウトプットフラグ信号FS及びイメージデータアウトプットトリガ信号STRは、それぞれ、高速プロセッサ91のI/OポートIO9及びIO10に与えられる。信号FSのハイレベルが露光期間であり、ローレベルがピクセルデータ転送期間である。高速プロセッサ91は、信号STRの立ち上がりエッジで、イメージセンサ161からのピクセルデータを取り込む。
高速プロセッサ91のI/OポートIO0〜IO6は、それぞれ、イメージセンサ161の制御端子IP0〜IP6に接続される。高速プロセッサ91は、I/OポートIO0〜IO6を介して、イメージセンサ161にコマンドを与え、また、イメージセンサ161の制御レジスタに設定するデータを与える。
高速プロセッサ91は、I/OポートIO7からイメージセンサ161に対して、制御レジスタにデータを設定するためのクロックRCLKを与える。また、高速プロセッサ91は、I/OポートIO8からイメージセンサ161に対して、リセット信号を与える。
高速プロセッサ91は、I/OポートIO11からLED駆動回路92に対して、LED制御信号を与える。LED駆動回路92は、LED制御信号及び信号FSに従って、赤外発光ダイオード53を駆動する。これにより、赤外発光ダイオード53は、点灯及び消灯を繰り返し、ストロボスコープとして機能する。
ここで、高速プロセッサ91の内部構成を簡単に説明する。高速プロセッサ91は、図示しないが、CPU(centralprocessingunit)、グラフィックプロセッサ、サウンドプロセッサおよびDMAコントローラ等を含むとともに、アナログ信号を取り込むときに用いられるA/Dコンバータや、キー操作信号や赤外線信号のような入力信号を受けかつ出力信号を外部機器に与える入出力制御回路を含む。
CPUは、メモリ93に格納されたプログラムに従い、各種演算やシステム全体の制御を行う。
グラフィックプロセッサは、メモリ93に格納されたデータを基に、グラフィックデータを合成し、さらにこれを基にテレビジョンモニタ5に合わせたビデオ信号VDを生成して出力する。
ここで、グラフィックデータは、グラフィックプロセッサによって、バックグラウンドスクリーンとスプライトとビットマップスクリーンとから合成される。バックグラウンドスクリーンは、テレビジョンモニタ5のスクリーンを全て覆う大きさの二次元ブロック配列からなる。そして、各ブロックは、矩形の画素集合である。奥行きのある背景を形成できるように、バックグラウンドスクリーンとして、第1のバックグラウンドスクリーンと第2のバックグラウンドスクリーンとが用意される。スプライトは、テレビジョンモニタ5のスクリーンのいずれの位置にでも配置可能な1つの矩形の画素集合からなる。ビットマップスクリーンは自由に大きさと位置を設定可能な二次元ピクセル配列からなる。
また、高速プロセッサ91は、図示しないピクセルプロッタを含み、このピクセルプロッタは、ピクセル単位での描画を実行する。サウンドプロセッサは、メモリ93に格納されたデータを基に、サウンドデータを合成し、さらにこれを基にオーディオ信号AL1及びAR1を生成して出力する。サウンドデータは、基本の音色となるPCM(パルスコードモジュレーション)データに対し、ピッチ変換及び振幅変調を行い合成される。振幅変調では、CPUによって指示されるボリューム制御の他に、楽器の波形を再現するためのエンベロープ制御の機能が用意される。
また、高速プロセッサ91には、図示しないが内部メモリが設けられ、ワーキング領域、カウンタ領域、レジスタ領域、テンポラリデータ領域、及び/又はフラグ領域等として利用される。
図7は、図1のカートリッジ3の断面図である。図7に示すように、レンズユニット164は、赤外線フィルタ55の裏面側に配置され、基板167に取り付けられる。レンズユニット164は、ユニットベース159、レンズホルダ151、凹レンズ153、及び、凸レンズ157を含む。ユニットベース159に固定されたレンズホルダ151の赤外線フィルタ55側には、基板167に取付けたイメージセンサ161と平行に、凹レンズ153が取付けられる。また、レンズホルダ151のイメージセンサ161側には、イメージセンサ161と平行に、凸レンズ157が取付けられる。そして、凹レンズ153と凸レンズ157との間は、空洞(光路)155になっている。赤外線フィルタ55を透過した赤外光は、凹レンズ153、空洞155、及び、凸レンズ157を通過して、イメージセンサ161に検出される。
図には現れていないが、赤外発光ダイオード53a及び53dは、LED保持部材165に固定され、それぞれ円筒163a及び163dの孔に挿入される。この円筒163a,163dの孔は、表面に貫通しており、赤外発光ダイオード53a,53dの発光部は、撮像ユニット51の表面に露出する。赤外発光ダイオード53b,53cについても同様である。
図7に示すように、カートリッジ3の本体内部には、高速プロセッサ91やメモリ93等が搭載される基板169が取り付けられる。基板169は、平面視において矩形状になっており、その前縁に沿って端子t1〜t24が形成され、接合部57の一部を構成する。基板169はシールド部材171によって覆われている。カートリッジ3の本体内部の底面にもシールド部材が取り付けられており、このシールド部材とシールド部材171とで、図6のシールド113が形成される。
次に、ボクシングゲームシステムによる処理の概要を説明する。図6を参照して、赤外発光ダイオード53は、LED駆動回路92により駆動され、赤外光を間欠的に発光する。これにより、プレイヤ11が把持したグローブ型入力具7L及び7Rの再帰反射シート21に、赤外光が間欠的に照射される。イメージセンサ161は、赤外光が間欠的に照射される再帰反射シート21を撮影する。従って、イメージセンサ161は、赤外光発光時の再帰反射シート21のイメージデータと赤外光消灯時の再帰反射シート21のイメージデータと、を交互に高速プロセッサ91に出力する。本実施の形態では、32ピクセル×32ピクセルのイメージセンサ161を使用する。従って、イメージセンサ161からは、イメージデータとして、32ピクセル×32ピクセルのピクセルデータ(ピクセル単位の輝度データ)が出力される。高速プロセッサ91は、赤外光発光時のイメージデータと赤外光消灯時のイメージデータとの差分を算出して、差分イメージデータを生成する。そして、高速プロセッサ91は、この差分イメージデータに基づいて、グローブ型入力具7L及び7Rのそれぞれの位置情報を算出する(位置を検出する)。高速プロセッサ91は、算出したグローブ型入力具7L及び7Rのそれぞれの位置情報に基づいて、後述する様々な処理を実行して、テレビジョンモニタ5に、ゲームモード選択画面やゲーム画面を表示する。
図8(a)は、図1のテレビジョンモニタ5に表示されるゲームモード選択画面の例示図である。図8(b)は、ゲームモード選択画面での選択操作の説明図である。図8(a)を参照して、カートリッジ3を装着して、アダプタ1の電源スイッチ45をオンにすると、高速プロセッサ91は、テレビジョンモニタ5にゲームモード選択画面を表示する。
ゲームモード選択画面は、選択対象のゲームモード名が表示されるゲームモード表示部200、選択ボタン203U,203D、決定ボタン207、及びカーソル201を含む。選択ボタン203U及び203Dは、矢印形状のインジケータ202U及び202Dを含む。決定ボタン207は、円形のインジケータ209を含む。
高速プロセッサ91は、イメージセンサ161が撮影したグローブ型入力具7L及び/又は7Rの動きに、カーソル201を連動させる。従って、プレイヤ11は、グローブ型入力具7L及び/又は7Rを動かすことで、カーソル201を操作できる。ここで、グローブ型入力具7L又は7Rのいずれか一方が撮影された場合は、撮影されたグローブ型入力具の動きにカーソル201は連動し、グローブ型入力具7L及び7Rの双方が撮影された場合は、それらの位置の中点の動きにカーソル201は連動する。
図8(b)を参照して、高速プロセッサ91は、カーソル201が、選択ボタン203Dを包含する選択有効領域211に進入した場合、グローブ型入力具7L及び7Rの動きに関係なく、カーソル201を選択ボタン203Dの中央に移動させる。説明の便宜上、選択有効領域211を図示しているが、実際にはテレビジョンモニタ5に表示されない。
高速プロセッサ91は、カーソル201を選択ボタン203Dの中心に移動させた後、時間の経過に応じてインジケータ202Dを所定の色で塗りつぶしていき、時間経過を明示する。インジケータ202Dは一定時間で当該所定の色に完全に塗りつぶされる。高速プロセッサ91は、この一定時間の経過により、選択操作を確定し、インジケータ202Dの矢印の向きに従って、次のゲームモード選択画面(図9のゲームモード選択画面)をテレビジョンモニタ5に表示する。
ただし、プレイヤ11が、当該一定時間が経過する前に、グローブ型入力具7L及び/又は7Rを大きく動かして、選択有効領域211の外にカーソル201を移動させる動作をした場合は、選択操作は確定せず、インジケータ202Dも元の色に戻る。
選択ボタン203Uによる選択操作は、選択ボタン203Dによる選択操作と同様であり説明を省略する。
図9は、ゲームモード選択画面での決定操作の説明図である。図9に示すように、図8(b)の状態で選択操作が確定すると、高速プロセッサ91は、選択対象のゲームモードが「任意対戦」のゲームモード選択画面をテレビジョンモニタ5に表示する。「任意対戦」は、プレイヤ11が対戦する相手を任意に選択できるゲームモードである。
高速プロセッサ91は、カーソル201が、決定ボタン207を包含する決定有効領域213に進入した場合、グローブ型入力具7L及び7Rの動きに関係なく、カーソル201を決定ボタン207の中央に移動させる。説明の便宜上、決定有効領域213を図示しているが、実際にはテレビジョンモニタ5に表示されない。
高速プロセッサ91は、カーソル201を決定ボタン207の中心に移動させた後、時間の経過に応じてインジケータ209を時計回りに所定の色で塗りつぶしていき、時間経過を明示する。インジケータ209は一定時間で当該所定の色に完全に塗りつぶされる。高速プロセッサ91は、この一定時間の経過により、決定操作を確定し、ゲームモード表示部200に表示されたゲームモード(図9では「任意対戦」)に入る。
ただし、プレイヤ11が、当該一定時間が経過する前に、グローブ型入力具7L及び/又は7Rを大きく動かして、決定有効領域213の外にカーソル201を移動させる動作をした場合は、決定操作は確定せず、インジケータ209も元の色に戻る。
図10は、テレビジョンモニタ5に表示されるゲーム画面(トーナメントあるいは任意対戦)の例示図である。図10に示すように、ゲーム画面は、CPUボクサー215及びプレイヤ11が操作するボクサー(以下、「自ボクサー」と呼ぶ。)のグローブ217L及び217Rを含む。
高速プロセッサ91は、メモリ93に格納されたプログラムに従って、CPUボクサー215の動き(パンチを含む。)を制御する。また、高速プロセッサ91は、イメージセンサ161に撮影されたグローブ型入力具7Lの動きに応じて、グローブ217Lの動きを制御し、イメージセンサ161に撮影されたグローブ型入力具7Rの動きに応じて、グローブ217Rの動きを制御する。従って、プレイヤ11は、グローブ型入力具7L,7Rを動かして、CPUボクサー215のパンチを避けることもできるし、また、防御することもできる。
ゲーム画面は、CPUボクサー215の体力インジケータ221a及び気力インジケータ221b、並びに、自ボクサーの体力インジケータ223a及び気力インジケータ223bをさらに含む。
体力インジケータ221a及び223aは、それぞれ、CPUボクサー215及び自ボクサーの体力を示し、相手のパンチを受けるたびに減少する。この場合、受けたパンチの強さに応じて、体力の減少量が設定されている。気力インジケータ221b及び223bは、それぞれ、CPUボクサー215及び自ボクサーの気力を示し、相手のパンチを受けるたびに、体力の場合より大きく減少する。ただし、残っている体力を上限として、所定速度で回復していく。高速プロセッサ91は、気力が「0」になったとき、そのボクサーがダウンしたと判断する。そして、高速プロセッサ91は、ダウンした状態が一定時間続くと、ノックアウトと判断する。
ゲーム画面は、ラウンド表示部219をさらに含み、ラウンド表示部219には、そのラウンドの残り時間が表示される。
次に、グローブ検出処理、左右決定処理、およびグローブ動き判定処理について図面を用いて説明する。
図11は、高速プロセッサ91によるグローブ検出処理の説明図である。図11には、赤外光発光時及び消灯時のイメージデータから生成した差分イメージデータに基づく画像(32×32ピクセル)が図示されている。図中、小さい正方形は1ピクセルを示す。また、左上角をXY座標軸の原点とする。
この画像には、輝度値が大きい2つの領域251及び253が含まれる。領域251及び253は、グローブ型入力具7Lの再帰反射シート21及びグローブ型入力具7Rの再帰反射シート21である。ただし、この時点では、どの領域がどのグローブ型入力具に対応するかは判別できない。
まず、高速プロセッサ91は、Y=0を出発点として、X=0からX=31まで、差分イメージデータをスキャンし、次に、Yをインクリメントし、X=0からX=31まで、差分イメージデータをスキャンする。このような処理をY=31まで行い、32×32ピクセルの差分イメージデータをスキャンして、閾値ThLより大きいピクセルデータの上端位置minY、下端位置maxY、左端位置minX、及び右端位置maxXを求める。
次に、高速プロセッサ91は、座標(minX,minY)を出発点として、X軸の正方向にスキャンを実行して、最初に閾値ThLを超えるピクセルまでの距離LTを算出する。また、高速プロセッサ91は、座標(maxX,minY)を出発点として、X軸の負方向にスキャンを実行して、最初に閾値ThLを超えるピクセルまでの距離RTを算出する。さらに、高速プロセッサ91は、座標(minX,maxY)を出発点として、X軸の正方向にスキャンを実行して、最初に閾値ThLを超えるピクセルまでの距離LBを算出する。さらに、高速プロセッサ91は、座標(maxX,maxY)を出発点として、X軸の負方向にスキャンを実行して、最初に閾値ThLを超えるピクセルまでの距離RBを算出する。
高速プロセッサ91は、距離LT>RTのときは、座標(maxX,minY)を第1抽出点とし、距離LT≦RTのときは、座標(minX,minY)を第1抽出点とする。また、高速プロセッサ91は、距離LB>RBのときは、座標(maxX,maxY)を第2抽出点とし、距離LB≦RBのときは、座標(minX,maxY)を第2抽出点とする。
図12は、高速プロセッサ91による左右決定処理の説明図である。図12には、前回(1ビデオフレーム前)のグローブ型入力具7Lの位置TPL2及び前々回(2ビデオフレーム前)の位置TPL1、並びに、前回(1ビデオフレーム前)のグローブ型入力具7Rの位置TPR2及び前々回(1ビデオフレーム前)の位置TPR1が図示されている。位置TPL1,TPL2,TPR1及びTPR2は、差分イメージデータに基づく画像上の位置である。
高速プロセッサ91は、位置TPL1を始点、位置TPL2を終点とする速度ベクトルVLを算出する。そして、位置TPL2を始点とする速度ベクトルVLの終点を、グローブ型入力具7Lの予測位置TPLpとする。一方、高速プロセッサ91は、位置TPR1を始点、位置TPR2を終点とする速度ベクトルVRを算出する。そして、位置TPR2を始点とする速度ベクトルVRの終点を、グローブ型入力具7Rの予測位置TPRpとする。
高速プロセッサ91は、第1抽出点TPN1と予測位置TPLpとの距離LD1、第1抽出点TPN1と予測位置TPRpとの距離RD1、第2抽出点TPN2と予測位置TPLpとの距離LD2、及び、第2抽出点TPN2と予測位置TPRpとの距離RD2を求める。
高速プロセッサ91は、距離LD1>RD1ならば、第1抽出点TPN1をグローブ型入力具7Rの今回の位置とし、距離LD1≦RD1ならば、第1抽出点TPN1をグローブ型入力具7Lの今回の位置とする。また、高速プロセッサ91は、距離LD2>RD2ならば、第2抽出点TPN2をグローブ型入力具7Rの今回の位置とし、距離LD2≦RD2ならば、第2抽出点TPN2をグローブ型入力具7Lの今回の位置とする。なお、ゲームの開始時点等、左右の予測位置TPLp及びTPRpが算出できない場合は、X座標がminXである第1抽出点TPN1及び第2抽出点TPN2の一方の座標をグローブ型入力具7Lの座標とし、X座標がmaxXである他方の抽出点の座標をグローブ型入力具7Rの座標とする。
このように、左右の予測位置TPLp及びTPRpに基づいて、第1抽出点TPN1及び第2抽出点TPN2に左右を割り当てているため、グローブ型入力具7Lと7Rとの左右が入れ替わった場合でも(クロスした場合でも)、高速プロセッサ91は、差分イメージデータに基づく画像上において、グローブ型入力具7L及び7Rの各々を的確に認識できる。
図13(a)、図13(c)、図13(e)は、高速プロセッサ91による速度ベクトル算出の説明図、図13(b)、図13(d)、図13(f)は、高速プロセッサ91によるグローブ動き判定処理の説明図である。これらの図は、グローブ型入力具7Lの動き判定の説明図である。
図13(a)、図13(c)、図13(e)には、グローブ型入力具7Lの位置TPL1〜TPL3が図示されている。位置TPL1〜TPL3は、差分イメージデータに基づく画像上の位置である。これらの図に示すように、高速プロセッサ91は、2ビデオフレーム前のグローブ型入力具7Lの位置(例えば、位置TPL1)を始点とし、今回の位置(例えば、位置TPL3)を終点とする速度ベクトルVを算出する。
そして、高速プロセッサ91は、図13(b)、図13(d)、図13(f)に示すような仮想画面上(32×32ピクセル)で、速度ベクトルVの始点TPL1を原点とし、終点TPL3がどの領域に位置するかを判定する。高速プロセッサ91は、ベクトルVの終点TPL3が領域「不動」に位置する場合は、プレイヤ11が左パンチを出さなかったと判断する(図13(b)参照)。つまり、グローブ型入力具7Lは動いたが、それをパンチとは判断しない。高速プロセッサ91は、ベクトルVの終点TPL3が領域「ストレート」に位置する場合は、プレイヤ11が左のストレートパンチを出したと判断する(図13(d)参照)。つまり、グローブ型入力具7Lが、真っ直ぐ動かされたと判断する。高速プロセッサ91は、ベクトルVの終点TPL3が領域「クロス」に位置する場合は、プレイヤ11が左のクロスパンチを出したと判断する(図13(f)参照)。つまり、グローブ型入力具7Lが、クロスして動かされたと判断する。
図13(b)、図13(d)、図13(f)から分かるように、このような動き判定において、高速プロセッサ91は、速度ベクトルVの始点TPL1を、仮想画面の原点に置く。仮想画面の原点は、その下辺の中央である。
グローブ型入力具7Rに対しては、図13(b)、図13(d)、図13(f)に示す仮想画面と左右対称の仮想画面が用意され、グローブ型入力具7Lと同様にして、動き(不動、ストレート、クロス)判定が行われる。
次に、フローチャートを用いて、ボクシングゲームシステムの処理の流れを説明する。
図14は、高速プロセッサ91による全体処理の流れの一例を示すフローチャートである。図14に示すように、ステップS1にて、高速プロセッサ91は、初期化処理を実行する。具体的には、システムハードウエア及び各変数を初期化する。
ステップS2にて、高速プロセッサ91は、グローブ型入力具7L,7Rの撮影処理を実行する。ステップS3にて、高速プロセッサ91は、ステップS2の撮影処理の結果に基づいて、グローブ型入力具7L,7Rの検出処理を実行する。ステップS4にて、高速プロセッサ91は、ゲームステートが、「ゲームモード選択」であればステップS5に進み、「対戦中」であればステップS6に進み、「ダウン」であればステップS7に進み、「ラウンド終了」であればステップS8に進み、「試合終了」であれば、ステップS10に進む。ただし、電源投入時では、ゲームモードは「ゲームモード選択」に設定される。
ステップS5では、高速プロセッサ91は、グローブ型入力具7L,7Rの動きに従って、ゲームモードの選択処理を実行する。ステップS6では、高速プロセッサ91は、CPUボクサー215の動きを制御するとともに、グローブ型入力具7L,7Rの動きに応じてグローブ217L,217Rを動かす。このようにして、高速プロセッサ91は、CPUボクサー215と自ボクサーとの対戦処理を実行する。この場合、高速プロセッサ91は、パンチを受けた方の気力インジケータ221bあるいは223bが示す気力を減少させ、気力が「0」になると、ダウンと判断し、ゲームモードを「ダウン」に設定する。また、高速プロセッサ91は、一定時間経過して1つのラウンドが終了すると、ゲームモードを「ラウンド終了」に設定する。また、高速プロセッサ91は、最終ラウンドが終了して、ステップS8及びS9の処理が完了すると、ゲームモードを「試合終了」に設定する。
ここで、高速プロセッサ91は、グローブ型入力具7Lによる速度ベクトルVの終点が、図13に示すストレート領域あるいはクロス領域に位置する場合に、グローブ型入力具7Lによりパンチが繰り出されたと判断する。グローブ型入力具7Rについても同様である。
ステップS7では、高速プロセッサ91は、ダウン時の処理を実行する。自ボクサーがダウンしたときには、10カウント未満で、残りの体力に応じて定められた回数、グローブ型入力具7L,7Rが振られると、ゲームステートが「対戦中」に設定される。10カウント未満で、グローブ型入力具7L,7Rが当該回数振られなかった場合は、高速プロセッサ91は、ノックアウトと判断して、ゲームステートを「試合終了」に設定する。
一方、CPUボクサーがダウンした場合は、CPUボクサーの行動アルゴリズムに基づいて、ゲームステートが、「対戦中」あるいは「試合終了」に設定される。
ステップS8では、高速プロセッサ91は、当該ラウンドでのプレイヤ11の消費カロリーを算出する。ステップS9にて、高速プロセッサ91は、当該ラウンドでのプレイヤ11の消費カロリーや当該ラウンドの各ボクサーのポイントの表示を行うべく、アニメーションの設定や表示位置の設定を行う。
ステップS10では、高速プロセッサ91は、各ラウンドのプレイヤ11の消費エネルギーを加算して、一試合でのプレイヤ11の消費カロリーを算出する。ステップS11にて、高速プロセッサ91は、プレイヤ11の一試合での消費カロリーや試合結果の表示を行うべく、アニメーションの設定や表示位置の設定を行う。また、時間切れの場合の勝敗判定を行う。
ステップS12にて、ビデオ同期信号による割り込みがあれば、ステップS13に進み、割り込みがなければ、同じステップS12に戻る。ビデオ同期信号による割り込みは、例えば、1/60秒間隔で発生する。
ステップS13にて、高速プロセッサ91は、ステップS5〜S11で設定されたアニメーションや表示位置に基づいて、テレビジョンモニタ5の表示画像(ビデオフレーム)を更新する。
ステップS14の音声処理は、音声割り込みが発生したときに実行され、これによって、ゲーム音楽や効果音が出力される。
図15は、図14のステップS2の撮影処理の流れの一例を示すフローチャートである。図15に示すように、ステップS20において、高速プロセッサ91は、赤外発光ダイオード53を点灯する。ステップS21で、高速プロセッサ91は、イメージセンサ161から、赤外光点灯時のイメージデータを取得して、内部メモリに格納する。
上記のように、本実施の形態では、32ピクセル×32ピクセルのイメージセンサ161を使用している。従って、イメージセンサ161からは、イメージデータとして、32ピクセル×32ピクセルのピクセルデータ(ピクセル単位の輝度データ)が出力される。このピクセルデータは、A/Dコンバータにより、デジタルデータに変換されて、内部メモリ上の配列P1[X][Y]に格納される。
ステップS22で、高速プロセッサ91は、赤外発光ダイオード53を消灯する。ステップS23にて、高速プロセッサ91は、イメージセンサ161から、赤外光消灯時のイメージデータ(32ピクセル×32ピクセルのピクセルデータ(ピクセル単位の輝度データ))を取得して、内部メモリに格納する。この場合、赤外光消灯時のイメージデータは、内部メモリ上の配列P2[X][Y]に格納される。
以上のようにして、ストロボ撮影が行われる。本実施の形態では、32ピクセル×32ピクセルのイメージセンサ161を用いているため、X=0〜31、Y=0〜31である。
図16は、図14のステップS3のグローブ検出処理の流れの一例を示すフローチャートである。図16に示すように、ステップS30にて、高速プロセッサ91は、赤外光発光時のピクセルデータP1[X][Y]と、赤外光消灯時のピクセルデータP2[X][Y]と、の差分を算出して、配列Dif[X][Y]に代入する。ステップS31にて、高速プロセッサ91は、32×32ピクセル分の差分を算出した場合は、ステップS32に進み、そうでなければ、ステップS30に進む。このように、高速プロセッサ91は、ステップS30の処理を繰り返して、赤外光発光時のイメージデータと、赤外光消灯時のイメージデータと、の差分イメージデータを生成する。このように、差分イメージデータ(差分画像)を求めることで、グローブ型入力具7L,7Rの再帰反射シート21からの反射光以外の光によるノイズを極力除去でき、左右の再帰反射シート21、つまり、グローブ型入力具7L,7Rを精度良く検出できる。
ステップS32にて、高速プロセッサ91は、図11で説明した左右上下端(minX、maxX、minY、maxY)検出処理を実行する。ステップS33にて、高速プロセッサ91は、図11で説明した2点位置(第1抽出点(Xtp[0],Ytp[0])、第2抽出点(Xtp[1],Ytp[1]))の決定処理を実行する。ステップS34にて、高速プロセッサ91は、第1抽出点(Xtp[0],Ytp[0])と第2抽出点(Xtp[1],Ytp[1])との中点座標を算出する。そして、この中点座標をスクリーン座標に変換する。
図17は、図16のステップS32の左右上下端検出処理の流れの一例を示すフローチャートである。このフローチャートは、図11で説明した左右上下端検出処理の流れの一例である。
図17に示すように、ステップS40にて、高速プロセッサ91は、「X」、「Y」、「maxX」、「maxY」、及び「k」に「0」を代入する。また、高速プロセッサ91は、「minX」及び「minY」に「31」を代入する。
ステップS41にて、高速プロセッサ91は、配列Dif[X][Y]の要素を所定の閾値ThLと比較する。ステップS42にて、高速プロセッサ91は、配列Dif[X][Y]の要素が所定の閾値ThLより大きい場合は、ステップS43に進み、所定の閾値ThL以下の場合は、ステップS55に進む。
ステップS41,S42の処理は、グローブ型入力具7L,7Rが撮影されたか否かを検出するための処理である。グローブ型入力具7L,7Rは、再帰反射シート21を有しているので、グローブ型入力具7L,7Rが撮影されると、差分画像上では、再帰反射シート21に相当するピクセルの輝度値が大きくなる。このため、閾値ThLにより、輝度値の大小を峻別して、閾値ThLより大きい輝度値を持つピクセルを、撮影された再帰反射シート21の一部であると認識する。
ステップS43にて、高速プロセッサ91は、カウント値kを1つインクリメントする。ステップS44にて、高速プロセッサ91は、カウント値kが「1」か否かを判断し、k=1であれば、ステップS45に進み、それ以外では、ステップS46に進む。
ステップS45では、高速プロセッサ91は、最小Y座標minYに、現在のY座標を代入する。つまり、スキャンは、(X,Y)=(0,0)から開始して、X=0〜31まで行い、Yをインクリメントして、再び、X=0〜31まで行う、という処理を繰り返すので(後述のステップS55〜S59参照)、最初に閾値ThLを超えた要素(つまりピクセル)を持つ配列Dif[X][Y]の「Y」が最小Y座標minYとなる。
ステップS46では、高速プロセッサ91は、現在の最大Y座標maxYと現在のY座標とを比較する。ステップS47にて、高速プロセッサ91は、現在の最大Y座標maxYより現在のY座標が大きい場合は、ステップS48に進み、それ以外はステップS49に進む。ステップS48では、高速プロセッサ91は、最大Y座標maxYに、現在のY座標を代入する。
ステップS49では、高速プロセッサ91は、現在の最小X座標minXと現在のX座標とを比較する。ステップS50にて、高速プロセッサ91は、現在の最小X座標minXより現在のX座標が小さい場合は、ステップS51に進み、それ以外はステップS52に進む。ステップS51では、高速プロセッサ91は、最小X座標minXに、現在のX座標を代入する。
ステップS52では、高速プロセッサ91は、現在の最大X座標maxXと現在のX座標とを比較する。ステップS53にて、高速プロセッサ91は、現在の最大X座標maxXより現在のX座標が大きい場合は、ステップS54に進み、それ以外はステップS55に進む。ステップS54では、高速プロセッサ91は、最大X座標maxXに、現在のX座標を代入する。
ステップS55では、高速プロセッサ91は、「X」を1つインクリメントする。ステップS56にて、高速プロセッサ91は、X=32のときは(つまり、差分画像のピクセル1行分の処理が終了したときは)ステップS57に進み、それ以外はステップS41に進む。
ステップS57では、高速プロセッサ91は、「X」に「0」を代入する。ステップS58にて、高速プロセッサ91は、「Y」を1つインクリメントする。ステップS57,S58の処理は、差分画像の1行分の処理が終了したため、次の1行分の処理を進めるために実行される。
ステップS59にて、高速プロセッサ91は、Y=32のときは(つまり、差分画像の32×32ピクセル分の処理が終了したときは)、図16のルーチンにリターンし、それ以外はステップS41に進む。
上記ステップS41〜S59を繰り返すことにより、Y=32となった時点で、最小X座標minX、最大X座標maxX、最小Y座標minY、及び最大Y座標maxYが全て確定する。
図18は、図16のステップS33の2点位置決定処理の流れの一例を示すフローチャートである。このフローチャートは、図11で説明した2点位置決定処理の流れの一例である。
図18に示すように、高速プロセッサ91は、ステップS70にて、「M」に「0」を代入して、ステップS71からステップS87までの処理を繰り返す。ここで、ステップS71に示すように、一回目のループのときは、Ytb=minY、二回目のループのときは、Ytb=maxY、である。ステップS72にて、高速プロセッサ91は、座標(minX,Ytb)を始点としてスキャンを開始する。
ステップS73にて、高速プロセッサ91は、カウント値Clに「0」を代入する。ステップS74にて、高速プロセッサ91は、差分データDif[X][Y]と閾値ThLとを比較して、差分データが閾値より大きい場合は、ステップS77に進み、それ以外は、ステップS75に進む。ステップS75では、高速プロセッサ91は、カウント値Clを1つインクリメントする。ステップS76にて、高速プロセッサ91は、座標Xを1つインクリメントして、ステップS74に進む。
ステップS74で、Dif[X][Y]>ThLと判断された時点のカウント値Clは、図11の距離LTあるいはLBに相当する。ステップS72で、Ytb=minYのときは、Cl=LTであり、Ytb=maxYのときは、Cl=LBである。
ステップS77にて、高速プロセッサ91は、座標(maxX,Ytb)を始点としてスキャンを開始する。ステップS78にて、高速プロセッサ91は、カウント値Crに「0」を代入する。ステップS79にて、高速プロセッサ91は、差分データDif[X][Y]と閾値ThLとを比較して、差分データが閾値より大きい場合は、ステップS82に進み、それ以外は、ステップS80に進む。ステップS80では、高速プロセッサ91は、カウント値Crを1つインクリメントする。ステップS81にて、高速プロセッサ91は、座標Xを1つデクリメントして、ステップS79に進む。
ステップS79で、Dif[X][Y]>ThLと判断された時点のカウント値Crは、図11の距離RTあるいはRBに相当する。ステップS72で、Ytb=minYのときは、Cr=RTであり、Ytb=maxYのときは、Cr=RBである。
ステップ82では、高速プロセッサ91は、距離ClとCrとを比較する。ステップS83にて、距離Clが距離Crより大きい場合は、ステップS85に進み、それ以外は、ステップS84に進む。
ステップS84では、「Xtp[M]」に「minX」を代入するとともに、「Ytp[M]」に「Ytb」を代入する。一方、ステップS85では、「Xtp[M]」に「maxX」を代入するとともに、「Ytp[M]」に「Ytb」を代入する。
ここで、座標(Xtp[0],Ytp[0])は、図11で説明した第1抽出点の座標であり、座標(Xtp[1],Ytp[1])は、第2抽出点の座標である。
ステップS86では、高速プロセッサ91は、「M」を1つインクリメントして、ステップS87へ進む。ステップS71からステップS87までのループが終了すると、図16のルーチンにリターンする。
図19は、図14のステップS5の選択処理の流れの一例を示すフローチャートである。図19は、図8(a)、図8(b)及び図9で説明した処理の流れの一例を示している。図19に示すように、ステップS101にて、高速プロセッサ91は、図16のステップS34で今回求めた中点座標と前回求めた中点座標との中点を算出して、今回のカーソル201の座標(「カーソル座標」と呼ぶ。)とする。なお、中点座標はスクリーン座標系に変換後のものを用いている。ステップS102にて、高速プロセッサ91は、今回のカーソル座標が、選択ボタン203Uあるいは203Dのいずれかを含む選択有効領域211に存在する場合は、ステップS103に進み、それ以外は、ステップS110に進む。
ステップS103では、高速プロセッサ91は、今回のカーソル座標が存在する選択有効領域211に包含される選択ボタン203Uあるいは203Dに応じた値に、領域フラグをセットする。ステップS104にて、高速プロセッサ91は、今回のカーソル座標が存在する選択有効領域211に含まれる選択ボタン203Uあるいは203Dの中心に、今回のカーソル201の位置を再設定する。ステップS105にて、高速プロセッサ91は、今回のカーソル座標が存在する選択有効領域211に含まれる、時間経過を示すインジケータ202Uあるいは202Dのアニメーションを設定する。これにより、時間の経過に伴って、該当のインジケータ202Uあるいは202Dが所定の色に塗りつぶされていく。
ステップS106にて、高速プロセッサ91は、領域フラグをチェックして、その値が前回と同じか否かを判断し、同じであればステップS108に進み、異なる場合はステップS107に進む。ステップS107では、高速プロセッサ91は、経過時間をリセットして(0に戻して)、ステップS108に進む。ステップS108では、高速プロセッサ91は、一定時間が経過したか否かを判断し、経過したときはステップS109に進み、それ以外は図14のメインルーチンにリターンする。ステップS109では、高速プロセッサ91は、該当のインジケータ202Uあるいは202Dの矢印の向きに従って、次のゲームモード選択画面をテレビジョンモニタ5に表示すべく、アニメーションの設定や表示位置の設定を行う。
さて、一方、ステップS110にて、今回のカーソル座標が、決定有効領域213に存在する場合は、ステップS111に進み、それ以外は、ステップS118に進む。ステップS118では、高速プロセッサ91は、今回のカーソル座標がいずれの選択ボタン203U及び203Dにも属さず、かつ、決定ボタン207にも属さないことを示す値に、領域フラグをセットする。
ここで、図11、図17、及び図18の処理について補足説明を行う。図11では、グローブ型入力具7L及び7Rの双方が撮影された例を挙げた。しかし、グローブ型入力具7L又は7Rのいずれか1つが撮影された場合でも、図17及び図18の処理により、最大X座標maxX、最小X座標minX、最大Y座標maxY、及び最小Y座標minYが求まるし、また、第1抽出点及び第2抽出点が求まることは明らかである。
さて、一方、ステップS111では、高速プロセッサ91は、カーソル座標が存在する決定有効領域213に包含される決定ボタン207に応じた値に、領域フラグをセットする。ステップS112にて、高速プロセッサ91は、今回のカーソル201の位置を決定ボタン207の中心位置に再設定する。ステップS113にて、高速プロセッサ91は、時間経過を示すインジケータ209のアニメーションを設定する。これにより、時間の経過に伴って、インジケータ209が時計回りに所定の色に塗りつぶされていく。
ステップS114にて、高速プロセッサ91は、領域フラグをチェックして、その値が前回と同じか否かを判断し、同じであればステップS116に進み、異なる場合はステップS115に進む。ステップS115では、高速プロセッサ91は、経過時間をリセットして(0に戻して)、ステップS116に進む。ステップS116では、高速プロセッサ91は、一定時間が経過したか否かを判断し、経過したときはステップS117に進み、それ以外は図14のメインルーチンにリターンする。ステップS117では、高速プロセッサ91は、選択されたゲームモードでの処理の実行を開始する。このとき、ゲームステートは、「対戦中」に設定される。
図20は、図14のステップS6の対戦中処理の流れの一例を示すフローチャートである。図20に示すように、ステップS120にて、高速プロセッサ91は、図18の処理で求めた第1抽出点及び第2抽出点のうち、どちらが左でどちらが右かを決定する。
ステップS121にて、高速プロセッサ91は、自ボクサーのグローブ217L及び217Rの動きを判定し、ストレートパンチ、クロスパンチ、あるいはパンチなしの状態を決定する。ステップS122にて、高速プロセッサ91は、自ボクサーのグローブ217L及び217Rの表示位置を更新する。ステップS123にて、高速プロセッサ91は、図16のステップS34で求めた今回の中点座標の水平成分(x成分)と前回の中点座標の水平成分(x成分)との差、つまり、当該中点の水平方向の移動距離を求めて、前回求めた積算値Dmに加算する。このように、ステップS123では、当該中点の水平方向の移動距離、つまり、グローブ217Lとグローブ217Rとの中点の水平方向の移動距離を積算して、積算値Dm(つまり、移動量Dm)を取得する。なお、中点座標はスクリーン座標系に変換後のものを用いている。
ステップS124にて、高速プロセッサ91は、相手ボクサー(つまり、CPUボクサー215)の動きを制御する。つまり、高速プロセッサ91は、相手ボクサーの行動アルゴリズムに従って、相手ボクサーのアニメーションや位置の設定を行う。ステップS125にて、高速プロセッサ91は、相手ボクサー並びに自ボクサーのグローブ217L及び217Rの位置に応じて、背景の表示を制御する。
より具体的には次の通りである。本実施の形態では、横(水平)256画素×縦(垂直)224画素の範囲がテレビジョンモニタ5のスクリーンに表示されるところ、このスクリーンをほぼ均等に横方向(水平方向)に3分割した領域を設定する。相手ボクサーが中央の領域から左の領域に移動した場合は、背景を右方向にスクロールさせ、一方、相手ボクサーが中央の領域から右の領域に移動した場合は、背景を左方向にスクロールさせて、相手ボクサーが、中央の領域に位置するように、背景が制御される。このような背景制御は、リングを撮影するカメラのアングルを変えることに相当する。
また、図16の処理で求めた第1抽出点と第2抽出点との中点の動きに応じて、背景及び相手ボクサーの位置が制御される。つまり、テレビジョンモニタ5のスクリーンの中心からの、第1抽出点及び第2抽出点の中点の水平方向の移動距離に応じて、背景及び相手ボクサーの位置が制御される。スクリーンの中心に対して、中点が左に移動した場合は、背景及び相手ボクサーは右にスクロールされ、右に移動した場合は、背景及び相手ボクサーは左にスクロールされる。このような背景及び相手ボクサーの制御は、自ボクサーの視差を考慮した制御である。
ステップS126にて、高速プロセッサ91は、自ボクサーのパンチが、相手ボクサーにヒットしたか否かを判定する。ステップS127にて、高速プロセッサ91は、相手ボクサーのパンチが、自ボクサーにヒットしたか否かを判定する。具体的には、自ボクサーのグローブ217Lとグローブ217Rとの間に、相手ボクサーの左右いずれかのパンチが位置すればヒットと判定される。一方、自ボクサーのグローブ217L及び217Rの外側に相手ボクサーの左右いずれかのパンチが位置すれば防御したと判定される。
ステップS128にて、高速プロセッサ91は、ラウンドが終了したか否かを判断し、終了した場合はステップS129に進み、ゲームステートを「ラウンド終了」に設定して、メインルーチンにリターンし、それ以外は、ステップS130に進む。ステップS130では、高速プロセッサ91は、試合終了か否か、つまり、全ラウンド終了か否かを判断し、終了であれば、ステップS131に進み、ゲームステートを「試合終了」に設定し、メインルーチンにリターンする。一方、試合終了でない場合は、メインルーチンにリターンする。
図21は、図20のステップS120の左右決定処理の流れの一例を示すフローチャートである。このフローチャートは、図12で説明した左右決定処理の流れの一例である。なお、グローブ型入力具7Lの位置を左抽出点、グローブ型入力具7Rの位置を右抽出点と呼ぶ。
図21に示すように、ステップS140にて、高速プロセッサ91は、前回の左抽出点の位置(XL[0],YL[0])からの今回の左抽出点の位置(Xnl,Ynl)を予測する。ステップS141にて、高速プロセッサ91は、前回の右抽出点の位置(XR[0],YR[0])からの今回の右抽出点の位置(Xnr,Ynr)を予測する。ここで、左抽出点(Xnl,Ynl)は、図12の予測位置TPLpに相当し、右抽出点の位置(Xnr,Ynr)は、予測位置TPRpに相当する。
ステップS142にて、高速プロセッサ91は、「M」に「0」を代入する。ステップS143にて、高速プロセッサ91は、予測位置(Xnl,Ynl)と抽出点(Xtp[M],Ytp[M])との間の距離Dlを算出する。ステップS144にて、高速プロセッサ91は、予測位置(Xnr,Ynr)と抽出点(Xtp[M],Ytp[M])との間の距離Drを算出する。
ここで、抽出点(Xtp[0],Ytp[0])は、図18のルーチンで求めた第1抽出点であり、抽出点(Xtp[1],Ytp[1])は、図18のルーチンで求めた第2抽出点である。M=0のときは、距離Dlは、図12の距離LD1に相当し、距離Drは、距離RD1に相当する。M=1のときは、距離Dlは、図12の距離LD2に相当し、距離Drは、距離RD2に相当する。
ステップS145にて、高速プロセッサ91は、距離Dlと距離Drとを比較する。ステップS146にて、高速プロセッサ91は、Dl>DrならばステップS148に進み、それ以外はステップS147に進む。
ステップS147では、高速プロセッサ91は、前々回の左抽出点の位置(XL[1],YL[1])を、位置(XL[2],YL[2])とし、前回の左抽出点の位置(XL[0],YL[0])を、位置(XL[1],YL[1])とする。そして、高速プロセッサ91は、今回の左抽出点の位置(XL[0],YL[0])を、座標(Xtp[M],Ytp[M])とする。
一方、ステップS148では、高速プロセッサ91は、前々回の右抽出点の位置(XR[1],YR[1])を、位置(XR[2],YR[2])とし、前回の右抽出点の位置(XR[0],YR[0])を、位置(XR[1],YRL[1])とする。そして、高速プロセッサ91は、今回の右抽出点の位置(XR[0],YR[0])を、座標(Xtp[M],Ytp[M])とする。
ステップS149では、高速プロセッサ91は、「M」を1つインクリメントする。ステップS150にて、高速プロセッサ91は、M=2か否かを判断し、M=2であれば図20のルーチンにリターンし、それ以外はステップS143に進む。
図22は、図20のステップS121のグローブ動き判定処理の流れの一例を示すフローチャートである。このフローチャートは、図13で説明したグローブ動き判定処理の流れの一例である。
図22に示すように、高速プロセッサ91は、ステップS160からステップS169までの処理を繰り返す。i=0では、グローブ型入力具7Lの動き判定を行い、i=1では、グローブ型入力具7Rの動き判定を行う。
ステップS161では、高速プロセッサ91は、次式により、速度ベクトルViを算出する。
Vi=(Xi[0]−Xi[2],Yi[0]−Yi[2])
ここで、座標(X0[0],Y0[0])は今回の左抽出点(XL[0],YL[0])(図13の左位置TPL3に相当)であり、座標(X0[2],Y0[2])は前々回の左抽出点(XL[2],YL[2])(図13の左位置TPL1に相当)である。従って、速度ベクトルV0は、図13の速度ベクトルVに相当する。また、座標(X1[0],Y1[0])は今回の右抽出点(XR[0],YR[0])であり、座標(X1[2],Y1[2])は前々回の右抽出点(XR[2],YR[2])である。
ステップS162にて、高速プロセッサ91は、速度ベクトルViの始点を原点として、速度ベクトルViの終点が存在する仮想画面上の領域を判定する(図13(b)、図13(d)、図13(f)参照)。ステップS163にて、高速プロセッサ91は、速度ベクトルViの終点が不動領域に存在する場合は、ステップS164に進み、不動フラグIFiをオンにし、それ以外は、ステップS165に進む。
ステップS165にて、高速プロセッサ91は、速度ベクトルViの終点がストレート領域に存在する場合は、ステップS167に進み、ストレートフラグSFiをオンにし、それ以外はクロス領域に存在することになるので、ステップS166に進んで、クロスフラグCFiをオンにする。ステップS168にて、高速プロセッサ91は、パンチの回数をカウントするパンチカウンタNpを1つインクリメントして、ステップS169に進む。このように、パンチ回数のカウントにおいては、ストレート及びクロス、並びに左右は区別していない。
ステップS160からS169までの処理が2回行われた後、つまり、左右のグローブ型入力具7L及び7Rの判定が完了した後、図20のルーチンにリターンする。
図23は、図20のステップS122の自グローブ位置更新処理の流れの一例を示すフローチャートである。図23に示すように、高速プロセッサ91は、ステップS180からS190までの処理を繰り返す。i=0のときは、自ボクサーのグローブ217Lに関する処理であり、i=1のときは、自ボクサーのグローブ217Rに関する処理である。
ステップS181にて、高速プロセッサ91は、不動フラグIFiがオンか否かを判断し、オンであればステップS182に進み、該当するグローブ217Lあるいは217Rの位置を更新し、それ以外はステップS184に進む。ここで、グローブ217L及び217Rの位置は、それぞれ、スクリーン座標への変換後の今回の左抽出点の位置及び今回の右抽出点の位置に設定される。ただし、グローブ217L及び217Rは、水平方向には自由に移動可能であるが、垂直方向については、移動可能な位置が制限される(例えば、グローブ217L及び217Rの中心がスクリーンの垂直方向下1/3まで)。グローブ217L及び217Rは、プレイヤ11による非入力を示す画像(基本的姿態を示す画像)の例である。ステップS183では、高速プロセッサ91は、不動フラグIFiをオフにする。
ステップS184では、高速プロセッサ91は、ストレートフラグSFiがオンか否かを判断し、オンであればステップS185に進んで、該当するグローブ217Lあるいは217Rのストレートパンチのアニメーション(プレイヤ11による入力を示す画像(基本的姿態から変化する画像)の例)を設定し、それ以外はステップS187に進む。ステップS186では、高速プロセッサ91は、ストレートフラグSFiをオフにする。
ステップS187では、高速プロセッサ91は、クロスフラグCFiがオンか否かを判断し、オンであればステップS188に進んで、該当するグローブ217Lあるいは217Rのクロスパンチのアニメーション(プレイヤ11による入力を示す画像(基本的姿態から変化する画像)の他の例)を設定する。ステップS189では、高速プロセッサ91は、クロスフラグCFiをオフにする。
ステップS180からS190までの処理が2回行われた後、つまり、左右のグローブ217L及び217Rの位置更新が完了した後、ステップS191に進む。ステップS191では、高速プロセッサ91は、自ボクサーの左のグローブ217Lと右のグローブ217Rとがクロスしているか否か、つまり、左右が入れ替わっているか否かを判断し、クロスしている場合はステップS192に進む。ステップS192にて、高速プロセッサ91は、クロス後規定時間経過したか否かを判断し、経過したときはステップS193に進んで、右側に表示されたグローブ217Lと左側に表示されたグローブ217Rとを左右入れ替えるアニメーションを設定する。
図24は、図14のステップS8の消費カロリー算出処理の流れの一例を示すフローチャートである。図24に示すように、ステップS200にて、高速プロセッサ91は、図20のステップS123で求めた、グローブ217Lとグローブ217Rとの中点の水平方向の移動距離の積算値Dm(つまり、移動量Dm)を「256」で除算して、除算結果Umを得る。この場合、小数点以下は切り捨てる。ここで、上記のように、水平256画素×垂直224画素の範囲がテレビジョンモニタ5のスクリーンに表示されるところ、「256」は、水平方向の画素数を示している。この256画素を移動量の一単位としている。
ステップS201にて、高速プロセッサ91は、除算結果Umに、単位移動カロリーCm(例えば157カロリー)を乗算して、乗算結果Efを得る。一単位、つまり、単位移動カロリーCmは、プレイヤが、グローブ217Lとグローブ217Rとの中点が水平方向に256画素動くような動作をしたときの消費カロリーの実測値である。従って、乗算結果Efは、グローブ型入力具7L及び7Rの水平方向の動きに基づく消費カロリーである。
ステップS202にて、高速プロセッサ91は、図22のステップS168で求めたカウント値Np、つまり、パンチ回数Npに、単位パンチカロリーCp(例えば120カロリー)を乗算して、乗算結果Esを得る。ここで、単位パンチカロリーCpは、プレイヤが、パンチを繰り出したときの消費カロリーの実測値である。従って、乗算結果Esは、繰り出されたパンチに基づく消費カロリーである。なお、図22から分かるように、パンチ回数Npの計数において、ストレート及びクロス、並びに左右の区別はしていない。
ステップS203にて、高速プロセッサ91は、グローブ型入力具7L及び7Rの水平方向の動きに基づく消費カロリーEfと、繰り出されたパンチに基づく消費カロリーEsと、を加算して、当該ラウンド(R+1)での消費カロリーE(R)を得る。ここで、R=0,1,…、であり、(R+1)はラウンドを示す。ステップS204にて、高速プロセッサ91は、移動量Dm及びパンチ回数Npをクリアする。
なお、上記の実測は、例えば、予め20歳の日本人女性をモデルとして行って、その結果から単位移動カロリーCm及び単位パンチカロリーCpを計算のパラメータとして実装しておく。一つの好ましい実装例では、この単位移動カロリーCm及び単位パンチカロリーCpを、プレイヤが入力したプレイヤの年令、性別、及び体重を加味して、より実際の値に近づくように修正される。いずれにせよ、算出された消費カロリーに誤差があっても、大まかな運動量は把握できる。又、日々のカロリー消費量の相対的な増減は略正確なので、この消費カロリーの表示は、一定の運動の継続を可能とし、健康維持に効果的である。図14に戻って、ステップS10では、高速プロセッサ91は、ステップS8で求めた消費カロリーE(R)を加算して、一試合の消費カロリーを算出する。
図25は、図14のステップS9の処理結果に基づいて表示される途中結果画面の例示図である。図25を参照して、この画面は、判定結果表示部500、消費カロリー表示部502、OKボタン504、及びカーソル201を含む。判定結果表示部500には、該当するラウンド(図ではラウンド1)における、各ジャッジA〜Cの判定結果が表示される。図において、「Raz」は、自ボクサーの名称である。
また、消費カロリー表示部502には、該当するラウンドにおける、消費カロリー(ステップS8で算出)が表示される。そして、カーソル201が、OKボタン504に一定時間位置すると、次のラウンドの処理に移る。
図26は、図14のステップS11の処理結果に基づいて表示される試合結果画面の例示図である。図26を参照して、この画面は、消費カロリー表示部506、キャンセルボタン510、OKボタン504、及びカーソル201を含む。消費カロリー表示部506には、一試合での消費カロリー(ステップS10で算出)が表示される。また、勝者の名称が表示される(図では「Raz」)。
そして、カーソル201が、OKボタン504に一定時間位置すると、表示中の消費カロリーを、これまでの消費カロリーの積算値に積算する。一方、カーソル201が、キャンセルボタン510に一定時間位置すると、表示中の消費カロリーは、これまでの消費カロリーの積算値に積算されない。
図27は、図26の試合結果画面の次に表示されるトータル結果画面の例示図である。図27を参照して、この画面は、消費カロリー表示部506およびトータル消費カロリー表示部508を含む。消費カロリー表示部506には、一試合での消費カロリー(ステップS10で算出)が表示される。トータル消費カロリー表示部508は、これまでの消費カロリーの積算値が表示される。
図28は、図27のトータル結果画面の次に表示されるコメント画面の例示図である。図28を参照して、この画面は、コメント表示部514、キャラクタ512、OKボタン504、及びカーソル201を含む。コメント表示部514には、試合結果に応じたコメントが表示される。そして、カーソル201が、OKボタン504に一定時間位置すると、図14のステップS5の処理に移る。
さて、以上のように、本実施の形態によれば、グローブ型入力具7Lの今回の位置TPL3に対して2回だけ過去の位置TPL1を原点として、グローブ動き判定を行っている(図13(a)〜図13(f)参照)。
つまり、原点は、判定対象の位置に対して常に2回だけ過去の位置になるので、グローブ型入力具7Lの相対的な位置に基づいて動き判定を行っていることになる。このため、プレイヤ11の身長の大小や、撮像ユニット51とプレイヤ11との間の距離の長短がある場合であっても、一定したグローブ画像を表示できる。この点は、グローブ型入力具7Rに対しても同様である。
このことを明らかにすべく、グローブ型入力具7Lの差分画像上の絶対的な位置に基づいて動き判定を行うことを想定する。この場合は、差分画像が仮想画面に相当する。例えば、身長の低いプレイヤと高いプレイヤとが、同じ姿態でグローブ型入力具7Lを把持する場合を比較すると、グローブ型入力具7Lの差分画像上の位置は当然異なってくる。
従って、身長の低いプレイヤと高いプレイヤとが、同じ動作を行った場合でも、グローブ型入力具7Lが位置する領域が、両者で異なる場合も発生する。
例えば、子供等の身長の低いプレイヤがストレートパンチの動作をしたときは、グローブ型入力具7Lが仮想画面の不動領域に位置する一方、大人等の身長の高いプレイヤがストレートパンチの動作をしたときは、グローブ型入力具7Lが仮想画面のストレート領域に位置する場合も発生しうる。そうすると、同じ動作であるにも拘らず、身長の低いプレイヤと身長の高いプレイヤとで、表示されるグローブ画像も異なってくる。撮像ユニット51とプレイヤとの間の距離の長短によっても、同様の結果となる。同じ動作であるにも拘らず、プレイヤの身長の大小や、撮像ユニット51とプレイヤとの間の距離の長短によって、表示されるグローブ画像が異なるのは好ましくない。グローブ型入力具7Rについても同様である。本実施の形態によれば、この不都合を回避できる。
また、本実施の形態では、2つのグローブ型入力具7L,7Rに対応して2つの仮想画面が設定され、グローブ型入力具7L,7Rごとに、ストレート領域、クロス領域、及び不動領域を定めている。従って、グローブ型入力具7L,7Rごとに、その動きに応じた多様なグローブ画像を表示できる。
この点を明らかにすべく、2つのグローブ型入力具7L,7Rに対して1つの仮想画面を設定することを想定する。そうした場合、グローブ型入力具7Lによるパンチは、ストレートパンチあるいは左クロスパンチ(右側へのパンチ)であり、また、グローブ型入力具7Rによるパンチは、ストレートパンチあるいは右クロスパンチ(左側へのパンチ)である。
従って、ストレートパンチを出したときのグローブ型入力具7Lと、右クロスパンチを出したときのグローブ型入力具7Rと、が仮想画面の同じ領域に位置する場合が発生する。当然この逆もある。そうすると、左右の動作が異なるにも拘らず、グローブ型入力具7Lに対応するグローブ画像とグローブ型入力具7Rに対応するグローブ画像とが同じになってしまい、プレイヤ11の動作と異なるグローブ画像が表示されてしまう。例えば、ストレートパンチを出したときのグローブ型入力具7Lと、右クロスパンチを出したときのグローブ型入力具7Rと、が仮想画面の同じストレート領域に位置する場合、いずれの場合でもストレートパンチのアニメーションが表示され、グローブ型入力具7Rに対応するグローブ画像としては適切でない。
こうなると、結局、グローブ型入力具7L,7Rによるパンチの種類に関係なく、グローブ画像を設定しなければならない。従って、ストレート領域とクロス領域とを区別する意義もない。つまり、グローブ型入力具7L及び7Rの各々の動きの種類を反映したグローブ画像を表示できない。この点、本実施の形態によれば、グローブ型入力具7L,7Rごとに、その動きに応じた多様なグローブ画像(ストレートパンチ及びクロスパンチのアニメーション)を表示できる。
さらに、本実施の形態では、グローブ型入力具7Lの今回の位置TPL3が不動領域に属する場合は(図13(a)〜図13(f)参照)、グローブ型入力具7Lに連動してグローブ217Lがスクリーンを移動する(図10参照)。グローブ217Rについても同様である。従って、プレイヤ11は、グローブ型入力具7L,7Rを動かして、CPUボクサー215のパンチを避けることもできるし、また、防御することもできる。
さらに、本実施の形態では、プレイヤ11の意図に沿ったグローブ画像を表示することができる。この点を詳しく説明する。本実施の形態では、2回だけ過去のグローブ型入力具7Lの位置TPL1を原点として、今回の位置TPL3が属する領域に応じて、グローブ画像を表示する。この場合、原点を含む不動領域に今回の位置TPL3が属するときは、パンチを出していない状態を示す画像を表示する(図10のグローブ217L参照)。従って、グローブ型入力具7Lの動きが小さいときは、今回の位置TPL3が不動領域に属する場合が多くなるので、プレイヤ11がパンチとして意図していない小さな動きがパンチと判断されることを極力少なくできる。グローブ型入力具7Rについても同様である。
さらに、本実施の形態では、グローブ型入力具7Lの今回の位置TPL3に対して2回だけ過去の位置TPL1を原点として、グローブ動き判定を行っている。このため、1回だけ過去の位置TPL2を原点とする場合と比較して、グローブ型入力具7Lのより長い期間の移動軌跡が動き判定に反映されるので、連続的な動作によりグローブ型入力具7Lが動かされた場合に、よりその動きに沿った適切な動き判定を行うことができる。また、グローブ型入力具7Lの細かい動きと大きい動きとの差を大きくすることができる。これらのことは、グローブ型入力具7Rについても同様である。
さらに、本実施の形態では、グローブ型入力具7L,7Rの今回の位置の予測結果TPLp,TPRpに基づいて、グローブ型入力具7L,7Rの今回の位置を決定しているので(図12参照)、プレイヤ11が、グローブ型入力具7Lとグローブ型入力具7Rとの左右が入れ替わるような動作をした場合でも、これらの位置を極力適切に特定できる(つまり、左右の判別が可能)。
さらに、本実施の形態によれば、グローブ型入力具7L及び7Rの双方が撮影されていることを前提として、2点を抽出しているので(つまり、第1及び第2抽出点の座標を決定しているので)、2点抽出のための計算を簡易にできる(図11参照)。この点を詳しく説明する。2つのグローブ型入力具7L及び7Rが撮影されていることを前提にしていない場合は、差分画像中から、1つあるいは2つの像を検出することを要する。2つのグローブ型入力具7L及び7Rの双方が撮影される場合もあるし、一方のみが撮影される場合もあるからである。さらに、検出した1つあるいは2つの像の中心座標を算出しなければならない。特に、2つの像が近接している場合は、それらが1つのグローブ型入力具の像であるのか、あるいは、2つのグローブ型入力具の像であるのかを判別することは難しく、それ故、中心座標の算出が困難になる。本実施の形態によれば、各像の検出や中心座標の算出が不要であるため、そのような困難が生じることはないし、また、計算量が少なくなる。
さらに、本実施の形態によれば、カーソル座標がボタン203U,203D,207を包含する領域211,213に位置したときは、グローブ型入力具7L,7Rの位置に関係なく、カーソル201の位置をボタン203U,203D,207の中心位置に移動させるので、プレイヤ11は、ボタン203U,203D,207にカーソル201を近づけるだけで、簡単にボタン203U,203D,207へのカーソル201の移動を行うことができる。つまり、ボタン203U,203D,207にカーソル201が近づいた場合は、プレイヤ11が、ボタン203U,203D,207にカーソル201を移動することを意図していることが推測できるので、自動的にカーソル201を移動させることにより、プレイヤ11の操作の負担を軽減している。しかも、インジケータ202U,202D,209には、カーソル201がボタン203U,203D,207に留まってから所定時間に到達するまでの経過時間及び残り時間が表示されるので、プレイヤ11は、選択操作や決定操作が確定される条件としての当該所定時間までの残りの時間を容易に把握でき、プレイヤ11にとっての利便性の向上を図ることができる(図8(a)、図8(b)、図9参照)。
さらに、本実施の形態によれば、カートリッジ3を装着したアダプタ1を床面に載置してボクシングゲームを行っているので、差分画像上のグローブ型入力具7L,7Rの移動量が大きくなり、プレイヤ11の動きを適切に反映できる。なお、プレイヤ11が同じ動きをした場合でも、カートリッジ3を装着したアダプタ1がテレビジョンモニタ5の上面に載置される場合は、差分画像上のグローブ型入力具7L,7Rの移動量は、床面に載置したときよりも小さくなる。
さらに、本実施の形態では、ストロボ撮影の結果を用いて、プレイヤ11の消費エネルギーを簡易に算出できる。この場合、パンチ回数Np及び移動量Dmを加味しているので、算出される消費エネルギーの精度の向上を図ることができる。
(実施の形態2)
本発明の実施の形態2によるボクシングゲームシステムのハードウエアとして、実施の形態1のボクシングゲームシステムのハードウエアを使用する。このボクシングゲームシステムでは、実施の形態1で説明した図14のボクシングゲーム処理に加えて、エクササイズ処理(モード)A、エクササイズ処理(モード)B、エクササイズ処理(モード)C、及びエクササイズ処理(モード)Dを実行する。これらの処理について、順番に説明する。
図29は、本発明の実施の形態2によるボクシングゲームシステムによって実行されるエクササイズ処理Aに基づくエクササイズ画面の例示図である。図29を参照して、高速プロセッサ91は、玉オブジェクト521A及び521Bの各々を、奥から手前に向かってくるように、次々にテレビジョンモニタ5に出現させる。また、高速プロセッサ91は、グローブ型入力具7Lの動きに応答して動くグローブ217L、及びグローブ型入力具7Rの動きに応答して動くグローブ217Rを、テレビジョンモニタ5に表示する。
高速プロセッサ91は、グローブ217Lの中心位置を含む所定範囲あるいはグローブ217Rの中心位置を含む所定範囲に、玉オブジェクト521Aが存在するか否かを判定し、存在すればヒットしたと判断する。高速プロセッサ91は、かかるヒットの回数をカウントすると共に、ヒットした玉オブジェクト521Aを逆方向に移動させる(打ち返す)。なお、グローブ217L及び217Rの動き制御並びに消費カロリーの算出処理は実施の形態1と同様である。
プレイヤは、グローブ型入力具7L及び7Rを操作して、グローブ217Lあるいは217Rで、より多くの玉オブジェクト521Aを打ち返すよう試みる。なお、グローブ217Lの中心位置を含む所定範囲あるいはグローブ217Rの中心位置を含む所定範囲に、玉オブジェクト521Bが存在する場合は、当該玉オブジェクト521Bは打ち返されるが、ヒットとは判定されず、ヒット回数は増えない。また、画面左上にはヒット数が、画面右上には出現した玉オブジェクト521Aの数が、リアルタイムで表示される。
図30は、本発明の実施の形態2によるボクシングゲームシステムによって実行されるエクササイズ処理Bに基づくエクササイズ画面の例示図である。図30を参照して、高速プロセッサ91は、サンドバッグオブジェクト520を、テレビジョンモニタ5に表示する。また、高速プロセッサ91は、グローブ型入力具7Lの動きに応答して動くグローブ217L、及びグローブ型入力具7Rの動きに応答して動くグローブ217Rを、テレビジョンモニタ5に表示する。なお、グローブ217L及び217Rの動き制御並びに消費カロリーの算出処理は実施の形態1と同様である。
高速プロセッサ91は、一定時間内に、何発のパンチが繰り出されたかをカウントする(図22のステップS168参照)。プレイヤは、グローブ型入力具7L及び7Rを操作して、グローブ217Lあるいは217Rにより、より多くのパンチを繰り出すように試みる。また、画面左上には繰り出されたパンチ数が、画面右上には経過時間が、リアルタイムで表示される。
図31は、本発明の実施の形態2によるボクシングゲームシステムによって実行されるエクササイズ処理Cに基づくエクササイズ画面の例示図である。図32は、図31のエクササイズ画面の他の例示図である。図31を参照して、高速プロセッサ91は、パネルオブジェクトP11,P12,P13,P21,P23,P31,P32及びP33、不透明のグローブセット522、指示オブジェクト524、ガイド526、並びにガイド528を、テレビジョンモニタ5に表示する。
ガイド526は、8つのパネルオブジェクトに対応した、8つの矩形図形を含む。この矩形図形を特定色(図では斜線を付している。)にすることにより、指示オブジェクト524の表示位置が案内される。矢印状のガイド528は、指示オブジェクト524の表示の順番を示す。プレイヤは、ガイド526及び528を見ることにより、指示オブジェクト524の次の位置を把握することができる。
高速プロセッサ91は、図11に示す輝度値の大きい2つの領域251及び253が検出されず、輝度値の大きい1つの領域のみが検出されたときに、不透明のグローブセット522を表示する。一方、高速プロセッサ91は、図11のように、輝度値の大きい2つの領域251及び253が検出されたときは、図32に示す半透明のグローブ530を表示する。従って、プレイヤは、グローブ型入力具7L及び7Rを接触させた状態で、グローブ型入力具7L及び7Rを動かして、不透明のグローブセット522を操作する。
高速プロセッサ91は、プログラムに従って、指示オブジェクト524をパネルオブジェクトに重ねて表示する。そして、高速プロセッサ91は、プレイヤの操作によってグローブセット522が指示オブジェクト524の位置に移動したら、カウンタを1つインクリメントすると共に、指示オブジェクト524をガイド526が予告するパネルオブジェクトに重ねて表示する。高速プロセッサ91は、このような処理を一定時間繰り返す。
プレイヤは、グローブ型入力具7L及び7Rを操作して、不透明のグローブセット522を、次々に移動する指示オブジェクト524に次々に重ねていく。また、画面左上にはグローブセット522が指示オブジェクト524に重なった回数が、画面右上には経過時間が、リアルタイムで表示される。
このエクササイズ処理Cでは、グローブセット522は、第1抽出点と第2抽出点との中点に応じた位置に表示される。また、消費カロリーは、グローブセット522の水平方向の移動量及び垂直方向の移動量に基づいて算出される。この場合、水平方向及び垂直方向のそれぞれについて、図20のステップS123及び図24の処理と同様の処理が行われ、水平方向の移動量に基づく消費カロリーと、垂直方向の移動量に基づく消費カロリーと、が加算される。
図33は、本発明の実施の形態2によるボクシングゲームシステムによって実行されるエクササイズ処理Dに基づくエクササイズ画面の例示図である。図33を参照して、高速プロセッサ91は、ガイド534,536,538,540及び542、的オブジェクト532、並びに、グローブ217L及び217Rを、テレビジョンモニタ5に表示する。なお、グローブ217L及び217Rの動き制御並びに消費カロリーの算出処理は実施の形態1と同様である。
これらのガイドは、プレイヤに対して、パンチ動作を指示する。図の例では、ガイド534,536及び540は、左ストレートパンチを繰り出すことを指示しており、ガイド538は、右ストレートパンチを繰り出すことを指示しており、ガイド542は、右クロスパンチを繰り出すことを指示している。なお、左クロスパンチを繰り出すことを指示するガイドも用意される。
タイミングオブジェクト544は、ガイドを囲むように表示される。さらに、時間の経過と共にタイミングオブジェクト544の縁に沿って延びていくインジケータ546が表示される。プレイヤは、タイミングオブジェクト544で囲まれたガイドが指示する動作をインジケータ546が示す時間内(一周する時間内)に行わなければならない。
高速プロセッサ91は、タイミングオブジェクト544で囲まれたガイドが指示する動作をインジケータ546が示す時間内にプレイヤが行った回数をカウントする。また、高速プロセッサ91は、タイミングオブジェクト544が画面最後(右端)のガイドまで移動し、そこで、インジケータ546が一周するたびに、ガイドの表示を切り替え、再び、画面最初(左端)からタイミングオブジェクト544を移動させていく。また、画面左下には当該回数が、画面右下にはガイドの出現数が、リアルタイムで表示される。
図34は、本発明の実施の形態2によるボクシングゲームシステムが実行する処理の遷移を示す図である。図34を参照して、高速プロセッサ91は、ステップS500にて、テレビジョンモニタ5にタイトル(例えば、「パワーボクシング」等のタイトル)を表示する。ステップS501にて、高速プロセッサ91は、テレビジョンモニタ5にセーブスロット選択画面を表示して、セーブスロットの選択処理を実行する。
図35は、図34のステップS501において表示されるセーブスロット選択画面の例示図である。図35を参照して、高速プロセッサ91は、セーブスロット552、選択スロット明示部554、表示変更オブジェクト550L及び550R、キャンセルボタン510、OKボタン504、並びにカーソル201をテレビジョンモニタ5に表示する。
セーブスロット552の上段には、チャンピョンシップモードでのユーザの現在のクラス及びステージが示され、中段には、エクササイズモードA〜Dの各々におけるクリアしたレベルが星マークにより示される。エクササイズモードA〜Dの各々において、10レベルが設けられ、プレイヤは、どのレベルからでも行うことができる。また、セーブスロット552の下段には、これまでのトータルの消費カロリーが表示される。このトータルの消費カロリーは、チャンピョンシップモード及びエクササイズモードにおける蓄積された総消費カロリーである。
このようなセーブスロット552は、4つ(つまり、4ユーザ分)用意され、それぞれ色を異にしている。例えば、赤色、青色、黄色、及び緑色などである。ユーザは、この色によって、自分のセーブスロット552を容易に判別できる。
選択スロット明示部554は、現在選択されている(表示されている)セーブスロット552を明示する。プレイヤが、グローブ型入力具7L及び7Rを動かして、カーソル201を、表示変更オブジェクト550Lあるいは550Rに移動させると、他のセーブスロット552が表示される。4つのセーブスロット552は、このような操作により、ループして表示される。カーソル201が、キャンセルボタン510に一定時間位置すると、処理はステップS500に進み、OKボタン504に一定時間位置すると、処理はステップS502に進む。
図34に戻って、ステップS502にて、高速プロセッサ91は、テレビジョンモニタ5にプレイモード選択画面を表示して、プレイモードの選択処理を実行する。この処理によって、チャンピョンシップモード、エクササイズモード、及びデータビューモードのいずれかが選択される。高速プロセッサ91は、プレイヤによりチャンピョンシップモードが選択されたときはステップS503に進み、プレイヤによりエクササイズモードが選択されたときはステップS513に進み、プレイヤによりデータビューモードが選択されたときはステップS518に進む。なお、プレイヤが、カーソル201を操作することにより、モードの選択が行われる。
ステップS503では、高速プロセッサ91は、モード選択画面を表示し、モードの選択処理を実行する。この処理によって、チャンピョンシップモードにおいて、さらに、対戦モード及びトレーニングモードのいずれかが選択される。高速プロセッサ91は、プレイヤにより対戦モードが選択されたときはステップS504に進み、プレイヤによりトレーニングモードが選択されたときはステップS509に進む。なお、プレイヤが、カーソル201を操作することにより、モードの選択が行われる。対戦モードでは、図14と同様の処理が行われる。
ステップS504では、高速プロセッサ91は、対戦相手選択画面を表示して、対戦相手の選択処理を実行する。なお、プレイヤが、カーソル201を操作することにより、対戦相手の選択が行われる。ステップS505にて、高速プロセッサ91は、クラス/ステージ選択画面を表示して、クラス及びステージの選択処理を実行する。なお、プレイヤが、カーソル201を操作することにより、クラス及びステージの選択が行われる。
ステップS506にて、高速プロセッサ91は、CPUボクサーと自ボクサーの対戦処理を実行する。ステップS507にて、高速プロセッサ91は、テレビジョンモニタ5に対戦結果画面を表示する(図26及び図27参照)。ステップS508にて、高速プロセッサ91は、対戦結果に応じたコメント画面を表示する(図28参照)。
一方、ステップS509では、高速プロセッサ91は、トレーニング選択画面を表示して、トレーニングモードの選択処理を実行する。4つのトレーニングモードA〜Dが用意され、プレイヤが、カーソル201を操作することにより、トレーニングモードの選択が行われる。トレーニングモードA〜Dは、それぞれエクササイズモードA〜D(図29〜図33参照)に対応しており、処理内容は同様である。ただし、トレーニングモードでは、プレイヤが任意のレベルを実行することはできず、各レベルを順番にクリアしていかなければならない。
ステップS510にて、高速プロセッサ91は、選択されたトレーニングモードを実行する。ステップS511にて、高速プロセッサ91は、テレビジョンモニタ5に結果画面を表示する(図26及び図27と同様の画面)。ステップS512にて、高速プロセッサ91は、トレーニングモードでの結果に応じたコメント画面を表示する(図28と同様の画面)。
さて、一方、ステップS513では、高速プロセッサ91は、エクササイズ選択画面を表示し、エクササイズモードの選択処理を実行する。4つのエクササイズモードA〜D(図29〜図33参照)が用意され、プレイヤが、カーソル201を操作することにより、エクササイズモードの選択が行われる。
図36は、図34のステップS513において表示されるエクササイズ選択画面の例示図である。図36を参照して、高速プロセッサ91は、選択エクササイズ明示部555、クリアレベル明示部560、表示変更オブジェクト550L及び550R、キャンセルボタン510、OKボタン504、並びにカーソル201をテレビジョンモニタ5に表示する。
選択エクササイズ明示部555は、現在選択されている(表示されている)エクササイズモードを明示する。具体的には、次の通りである。選択エクササイズ明示部555は、水平方向に並んだ4つの矩形オブジェクトからなる。各矩形オブジェクトには、対応するエクササイズ名が記されている。そして、現在選択されているエクササイズモードに対応した矩形オブジェクトを特定色(図では斜線で示している。)にする。また、画面の中心には、現在選択されているエクササイズモードの名称(図では、「Punch the red balls」)が示される。
クリアレベル明示部560は、現在選択されているエクササイズモードでクリアしたレベルが星マークにより示される。エクササイズモードA〜Dの各々において、10レベルが設けられ、プレイヤは、どのレベルからでも行うことができる。
プレイヤが、グローブ型入力具7L及び7Rを動かして、カーソル201を、表示変更オブジェクト550Lあるいは550Rに移動させると、他のエクササイズモードの名称およびクリアレベル明示部560が表示されると共に、応じて選択エクササイズ明示部555の対応する矩形オブジェクトが特定色にされる。カーソル201が、キャンセルボタン510に一定時間位置すると、処理はステップS502に進み、OKボタン504に一定時間位置すると、処理はステップS514に進む。
図34に戻って、ステップS514では、高速プロセッサ91は、レベル選択画面を表示して、レベルの選択処理を実行する。プレイヤが、カーソル201を操作することにより、レベルの選択が行われる。
図37は、図34のステップS514において表示されるレベル選択画面の例示図である。図37を参照して、高速プロセッサ91は、レベル表示部561、表示変更オブジェクト550L及び550R、キャンセルボタン510、OKボタン504、並びにカーソル201をテレビジョンモニタ5に表示する。
レベル表示部561には、現在選択されているレベル名が示されると共に、そのレベルのクリア条件及び予想消費カロリーが示される。プレイヤが、グローブ型入力具7L及び7Rを動かして、カーソル201を、表示変更オブジェクト550Lあるいは550Rに移動させると、他のレベルに対するレベル表示部561が表示される。カーソル201が、キャンセルボタン510に一定時間位置すると、処理はステップS513に進み、OKボタン504に一定時間位置すると、処理はステップS515に進む。
図34に戻って、ステップS515では、高速プロセッサ91は、選択されたエクササイズモードでの処理を実行する。ステップS516にて、高速プロセッサ91は、テレビジョンモニタ5に結果画面を表示する(図26及び図27と同様の画面)。ステップS517にて、高速プロセッサ91は、エクササイズモードの結果に応じたコメント画面を表示する(図28と同様の画面)。
さて、一方、ステップS518では、高速プロセッサ91は、セーブデータの内容をテレビジョンモニタ5に表示する。
図38は、図34のステップS518において表示されるセーブデータ表示の例示図である。図38を参照して、高速プロセッサ91は、第1表示部572、第2表示部574、第3表示部576、表示変更オブジェクト550L及び550R、退出ボタン562、データクリアボタン564、並びにカーソル201をテレビジョンモニタ5に表示する。
この画面は、チャンピョンシップモードでのセーブデータの内容を表示する画面である。第1表示部572には、クラス、ステージ、及び勝敗が示される。第2表示部574には、自ボクサーのスキルが、星マークにより示される。スキルとしては、パワー、スピード、スタミナ、及びガードの4つが設けられる。エクササイズモードAに対応するトレーニングモードをクリアしていけば、スピードのスキルが増し、エクササイズモードBに対応するトレーニングモードをクリアしていけば、パワーのスキルが増し、エクササイズモードCに対応するトレーニングモードをクリアしていけば、ガードのスキルが増し、エクササイズモードDに対応するトレーニングモードをクリアしていけば、スタミナのスキルが増す。第3表示部576には、トレーニングモードでクリアしたレベル数及び失敗したレベル数が示される。
カーソル201が、退出ボタン562に一定時間位置すると、処理はステップS502に進み、データクリアボタン564に一定時間位置すると、第1表示部572、第2表示部574、及び第3表示部576に表示されたデータがEEPROMから消去される。このEEPROMは、図示していないが、カートリッジ3に内蔵される。カーソル201が表示変更オブジェクト550Lあるいは550Rに一定時間位置すると、図39あるいは図40の画面に切り替わる。
図39は、図34のステップS518において表示されるセーブデータ表示の他の例示図である。図39を参照して、高速プロセッサ91は、クリアレベル表示部570、表示変更オブジェクト550L及び550R、退出ボタン562、データクリアボタン564、並びにカーソル201をテレビジョンモニタ5に表示する。
クリアレベル表示部570は、各エクササイズモードA〜Dにおいて、クリアしたレベルが星マークにより示される。カーソル201が、退出ボタン562に一定時間位置すると、処理はステップS502に進み、データクリアボタン564に一定時間位置すると、クリアレベル表示部570に表示されたデータが上記EEPROMから消去される。カーソル201が表示変更オブジェクト550Lあるいは550Rに一定時間位置すると、図38あるいは図40の画面に切り替わる。
図40は、図34のステップS518において表示されるセーブデータ表示のさらに他の例示図である。図40を参照して、高速プロセッサ91は、消費カロリー表示部566、パンチ数表示部568、表示変更オブジェクト550L及び550R、退出ボタン562、データクリアボタン564、並びにカーソル201をテレビジョンモニタ5に表示する。
消費カロリー表示部566には、チャンピョンシップモードで蓄積された総消費カロリー、エクササイズモードで蓄積された総消費カロリー、及びそれらの合計値が示される。パンチ数表示部568には、チャンピョンシップモード及びエクササイズモードでこれまで蓄積されたパンチ数の合計が示される。
カーソル201が、退出ボタン562に一定時間位置すると、処理はステップS502に進み、データクリアボタン564に一定時間位置すると、消費カロリー表示部566及びパンチ数表示部568に表示されたデータが上記EEPROMから消去される。カーソル201が表示変更オブジェクト550Lあるいは550Rに一定時間位置すると、図38あるいは図39の画面に切り替わる。
さて、以上のように、本実施の形態では、ボクシングの対戦だけでなく、様々なエクササイズモードが用意されている。従って、プレイヤは、ゲームだけでなく、エクササイズをも行うことができる。しかも、チャンピョンシップモード及びエクササイズモードの双方において、消費カロリーが表示されるので、プレイヤは、どのくらいのエネルギーを消費したかを定量的に知ることができる。
また、上記EEPROMには、図38〜図40に示す画面に表示されるデータが蓄積される。このデータは、必要に応じてクリアできるので、ユーザは、クリアするたびに、そのデータを記録して、その推移を見ることができる。
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
(1)上記では、カートリッジ方式を採用しているが、これを採用せず、カートリッジ3に搭載した各機能をアダプタ1に搭載することもできる。
(2)上記では、グローブ動き判定は、2回だけ過去の位置を原点として行った(図13(a)〜図13(f)参照)。しかし、この回数は、これに限定されず、試行錯誤して、3以上の適切な回数を設定できる。また、図14に示すように、次のビデオ同期信号による割り込みがあるまでに1回の処理を完了している。つまり、1ビデオフレームの表示中に1回の処理を完了している。ただし、1回の処理を、2ビデオフレームなどのN(Nは2以上の整数)ビデオフレームで完了するようにすることもできる。例えば、1回の処理を2ビデオフレームで完了するようにすると、グローブ型入力具7L,7Rの位置は、2ビデオフレームに1回算出されることになる。
(3)上記の左右決定処理では、図12に示すように、前々回の位置TPL1,TPR1と前回の位置TPL2,TPR2とから求めた速度ベクトルVL,VRのみに基づいて、グローブ型入力具7L,7Rの予測位置TPLp,TPRpを算出した。ただし、前々回の位置TPL1,TPR1のさらに前の位置TPL0,TPR0をも利用して、予測位置TPLp,TPRpを算出することもできる。位置TPL0,TPL1及びTPL2に注目する(左予測)。位置TPL0を始点、位置TPL1を終点とする速度ベクトルVL0、及び、位置TPL1を始点、位置TPL2を終点とする速度ベクトルVL1を算出する。速度ベクトルVL0とVL1とのなす角度と、速度ベクトルVL1と予測ベクトルVLpとのなす角度と、が同じになるように、予測ベクトルVLpの方向を決定する。さらに、比r=(速度ベクトルVL1の大きさ)/(速度ベクトルVL0の大きさ)を求めて、比rを速度ベクトルVL1の大きさに乗算し、その結果を、予測ベクトルVLpの大きさとする。そして、速度ベクトルVL1の終点を予測ベクトルVLpの始点とし、予測ベクトルVLpの終点を、予測位置TPLpとする。右予測についても同様である。このようにすると、より精度良く、予測位置を算出できる。
(4)上記実施の形態の構成に加えて、グローブ型入力具7L及び7Rの各々に、特開2004−49436号公報に開示されている加速度センサ回路、赤外発光ダイオード、及びマイクロコンピュータ等の回路を搭載することもできる。マイクロコンピュータは、加速度センサ回路を制御し、また、そこからの加速度情報を取得する。そして、マイクロコンピュータは、赤外発光ダイオードを駆動して、赤外線通信により、グローブ型入力具7L,7Rの加速度情報をアダプタ1に送信する。従って、高速プロセッサ91は、グローブ型入力具7L,7Rが動かされてパンチが出されたか否かの判断は、加速度情報により行い、相手パンチを回避したり防御したりするときの移動には、撮像ユニット51による撮影結果を利用する。これによれば、カートリッジ3を装着したアダプタ1は、テレビジョンモニタ5の上に載置しても、不都合なくゲーム可能である。
(5)上記では、図8や図9に示すように、経過時間及び残り時間を、数字で表現するのではなく、色の変化として表現している。ただし、表現方法はこれに限定されず、数字で表現することもできるし、形態の変化で表現することもできるし、任意である。
(6)上記では、仮想画面は、不動領域、ストレート領域、及びクロス領域により構成されていた。そして、入力具7L,7Rが位置する領域に応じて、基本的姿態のグローブ、ストレートパンチ、及びクロスパンチが表示された。ただし、仮想画面の構成は、これに限定されず、ゲーム内容に応じて、領域の数を増減したり、各領域の機能(入力具がその領域に位置したときに、どのような画像を表示するかとか、どのような処理をするかとか)を変更したり、することができる。
(7)上記では、左用と右用に、左右対称の2つの仮想画面を用意した。なぜなら、左手用の入力具7Lの機能(パンチのため)と右手用の入力具7Rの機能(パンチのため)とが同じだからである。ただし、必ずしも左右対称の仮想画面を用意する必要はなく、ゲーム内容に応じて、左右で全く異なる仮想画面を用意することもできる。例えば、左手用の入力具の機能(例えば盾を動かすため)と右手用の入力具の機能(例えば剣を振るため)とが異なる場合、左右の仮想画面を異ならせることができる。仮想画面が異なるとは、仮想画面に形成された領域の数、範囲、及び/又は機能が異なることである。
(8)上記では、ボクシングゲームを実行したが、アプリケーションプログラムは、これに限定されず、また、ゲームにも限定されない。また、実行する内容によって、入力具の形状や再帰反射シートを取り付ける位置を任意に設定できる。
(9)上記では、プレイヤの運動量を表すものとして、消費エネルギーを採用し、単位をカロリーとした。ただし、単位はカロリーに限定されず、他のエネルギーの単位を用いることもできる。また、プレイヤの運動量を直接的に表すものとして、消費エネルギーを用いたが、プレイヤの運動量を間接的に表すものを用いることもできる。例えば、りんご何個分に相当する運動を行ったか、何ステップの運動を行ったか等である。このように、本明細書において、「運動量」とは、プレイヤがどのくらいの運動を行ったかを定量的に示すもの、を意味する。
(10)上記では、グローブ型入力具7L及び7Rの状態情報としての位置情報に基づいて、グローブ217L及び217Rの動き制御や消費カロリーの算出を行った。ただし、グローブ型入力具7L及び7Rの状態情報として、速さ情報、移動方向情報、移動距離情報、速度ベクトル情報、加速度情報、移動軌跡情報、面積情報(遠近情報)、及び/又は位置情報を算出して、これらに基づいて、消費エネルギーを算出することもできる。
(11)図10等のように、ゲームプレイに応じたプレイヤ11の任意の動きを検出して、消費カロリーを算出することもできるし、また、図31〜図33のように、高速プロセッサ91がプレイヤ11に動きを指示する画像をテレビジョンモニタ5に表示し、プレイヤ11が行った動きを検出して、消費カロリーを算出することもできる。(12)図16のステップS31とS32との間に、閾値ThLとデータDif[X][Y]との比較による二値化処理を挿入し、二値化後の差分画像に基づいて、ステップS32及びS33を実行することもできる。この場合は、閾値ThLより大きいデータDif[X][Y]を「1」、閾値ThL以下のデータDif[X][Y]を「0」とすると、図17及び図18の閾値ThLは、例えば「0」である。
(13)本発明によれば、プレイヤは自分で行った運動の量を消費カロリーとして知り、健康維持を図ることが出来る。この意味において、ボクシング以外にも様々な運動形態が本発明の応用として考えられる。いずれにせよ、プレイヤは、何らかの再帰反射部を装着して、運動を行うことになる。
以上、本発明を実施例により詳細に説明したが、当業者にとっては、本発明が本願中に説明した実施例に限定されるものではないということは明らかである。本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。従って、本願の記載は、例示説明を目的とするものであり、本発明に対して何ら制限的な意味を有するものではない。
1…アダプタ、3…カートリッジ、5…テレビジョンモニタ、7L,7R…グローブ型入力具、9…AVケーブル、11…プレイヤ、21a,21b…再帰反射シート、51…撮像ユニット、53a〜53d…赤外発光ダイオード、55…赤外線フィルタ、91…高速プロセッサ、93…メモリ、161…イメージセンサ。