ゲームプログラムおよびゲーム装置
【構成】 CPUコアは、データ記憶領域に記憶された雲Cの速度データを参照して、画像表示プログラムに従って、各雲Ckを初速(定数L×息の強さS/ベクトルAkの大きさ)で、ベクトルAkの向きに移動させる表示処理を実行する。この移動の際には、CPUコアは、各雲Ckが時間の経過とともに減速するように表示処理する。しかしながら、その減速の程度は小さい。それ故に、CPUコアは、各雲CkをLCD12、14内からこれらの外に吹き飛ばすようにみえる表示処理をする。言い換えると、CPUコアは、操作者によってマイクに息が吹きかけられた場合、雲Cを消去するように表示処理をする。
【効果】 操作者がタッチペンで書いた雲Cを消去したい場合に、マイクへの入力という簡単なアクションで消去することができる。従って、ゲームの面白さを向上させることができる。
【効果】 操作者がタッチペンで書いた雲Cを消去したい場合に、マイクへの入力という簡単なアクションで消去することができる。従って、ゲームの面白さを向上させることができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクから入力された情報を利用して、ゲームの処理を実行する技術に関する。
【背景技術】
【0002】
特許文献1には、息の吹きかけの音声パワー(息の強さ)を、ディスプレイ画面上の風船等の移動速度等に変換することが示されている。
【特許文献1】特開平11−143484号公報(当該公報の〔0032〕参照)
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、ゲームの分野では、特許文献1の技術のように、息の強さのような、マイク入力情報から得られる音声特性データだけを参照して上記移動速度等を算出するのでは、ゲームを十分に面白くさせることができない場合もあった。
【0004】
それゆえに、本発明の主たる目的は、ゲームの面白さを向上させることである。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明は以下の構成を採用した。なお、括弧内の参照符号および図番号は、本発明の理解を助けるために図面との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0006】
<第1A−1の態様>
表示装置(12、14)に表示されるゲーム空間のオブジェクト(C、206、208、302、308)のコントロール量を算出するためのゲームプログラムであって、
コンピュータ(コンピュータのプロセサ(処理手段)、情報処理装置)(10、42)に、
マイク(34)から入力されたマイク入力情報をメモリ(記憶手段)(48)に記憶するマイク入力情報記憶ステップ(S31、S61)、および
前記マイク入力情報記憶ステップで記憶された前記マイク入力情報から得られる音声特性データに加えて、前記マイク入力情報からとは別に得られ、前記メモリ(48)に記憶された数値情報を参照して、前記コントロール量を算出するコントロール量算出ステップ(S18、S204、S302、S402)を実行させる、ゲームプログラム。
【0007】
本明細書において、「オブジェクト」は広義に解される。即ち、本明細書における「オブジェクト」には、ゲーム分野でキャラクタや背景を表すために一般に使用される意味での「オブジェクト」を含むだけでなく、ゲーム画面上に表示され得るあらゆる対象が含まれる。例えば、文字等も「オブジェクト」に含まれる。
【0008】
「オブジェクトのコントロール量」は広義に解される。例えば、オブジェクトの移動速さ、移動距離、大きさ、体積、温度等が含まれる。また、オブジェクトが発する空気流の大きさ、音の大きさ等も含まれる。
オブジェクト又はオブジェクトが持つ性質、属性等を何らかの意味でコントロールするための量は、上記「コントロール量」に含まれる。
また、コントロールされるオブジェクトには、例えば、あるオブジェクトが空気流を発し、この空気流によって別のオブジェクトが移動する場合、当該別のオブジェクトも含まれる。
【0009】
「音声特性データ」は、マイクから入力された音声の何らかの特性を示すデータであり、例えば音声(息)の強さのデータが含まれる。
「コンピュータ」、又はこれを構成するプロセサ(CPU等)や「メモリ」等は、物理的に2つ以上に分かれていてもよい。
【0010】
この態様によると、マイク入力情報から得られる音声特性データに加えて、マイク入力情報からとは別に得られた数値情報をも参照してゲーム空間のオブジェクトのコントロール量を算出するので、マイク入力情報から得られる音声特性データのみを参照する場合に比べて、前記コントロール量をより有意義に決定し得る。従って、この態様によると、ゲームの面白さを向上させることができる。
【0011】
<第1A−2の態様>
第1A−1の態様において、「マイク入力情報から得られる音声特性データ」は、好ましくは、音声(より好ましくは、息)の強さのデータであることがよい。音声(息)の強さは、操作者によって比較的認識、調整しやすく、また、操作者の感情と連動しやすい。「マイク入力情報から得られるデータ」は、前記マイク入力情報から直接的に得てもよいし、間接的に得てもよい。即ち、前記マイク入力情報に処理を施さずに、前記マイク入力情報から直接にデータを得てもよい。あるいは、前記コンピュータにさらに、前記マイク入力情報を参照して、入力された音声(特に息)の特性データを算出する音声特性データ算出ステップ(S53、S81)、および前記音声特性データ算出ステップで算出された前記音声特性データを前記メモリに記憶する音声特性データ記憶ステップ(S53、S81)を実行させてもよい。
【0012】
<第1A−3の態様>
第1A−2の態様において、前記コントロール量算出ステップでは、前記マイク入力情報から得られる前記音声の強さデータを参照して、前記コントロール量を、前記音声の強さが強くなるほど大きく又は小さくするとともに、前記数値情報の数値が大きくなるほど大きく又は小さくするように算出することが好ましい。
【0013】
<第1A−4の態様>
第1A−2の態様において、前記コントロール量は、前記音声の強さと前記数値情報の合計値に応じた大きさであることが好ましい。前記コントロール量は、前記音声の強さと前記数値情報の合計値に正比例又は反比例することが好ましい。あるいは、前記コントロール量は、前記音声の強さに正比例又は反比例し、かつ、前記数値情報に正比例又は反比例することが好ましい。
【0014】
<第1A−5の態様>
第1A−1の態様において、前記コントロール量は、前記オブジェクトの移動速さ又は移動距離であり、
前記コンピュータにさらに、
基準点の位置を前記メモリに記憶する基準点記憶ステップ(S4、図16のS201)、
前記オブジェクト位置を前記メモリに記憶するオブジェクト位置記憶ステップ(図10のS3やS7、図16のS3)、
前記メモリに記憶された前記基準点と前記オブジェクト位置を参照して、前記基準点と前記オブジェクト位置の距離を計算する距離計算ステップ(S9、S203)、および
前記距離計算ステップで計算された前記距離の情報を、前記数値情報として前記メモリに記憶する距離記憶ステップ(S9、S203)を実行させ、
前記コントロール量算出ステップ(S18、S204)では、前記音声特性データと前記距離の情報を参照して、前記移動速さ又は前記移動距離を算出することが好ましい。
【0015】
ここで、「オブジェクト位置」は、典型的には、例えばオブジェクトの中心位置等のオブジェクト内の位置である。しかし、本明細書では「オブジェクト位置」は「オブジェクトに関連付けられた位置」と広義に解する。従って、オブジェクト外の位置であっても、当該オブジェクトに関連付けられた位置であるならば、上記「オブジェクト位置」に該当する。例えば、複数のオブジェクトが集合して円の輪郭を形成し、当該円の中心部にいずれのオブジェクトも位置しない場合でも、当該円の中心部を各オブジェクト、あるいは複数のオブジェクト集合体の「オブジェクト位置」ということができる。
【0016】
この態様のようにオブジェクトの移動速さ又は移動距離を算出することで、当該移動速さ又は移動距離をより有意義に決定し得る。
【0017】
<第1A−6の態様>
第1A−5の態様において、前記コンピュータにさらに、
前記メモリに記憶された前記基準点と前記オブジェクト位置を参照して、前記基準点と前記オブジェクト位置を結ぶ線の方向を計算する方向計算ステップ(S9、S203)、
前記線の方向を前記メモリに記憶する方向記憶ステップ(S9、S203)、および
前記方向記憶ステップで記憶された前記線の方向を参照して、前記線の方向に平行に前記オブジェクトを移動させる表示処理を行う表示処理ステップ(S19、S205)を実行させることが好ましい。
この態様には、オブジェクトが基準点から離れる向きに、前記線の方向に平行に移動する場合と、オブジェクトが基準に近づく向きに、前記線の方向に平行に移動する場合が含まれる。
この態様によると、基準点とオブジェクト位置の関係に応じて、オブジェクトの移動方向が変化し得るので、ゲームの視覚的な面白さを向上させることができる。
【0018】
<第1A−7の態様>
第1A−5又は1A−6の態様において、前記コンピュータにさらに、
前記基準点の位置及び/又は前記オブジェクト位置を経時的に変化させるステップ(図10のS3)を実行させることが好ましい。
この態様によると、例えば、前記コントロール量を所定の目標値にすることが要求されるようなゲームでは、操作者によるマイクからの入力情報も経時的に変化させなければならない。従って、この態様によると、ゲームの面白さを向上させることができる。
【0019】
<第1A−8の態様>
第1A−5〜1A−7の態様のいずれかにおいて、前記コンピュータは、前記基準点位置及び/又は前記オブジェクト位置を入力するための位置入力手段をさらに備え、
前記コンピュータにさらに、前記位置入力手段によって入力された位置を前記メモリに記憶するステップ(S6)を実行させることが好ましい。
この態様によると、操作者は、前記コントローラ量を、マイク入力情報のみならず、基準点位置及び/又はオブジェクト位置の入力操作によっても変化させることができる。従って、この態様によると、ゲームの面白さを向上させることができる。
【0020】
<第1A−9の態様>
第1A−1の態様において、前記コンピュータにさらに、
前記数値情報の数値を経時的に変化(増加のみ、減少のみ又は増減)させるステップ(図10のS3)を実行させることが好ましい。
この態様によると、例えば、前記コントロール量を所定の目標値にすることが要求されるようなゲームでは、操作者によるマイクからの入力情報も経時的に変化させなければならない。従って、この態様によると、ゲームの面白さを向上させることができる。
【0021】
<第1A−10の態様>
第1A−1の態様において、前記コンピュータにさらに、
前記コントロール量算出ステップで算出された前記コントロール量を前記メモリに記憶するコントロール量記憶ステップ(S18)、および
前記コントロール量記憶ステップで記憶された前記コントロール量を参照して、ゲーム処理を行うゲーム処理ステップ(S19、S207〜S213、S305〜S309、S405〜S409)を実行させることが好ましい。
【0022】
<第1A−11の態様>
第1A−11の態様において、前記ゲーム処理ステップは、前記コントロール量算出ステップで算出された前記移動速さで又は前記移動距離だけ前記オブジェクトが移動するような表示処理をする表示処理ステップ(S19)を含むことが好ましい。
【0023】
<第1A−12の態様>
第1A−11の態様において、前記ゲーム処理ステップは、前記コントロール量算出手段で算出された(1)前記コントロール量又は(2)前記コントロール量でコントロールされたオブジェクトが、所定の条件を満たしているか否かを判別する判別ステップ(S207、S209、S305、S309、S405)を含むことが好ましい。
この態様のように、前記コントロール量等に対して何らかの判別が行われるようなゲーム処理を実行することによって、ゲームの面白さを向上させることができる。
【0024】
<第1A−13の態様>
第1A−12の態様において、前記判別ステップでは、前記コントロール量が、所定の数値以上(以下)か否か、あるいは、所定の数値範囲内にあるか否かを判別することが好ましい。
【0025】
<第1A−14の態様>
第1A−12の態様において、前記判別ステップでは、(1)前記コントロール量が第1オブジェクトの移動速さ又は移動距離の場合、当該第1オブジェクトが、第2オブジェクトに衝突するか否かを判別することが好ましい(S207)。さらに、(2)前記(1)の判別の結果、衝突したと判別された場合、当該第2オブジェクトが所定位置まで移動するか否かを判別することが好ましい(S211)。
【0026】
<第1A−15の態様>
第1A−1の態様において、前記コンピュータは、押圧式入力手段(20dの他、20aや22等も含む)をさらに備え、
前記コンピュータにさらに、
前記押圧式入力手段が単位時間内に押された回数を、前記数値情報の数値として前記メモリに記憶する回数記憶ステップ(S401)を実行させることが好ましい。
【0027】
<第1A−16の態様>
第1A−15の態様において、前記コンピュータにさらに、
マイクから情報が入力されたか否かを判別するマイク入力判別ステップ(S13)を実行させ、
前記回数記憶ステップでは、前記マイク入力判別ステップで情報が入力されたと判別された時を含む前記単位時間内に押された回数を、前記数値情報の数値として記憶することが好ましい。
【0028】
<第1B−1の態様>
表示装置(12、14)に表示されるゲーム空間のオブジェクト(C、206、208、302、308)のコントロール量を算出するためのゲーム装置であって、
マイク(34)、
前記マイクによって入力されたマイク入力情報が記憶されるマイク入力情報記憶手段(48)、および
前記マイク入力情報記憶手段に記憶された前記マイク入力情報から得られる音声特性データに加えて、前記マイク入力情報からとは別に得られ、記憶手段に記憶された数値情報を参照して、前記コントロール量を算出するコントロール量算出手段(42)を備えた、ゲーム装置。
【0029】
「ゲーム装置」としては、専用の装置の他、汎用の装置として例えばパーソナルコンピュータや、携帯電話等の移動体通信端末等の情報処理装置で、ゲーム用のソフトウエアによる処理を実行させるものであってもよい。
【0030】
<第2A−1の態様>
表示装置(12、14)に表示されるゲーム空間のオブジェクト(C、206、208)の表示処理を行うためのゲームプログラムであって、
コンピュータ(10、42)に、
基準点の位置をメモリに記憶する基準点記憶ステップ(S4、図16のS201)、
前記オブジェクト位置を前記メモリに記憶するオブジェクト位置記憶ステップ(図10のS3やS7、図16のS3)、
前記メモリに記憶された前記基準点と前記オブジェクト位置を参照して、前記基準点と前記オブジェクト位置を結ぶ線の方向を計算する方向計算ステップ(S9、S203)、
前記線の方向を前記メモリに記憶する方向記憶ステップ(S9、S203)、
マイク(34)から入力されたマイク入力情報を前記メモリ(48)に記憶するマイク入力情報記憶ステップ(S31、S61)、および
前記マイク入力情報記憶ステップで記憶された前記マイク入力情報から得られる音声特性データと、前記方向記憶ステップで記憶された前記線の方向を参照して、前記マイク入力情報に応じた前記移動速さで又は前記移動距離だけ、かつ、前記線の方向に平行に前記オブジェクトが移動する表示処理を行う表示処理ステップ(S19、S205)を実行させる、ゲームプログラム。
この態様によると、オブジェクトを、マイク入力情報に応じた移動速さで又は前記移動距離だけ移動するように表示させることができ、しかも、基準点とオブジェクト位置の関係で、オブジェクトの移動方向が様々に変化し得る。従って、この態様によると、ゲームの面白さを向上させることができる。
【0031】
<第2A−2の態様>
前記コンピュータにさらに、
前記メモリに記憶された前記基準点と前記オブジェクト位置を参照して、前記基準点と前記オブジェクト位置の距離を計算する距離計算ステップ(S9、S203)、および
前記距離を前記メモリに記憶する距離記憶ステップ(S9、S203)を実行させ、
前記表示処理ステップでは、前記距離記憶ステップで記憶された前記距離の情報をさらに参照して、前記音声特性データと前記距離の情報に応じた前記移動速さ又は前記移動距離だけ、前記オブジェクトが移動する表示処理を行うことが好ましい。
【0032】
<第2B−1の態様>
表示装置(12、14)に表示されるゲーム空間のオブジェクト(C、206、208)の表示処理を行うためのゲーム装置であって、
基準点と前記オブジェクト位置が記憶される記憶手段(48)、
前記記憶手段に記憶された前記基準点と前記オブジェクト位置を参照して、前記基準点と前記所定位置を結ぶ線の方向を計算する方向計算手段(42)、
前記線の方向が記憶される方向記憶手段(48)、
マイク(34)、
前記マイクによって入力されたマイク入力情報が記憶されるマイク入力情報記憶手段(48)、および
前記マイク入力情報記憶手段に記憶された前記マイク入力情報から得られる音声特性データと、前記方向記憶手段に記憶された前記線の方向を参照して、前記マイク入力情報に応じた移動速さで又は前記移動距離だけ、かつ、前記線の方向に平行に前記オブジェクトが移動する表示処理を行う表示処理手段(42)を備えた、ゲーム装置。
【0033】
<第3A−1の態様>
表示装置(12、14)に表示されるゲーム空間のオブジェクト(C)の表示処理を行うためのゲームプログラムであって、
コンピュータ(10、42)に、
入力手段(20、22)からの入力によって前記オブジェクトを表示するオブジェクト表示ステップ(S7)、
マイク(34)から入力されたマイク入力情報を前記メモリ(48)に記憶するマイク入力情報記憶ステップ(S31、S61)、および
前記マイク入力情報記憶ステップで記憶された前記マイク入力情報を参照して、前記オブジェクト表示ステップで表示された前記オブジェクトの表示を消去する表示処理を行うオブジェクト消去ステップ(S19)を実行させる、ゲームプログラム。
この態様によると、操作者が入力手段によって入力したオブジェクトを消去したい場合に、マイクへの入力という簡単なアクションで消去することができる。従って、この態様によると、ゲームの面白さを向上させることができる。
【0034】
<第3A−2の態様>
前記オブジェクト表示ステップでは、前記入力手段による複数回の入力によって前記オブジェクトを複数表示し、
前記オブジェクト消去ステップでは、前記複数のオブジェクトを一括して消去することが好ましい。
この態様によると、マイク入力により、前記複数のオブジェクトを一括して消去できるので、より簡便性を向上させることができる。
【0035】
<第3A−3の態様>
前記コンピュータに、
前記マイク入力情報記憶ステップで記憶された前記マイク入力情報から得た音声の強さ情報を参照して、前記音声の強さが所定値以上か否かを判別する音声強さ判別ステップ(S13)、および
前記オブジェクト消去ステップでは、前記音声強さ判別ステップで前記音声の強さが所定値以上と判別された場合に、前記オブジェクト表示ステップで表示された前記オブジェクトの表示を消去する表示処理を行うことが好ましい。
【0036】
<第3B−1の態様>
表示装置(12、14)に表示されるゲーム空間のオブジェクト(C)の表示処理を行うためのゲーム装置であって、
前記表示装置に前記オブジェクトを表示させるための入力が可能な入力手段(20、22)、
前記入力手段からの入力によって前記オブジェクトを表示するオブジェクト表示手段(42)、
マイク(34)、
前記マイクから入力されたマイク入力情報が記憶されるマイク入力情報記憶手段(48)、および
前記マイク入力情報記憶手段に記憶された前記マイク入力情報を参照して、前記オブジェクト表示手段によって表示された前記オブジェクトの表示を消去する表示処理手段(42)を備えた、ゲーム装置。
【0037】
本明細書において、装置の態様に具現化された発明に対して、プログラムの態様で上記に記載された従属内容を組込むことができるのは、勿論である。少なくとも、プログラムの各態様で「ステップ」と記載されているものを「手段」に置き換えて実現される装置の内容は、本明細書の内容として組込まれる。
【0038】
本明細書においては、1つの手段が、物理的に2つ以上の別れたものによって実現されていてもよいし、2つ以上の手段が物理的に1つのものによって実現されていてもよい。
【0039】
本発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0040】
<第1実施例>
図1を参照して、本発明の第1実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含み、LCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。たとえば、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0041】
なお、この第1実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0042】
また、ゲーム装置10は、後述するように、息吹きかけ判別プログラム(図9の480f、図11、図12参照)を記憶し、息吹きかけ判別装置としても機能する。
【0043】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
【0044】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0045】
操作スイッチ20は、方向指示スイッチ(十字スイッチ)20a,スタートスイッチ20b、セレクトスイッチ20c、動作スイッチ(Aボタン)20d、動作スイッチ(Bボタン)20e、動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rを含む。スイッチ20a,20bおよび20cは、下側ハウジング16bの一方主面であり、LCD14の左側に配置される。また、スイッチ20dおよび20eは、下側ハウジング16bの一方主面であり、LCD14の右側に配置される。さらに、スイッチ20Lおよびスイッチ20Rは、それぞれ、下側ハウジング16bの上端(天面)の一部であり、上側ハウジング16aとの連結部以外に当該連結部を挟むように、左右に配置される。
【0046】
方向指示スイッチ20aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、操作者(プレイヤ)によって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。スタートスイッチ20bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止したりする等に用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【0047】
動作スイッチ20dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ20eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。
【0048】
動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rは、プッシュボタンで構成され、Lボタン20LおよびRボタン20Rは、Aボタン20dおよびBボタン20eと同様の操作に用いることができ、また、Aボタン20dおよびBボタン20eの補助的な操作に用いることができる。
【0049】
また、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル22は、その上面をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作すると、スティック24等の操作(タッチ入力)位置の座標(タッチ座標)を検出して、検出したタッチ座標に対応する座標データを出力する。
【0050】
たとえば、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出面の検出精度もその解像度に対応して256dot×192dotとしてある。ただし、タッチパネル22の検出精度は、LCD14の表示画面の解像度よりも低くてもよく、高くてもよい。
【0051】
LCD12およびLCD14には異なるゲーム画像(ゲーム画面)を表示することができる。たとえば、レースゲームでは一方のLCDに運転席からの視点による画面を表示し、他方のLCDにレース(コース)全体の画面を表示することができる。また、RPGでは、一方のLCDにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のLCDにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、パズルゲームでは、一方のLCD(たとえば、LCD12)にパズル全体(ゲームマップ)を表示し、他方のLCD(たとえば、LCD14)には、ゲームマップの一部(当該パズルゲームを操作するための画面)を表示することができる。たとえば、ゲームマップの一部を表示した画面では、文字や図形等の画像を描画したり、表示画像(アイコン)等を移動させたりすることができる。さらには、2つのLCD12およびLCD14を合わせて1つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物(敵キャラクタ)を表示することもできる。
【0052】
したがって、プレイヤはスティック24等でタッチパネル22を操作することにより、LCD14に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、文字情報、アイコン等のキャラクタ画像を指示(指定)したり、移動させたり、コマンドを選択したり、さらには、文字や図形(画像)を描画したりすることができる。また、3次元ゲーム空間に設けられる仮想カメラ(視点)の方向を変化させたり、ゲーム画面(ゲームマップ)をスクロール(徐々に移動表示)させたりすることもできる。
【0053】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(第1実施例では、LCD14)の上面にタッチパネル22が設けられるので、2画面(12,14)と2系統の操作部(20,22)とを有する構成になっている。
【0054】
また、この第1実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)近傍に設けられる収納部(収納穴)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要がない。
【0055】
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
【0056】
さらにまた、ゲーム装置10はマイク34を含み、たとえば、マイク34は下側ハウジング16bのLCD14の左斜め下方に設けられる。したがって、たとえば、マイク34からプレイヤの音声(本実施例では特に、息の音声)が入力されると、これに応じて、ゲーム装置10はゲーム処理を実行することができる。
【0057】
なお、図1では表現できないが、下側ハウジング16bの音抜き孔18と対応する位置であり、この下側ハウジング16bの内部にはスピーカ32(図2参照)が設けられる。
【0058】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0059】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア(処理手段)42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるととともに、RAM(記憶手段)48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出カインターフエース回路(以下、「I/F回路」という。)54およびLCDコントローラ60が接続される。
【0060】
コネコタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0061】
ROM28aは、ゲーム装置10で実行すべきゲーム(仮想ゲーム)のためのゲームプログラム、画像(キャラクタ画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)データおよびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データを記憶(セーブ)する。
【0062】
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶されたゲームプログラム、画像データおよび音データ等をRAM48にロードし、ロードしたゲームプログラムを実行する。また、CPUコア42は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM48に記憶しつつゲーム処理を実行する。
【0063】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM48に記憶(ロード)される。
【0064】
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従ってゲーム画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU50およびGPU52のそれぞれに与える。
【0065】
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:キャラクタデータやテクスチャ等のデータ)は、GPU50およびGPU52が、それぞれ、第1のVRAM56および第2のVRAM58にアクセスして取得する。なお、CPUコア42は、描画に必要な画像データをGPU50およびGPU52を介して第1のVRAM56および第2のVRAM58に書き込む。GPU50はVRAM56にアクセスして描画のためのゲーム画像データを作成し、GPU52はVRAM58にアクセスして描画のためのゲーム画像データを作成する。
【0066】
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、GPU50によって作成されたゲーム画像データをLCD12に出力し、GPU52によって作成されたゲーム画像データをLCD14に出力する。また、LCDコントローラ60は、レジスタ62のデータ値が「1」である場合には、GPU50によって作成されたゲーム画像データをLCD14に出力し、GPU52によって作成されたゲーム画像データをLCD12に出力する。
【0067】
なお、LCDコントローラ60は、VRAM56およびVRAM58から直接ゲーム画像データを読み出したり、GPU50およびGPU52を介してVRAM56およびVRAM58からゲーム画像データを読み出したりする。
【0068】
I/F回路54には、操作スイッチ20、タッチパネル22、スピーカ32およびマイク34が接続される。ここで、操作スイッチ20は、上述したスイッチ20a,20b,20c,20d,20e,20Lおよび20Rであり、操作スイッチ20が操作されると、対応する操作信号がI/F回路54でディジタルデータ(操作データ)に変換され、CPUコア42に入力される。また、タッチパネル22からの座標データがI/F回路54を介してCPUコア42に入力される。さらに、CPUコア42は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬声音)などのゲームに必要な音データをRAM48から読み出し、I/F回路54に与える。I/F回路54は、音データをアナログの音声信号に変換して、スピーカ32から出力する。さらにまた、マイク34から入力される音声(音声信号)は、I/F回路54でディジタルデータ(音声データ)に変換され、CPUコア42に入力される。
【0069】
具体的にゲーム画面の例を示して説明することにする。図3はゲーム画面の一例を示す図解図である。図3に示すように、LCD12にはゲーム画面100が表示され、LCD14にはゲーム画面120が表示される。ただし、この実施例では、LCD12とLCD14とを合わせた1つの画面(表示器)として用いるようにしているため、ゲーム画面100とゲーム画面120によって1つの3次元仮想空間(ゲーム空間)が表示される。
【0070】
ゲーム画面100およびゲーム画面120には、空のようなゲーム空間が表示される。ゲーム画面100では、その中央下部にプレイヤキャラクタ102が表示され、背景オブジェクトとしての複数の雲C(詳細にはC1、C2、C3、C4)および雲106が表示され、そして、特定のアイテムとして複数のコイン108が表示される。また、ゲーム画面100の中央上部には、プレイヤキャラクタ102がコイン108を取得することにより得られた点数(スコア)が表示される。図示は省略するが、ゲーム画面100には、他の背景オブジェクトや敵キャラクタなども表示される。雲Cはプレイヤのタッチ入力に従って表示されるのに対し、雲106は背景として予め表示される。
【0071】
ゲーム画面120には、複数の雲Cおよび複数の雲106が表示されるとともに、複数のコイン108が表示される。また、ゲーム画面120には、画面左上部に表示される雲106の上に敵キャラクタ110が表示される。図示等は省略するが、ゲーム画面120には、他の背景オブジェクトや他の敵キャラクタなども表示される。
【0072】
ゲーム画面100と120は、図5の符号109に模式的に示すマップの一部が表示されたものである。即ち、概念的には、マップ109上にLCD12、14が配置された状態となっている。概念的には、固定されたマップ109に対して、LCD12、14の位置が下方に移動するように表示させることで、プレイヤキャラクタ102が空中から地面に向けて下降するようにみせている。これは、逆にいうと、固定されたLCD12、14に対してマップ109が上方に移動するように表示させている、ともいえる。
【0073】
本実施例では、プレイヤキャラクタ102は、プレイヤの指示によらず、下向きに移動する。また、ゲーム中では、プレイヤは、スティック24等を用いてLCD14(タッチパネル22)上を押圧等することにより、LCD14上に雲104を表示させ、プレイヤキャラクタ102を、この雲Cの上を滑るように左右に移動させることができる。ただし、雲Cは、タッチパネル22から入力される座標データを一定時間(1フレーム:画面更新の単位時間)毎に検出し、その座標データが示す座標(検出座標)に対応するLCD14の位置(座標位置)に表示される。プレイヤは、プレイヤキャラクタ102がコイン108を獲得できるように、スティック24等で雲Cを描くことが可能である。図3に示すように、たとえば、プレイヤキャラクタ102がコイン108を獲得する毎に、スコアが1加算(+1)される。
【0074】
図4は、操作者がマイク34に息を吹きかけることで、複数の雲C1〜C4を吹き飛ばしている途中の状態を示す。これらの雲Cは、初速(定数L×息の強さS/ベクトルAの大きさ)で、ベクトルAの向きに平行に移動する。ベクトルAは、基準点105から雲Cの中心位置に向かうベクトルである。この処理の詳細については、図10等を参照して後述する。
【0075】
このように、このゲームでは、息による音声で雲Cを吹き飛ばすことにしている。この場合、操作者が息による音声以外の音声を発した場合にも、雲を吹き飛ばしてしまったのでは、操作者とって意図しない事態を招くことになってしまう。したがって、息による音声と、それ以外の音声を精度よく判別することが望まれる。
【0076】
たとえば、息を吹きかける音(息の音声)についての音声素片の波形パターンを予め記憶しておき、記憶しておいた音声素片と入力された音声の音声素片とを比較して、プレイヤが息を吹きかけたかどうかを判断する方法がある。また、高速フーリエ変換処理(FFT)により、入力された音声のスペクトラムを算出して、算出したスペクトラムと予め記憶しておいた息の音声についてのスペクトラムとを比較して、プレイヤが息を吹きかけたかどうかを判断する方法もある。
【0077】
しかし、一般的に、息の音声は、それを発するプレイヤの体格や息を吹きかける強さ等によってその波形パターンが変化するものであり、前者の場合には、息の音声の認識率を向上させようとすると、様々なパターンの音声素片をメモリに記憶しておく必要がある。つまり、メモリ容量が増大してしまう。これを回避するため、メモリに格納しておく音声素片を少なくすると、波形パターンの異なる種々の息の音声を正確に認識することができず、認識率が低下してしまう。
【0078】
また、後者の場合には、息の音声についてのスペクトラムをかなり正確に測定できるので、息の吹きかけか否かを正解に認識することができるが、複雑な計算処理が必要であるため、処理負担が大きくなってしまう。
【0079】
そこで、この第1実施例では、入力される音声に対応する音声波形のゼロクロスに基づいて、息の吹きかけ音であるか否かを判別するようにしてある。ただし、第1実施例を含む以下の実施例では、上記した息の吹きかけの判断方法を採用してもよい。
【0080】
たとえば、図6には、息がマイク34に当たるときに発生する波形すなわち息の音声波形の一例が示される。周知のとおり、ゼロクロスは、音声波形の振幅がプラスからマイナス、およびマイナスからプラスへ変化するときに、0レベルと交差する点(境界点)である。このゼロクロスの間隔時間t(msec)に基づいて息の音声であるか否かを判別するのであるが、この第1実施例では、着目するのは、音声波形の振幅がマイナスからプラスへ変化するときのゼロクロスである。したがって、ゼロクロス隔時間tは、図7に示すように、波形の振幅がマイナスからプラスへ変化するときのゼロクロスであり、連続する2つのゼロクロスで規定される時間長である。つまり、音声波形に含まれる各波の周期(周波数)を算出するのである。
【0081】
ただし、検出するゼロクロスの間隔時間tは、波形の振幅がプラスからマイナスへ変化するときのゼロクロスであり、連続する2つのゼロクロスで規定される時間長であってもよい。
【0082】
また、ここでは、簡単のため、間隔時間tの単位を「msec」としてあるが、厳密には、CPUコア42のサンプリングレートは、1/8000secであり、間隔時間tの単位も「1/8000sec」である。以下、この明細書において同じである。
【0083】
なお、この実施例では、波形の振幅がマイナスからプラス、またはプラスからマイナスへ変化するときのゼロクロスに着目するようにしてあるが、これは無駄な処理を削減するためである。
【0084】
上述したように、この第1実施例では、ゼロクロスの間隔時間tに基づいて、息の音声かどうかを判別するのであるが、その際、図8に示すような参照データ482c(RAM48のデータ記憶領域482に記憶される。)が参照される。この参照データ482cは、実験等により、経験的に得られたデータであり、入力された音声が参照データ482cに含まれるいずれかの条件を満たせば、息の音声とみなし、これが所定時間継続すれば(第1実施例では、連続する2フレーム)、息の音声であると判別(認識)される。また、入力された音声が息の音声として判別された場合には、ゼロクロスの数に基づいて、息(風)の強さが区別(決定)される。
【0085】
図8に示すように、参照データ482cは、テーブルデータで表され、エリアの番号に対応して、8フレーム分のゼロクロスの個数に基づく数値fの範囲が記述され、それに対応して、間隔時間tの分布が記述される。つまり、数値fに対応して、息の音声についての周波数分布が記述されているのである。ここで、「フレーム」は、画面(ゲーム画面)の更新単位時間であり、たとえば1/60秒に設定される。エリアの欄に記述された番号は、数値fの範囲を識別するための識別情報である。数値fの欄には、バッファすなわちデータ記憶領域482に記憶されている過去(直近の)8フレーム分のゼロクロス(マイナスからプラスへ変化するときのゼロクロス)の個数を8倍した数値の範囲を示してある。間隔時間tの分布は、4つのグループA,B,C,Dで示され、各グループは間隔時間tの範囲で区別される。具体的には、グループAでは間隔時間tの範囲は2〜25(2≦t≦25)であり、グループBでは間隔時間tの範囲は26〜50(26≦t≦50)であり、グループCでは間隔時間tの範囲は51〜75(51≦t≦75)であり、そして、グループDでは間隔時間tの範囲は76以上(t≧76)である。各グループには、数値fに対応して、該当する間隔時間tの個数の設定範囲または設定値が記述される。ただし、この設定範囲または設定値は、1フレーム分の音声波形に含まれるゼロクロスの間隔時間tの分布を調べるための数値範囲または数値(条件)である。
【0086】
たとえば、入力された音声波形についての8フレーム分のゼロクロスの個数の8倍の数値fが200〜299の範囲内である場合には、エリア2が選択される。次に、入力された音声波形のうち、現フレームの直前のフレームについてのゼロクロスの間隔時間tの分布がエリア2に対応するグループA、グループB、グループCおよびグループDの各条件(ここでは、2<xA<40,1<xB<19,0≦xC<9,0≦xD<6)を満たすかどうかを判断する。つまり、周波数分布が一致するか否かを判断する。具体的には、それぞれのグループに含まれる間隔時間tの個数をカウントし、各グループについてのカウント値(xA,xB,xC,xD)が予め設定された数値範囲内であるかどうかを判断する。ただし、数値範囲に代えて数値が設置されている場合には、当該数値を満たすかどうかを判断する。これらの条件を満たす状態が2フレーム以上継続すれば、入力された音声は息の音声であると判別される。このとき、数値fに基づいて、ゲームにおける息(風)の強さが決定される。たとえば、息(風)の強さは、1〜255(8ビットの2値データ:“00000001”〜“11111111”)で示され、数値fに基づいて算出される。具体的には、息(風)の強さSは数1に従って算出される。
【0087】
[数1]
S=(f/7)−13
【0088】
図9は、図2に示したRAM48のメモリマップを示す図解図である。この図9を参照して、RAM48は、ゲームプログラム記憶領域480およびデータ記憶領域482を含む。ゲームプログラム記憶領域480は、CPUコア42によって実行されるゲームプログラムを記憶し、このゲームプログラムは、ゲームメイン処理プログラム480a、ゲーム画像生成プログラム480b、ゲーム画像表示プログラム480c、基準点設定プログラム480d、タッチ入力検出プログラム480e、息吹きかけ判別プログラム480f、座標データリセットプログラム480g、ベクトル計算プログラム480h、および速度算出プログラム480iなどによって構成される。
【0089】
ゲームメイン処理プログラム480aは、上述したようなゲームのメインルーチンを処理するためのプログラムである。ゲーム画像生成プログラム480bは、後述する画像データ482aを用いて、プレイヤキャラクタ102、敵キャラクタ(敵キャラクタ110など)、敵キャラクタ以外のノンプレイヤキャラクタ(コイン108、風船122、ロケット、UFOなど)および背景オブジェクト(空、雲C、雲106など)などのゲーム画像を生成するためのプログラムである。ゲーム画像表示プログラム480cは、ゲーム画像生成プログラム480bに従って生成されたゲーム画像、すなわち上述したようなゲーム画面100およびゲーム画面120をLCD12およびLCD14に表示するためのプログラムである。ただし、この実施例では、CPUコア42は、ゲーム画像表示プログラム480cに従って、ゲーム画面100およびゲーム画面120のスクロールも実行する。
【0090】
基準点設定プログラム480dは、図4に示す基準点105の位置を設定するためのものである。タッチ入力検出プログラム480eは、プレイヤによるタッチ入力があるか否かを一定時間(この実施例では、1フレーム)毎に検出して、後述するタッチ入力フラグ482lの成立(オン)/不成立(オフ)を制御するとともに、タッチ入力が有る場合には、当該タッチ入力による検出座標に対応する座標データをデータ記憶領域482cに時系列に従って記憶(一時記憶)するためのプログラムである。ただし、タッチ入力があるか否かは、タッチパネル22から座標データが入力されるか否かで判断される。
【0091】
息吹きかけ判別プログラム480fは、音声入力が息吹きかけによるものであるか否かを判別するためのプログラムである。座標データリセットプログラム480gは、タッチ入力が有り(オン)の状態から無し(オフ)の状態に変化したときに、座標データ記憶領域482fに記憶された1または2以上の座標データをリセット(消去)するためのプログラムである。
【0092】
ベクトル計算プログラム480hは、基準点105から雲Cの中心に向かうベクトルAを計算するためのプログラムである。速度算出プログラム480iは、息吹きかけがあった場合に、雲Cを吹き飛ばす速度を算出するためのプログラムである。
【0093】
なお、図示は省略するが、ゲームプログラム記憶領域480には、音再生プログラムやバックアッププログラムなども記憶される。音再生プログラムは、音(音楽)データを用いて、ゲームに必要な音(音楽)を再生するためのプログラムである。また、バックアッププログラムは、ゲームの進行に従って発生するデータ(ゲームの途中データや結果データ)をプレイヤの指示や所定のタイミング(イベント)に従ってメモリカード28のRAM28bに記憶(セーブ)するためのプログラムである。
【0094】
データ記憶領域482には、オブジェクトデータ482a、サウンドデータ482b、参照データ482c、基準点データ482d、入力音声データ482e、座標データ482f、ベクトルデータ482g、雲速度データ482h、息強さデータ482iなどのデータが記憶されるとともに、息吹きかけ音擬制フラグ482j、息吹きかけ音認識フラグ482kおよびタッチ入力フラグ482lが設けられる。なお、符号482a〜482lは、各データの記憶領域という意味でも使用する。
【0095】
オブジェクトデータ482aは、オブジェクト画像の生成のために用いられるデータであり、ポリゴンデータやテクスチャデータのような画像データを含むとともに、当該オブジェクトの位置(座標)についてのデータ(位置データ)を含む。図示は省略するが、オブジェクトデータ482aは、オブジェクト毎に記憶される。
【0096】
サウンドデータ482bは、ゲームに必要な音(音楽)を再生するために必要なデータである。参照データ482cは、図8に示したようなテーブルデータであり、後述する息吹きかけ判別処理(図11および図12参照)で用いられる。入力音声データ482eは、マイク34を介して入力された音声信号(音声データ)である。なお、この第1実施例では、データ記憶領域482には、少なくとも8フレーム分の音声データが記録(一時記憶)される。
【0097】
座標データ482fは、タッチ入力検出プログラム480eに従って検出されるとともに、記憶された1または2以上の座標データであり、2以上の座標データが存在する場合には、時系列に従って順番に記憶される。ベクトルデータ482gは、ベクトル計算プログラム480hに従って計算された基準点105から雲Cの中心に向かうベクトルAのデータである。雲速度データ482hは、雲速度算出プログラム480iに従って算出された雲Cの速度のデータである。
【0098】
息吹きかけ音擬制フラグ482jは、息吹きかけ判別処理においてオン(成立)/オフ(不成立)されるフラグである。この息吹きかけ音擬制フラグ482jは、息吹きかけ音とみなされる場合にオンされ、息吹きかけ音とみなされない場合にはオフされる。たとえば、息吹きかけ音擬制フラグ482jは、1ビットのレジスタで構成され、当該フラグがオンされると、レジスタにデータ値「1」が設定され、逆に、当該フラグがオフされると、レジスタのデータ値「0」が設定される。息吹きかけ音認識フラグ482kもまた、息吹きかけ判別処理においてオン/オフされるフラグである。この息吹きかけ音認識フラグ482kは、息吹きかけ音と判別(認識)された場合にはオンされ、息吹きかけ音と判別されない場合にはオフされる。たとえば、息吹きかけ音認識フラグ482kは、1ビットのレジスタで構成され、当該フラグがオンされると、レジスタにデータ値「1」が設定され、逆に、当該フラグがオフされると、レジスタのデータ値「0」が設定される。
【0099】
タッチ入力フラグ482lは、タッチ入力のオン/オフの状態を示すフラグであり、タッチ入力検出プログラム480eに従ってオン/オフが切り換えられる。この実施例では、タッチ入力フラグ482lは、1ビットのレジスタで構成され、タッチ入力がオンの場合には、レジスタのデータ値が「1」に設定され、タッチ入力がオフの場合には、レジスタのデータ値が「0」に設定される。
【0100】
なお、図示は省略するが、データ記憶領域482には、ゲームデータ(途中データ、結果データ)等の他のデータや、イベントフラグ等の他のフラグも記憶される。
【0101】
具体的には、図2に示したCPUコア42は図10に示すゲーム処理を実行する。図10を参照して、CPUコア42はゲーム処理を開始すると、ステップS1で、初期化処理を実行する。ここでは、プレイヤキャラクタ102や、ノンプレイヤオブジェクトや、背景オブジェクトの配置位置を初期位置に設定したり、バッファ等をクリアしたりする。ただし、ゲームを前回の続きから開始する場合には、セーブしておいたゲームデータをメモリカード28のRAM28bから読み出して、RAM48にロードする。
【0102】
続くステップS3では、ゲームメイン処理を実行する。ここでは、プレイヤキャラクタ102以外のオブジェクト(ノンプレイヤオブジェクト、背景オブジェクト)についての画像処理(アニメーション処理)、音再生処理やバックアップ処理などが実行される。
後述するように、入力された雲CがLCD12、14上に存在する場合は、当該雲Cも背景オブジェクトの一部とみなされる。よって、プレイヤキャラクタ102が下降するように表示するゲーム画面のスクロールに伴って、雲Cも移動する。この場合の雲Cの移動は、マイク34への息の吹きかけによる移動(吹き飛ばし)とは異なる。ステップS3の処理には、この画面スクロールに伴う雲Cの位置の移動処理、およびその位置を記憶領域482aに記憶する処理が含まれる。
【0103】
続くステップS4では、基準点設定プログラム480dに従って、図4に示す基準点105の設定、記憶処理を実行する。基準点105は、図4に示すように、LCD14外の、LCD14よりも下方の位置に設定される。基準点105は、図5に示すマップ109上の固定位置にあるものではない。基準点105は、LCD14の左上隅に対応する点107(座標(x、y))から、x軸方向に長さdx、y軸方向に長さdyだけずらした位置(x+dx、y−dy)に設定する。dxは、LCD14の幅の半分の値に等しい。基準点105の座標位置は、背景画面のスクロールに伴って逐次更新される(ただし、LCD14に対する相対位置は変わらない)。更新される基準点105の座標位置は、基準点位置の記憶領域482dに、当該記憶領域482dを逐次更新しながら記憶する。
【0104】
続くステップS5では、タッチ入力が有るかどうかを判断する。ステップS5で“NO”であれば、つまりタッチ入力が無ければ、後述するステップS11(息吹きかけ判別処理)に進む。図示は省略するが、このとき、CPUコア42は、タッチ入力フラグ482lをオフする。
【0105】
一方、ステップS5で“YES”であれば、つまりタッチ入力が有れば、ステップS6で、当該タッチ入力位置を、RAM48の座標データの記憶領域482fに記憶する。続くステップS7では、CPUコア42によって、雲Cの位置は、この時点では、タッチ入力位置としてデータ記憶領域482aに記憶される。そして、記憶領域482に記憶されたタッチ入力位置を参照して、雲の図形を描画する。つまり、ステップS7では、タッチパネル22から入力された座標を中心に、雲Cを表示する。
ただし、上記ステップS3で述べたように、雲Cは背景オブジェクトであるから、雲Cの位置は、画面のスクロールに伴って更新される。更新された雲Cの位置は、CPUコア42によって逐次、データ記憶領域482aに記憶される。そして、更新された位置に雲Cを表示する。
プレイヤがタッチ入力する軌跡に従って雲C1、C2、C3、C4が表示される。また、図示は省略するが、このとき、CPUコア42は、タッチ入力フラグ482lをオンする。
【0106】
続くステップS9では、CPUコア42は、記憶領域482dに記憶された基準点データと、記憶領域482aに記憶された雲Cの位置データを参照して、ベクトル計算プログラム480hに従って、描画されている各雲C1〜C4について、基準点105から当該雲C1〜C4の中心位置に向かうベクトルA1〜A4を計算し、これらを記憶領域482gに記憶させる。
【0107】
続くステップS11では、後に詳細に説明する息吹きかけ判別処理(図11および図12参照)を実行して、ステップS13で、息吹きかけを認識したかどうかを判断する。具体的には、息吹きかけ音認識フラグ482kがオンであるかどうかを判断する。ステップS13で“YES”であれば、つまり息吹きかけ音認識フラグ482kがオンであれば、息吹きかけを認識したと判断する。そして、ステップS15で、息強さデータ記憶領域482iに息(風)の強さSの値を記憶して、ステップS18に進む。しかし、ステップS13で“NO”であれば、つまり息吹きかけ音認識フラグ482kがオフであれば、息吹きかけを認識していないと判断する。そして、ステップS17で、息強さデータ記憶領域482iに0を記憶して、ステップS21に進む。
【0108】
ここで、記憶領域482iに記憶される息の強さSは、雲Cを移動させるか否か、あるいは雲Cをどのような速さで移動させるかを判断するためのものであり、数値(1〜255)によって息(風)の強さが区別される。息強さデータ記憶領域482iに0が記憶される場合には、雲Cを移動させない。
【0109】
ステップS18では、CPUコア42は、記憶領域482iに記憶された息の強さSと、記憶領域482gに記憶されたベクトルAを参照して、雲速度算出プログラム480iに従って、LCD14に描画されている各雲Ck(k:1〜4の自然数)の初速を(息の強さS/ベクトルAkの大きさ)×定数Lと算出する。つまり、初速を息の強さSに比例し、ベクトルAkの大きさに反比例する大きさとする。そして、CPUコア42は、これらの初速データと、移動方向データ(ベクトルAkの向き)を、記憶領域482hに記憶する。
【0110】
続くステップS19では、CPUコア42は、データ記憶領域482hに記憶された雲Cの速度データを参照して、画像表示プログラム480cに従って、各雲Ckを初速(定数L×息の強さS/ベクトルAkの大きさ)で、ベクトルAkの向きに移動させる表示処理を実行する。この移動の際には、CPUコア42は、各雲Ckが時間の経過とともに減速するように表示処理する。しかしながら、その減速の程度は小さく、息の強さSが相当に弱くなければ、CPUコア42は、各雲CkをLCD12、14内からこれらの外に吹き飛ばすようにみえる表示処理をする。言い換えると、CPUコア42は、操作者によってマイク34に息が吹きかけられた場合、雲Cを消去するように表示処理をする。
【0111】
ステップS21では、ゲーム終了かどうかを判断する。つまり、プレイヤによってゲーム終了が指示されたり、ゲームオーバになったりしたかどうかを判断する。ステップS21で“NO”であれば、つまりゲーム終了でなければ、ステップS3に戻る。一方、ステップS21で“YES”であれば、つまりゲーム終了であれば、ゲーム処理を終了する。
【0112】
なお、図10の処理ルーチンは、単位時間(例えば、1フレーム)毎に繰り返し実行されるものである。したがって、単位時間毎に、ステップS5のタッチ入力の検出処理や、ステップS11の息吹きかけ判別処理(音声検出処理)が実行される。
【0113】
図11および図12は、図10に示したステップS11の息吹きかけ判別処理を示すフロー図である。図11に示すように、CPUコア42は息吹きかけ判別処理を開始すると、ステップS31で、音声検出処理を実行する。そして、マイク34を通して入力される音声に対応するする音声データをデータ記憶領域482に記憶する。ただし、音声検出処理を実行する場合には、ノイズゲート処理も実行される。具体的には、一定レベル以下の音声データを単なる雑音とみなして、入力された音声データから排除(リジェクト)するようにしてある。続くステップS33では、バッファ(RAM48のバッファ領域)内で振幅ゼロの部分をマイナスからプラスに交差した回数(ゼロクロスの個数)をカウントし、直近の8フレーム分の回数(個数)を8倍した値をf(数値f)として保存する。つまり、入力音声データ482eを参照して、数値fを求める。
【0114】
続いて、ステップS35では、数値fが98から1883の間(98≦f≦1883)であるかどうかを判断する。ここでは、息の音声であるかどうかを簡易に判断しているのである。つまり、ゲームで使用すると想定される息(風)を、実際にマイク34に吹きかけた時の数値fがおおよそその範囲(98≦f≦1883)となるためである。また、息の強さSを1〜255の間で設定するためでもある。ステップS35で“NO”であれば、つまり数値fが97以下または1884以上であれば、そのままステップS47に進む。一方、ステップS35で“YES”であれば、つまり数値fが98から1883の間であれば、ステップS37で、1フレーム分の音声波形に含まれる各交差間の間隔時間tを計測する。ここでは、図7を用いて説明したように、マイナスからプラスへのゼロクロス間の間隔時間tをそれぞれ計測するのである。
【0115】
続くステップS39では、各間隔時間tの分布を検出する。つまり、計測した間隔時間tをグループ別に分類する。具体的には、ステップS37で計測した間隔時間tを、グループA〜グループDのそれぞれに設定される時間長に応じて、各グループに属する間隔時間tの個数をそれぞれカウントするのである。したがって、カウント値(xA,xB,xC,xD)が得られる。次にステップS41では、ステップS39で検出した分布と参照データ482cとを比較する。つまり、数値fの値に応じてエリア(の番号)を選択し、選択されたエリアに対応して記述されるグループA〜グループDの設定範囲内に、カウント値(xA,xB,xC,xD)が収まるか、または設定値と一致するかどうかをそれぞれ判断する。
【0116】
続いて、ステップS43では、分布は条件を満たすかどうかを判断する。つまり、ステップS41の判断結果が、グループA〜グループDのそれぞれの設定範囲内であるか、または設定値と一致するかどうかを判断する。ここで、すべての設定範囲または設定値を満たす場合には、分布は条件を満たす(周波数分布が一致する)と判断され、いずれか1つの設定範囲または設定値でも満たさない場合には、分布は条件を満たさない(周波数分布が一致しない)と判断される。ステップS43で“YES”であれば、つまり分布が条件を満たす場合には、息吹きかけ音に近いとみなして、図12に示すステップS49に進む。しかし、ステップS43で“NO”であれば、つまり分布が条件を満たさない場合には、息吹きかけ音でないと判別して、ステップS45で、息吹きかけ音擬制フラグ482jをオフし、さらに、ステップS47で、息吹きかけ音認識フラグ482kをオフして、図12に示すように、息吹きかけ判別処理をリターンする。
【0117】
図12に示すように、ステップS49では、息吹きかけ音擬制フラグ482jがオンであるかどうかを判断する。つまり、2フレーム連続して、息吹きかけ音に近いとみなされたかどうかを判断する。ステップS49で“YES”であれば、つまり息吹きかけ音擬制フラグ482jがオンであれば、息吹きかけ音と判別し、ステップS51で、息吹きかけ音認識フラグ482kをオンし、ステップS53で、数1に従って、息の強さSを算出し、これを息強さデータの記憶領域482iに記憶する。そして、息吹きかけ判別処理をリターンする。一方、ステップS49で“NO”であれば、つまり息吹きかけ音擬制フラグ482jがオフであれば、息吹きかけに近いとみなされたフレームが連続していないと判断し、ステップS55で、息吹きかけ音擬制フラグ482jをオンして、息吹きかけ判別処理をリターンする。
【0118】
第1実施例によると、雲Cの移動速さは、基準点105から雲Cの中心に向かうベクトルAの大きさに反比例する。よって、ゲームプレイヤが同じ強さの息をマイク34に吹きかけた場合でも、基準点105に近い場所に位置する雲Cは速く移動し、基準点105から遠い場所に位置する雲Cは相対的に遅く移動するように表示させることができる。また、雲Cの移動する向きは、上記ベクトルAの向きに平行であるから、ゲームプレイヤがマイク34に息を吹きかけることで、複数の雲Cを、同一の向きではなく、基準点105を中心とする放射状に吹き飛ばすように表示させることができる。
このように、第1実施例によると、例えば、同じ強さの息を吹きかけた場合でも、雲Cが常に同じ速さで同じ向きに移動するのではなく、雲Cの位置によって、その移動の速さと向きが様々に変化する。従って、第1実施例によると、ゲームプレイヤを視覚的に楽しませるという、ゲームにとって重要な要素を実現できる。
【0119】
また、第1実施例によれば、ゼロクロスの間隔時間の分布が予め設定された分布と一致し、その状態が所定時間連続するとき、息吹きかけ音と判別するので、息を吹きかける操作を正確に認識することができる。
【0120】
また、第1実施例では、参照データのようなテーブルデータを記憶しておくだけなので、様々な音声素片の波形パターンを記憶しておく場合に比べて、メモリ容量を削減することができる。
【0121】
さらに、第1実施例では、ゼロクロスの間隔時間の分布を調べるだけなので、煩わしい演算処理が不要であり、したがってCPUの処理負担を軽減することができる。
【0122】
さらにまた、入力される音声波形のゼロクロスの個数に応じて、息または風の強さを設定するので、簡単に息や風の強さを設定(検出)できる。さらには、息や風の強さで異なるゲーム処理(画像処理)を実行するので、ゲームの面白みを増すことができる。
【0123】
なお、この第1実施例では、2つのLCDを備えるゲーム装置について説明したが、1つのLCDのみを備えるものであってもよい。また、タッチパネルを用いないものであってもよい。
【0124】
<変形例>
変形例のゲーム装置10は、息吹きかけ判別処理が異なる以外は、第1実施例のゲーム装置10と同じであるため、重複した説明は省略する。この変形例では、入力された音声波形についてのゼロクロスの間隔時間tの最大値と最小値とに基づいて、息吹きかけ音か否かを判別(認識)するようにしてある。したがって、第1実施例で示したような参照データ482cは不要であり、メモリ容量を削減することができる。具体的な息吹きかけ判別処理のフロー図が図13および図14に示される。ただし、第1実施例で説明した処理と同じ処理については簡単に説明することにする。また、変形例の息吹きかけ判別処理では、息の音声に近いとみなされる期間が3フレーム以上継続したときに、息による音声であると判別するようにしてある。したがって、第1実施例で示した息吹きかけ音擬制フラグ482jに変えて、息の音声に近いとみなされる期間(フレーム数)をカウントするためのカウンタ(図示せず)が、たとえば、RAM48のデータ記憶領域482に設けられる。
【0125】
図13を参照して、CPUコア42は息吹きかけ判別処理を開始すると、ステップS61で、音声検出処理を実行する。ここで、ノイズゲート処理が実行されるは、第1実施例の場合(S31)と同様である。続くステップS63では、バッファ内の振幅ゼロの部分をマイナスからプラスに交差した回数をカウントし、直近の8フレーム分の回数を8倍した値を数値fとして保存する。そして、ステップS65で、数値fが98から1883の間に収まるかどうかを判断する。ステップS65で“NO”であれば、そのままステップS73に進む。一方、ステップS65で“YES”であれば、ステップS67で、1フレーム分の音声波形に含まれる各交差間の間隔時間tを計測する。
【0126】
続くステップS69では、間隔時間tの最大値(zero−cross−max)と最小値(zero−cross−min)との比率(zero−cross−max/zero−cross−min)を算出する。そして、ステップS71では、ステップS69で算出した比率が第1所定値(ここでは、7.0)以上であり、かつ最大値が第2所定値(ここでは、50(1/8000sec))以上であるかどうかを判断する。つまり、ゼロクロスの間隔時間tが所定の条件を満たすかどうかを判断するのである。ステップS71で“YES”であれば、つまり比率が7.0以上であり、かつ最大値が50(1/8000sec)以上である場合には、息吹きかけ音に近いとみなして、図14に示すステップS77に進む。しかし、ステップS71で“NO”であれば、つまり比率が7.0未満、または最大値が50(1/8000sec)未満或いはその両方である場合には、息吹きかけ音でないと判別し、ステップS73で、息吹きかけ音カウンタをリセット(カウント値=0)し、ステップS75で、息吹きかけ音認識フラグ482kをオフして、図14に示すように、息吹きかけ判別処理をリターンする。なお、第1所定値および第2所定値は、実験等により、経験的に得られた値である。
【0127】
図14に示すように、ステップS77では、息吹きかけ音カウンタのカウント値が3であるかどうかを判断する。つまり、3フレーム連続して、息吹きかけ音に近いとみなされたかどうかを判断する。ステップS77で“YES”であれば、つまり息吹きかけ音カウンタのカウント値が3であれば(3以上であれば)、息吹きかけ音と判別し、ステップS79で、息吹きかけ音擬制フラグ482kをオンし、ステップS81で、数1に従って、息(風)の強さSを算出し、これを息強さデータの記憶領域482iに記憶する。そして、息吹きかけ判別処理をリターンする。一方、ステップS77“NO”であれば、つまり息吹きかけ音カウンタのカウント値が3でなければ(3未満であれば)、ステップS83で、息吹きかけ音カウンタをインクリメントして、息吹きかけ判別処理をリターンする。
【0128】
変形例においても、第1実施例と同様に、入力される音声波形のゼロクロスの個数が一定範囲内であり、ゼロクロスの間隔時間の最大値および最小値が所定時間連続して所定の条件を満たすとき、息吹きかけ音と判別するので、息を吹きかける操作を正確に判別することができる。
【0129】
また、変形例では、参照データを設ける必要がないため、第1実施例で示した場合よりもさらにメモリ容量を削減することができる。
【0130】
<第2実施例>
第2実施例は、第1実施例のゲーム装置20に、第1実施例とは異なる内容を含む情報が記憶されたメモリカード28を接続した場合の実施例である。従って、ゲーム装置20のハードウエア構成は第1実施例と同じであり、説明を省略する。
図15は、第2実施例においてLCD14に表示されるゲーム内容を示すものである。なお、LCD16は、第2実施例においては、使用してもよいし、しなくてもよい。図15は、ビリヤードゲームを示すものである。図15のLCD14上には、ビリヤード台202の平面図が示されている。ビリヤード台202の4隅には、ポケット(穴)210が形成されている。ビリヤード台202上には、キュー203で直接突くための球(手球)206と、その手球206を当てることで、ポケット210に落とすための球(的球)208が配置されている。符号204は、基準点であり、操作者によってその位置を任意に設定可能である。基準点204から手球206に向かうベクトルAの大きさは、キュー203で手球206を突いたときのその手球206の初速に反比例しており、ベクトルAの向きは、手球206の移動する向きとなる。一方、息の強さSは、手球206の初速に比例している。
【0131】
図16は、第2実施例のメイン処理を示すフローチャートであり、第1実施例の図10に類似する。図16については、図10と異なる部分を中心に説明する。まず、ステップS1の初期化処理を実行し、続くステップS3のゲームメイン処理を実行する。この処理には、図15の手球206と的球210の位置を必要に応じて計算し、オブジェクトの位置データとして、データ記憶領域482aに記憶する処理を含む。続くステップS5で“YES”であれば、つまりタッチ入力が有れば、ステップS6で、当該タッチ入力位置を、RAM48の座標データの記憶領域482fに記憶する。
【0132】
続くステップS201では、当該記憶領域482fを参照して得られたタッチ入力位置に基準点204を設定する。CPUコア42は、上記タッチ入力位置を基準点204の位置として、基準点データの記憶領域482dに記憶する。続くステップS203では、CPUコア42は、記憶領域482aに記憶された手球206の位置データと、記憶領域482dに記憶された基準点の位置データを参照して、ベクトル計算プログラム480hに従って、基準点204から手球206の中心に向かうベクトルAを計算し、これを記憶領域482gに記憶させる。
【0133】
続くステップS11では、第1実施例で詳細に説明された息吹きかけ判別処理(図11および図12参照)を実行して、ステップS13で、息吹きかけを認識したかどうかを判断する。ステップS13で“YES”であれば、息吹きかけを認識したと判断し、ステップS15で、息強さデータ記憶領域482iに息(風)の強さSの値を記憶して、ステップS204に進む。一方、ステップS13で“NO”であれば、息吹きかけを認識していないと判断し、ステップS17で、息強さデータ記憶領域482iに0を記憶して、ステップS21に進む。
【0134】
ここで、記憶領域482iに記憶される息の強さSは、手球206を移動させるか否か、あるいは手球206をどのような初速で移動させるかを判断するためのものであり、数値(1〜255)によって息(風)の強さが区別される。息強さデータ記憶領域482iに0が記憶される場合には、手球206を移動させない。
【0135】
ステップS204では、CPUコア42は、記憶領域482iに記憶された息の強さSと、記憶領域482gに記憶されたベクトルAを参照して、速度算出プログラム480iに従って、LCD14に描画されている手球206の初速を(定数L×息の強さS/ベクトルAの大きさ)と算出する。CPUコア42は、この初速データと、移動方向(ベクトルAの向き)のデータを、記憶領域482hに記憶する。
【0136】
続くステップS205では、CPUコア42は、記憶領域482hに記憶された手球206の速度データを参照して、画像表示プログラム480cに従って、キュー203が、手球206をベクトルAの向きに平行に移動させるように突くように表示させる処理を実行した後、手球206を(初速L×息の強さS/ベクトルAの大きさ)で、ベクトルAの向きに移動させる表示処理を実行する(Lは定数)。この移動の際には、CPUコア42は、ビリヤード台202の上面の摩擦による減速を考慮して、手球206が時間の経過とともに減速するような表示処理をする。
【0137】
続くステップS207では、記憶領域482aに記憶された手球204と的球208の位置と、記憶領域482hに記憶された手球204の速度データを参照して、衝突判別処理プログラムに従って、手球204と的球208が衝突したか否かの判別処理を実行する。そして、衝突したと判別された場合は、ステップS208で、記憶領域482のデータを参照して、的球速度計算プログラムに従って、的球208の移動速さと移動方向を計算し、記憶領域482に記憶する。そして、さらに、記憶領域482に記憶された的球208の移動速さと移動方向を参照して、的球208の移動表示処理を実行する。続くステップS211では、記憶領域482のデータを参照して、ポケットイン判別プログラムに従って、的球208が移動の結果、ポケット210に入るか否かを判別する。ポケット210に入ると判別された場合は、ステップS213で、ポイント処理プログラムに従って、ゲームのポイントを加算する処理を実行する。
【0138】
続くステップS21では、ゲーム終了か否かが判断される。ゲーム終了でないと判断されれば、CPUコア42は、ステップS3のゲームメイン処理を実行する。一方、ゲーム終了と判断されれば、ゲームを終了する。なお、ステップS207又はS211で“NO”の場合にも同様に、ステップS21でゲーム終了か否かが判断される。
【0139】
第2実施例によれば、ゲームプレイヤは、手球206の初速を設定するために、息の強さに加えて、基準点204と手球206の中心との距離も考慮することが要求されるので、面白いゲームを提供することができる。また、ゲームプレイヤがマイク34に吹きかけると、常に一定の向きではなく、基準点204から手球206の中心に向かうベクトルの向きに平行に、手球206を移動させることができるので、これによっても、ゲームの面白さを向上させることができる。
【0140】
<第3実施例>
第3実施例も、第1実施例のゲーム装置20に、第1実施例とは異なる内容を含む情報が記憶されたメモリカード28を接続した場合の実施例である。
図17は、第3実施例においてLCD14に表示されるゲーム内容を示すものである。なお、LCD16は、第3実施例においては、使用してもよいし、しなくてもよい。図17は、符号314で示す上向きの空気流によって、風船308を上限ライン310と下限ライン312の間に収めておける時間を競うゲームである。空気流314は、空気流出力器302によって出力される。空気流出力器302は、タッチパネル22の操作又はカーソルキー20aによって左右に移動させることができる。空気流314の強さは、マイク34によって入力される息の強さSとLCD14の右側に表示されるメータ306の高さHの合計(S+H)である。メータ306の高さHは、メモリカード28内のプログラムによって、自動的に経時的に変化する。従って、操作者は、ライン310、312間に風船を収めるようには、メータ306の高さHが高くなったときには、自己の息の強さSを弱くしなければならない。一方、メータ306の高さHが低くなったときには、自己の息の強さSを強くしなければならない。このように、このゲームでは、メータ306の高さHをみながら、自己の息の強さSを経時的に調節することが要求される。
【0141】
図18は、第3実施例のメイン処理を示すフローチャートであり、第1実施例の図10に類似する。図18については、図10と異なる部分を中心に説明する。CPUコア42は、ステップS1の処理を実行した後、ステップS3のゲームメイン処理を実行する。ステップS3の処理には、出力器302や風船308の位置を必要に応じて計算し、その位置を記憶領域482aに記憶する処理や、メータ306の高さHを経時的に変化させる処理を含む。その後、第1実施例とは異なり、直ちにステップS11の息吹きかけ判別処理(図11および図12参照)を実行し、ステップS13で、息吹きかけを認識したかどうかを判断する。ステップS13で“YES”であれば、息吹きかけを認識したと判断し、ステップS15で、記憶領域482iに息(風)の強さSの値を代入して、ステップS204に進む。しかし、ステップS13で“NO”であれば、息吹きかけを認識していないと判断し、ステップS17で、息強さデータ記憶領域482iに0を記憶して、ステップS309に進む。
【0142】
ここで、記憶領域482iに記憶される息の強さSは、出力器302が空気流314を出すか否か、あるいはどのような強さの空気流314を出すかを判断するためのものであり、数値(1〜255)によって息(風)の強さが区別される。息強さデータ記憶領域482iに0が記憶される場合には、空気流314を出力させない。
【0143】
ステップS301では、CPUコア42は、息吹きかけ認識時のメータ306の高さHのデータを取得し、データ記憶領域482に記憶する。続くステップS302では、記憶領域482iに記憶された息の強さSと、記憶領域482に記憶された息吹きかけ認識時のメータ306の高さHを参照して、空気流の強さ算出プログラムに従って、空気流314の強さを(S+H)と算出し、これを記憶領域482に記憶する。
【0144】
続くステップS303では、CPUコア42は、記憶領域482に記憶された空気流314の強さ(S+H)を参照して、画像表示プログラム480cに従って、空気流出力器302が、強さ(S+H)の空気流314を出力するように情報処理及び表示処理する。
【0145】
続くステップS305では、記憶領域482aに記憶された出力器302や風船308の位置と、記憶領域482に記憶された空気流314の強さ(S+H)を参照して、空気流当たり判別処理プログラムに従って、空気流314が風船308に当たっているか否かを判別する。当たっていると判別された場合は、ステップS307で、記憶領域482のデータを参照して、風船移動計算プログラムに従って、風船308の移動量と移動方向を計算する。続くステップS309では、記憶領域482のデータを参照して、ライン超え判別プログラムに従って、移動した風船308が上限ライン310を上に超えたか、および下限ライン312を下に超えたかを判別する。なお、先に述べたステップS17の処理実行後と、ステップS305で“NO”の場合にも、ステップS309が実行される。
【0146】
ステップS309で“YES”の場合、即ち、風船308が上限ライン310を上に超えた、又は下限ライン312を下に超えたと判別された場合、ゲーム終了となる。一方、ステップS309で“NO”の場合、ステップS3に戻り、ゲームメイン処理を実行する。
【0147】
第3実施例によると、ゲームプレイヤは、自動的に経時的に変化するメータ306の高さHに応じて、自己の息の強さSを経時的に調節することが要求されるので、単に息の強さを強くする、あるいは弱くすることが要求されるゲームに比べて、面白さを向上させることができる。
【0148】
<第4実施例>
第4実施例も、第1実施例のゲーム装置20に、第1実施例とは異なる内容を含む情報が記憶されたメモリカード28を接続した場合の実施例である。
第4実施例のゲーム内容は、LCD14に表示される風船を所定の大きさにまで膨らます時間を競うゲームである。吹きかけた息の強さSと、単位時間内にAボタン20dを押した回数Eの合計(S+E)を、風船の膨張速さとするものである。このように、ゲーム内容は図示しなくても明確であるため、図示を省略する。
【0149】
図19は、第4実施例のメイン処理を示すフローチャートであり、第1実施例の図10に類似する。図19については、図10と異なる部分を中心に説明する。ステップS1、S3の処理が実行された後、第1実施例とは異なり、直ちにステップS11の息吹きかけ判別処理(図11および図12参照)を実行し、ステップS13で、息吹きかけを認識したかどうかを判断する。ステップS13で“YES”であれば、息吹きかけを認識したと判断し、ステップS15で、息強さデータ記憶領域482iに息(風)の強さSの値を記憶して、ステップS204に進む。しかし、ステップS13で“NO”であれば、息吹きかけを認識していないと判断し、ステップS17で、息強さデータ記憶領域482iに0を記憶して、ステップS409に進む。
【0150】
ここで、息強さデータ記憶領域482iに記憶される息の強さSは、風船を膨らますか否か、あるいはどのような膨張速さで風船を膨らませるかを判断するためのものであり、数値(1〜255)によって息(風)の強さが区別される。息強さデータ記憶領域482iに0が記憶される場合には、風船を膨らませない。
【0151】
ステップS400では、CPUコア42は、息吹きかけを認識した時点を含む単位時間内にAボタン20dが押されたか否かを検出する。押されている場合は、ステップS401で、当該単位時間内にAボタン20dが押された回数Eを検出し、データ記憶領域482に記憶する。続くステップS402では、記憶領域482iに記憶された息の強さSと、記憶領域482に記憶されたボタン押し回数Eを参照して、膨張速さ算出プログラムに従って、風船の膨張速さを(S+E)と算出し、これを記憶領域482に記憶する。
【0152】
続くステップS403では、CPUコア42は、記憶領域482に記憶された風船の膨張速さ(S+E)を参照して、画像表示プログラム480cに従って、膨張速さ(S+E)で風船が膨らむように情報処理及び表示処理する。
【0153】
続くステップS405では、記憶領域482に記憶された風船の膨張速さ(S+E)を参照して、風船膨らみ判別プログラムに従って、風船が所定の体積まで膨らんだか否かを判別する。前記所定の体積まで膨らんだと判別された場合は、時間表示プログラムに従って、風船が前記所定の体積まで膨らむのに要した時間を表示する。そして、ゲームを終了する。一方、ステップS405で“NO”の場合は、ステップS409に進み、制限時間に達したか否かが判断される。制限時間に達している場合は、ゲームを終了する。一方、制限時間に達していない場合は、ステップS3に戻り、ゲームメイン処理を実行する。
なお、ステップS17の処理を実行後、又はステップS400で“NO”の場合も、ステップS409に進む。
【0154】
第4実施例によると、ゲームプレイヤは、風船を速く膨らませるためには、マイク34で息を強く吹きかけるだけでなく、Aボタン20dを速く連打することが要求されるので、単に息を吹きかけるのみで風船を膨らませる場合に比べて、面白さの向上したゲームを実現することができる。
【図面の簡単な説明】
【0155】
【図1】本発明のゲーム装置の一例を示す図解図である。
【図2】図1に示すゲーム装置の電気的な構成を示すブロック図である。
【図3】第1実施例におけるゲーム画面の一例を示す図解図(1)である。
【図4】第1実施例におけるゲーム画面の一例を示す図解図(2)である。
【図5】マップと、2つのLCDと、基準点との関係を示す図である。
【図6】マイクから入力される息による音声の音声波形の時間変化を示すグラフである。
【図7】図6に示す音声波形の一部を拡大したグラフである。
【図8】息吹きかけ判別処理に用いる参照データの具体的な内容を示す図解図である。
【図9】図2に示すゲーム装置に内蔵されるRAMのメモリマップを示す図解図である。
【図10】図2に示すCPUコアの第1実施例におけるゲーム処理を示すフロー図である。
【図11】図2に示すCPUコアの息吹きかけ判別処理の一部を示すフロー図である。
【図12】図11に続く息吹きかけ判別処理の他の一部を示すフロー図である。
【図13】本発明の変形例の息吹きかけ判別処理の一部を示すフロー図である。
【図14】図13に続く息吹きかけ判別処理の他の一部を示すフロー図である。
【図15】第2実施例におけるゲーム画面の一例を示す図解図である。
【図16】図2に示すCPUコアの第2実施例におけるゲーム処理を示すフロー図である。
【図17】第3実施例におけるゲーム画面の一例を示す図解図である。
【図18】図2に示すCPUコアの第3実施例におけるゲーム処理を示すフロー図である。
【図19】図2に示すCPUコアの第4実施例におけるゲーム処理を示すフロー図である。
【符号の説明】
【0156】
10 …ゲーム装置
12,14 …LCD
16,16a,16b …ハウジング
20 …操作スイッチ
22 …タッチパネル
24 …スティック
28 …メモリカード
28a …ROM
28b,48 …RAM
34 …マイク
40 …電子回路基板
42 …CPUコア
50,52 …GPU
54 …I/F回路
56,58 …VRAM
60 …LCDコントローラ
【技術分野】
【0001】
本発明は、マイクから入力された情報を利用して、ゲームの処理を実行する技術に関する。
【背景技術】
【0002】
特許文献1には、息の吹きかけの音声パワー(息の強さ)を、ディスプレイ画面上の風船等の移動速度等に変換することが示されている。
【特許文献1】特開平11−143484号公報(当該公報の〔0032〕参照)
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、ゲームの分野では、特許文献1の技術のように、息の強さのような、マイク入力情報から得られる音声特性データだけを参照して上記移動速度等を算出するのでは、ゲームを十分に面白くさせることができない場合もあった。
【0004】
それゆえに、本発明の主たる目的は、ゲームの面白さを向上させることである。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明は以下の構成を採用した。なお、括弧内の参照符号および図番号は、本発明の理解を助けるために図面との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0006】
<第1A−1の態様>
表示装置(12、14)に表示されるゲーム空間のオブジェクト(C、206、208、302、308)のコントロール量を算出するためのゲームプログラムであって、
コンピュータ(コンピュータのプロセサ(処理手段)、情報処理装置)(10、42)に、
マイク(34)から入力されたマイク入力情報をメモリ(記憶手段)(48)に記憶するマイク入力情報記憶ステップ(S31、S61)、および
前記マイク入力情報記憶ステップで記憶された前記マイク入力情報から得られる音声特性データに加えて、前記マイク入力情報からとは別に得られ、前記メモリ(48)に記憶された数値情報を参照して、前記コントロール量を算出するコントロール量算出ステップ(S18、S204、S302、S402)を実行させる、ゲームプログラム。
【0007】
本明細書において、「オブジェクト」は広義に解される。即ち、本明細書における「オブジェクト」には、ゲーム分野でキャラクタや背景を表すために一般に使用される意味での「オブジェクト」を含むだけでなく、ゲーム画面上に表示され得るあらゆる対象が含まれる。例えば、文字等も「オブジェクト」に含まれる。
【0008】
「オブジェクトのコントロール量」は広義に解される。例えば、オブジェクトの移動速さ、移動距離、大きさ、体積、温度等が含まれる。また、オブジェクトが発する空気流の大きさ、音の大きさ等も含まれる。
オブジェクト又はオブジェクトが持つ性質、属性等を何らかの意味でコントロールするための量は、上記「コントロール量」に含まれる。
また、コントロールされるオブジェクトには、例えば、あるオブジェクトが空気流を発し、この空気流によって別のオブジェクトが移動する場合、当該別のオブジェクトも含まれる。
【0009】
「音声特性データ」は、マイクから入力された音声の何らかの特性を示すデータであり、例えば音声(息)の強さのデータが含まれる。
「コンピュータ」、又はこれを構成するプロセサ(CPU等)や「メモリ」等は、物理的に2つ以上に分かれていてもよい。
【0010】
この態様によると、マイク入力情報から得られる音声特性データに加えて、マイク入力情報からとは別に得られた数値情報をも参照してゲーム空間のオブジェクトのコントロール量を算出するので、マイク入力情報から得られる音声特性データのみを参照する場合に比べて、前記コントロール量をより有意義に決定し得る。従って、この態様によると、ゲームの面白さを向上させることができる。
【0011】
<第1A−2の態様>
第1A−1の態様において、「マイク入力情報から得られる音声特性データ」は、好ましくは、音声(より好ましくは、息)の強さのデータであることがよい。音声(息)の強さは、操作者によって比較的認識、調整しやすく、また、操作者の感情と連動しやすい。「マイク入力情報から得られるデータ」は、前記マイク入力情報から直接的に得てもよいし、間接的に得てもよい。即ち、前記マイク入力情報に処理を施さずに、前記マイク入力情報から直接にデータを得てもよい。あるいは、前記コンピュータにさらに、前記マイク入力情報を参照して、入力された音声(特に息)の特性データを算出する音声特性データ算出ステップ(S53、S81)、および前記音声特性データ算出ステップで算出された前記音声特性データを前記メモリに記憶する音声特性データ記憶ステップ(S53、S81)を実行させてもよい。
【0012】
<第1A−3の態様>
第1A−2の態様において、前記コントロール量算出ステップでは、前記マイク入力情報から得られる前記音声の強さデータを参照して、前記コントロール量を、前記音声の強さが強くなるほど大きく又は小さくするとともに、前記数値情報の数値が大きくなるほど大きく又は小さくするように算出することが好ましい。
【0013】
<第1A−4の態様>
第1A−2の態様において、前記コントロール量は、前記音声の強さと前記数値情報の合計値に応じた大きさであることが好ましい。前記コントロール量は、前記音声の強さと前記数値情報の合計値に正比例又は反比例することが好ましい。あるいは、前記コントロール量は、前記音声の強さに正比例又は反比例し、かつ、前記数値情報に正比例又は反比例することが好ましい。
【0014】
<第1A−5の態様>
第1A−1の態様において、前記コントロール量は、前記オブジェクトの移動速さ又は移動距離であり、
前記コンピュータにさらに、
基準点の位置を前記メモリに記憶する基準点記憶ステップ(S4、図16のS201)、
前記オブジェクト位置を前記メモリに記憶するオブジェクト位置記憶ステップ(図10のS3やS7、図16のS3)、
前記メモリに記憶された前記基準点と前記オブジェクト位置を参照して、前記基準点と前記オブジェクト位置の距離を計算する距離計算ステップ(S9、S203)、および
前記距離計算ステップで計算された前記距離の情報を、前記数値情報として前記メモリに記憶する距離記憶ステップ(S9、S203)を実行させ、
前記コントロール量算出ステップ(S18、S204)では、前記音声特性データと前記距離の情報を参照して、前記移動速さ又は前記移動距離を算出することが好ましい。
【0015】
ここで、「オブジェクト位置」は、典型的には、例えばオブジェクトの中心位置等のオブジェクト内の位置である。しかし、本明細書では「オブジェクト位置」は「オブジェクトに関連付けられた位置」と広義に解する。従って、オブジェクト外の位置であっても、当該オブジェクトに関連付けられた位置であるならば、上記「オブジェクト位置」に該当する。例えば、複数のオブジェクトが集合して円の輪郭を形成し、当該円の中心部にいずれのオブジェクトも位置しない場合でも、当該円の中心部を各オブジェクト、あるいは複数のオブジェクト集合体の「オブジェクト位置」ということができる。
【0016】
この態様のようにオブジェクトの移動速さ又は移動距離を算出することで、当該移動速さ又は移動距離をより有意義に決定し得る。
【0017】
<第1A−6の態様>
第1A−5の態様において、前記コンピュータにさらに、
前記メモリに記憶された前記基準点と前記オブジェクト位置を参照して、前記基準点と前記オブジェクト位置を結ぶ線の方向を計算する方向計算ステップ(S9、S203)、
前記線の方向を前記メモリに記憶する方向記憶ステップ(S9、S203)、および
前記方向記憶ステップで記憶された前記線の方向を参照して、前記線の方向に平行に前記オブジェクトを移動させる表示処理を行う表示処理ステップ(S19、S205)を実行させることが好ましい。
この態様には、オブジェクトが基準点から離れる向きに、前記線の方向に平行に移動する場合と、オブジェクトが基準に近づく向きに、前記線の方向に平行に移動する場合が含まれる。
この態様によると、基準点とオブジェクト位置の関係に応じて、オブジェクトの移動方向が変化し得るので、ゲームの視覚的な面白さを向上させることができる。
【0018】
<第1A−7の態様>
第1A−5又は1A−6の態様において、前記コンピュータにさらに、
前記基準点の位置及び/又は前記オブジェクト位置を経時的に変化させるステップ(図10のS3)を実行させることが好ましい。
この態様によると、例えば、前記コントロール量を所定の目標値にすることが要求されるようなゲームでは、操作者によるマイクからの入力情報も経時的に変化させなければならない。従って、この態様によると、ゲームの面白さを向上させることができる。
【0019】
<第1A−8の態様>
第1A−5〜1A−7の態様のいずれかにおいて、前記コンピュータは、前記基準点位置及び/又は前記オブジェクト位置を入力するための位置入力手段をさらに備え、
前記コンピュータにさらに、前記位置入力手段によって入力された位置を前記メモリに記憶するステップ(S6)を実行させることが好ましい。
この態様によると、操作者は、前記コントローラ量を、マイク入力情報のみならず、基準点位置及び/又はオブジェクト位置の入力操作によっても変化させることができる。従って、この態様によると、ゲームの面白さを向上させることができる。
【0020】
<第1A−9の態様>
第1A−1の態様において、前記コンピュータにさらに、
前記数値情報の数値を経時的に変化(増加のみ、減少のみ又は増減)させるステップ(図10のS3)を実行させることが好ましい。
この態様によると、例えば、前記コントロール量を所定の目標値にすることが要求されるようなゲームでは、操作者によるマイクからの入力情報も経時的に変化させなければならない。従って、この態様によると、ゲームの面白さを向上させることができる。
【0021】
<第1A−10の態様>
第1A−1の態様において、前記コンピュータにさらに、
前記コントロール量算出ステップで算出された前記コントロール量を前記メモリに記憶するコントロール量記憶ステップ(S18)、および
前記コントロール量記憶ステップで記憶された前記コントロール量を参照して、ゲーム処理を行うゲーム処理ステップ(S19、S207〜S213、S305〜S309、S405〜S409)を実行させることが好ましい。
【0022】
<第1A−11の態様>
第1A−11の態様において、前記ゲーム処理ステップは、前記コントロール量算出ステップで算出された前記移動速さで又は前記移動距離だけ前記オブジェクトが移動するような表示処理をする表示処理ステップ(S19)を含むことが好ましい。
【0023】
<第1A−12の態様>
第1A−11の態様において、前記ゲーム処理ステップは、前記コントロール量算出手段で算出された(1)前記コントロール量又は(2)前記コントロール量でコントロールされたオブジェクトが、所定の条件を満たしているか否かを判別する判別ステップ(S207、S209、S305、S309、S405)を含むことが好ましい。
この態様のように、前記コントロール量等に対して何らかの判別が行われるようなゲーム処理を実行することによって、ゲームの面白さを向上させることができる。
【0024】
<第1A−13の態様>
第1A−12の態様において、前記判別ステップでは、前記コントロール量が、所定の数値以上(以下)か否か、あるいは、所定の数値範囲内にあるか否かを判別することが好ましい。
【0025】
<第1A−14の態様>
第1A−12の態様において、前記判別ステップでは、(1)前記コントロール量が第1オブジェクトの移動速さ又は移動距離の場合、当該第1オブジェクトが、第2オブジェクトに衝突するか否かを判別することが好ましい(S207)。さらに、(2)前記(1)の判別の結果、衝突したと判別された場合、当該第2オブジェクトが所定位置まで移動するか否かを判別することが好ましい(S211)。
【0026】
<第1A−15の態様>
第1A−1の態様において、前記コンピュータは、押圧式入力手段(20dの他、20aや22等も含む)をさらに備え、
前記コンピュータにさらに、
前記押圧式入力手段が単位時間内に押された回数を、前記数値情報の数値として前記メモリに記憶する回数記憶ステップ(S401)を実行させることが好ましい。
【0027】
<第1A−16の態様>
第1A−15の態様において、前記コンピュータにさらに、
マイクから情報が入力されたか否かを判別するマイク入力判別ステップ(S13)を実行させ、
前記回数記憶ステップでは、前記マイク入力判別ステップで情報が入力されたと判別された時を含む前記単位時間内に押された回数を、前記数値情報の数値として記憶することが好ましい。
【0028】
<第1B−1の態様>
表示装置(12、14)に表示されるゲーム空間のオブジェクト(C、206、208、302、308)のコントロール量を算出するためのゲーム装置であって、
マイク(34)、
前記マイクによって入力されたマイク入力情報が記憶されるマイク入力情報記憶手段(48)、および
前記マイク入力情報記憶手段に記憶された前記マイク入力情報から得られる音声特性データに加えて、前記マイク入力情報からとは別に得られ、記憶手段に記憶された数値情報を参照して、前記コントロール量を算出するコントロール量算出手段(42)を備えた、ゲーム装置。
【0029】
「ゲーム装置」としては、専用の装置の他、汎用の装置として例えばパーソナルコンピュータや、携帯電話等の移動体通信端末等の情報処理装置で、ゲーム用のソフトウエアによる処理を実行させるものであってもよい。
【0030】
<第2A−1の態様>
表示装置(12、14)に表示されるゲーム空間のオブジェクト(C、206、208)の表示処理を行うためのゲームプログラムであって、
コンピュータ(10、42)に、
基準点の位置をメモリに記憶する基準点記憶ステップ(S4、図16のS201)、
前記オブジェクト位置を前記メモリに記憶するオブジェクト位置記憶ステップ(図10のS3やS7、図16のS3)、
前記メモリに記憶された前記基準点と前記オブジェクト位置を参照して、前記基準点と前記オブジェクト位置を結ぶ線の方向を計算する方向計算ステップ(S9、S203)、
前記線の方向を前記メモリに記憶する方向記憶ステップ(S9、S203)、
マイク(34)から入力されたマイク入力情報を前記メモリ(48)に記憶するマイク入力情報記憶ステップ(S31、S61)、および
前記マイク入力情報記憶ステップで記憶された前記マイク入力情報から得られる音声特性データと、前記方向記憶ステップで記憶された前記線の方向を参照して、前記マイク入力情報に応じた前記移動速さで又は前記移動距離だけ、かつ、前記線の方向に平行に前記オブジェクトが移動する表示処理を行う表示処理ステップ(S19、S205)を実行させる、ゲームプログラム。
この態様によると、オブジェクトを、マイク入力情報に応じた移動速さで又は前記移動距離だけ移動するように表示させることができ、しかも、基準点とオブジェクト位置の関係で、オブジェクトの移動方向が様々に変化し得る。従って、この態様によると、ゲームの面白さを向上させることができる。
【0031】
<第2A−2の態様>
前記コンピュータにさらに、
前記メモリに記憶された前記基準点と前記オブジェクト位置を参照して、前記基準点と前記オブジェクト位置の距離を計算する距離計算ステップ(S9、S203)、および
前記距離を前記メモリに記憶する距離記憶ステップ(S9、S203)を実行させ、
前記表示処理ステップでは、前記距離記憶ステップで記憶された前記距離の情報をさらに参照して、前記音声特性データと前記距離の情報に応じた前記移動速さ又は前記移動距離だけ、前記オブジェクトが移動する表示処理を行うことが好ましい。
【0032】
<第2B−1の態様>
表示装置(12、14)に表示されるゲーム空間のオブジェクト(C、206、208)の表示処理を行うためのゲーム装置であって、
基準点と前記オブジェクト位置が記憶される記憶手段(48)、
前記記憶手段に記憶された前記基準点と前記オブジェクト位置を参照して、前記基準点と前記所定位置を結ぶ線の方向を計算する方向計算手段(42)、
前記線の方向が記憶される方向記憶手段(48)、
マイク(34)、
前記マイクによって入力されたマイク入力情報が記憶されるマイク入力情報記憶手段(48)、および
前記マイク入力情報記憶手段に記憶された前記マイク入力情報から得られる音声特性データと、前記方向記憶手段に記憶された前記線の方向を参照して、前記マイク入力情報に応じた移動速さで又は前記移動距離だけ、かつ、前記線の方向に平行に前記オブジェクトが移動する表示処理を行う表示処理手段(42)を備えた、ゲーム装置。
【0033】
<第3A−1の態様>
表示装置(12、14)に表示されるゲーム空間のオブジェクト(C)の表示処理を行うためのゲームプログラムであって、
コンピュータ(10、42)に、
入力手段(20、22)からの入力によって前記オブジェクトを表示するオブジェクト表示ステップ(S7)、
マイク(34)から入力されたマイク入力情報を前記メモリ(48)に記憶するマイク入力情報記憶ステップ(S31、S61)、および
前記マイク入力情報記憶ステップで記憶された前記マイク入力情報を参照して、前記オブジェクト表示ステップで表示された前記オブジェクトの表示を消去する表示処理を行うオブジェクト消去ステップ(S19)を実行させる、ゲームプログラム。
この態様によると、操作者が入力手段によって入力したオブジェクトを消去したい場合に、マイクへの入力という簡単なアクションで消去することができる。従って、この態様によると、ゲームの面白さを向上させることができる。
【0034】
<第3A−2の態様>
前記オブジェクト表示ステップでは、前記入力手段による複数回の入力によって前記オブジェクトを複数表示し、
前記オブジェクト消去ステップでは、前記複数のオブジェクトを一括して消去することが好ましい。
この態様によると、マイク入力により、前記複数のオブジェクトを一括して消去できるので、より簡便性を向上させることができる。
【0035】
<第3A−3の態様>
前記コンピュータに、
前記マイク入力情報記憶ステップで記憶された前記マイク入力情報から得た音声の強さ情報を参照して、前記音声の強さが所定値以上か否かを判別する音声強さ判別ステップ(S13)、および
前記オブジェクト消去ステップでは、前記音声強さ判別ステップで前記音声の強さが所定値以上と判別された場合に、前記オブジェクト表示ステップで表示された前記オブジェクトの表示を消去する表示処理を行うことが好ましい。
【0036】
<第3B−1の態様>
表示装置(12、14)に表示されるゲーム空間のオブジェクト(C)の表示処理を行うためのゲーム装置であって、
前記表示装置に前記オブジェクトを表示させるための入力が可能な入力手段(20、22)、
前記入力手段からの入力によって前記オブジェクトを表示するオブジェクト表示手段(42)、
マイク(34)、
前記マイクから入力されたマイク入力情報が記憶されるマイク入力情報記憶手段(48)、および
前記マイク入力情報記憶手段に記憶された前記マイク入力情報を参照して、前記オブジェクト表示手段によって表示された前記オブジェクトの表示を消去する表示処理手段(42)を備えた、ゲーム装置。
【0037】
本明細書において、装置の態様に具現化された発明に対して、プログラムの態様で上記に記載された従属内容を組込むことができるのは、勿論である。少なくとも、プログラムの各態様で「ステップ」と記載されているものを「手段」に置き換えて実現される装置の内容は、本明細書の内容として組込まれる。
【0038】
本明細書においては、1つの手段が、物理的に2つ以上の別れたものによって実現されていてもよいし、2つ以上の手段が物理的に1つのものによって実現されていてもよい。
【0039】
本発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0040】
<第1実施例>
図1を参照して、本発明の第1実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含み、LCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。たとえば、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0041】
なお、この第1実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0042】
また、ゲーム装置10は、後述するように、息吹きかけ判別プログラム(図9の480f、図11、図12参照)を記憶し、息吹きかけ判別装置としても機能する。
【0043】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
【0044】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0045】
操作スイッチ20は、方向指示スイッチ(十字スイッチ)20a,スタートスイッチ20b、セレクトスイッチ20c、動作スイッチ(Aボタン)20d、動作スイッチ(Bボタン)20e、動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rを含む。スイッチ20a,20bおよび20cは、下側ハウジング16bの一方主面であり、LCD14の左側に配置される。また、スイッチ20dおよび20eは、下側ハウジング16bの一方主面であり、LCD14の右側に配置される。さらに、スイッチ20Lおよびスイッチ20Rは、それぞれ、下側ハウジング16bの上端(天面)の一部であり、上側ハウジング16aとの連結部以外に当該連結部を挟むように、左右に配置される。
【0046】
方向指示スイッチ20aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、操作者(プレイヤ)によって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。スタートスイッチ20bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止したりする等に用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【0047】
動作スイッチ20dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ20eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。
【0048】
動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rは、プッシュボタンで構成され、Lボタン20LおよびRボタン20Rは、Aボタン20dおよびBボタン20eと同様の操作に用いることができ、また、Aボタン20dおよびBボタン20eの補助的な操作に用いることができる。
【0049】
また、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル22は、その上面をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作すると、スティック24等の操作(タッチ入力)位置の座標(タッチ座標)を検出して、検出したタッチ座標に対応する座標データを出力する。
【0050】
たとえば、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出面の検出精度もその解像度に対応して256dot×192dotとしてある。ただし、タッチパネル22の検出精度は、LCD14の表示画面の解像度よりも低くてもよく、高くてもよい。
【0051】
LCD12およびLCD14には異なるゲーム画像(ゲーム画面)を表示することができる。たとえば、レースゲームでは一方のLCDに運転席からの視点による画面を表示し、他方のLCDにレース(コース)全体の画面を表示することができる。また、RPGでは、一方のLCDにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のLCDにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、パズルゲームでは、一方のLCD(たとえば、LCD12)にパズル全体(ゲームマップ)を表示し、他方のLCD(たとえば、LCD14)には、ゲームマップの一部(当該パズルゲームを操作するための画面)を表示することができる。たとえば、ゲームマップの一部を表示した画面では、文字や図形等の画像を描画したり、表示画像(アイコン)等を移動させたりすることができる。さらには、2つのLCD12およびLCD14を合わせて1つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物(敵キャラクタ)を表示することもできる。
【0052】
したがって、プレイヤはスティック24等でタッチパネル22を操作することにより、LCD14に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、文字情報、アイコン等のキャラクタ画像を指示(指定)したり、移動させたり、コマンドを選択したり、さらには、文字や図形(画像)を描画したりすることができる。また、3次元ゲーム空間に設けられる仮想カメラ(視点)の方向を変化させたり、ゲーム画面(ゲームマップ)をスクロール(徐々に移動表示)させたりすることもできる。
【0053】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(第1実施例では、LCD14)の上面にタッチパネル22が設けられるので、2画面(12,14)と2系統の操作部(20,22)とを有する構成になっている。
【0054】
また、この第1実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)近傍に設けられる収納部(収納穴)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要がない。
【0055】
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
【0056】
さらにまた、ゲーム装置10はマイク34を含み、たとえば、マイク34は下側ハウジング16bのLCD14の左斜め下方に設けられる。したがって、たとえば、マイク34からプレイヤの音声(本実施例では特に、息の音声)が入力されると、これに応じて、ゲーム装置10はゲーム処理を実行することができる。
【0057】
なお、図1では表現できないが、下側ハウジング16bの音抜き孔18と対応する位置であり、この下側ハウジング16bの内部にはスピーカ32(図2参照)が設けられる。
【0058】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0059】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア(処理手段)42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるととともに、RAM(記憶手段)48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出カインターフエース回路(以下、「I/F回路」という。)54およびLCDコントローラ60が接続される。
【0060】
コネコタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0061】
ROM28aは、ゲーム装置10で実行すべきゲーム(仮想ゲーム)のためのゲームプログラム、画像(キャラクタ画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)データおよびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データを記憶(セーブ)する。
【0062】
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶されたゲームプログラム、画像データおよび音データ等をRAM48にロードし、ロードしたゲームプログラムを実行する。また、CPUコア42は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM48に記憶しつつゲーム処理を実行する。
【0063】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM48に記憶(ロード)される。
【0064】
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従ってゲーム画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU50およびGPU52のそれぞれに与える。
【0065】
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:キャラクタデータやテクスチャ等のデータ)は、GPU50およびGPU52が、それぞれ、第1のVRAM56および第2のVRAM58にアクセスして取得する。なお、CPUコア42は、描画に必要な画像データをGPU50およびGPU52を介して第1のVRAM56および第2のVRAM58に書き込む。GPU50はVRAM56にアクセスして描画のためのゲーム画像データを作成し、GPU52はVRAM58にアクセスして描画のためのゲーム画像データを作成する。
【0066】
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、GPU50によって作成されたゲーム画像データをLCD12に出力し、GPU52によって作成されたゲーム画像データをLCD14に出力する。また、LCDコントローラ60は、レジスタ62のデータ値が「1」である場合には、GPU50によって作成されたゲーム画像データをLCD14に出力し、GPU52によって作成されたゲーム画像データをLCD12に出力する。
【0067】
なお、LCDコントローラ60は、VRAM56およびVRAM58から直接ゲーム画像データを読み出したり、GPU50およびGPU52を介してVRAM56およびVRAM58からゲーム画像データを読み出したりする。
【0068】
I/F回路54には、操作スイッチ20、タッチパネル22、スピーカ32およびマイク34が接続される。ここで、操作スイッチ20は、上述したスイッチ20a,20b,20c,20d,20e,20Lおよび20Rであり、操作スイッチ20が操作されると、対応する操作信号がI/F回路54でディジタルデータ(操作データ)に変換され、CPUコア42に入力される。また、タッチパネル22からの座標データがI/F回路54を介してCPUコア42に入力される。さらに、CPUコア42は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬声音)などのゲームに必要な音データをRAM48から読み出し、I/F回路54に与える。I/F回路54は、音データをアナログの音声信号に変換して、スピーカ32から出力する。さらにまた、マイク34から入力される音声(音声信号)は、I/F回路54でディジタルデータ(音声データ)に変換され、CPUコア42に入力される。
【0069】
具体的にゲーム画面の例を示して説明することにする。図3はゲーム画面の一例を示す図解図である。図3に示すように、LCD12にはゲーム画面100が表示され、LCD14にはゲーム画面120が表示される。ただし、この実施例では、LCD12とLCD14とを合わせた1つの画面(表示器)として用いるようにしているため、ゲーム画面100とゲーム画面120によって1つの3次元仮想空間(ゲーム空間)が表示される。
【0070】
ゲーム画面100およびゲーム画面120には、空のようなゲーム空間が表示される。ゲーム画面100では、その中央下部にプレイヤキャラクタ102が表示され、背景オブジェクトとしての複数の雲C(詳細にはC1、C2、C3、C4)および雲106が表示され、そして、特定のアイテムとして複数のコイン108が表示される。また、ゲーム画面100の中央上部には、プレイヤキャラクタ102がコイン108を取得することにより得られた点数(スコア)が表示される。図示は省略するが、ゲーム画面100には、他の背景オブジェクトや敵キャラクタなども表示される。雲Cはプレイヤのタッチ入力に従って表示されるのに対し、雲106は背景として予め表示される。
【0071】
ゲーム画面120には、複数の雲Cおよび複数の雲106が表示されるとともに、複数のコイン108が表示される。また、ゲーム画面120には、画面左上部に表示される雲106の上に敵キャラクタ110が表示される。図示等は省略するが、ゲーム画面120には、他の背景オブジェクトや他の敵キャラクタなども表示される。
【0072】
ゲーム画面100と120は、図5の符号109に模式的に示すマップの一部が表示されたものである。即ち、概念的には、マップ109上にLCD12、14が配置された状態となっている。概念的には、固定されたマップ109に対して、LCD12、14の位置が下方に移動するように表示させることで、プレイヤキャラクタ102が空中から地面に向けて下降するようにみせている。これは、逆にいうと、固定されたLCD12、14に対してマップ109が上方に移動するように表示させている、ともいえる。
【0073】
本実施例では、プレイヤキャラクタ102は、プレイヤの指示によらず、下向きに移動する。また、ゲーム中では、プレイヤは、スティック24等を用いてLCD14(タッチパネル22)上を押圧等することにより、LCD14上に雲104を表示させ、プレイヤキャラクタ102を、この雲Cの上を滑るように左右に移動させることができる。ただし、雲Cは、タッチパネル22から入力される座標データを一定時間(1フレーム:画面更新の単位時間)毎に検出し、その座標データが示す座標(検出座標)に対応するLCD14の位置(座標位置)に表示される。プレイヤは、プレイヤキャラクタ102がコイン108を獲得できるように、スティック24等で雲Cを描くことが可能である。図3に示すように、たとえば、プレイヤキャラクタ102がコイン108を獲得する毎に、スコアが1加算(+1)される。
【0074】
図4は、操作者がマイク34に息を吹きかけることで、複数の雲C1〜C4を吹き飛ばしている途中の状態を示す。これらの雲Cは、初速(定数L×息の強さS/ベクトルAの大きさ)で、ベクトルAの向きに平行に移動する。ベクトルAは、基準点105から雲Cの中心位置に向かうベクトルである。この処理の詳細については、図10等を参照して後述する。
【0075】
このように、このゲームでは、息による音声で雲Cを吹き飛ばすことにしている。この場合、操作者が息による音声以外の音声を発した場合にも、雲を吹き飛ばしてしまったのでは、操作者とって意図しない事態を招くことになってしまう。したがって、息による音声と、それ以外の音声を精度よく判別することが望まれる。
【0076】
たとえば、息を吹きかける音(息の音声)についての音声素片の波形パターンを予め記憶しておき、記憶しておいた音声素片と入力された音声の音声素片とを比較して、プレイヤが息を吹きかけたかどうかを判断する方法がある。また、高速フーリエ変換処理(FFT)により、入力された音声のスペクトラムを算出して、算出したスペクトラムと予め記憶しておいた息の音声についてのスペクトラムとを比較して、プレイヤが息を吹きかけたかどうかを判断する方法もある。
【0077】
しかし、一般的に、息の音声は、それを発するプレイヤの体格や息を吹きかける強さ等によってその波形パターンが変化するものであり、前者の場合には、息の音声の認識率を向上させようとすると、様々なパターンの音声素片をメモリに記憶しておく必要がある。つまり、メモリ容量が増大してしまう。これを回避するため、メモリに格納しておく音声素片を少なくすると、波形パターンの異なる種々の息の音声を正確に認識することができず、認識率が低下してしまう。
【0078】
また、後者の場合には、息の音声についてのスペクトラムをかなり正確に測定できるので、息の吹きかけか否かを正解に認識することができるが、複雑な計算処理が必要であるため、処理負担が大きくなってしまう。
【0079】
そこで、この第1実施例では、入力される音声に対応する音声波形のゼロクロスに基づいて、息の吹きかけ音であるか否かを判別するようにしてある。ただし、第1実施例を含む以下の実施例では、上記した息の吹きかけの判断方法を採用してもよい。
【0080】
たとえば、図6には、息がマイク34に当たるときに発生する波形すなわち息の音声波形の一例が示される。周知のとおり、ゼロクロスは、音声波形の振幅がプラスからマイナス、およびマイナスからプラスへ変化するときに、0レベルと交差する点(境界点)である。このゼロクロスの間隔時間t(msec)に基づいて息の音声であるか否かを判別するのであるが、この第1実施例では、着目するのは、音声波形の振幅がマイナスからプラスへ変化するときのゼロクロスである。したがって、ゼロクロス隔時間tは、図7に示すように、波形の振幅がマイナスからプラスへ変化するときのゼロクロスであり、連続する2つのゼロクロスで規定される時間長である。つまり、音声波形に含まれる各波の周期(周波数)を算出するのである。
【0081】
ただし、検出するゼロクロスの間隔時間tは、波形の振幅がプラスからマイナスへ変化するときのゼロクロスであり、連続する2つのゼロクロスで規定される時間長であってもよい。
【0082】
また、ここでは、簡単のため、間隔時間tの単位を「msec」としてあるが、厳密には、CPUコア42のサンプリングレートは、1/8000secであり、間隔時間tの単位も「1/8000sec」である。以下、この明細書において同じである。
【0083】
なお、この実施例では、波形の振幅がマイナスからプラス、またはプラスからマイナスへ変化するときのゼロクロスに着目するようにしてあるが、これは無駄な処理を削減するためである。
【0084】
上述したように、この第1実施例では、ゼロクロスの間隔時間tに基づいて、息の音声かどうかを判別するのであるが、その際、図8に示すような参照データ482c(RAM48のデータ記憶領域482に記憶される。)が参照される。この参照データ482cは、実験等により、経験的に得られたデータであり、入力された音声が参照データ482cに含まれるいずれかの条件を満たせば、息の音声とみなし、これが所定時間継続すれば(第1実施例では、連続する2フレーム)、息の音声であると判別(認識)される。また、入力された音声が息の音声として判別された場合には、ゼロクロスの数に基づいて、息(風)の強さが区別(決定)される。
【0085】
図8に示すように、参照データ482cは、テーブルデータで表され、エリアの番号に対応して、8フレーム分のゼロクロスの個数に基づく数値fの範囲が記述され、それに対応して、間隔時間tの分布が記述される。つまり、数値fに対応して、息の音声についての周波数分布が記述されているのである。ここで、「フレーム」は、画面(ゲーム画面)の更新単位時間であり、たとえば1/60秒に設定される。エリアの欄に記述された番号は、数値fの範囲を識別するための識別情報である。数値fの欄には、バッファすなわちデータ記憶領域482に記憶されている過去(直近の)8フレーム分のゼロクロス(マイナスからプラスへ変化するときのゼロクロス)の個数を8倍した数値の範囲を示してある。間隔時間tの分布は、4つのグループA,B,C,Dで示され、各グループは間隔時間tの範囲で区別される。具体的には、グループAでは間隔時間tの範囲は2〜25(2≦t≦25)であり、グループBでは間隔時間tの範囲は26〜50(26≦t≦50)であり、グループCでは間隔時間tの範囲は51〜75(51≦t≦75)であり、そして、グループDでは間隔時間tの範囲は76以上(t≧76)である。各グループには、数値fに対応して、該当する間隔時間tの個数の設定範囲または設定値が記述される。ただし、この設定範囲または設定値は、1フレーム分の音声波形に含まれるゼロクロスの間隔時間tの分布を調べるための数値範囲または数値(条件)である。
【0086】
たとえば、入力された音声波形についての8フレーム分のゼロクロスの個数の8倍の数値fが200〜299の範囲内である場合には、エリア2が選択される。次に、入力された音声波形のうち、現フレームの直前のフレームについてのゼロクロスの間隔時間tの分布がエリア2に対応するグループA、グループB、グループCおよびグループDの各条件(ここでは、2<xA<40,1<xB<19,0≦xC<9,0≦xD<6)を満たすかどうかを判断する。つまり、周波数分布が一致するか否かを判断する。具体的には、それぞれのグループに含まれる間隔時間tの個数をカウントし、各グループについてのカウント値(xA,xB,xC,xD)が予め設定された数値範囲内であるかどうかを判断する。ただし、数値範囲に代えて数値が設置されている場合には、当該数値を満たすかどうかを判断する。これらの条件を満たす状態が2フレーム以上継続すれば、入力された音声は息の音声であると判別される。このとき、数値fに基づいて、ゲームにおける息(風)の強さが決定される。たとえば、息(風)の強さは、1〜255(8ビットの2値データ:“00000001”〜“11111111”)で示され、数値fに基づいて算出される。具体的には、息(風)の強さSは数1に従って算出される。
【0087】
[数1]
S=(f/7)−13
【0088】
図9は、図2に示したRAM48のメモリマップを示す図解図である。この図9を参照して、RAM48は、ゲームプログラム記憶領域480およびデータ記憶領域482を含む。ゲームプログラム記憶領域480は、CPUコア42によって実行されるゲームプログラムを記憶し、このゲームプログラムは、ゲームメイン処理プログラム480a、ゲーム画像生成プログラム480b、ゲーム画像表示プログラム480c、基準点設定プログラム480d、タッチ入力検出プログラム480e、息吹きかけ判別プログラム480f、座標データリセットプログラム480g、ベクトル計算プログラム480h、および速度算出プログラム480iなどによって構成される。
【0089】
ゲームメイン処理プログラム480aは、上述したようなゲームのメインルーチンを処理するためのプログラムである。ゲーム画像生成プログラム480bは、後述する画像データ482aを用いて、プレイヤキャラクタ102、敵キャラクタ(敵キャラクタ110など)、敵キャラクタ以外のノンプレイヤキャラクタ(コイン108、風船122、ロケット、UFOなど)および背景オブジェクト(空、雲C、雲106など)などのゲーム画像を生成するためのプログラムである。ゲーム画像表示プログラム480cは、ゲーム画像生成プログラム480bに従って生成されたゲーム画像、すなわち上述したようなゲーム画面100およびゲーム画面120をLCD12およびLCD14に表示するためのプログラムである。ただし、この実施例では、CPUコア42は、ゲーム画像表示プログラム480cに従って、ゲーム画面100およびゲーム画面120のスクロールも実行する。
【0090】
基準点設定プログラム480dは、図4に示す基準点105の位置を設定するためのものである。タッチ入力検出プログラム480eは、プレイヤによるタッチ入力があるか否かを一定時間(この実施例では、1フレーム)毎に検出して、後述するタッチ入力フラグ482lの成立(オン)/不成立(オフ)を制御するとともに、タッチ入力が有る場合には、当該タッチ入力による検出座標に対応する座標データをデータ記憶領域482cに時系列に従って記憶(一時記憶)するためのプログラムである。ただし、タッチ入力があるか否かは、タッチパネル22から座標データが入力されるか否かで判断される。
【0091】
息吹きかけ判別プログラム480fは、音声入力が息吹きかけによるものであるか否かを判別するためのプログラムである。座標データリセットプログラム480gは、タッチ入力が有り(オン)の状態から無し(オフ)の状態に変化したときに、座標データ記憶領域482fに記憶された1または2以上の座標データをリセット(消去)するためのプログラムである。
【0092】
ベクトル計算プログラム480hは、基準点105から雲Cの中心に向かうベクトルAを計算するためのプログラムである。速度算出プログラム480iは、息吹きかけがあった場合に、雲Cを吹き飛ばす速度を算出するためのプログラムである。
【0093】
なお、図示は省略するが、ゲームプログラム記憶領域480には、音再生プログラムやバックアッププログラムなども記憶される。音再生プログラムは、音(音楽)データを用いて、ゲームに必要な音(音楽)を再生するためのプログラムである。また、バックアッププログラムは、ゲームの進行に従って発生するデータ(ゲームの途中データや結果データ)をプレイヤの指示や所定のタイミング(イベント)に従ってメモリカード28のRAM28bに記憶(セーブ)するためのプログラムである。
【0094】
データ記憶領域482には、オブジェクトデータ482a、サウンドデータ482b、参照データ482c、基準点データ482d、入力音声データ482e、座標データ482f、ベクトルデータ482g、雲速度データ482h、息強さデータ482iなどのデータが記憶されるとともに、息吹きかけ音擬制フラグ482j、息吹きかけ音認識フラグ482kおよびタッチ入力フラグ482lが設けられる。なお、符号482a〜482lは、各データの記憶領域という意味でも使用する。
【0095】
オブジェクトデータ482aは、オブジェクト画像の生成のために用いられるデータであり、ポリゴンデータやテクスチャデータのような画像データを含むとともに、当該オブジェクトの位置(座標)についてのデータ(位置データ)を含む。図示は省略するが、オブジェクトデータ482aは、オブジェクト毎に記憶される。
【0096】
サウンドデータ482bは、ゲームに必要な音(音楽)を再生するために必要なデータである。参照データ482cは、図8に示したようなテーブルデータであり、後述する息吹きかけ判別処理(図11および図12参照)で用いられる。入力音声データ482eは、マイク34を介して入力された音声信号(音声データ)である。なお、この第1実施例では、データ記憶領域482には、少なくとも8フレーム分の音声データが記録(一時記憶)される。
【0097】
座標データ482fは、タッチ入力検出プログラム480eに従って検出されるとともに、記憶された1または2以上の座標データであり、2以上の座標データが存在する場合には、時系列に従って順番に記憶される。ベクトルデータ482gは、ベクトル計算プログラム480hに従って計算された基準点105から雲Cの中心に向かうベクトルAのデータである。雲速度データ482hは、雲速度算出プログラム480iに従って算出された雲Cの速度のデータである。
【0098】
息吹きかけ音擬制フラグ482jは、息吹きかけ判別処理においてオン(成立)/オフ(不成立)されるフラグである。この息吹きかけ音擬制フラグ482jは、息吹きかけ音とみなされる場合にオンされ、息吹きかけ音とみなされない場合にはオフされる。たとえば、息吹きかけ音擬制フラグ482jは、1ビットのレジスタで構成され、当該フラグがオンされると、レジスタにデータ値「1」が設定され、逆に、当該フラグがオフされると、レジスタのデータ値「0」が設定される。息吹きかけ音認識フラグ482kもまた、息吹きかけ判別処理においてオン/オフされるフラグである。この息吹きかけ音認識フラグ482kは、息吹きかけ音と判別(認識)された場合にはオンされ、息吹きかけ音と判別されない場合にはオフされる。たとえば、息吹きかけ音認識フラグ482kは、1ビットのレジスタで構成され、当該フラグがオンされると、レジスタにデータ値「1」が設定され、逆に、当該フラグがオフされると、レジスタのデータ値「0」が設定される。
【0099】
タッチ入力フラグ482lは、タッチ入力のオン/オフの状態を示すフラグであり、タッチ入力検出プログラム480eに従ってオン/オフが切り換えられる。この実施例では、タッチ入力フラグ482lは、1ビットのレジスタで構成され、タッチ入力がオンの場合には、レジスタのデータ値が「1」に設定され、タッチ入力がオフの場合には、レジスタのデータ値が「0」に設定される。
【0100】
なお、図示は省略するが、データ記憶領域482には、ゲームデータ(途中データ、結果データ)等の他のデータや、イベントフラグ等の他のフラグも記憶される。
【0101】
具体的には、図2に示したCPUコア42は図10に示すゲーム処理を実行する。図10を参照して、CPUコア42はゲーム処理を開始すると、ステップS1で、初期化処理を実行する。ここでは、プレイヤキャラクタ102や、ノンプレイヤオブジェクトや、背景オブジェクトの配置位置を初期位置に設定したり、バッファ等をクリアしたりする。ただし、ゲームを前回の続きから開始する場合には、セーブしておいたゲームデータをメモリカード28のRAM28bから読み出して、RAM48にロードする。
【0102】
続くステップS3では、ゲームメイン処理を実行する。ここでは、プレイヤキャラクタ102以外のオブジェクト(ノンプレイヤオブジェクト、背景オブジェクト)についての画像処理(アニメーション処理)、音再生処理やバックアップ処理などが実行される。
後述するように、入力された雲CがLCD12、14上に存在する場合は、当該雲Cも背景オブジェクトの一部とみなされる。よって、プレイヤキャラクタ102が下降するように表示するゲーム画面のスクロールに伴って、雲Cも移動する。この場合の雲Cの移動は、マイク34への息の吹きかけによる移動(吹き飛ばし)とは異なる。ステップS3の処理には、この画面スクロールに伴う雲Cの位置の移動処理、およびその位置を記憶領域482aに記憶する処理が含まれる。
【0103】
続くステップS4では、基準点設定プログラム480dに従って、図4に示す基準点105の設定、記憶処理を実行する。基準点105は、図4に示すように、LCD14外の、LCD14よりも下方の位置に設定される。基準点105は、図5に示すマップ109上の固定位置にあるものではない。基準点105は、LCD14の左上隅に対応する点107(座標(x、y))から、x軸方向に長さdx、y軸方向に長さdyだけずらした位置(x+dx、y−dy)に設定する。dxは、LCD14の幅の半分の値に等しい。基準点105の座標位置は、背景画面のスクロールに伴って逐次更新される(ただし、LCD14に対する相対位置は変わらない)。更新される基準点105の座標位置は、基準点位置の記憶領域482dに、当該記憶領域482dを逐次更新しながら記憶する。
【0104】
続くステップS5では、タッチ入力が有るかどうかを判断する。ステップS5で“NO”であれば、つまりタッチ入力が無ければ、後述するステップS11(息吹きかけ判別処理)に進む。図示は省略するが、このとき、CPUコア42は、タッチ入力フラグ482lをオフする。
【0105】
一方、ステップS5で“YES”であれば、つまりタッチ入力が有れば、ステップS6で、当該タッチ入力位置を、RAM48の座標データの記憶領域482fに記憶する。続くステップS7では、CPUコア42によって、雲Cの位置は、この時点では、タッチ入力位置としてデータ記憶領域482aに記憶される。そして、記憶領域482に記憶されたタッチ入力位置を参照して、雲の図形を描画する。つまり、ステップS7では、タッチパネル22から入力された座標を中心に、雲Cを表示する。
ただし、上記ステップS3で述べたように、雲Cは背景オブジェクトであるから、雲Cの位置は、画面のスクロールに伴って更新される。更新された雲Cの位置は、CPUコア42によって逐次、データ記憶領域482aに記憶される。そして、更新された位置に雲Cを表示する。
プレイヤがタッチ入力する軌跡に従って雲C1、C2、C3、C4が表示される。また、図示は省略するが、このとき、CPUコア42は、タッチ入力フラグ482lをオンする。
【0106】
続くステップS9では、CPUコア42は、記憶領域482dに記憶された基準点データと、記憶領域482aに記憶された雲Cの位置データを参照して、ベクトル計算プログラム480hに従って、描画されている各雲C1〜C4について、基準点105から当該雲C1〜C4の中心位置に向かうベクトルA1〜A4を計算し、これらを記憶領域482gに記憶させる。
【0107】
続くステップS11では、後に詳細に説明する息吹きかけ判別処理(図11および図12参照)を実行して、ステップS13で、息吹きかけを認識したかどうかを判断する。具体的には、息吹きかけ音認識フラグ482kがオンであるかどうかを判断する。ステップS13で“YES”であれば、つまり息吹きかけ音認識フラグ482kがオンであれば、息吹きかけを認識したと判断する。そして、ステップS15で、息強さデータ記憶領域482iに息(風)の強さSの値を記憶して、ステップS18に進む。しかし、ステップS13で“NO”であれば、つまり息吹きかけ音認識フラグ482kがオフであれば、息吹きかけを認識していないと判断する。そして、ステップS17で、息強さデータ記憶領域482iに0を記憶して、ステップS21に進む。
【0108】
ここで、記憶領域482iに記憶される息の強さSは、雲Cを移動させるか否か、あるいは雲Cをどのような速さで移動させるかを判断するためのものであり、数値(1〜255)によって息(風)の強さが区別される。息強さデータ記憶領域482iに0が記憶される場合には、雲Cを移動させない。
【0109】
ステップS18では、CPUコア42は、記憶領域482iに記憶された息の強さSと、記憶領域482gに記憶されたベクトルAを参照して、雲速度算出プログラム480iに従って、LCD14に描画されている各雲Ck(k:1〜4の自然数)の初速を(息の強さS/ベクトルAkの大きさ)×定数Lと算出する。つまり、初速を息の強さSに比例し、ベクトルAkの大きさに反比例する大きさとする。そして、CPUコア42は、これらの初速データと、移動方向データ(ベクトルAkの向き)を、記憶領域482hに記憶する。
【0110】
続くステップS19では、CPUコア42は、データ記憶領域482hに記憶された雲Cの速度データを参照して、画像表示プログラム480cに従って、各雲Ckを初速(定数L×息の強さS/ベクトルAkの大きさ)で、ベクトルAkの向きに移動させる表示処理を実行する。この移動の際には、CPUコア42は、各雲Ckが時間の経過とともに減速するように表示処理する。しかしながら、その減速の程度は小さく、息の強さSが相当に弱くなければ、CPUコア42は、各雲CkをLCD12、14内からこれらの外に吹き飛ばすようにみえる表示処理をする。言い換えると、CPUコア42は、操作者によってマイク34に息が吹きかけられた場合、雲Cを消去するように表示処理をする。
【0111】
ステップS21では、ゲーム終了かどうかを判断する。つまり、プレイヤによってゲーム終了が指示されたり、ゲームオーバになったりしたかどうかを判断する。ステップS21で“NO”であれば、つまりゲーム終了でなければ、ステップS3に戻る。一方、ステップS21で“YES”であれば、つまりゲーム終了であれば、ゲーム処理を終了する。
【0112】
なお、図10の処理ルーチンは、単位時間(例えば、1フレーム)毎に繰り返し実行されるものである。したがって、単位時間毎に、ステップS5のタッチ入力の検出処理や、ステップS11の息吹きかけ判別処理(音声検出処理)が実行される。
【0113】
図11および図12は、図10に示したステップS11の息吹きかけ判別処理を示すフロー図である。図11に示すように、CPUコア42は息吹きかけ判別処理を開始すると、ステップS31で、音声検出処理を実行する。そして、マイク34を通して入力される音声に対応するする音声データをデータ記憶領域482に記憶する。ただし、音声検出処理を実行する場合には、ノイズゲート処理も実行される。具体的には、一定レベル以下の音声データを単なる雑音とみなして、入力された音声データから排除(リジェクト)するようにしてある。続くステップS33では、バッファ(RAM48のバッファ領域)内で振幅ゼロの部分をマイナスからプラスに交差した回数(ゼロクロスの個数)をカウントし、直近の8フレーム分の回数(個数)を8倍した値をf(数値f)として保存する。つまり、入力音声データ482eを参照して、数値fを求める。
【0114】
続いて、ステップS35では、数値fが98から1883の間(98≦f≦1883)であるかどうかを判断する。ここでは、息の音声であるかどうかを簡易に判断しているのである。つまり、ゲームで使用すると想定される息(風)を、実際にマイク34に吹きかけた時の数値fがおおよそその範囲(98≦f≦1883)となるためである。また、息の強さSを1〜255の間で設定するためでもある。ステップS35で“NO”であれば、つまり数値fが97以下または1884以上であれば、そのままステップS47に進む。一方、ステップS35で“YES”であれば、つまり数値fが98から1883の間であれば、ステップS37で、1フレーム分の音声波形に含まれる各交差間の間隔時間tを計測する。ここでは、図7を用いて説明したように、マイナスからプラスへのゼロクロス間の間隔時間tをそれぞれ計測するのである。
【0115】
続くステップS39では、各間隔時間tの分布を検出する。つまり、計測した間隔時間tをグループ別に分類する。具体的には、ステップS37で計測した間隔時間tを、グループA〜グループDのそれぞれに設定される時間長に応じて、各グループに属する間隔時間tの個数をそれぞれカウントするのである。したがって、カウント値(xA,xB,xC,xD)が得られる。次にステップS41では、ステップS39で検出した分布と参照データ482cとを比較する。つまり、数値fの値に応じてエリア(の番号)を選択し、選択されたエリアに対応して記述されるグループA〜グループDの設定範囲内に、カウント値(xA,xB,xC,xD)が収まるか、または設定値と一致するかどうかをそれぞれ判断する。
【0116】
続いて、ステップS43では、分布は条件を満たすかどうかを判断する。つまり、ステップS41の判断結果が、グループA〜グループDのそれぞれの設定範囲内であるか、または設定値と一致するかどうかを判断する。ここで、すべての設定範囲または設定値を満たす場合には、分布は条件を満たす(周波数分布が一致する)と判断され、いずれか1つの設定範囲または設定値でも満たさない場合には、分布は条件を満たさない(周波数分布が一致しない)と判断される。ステップS43で“YES”であれば、つまり分布が条件を満たす場合には、息吹きかけ音に近いとみなして、図12に示すステップS49に進む。しかし、ステップS43で“NO”であれば、つまり分布が条件を満たさない場合には、息吹きかけ音でないと判別して、ステップS45で、息吹きかけ音擬制フラグ482jをオフし、さらに、ステップS47で、息吹きかけ音認識フラグ482kをオフして、図12に示すように、息吹きかけ判別処理をリターンする。
【0117】
図12に示すように、ステップS49では、息吹きかけ音擬制フラグ482jがオンであるかどうかを判断する。つまり、2フレーム連続して、息吹きかけ音に近いとみなされたかどうかを判断する。ステップS49で“YES”であれば、つまり息吹きかけ音擬制フラグ482jがオンであれば、息吹きかけ音と判別し、ステップS51で、息吹きかけ音認識フラグ482kをオンし、ステップS53で、数1に従って、息の強さSを算出し、これを息強さデータの記憶領域482iに記憶する。そして、息吹きかけ判別処理をリターンする。一方、ステップS49で“NO”であれば、つまり息吹きかけ音擬制フラグ482jがオフであれば、息吹きかけに近いとみなされたフレームが連続していないと判断し、ステップS55で、息吹きかけ音擬制フラグ482jをオンして、息吹きかけ判別処理をリターンする。
【0118】
第1実施例によると、雲Cの移動速さは、基準点105から雲Cの中心に向かうベクトルAの大きさに反比例する。よって、ゲームプレイヤが同じ強さの息をマイク34に吹きかけた場合でも、基準点105に近い場所に位置する雲Cは速く移動し、基準点105から遠い場所に位置する雲Cは相対的に遅く移動するように表示させることができる。また、雲Cの移動する向きは、上記ベクトルAの向きに平行であるから、ゲームプレイヤがマイク34に息を吹きかけることで、複数の雲Cを、同一の向きではなく、基準点105を中心とする放射状に吹き飛ばすように表示させることができる。
このように、第1実施例によると、例えば、同じ強さの息を吹きかけた場合でも、雲Cが常に同じ速さで同じ向きに移動するのではなく、雲Cの位置によって、その移動の速さと向きが様々に変化する。従って、第1実施例によると、ゲームプレイヤを視覚的に楽しませるという、ゲームにとって重要な要素を実現できる。
【0119】
また、第1実施例によれば、ゼロクロスの間隔時間の分布が予め設定された分布と一致し、その状態が所定時間連続するとき、息吹きかけ音と判別するので、息を吹きかける操作を正確に認識することができる。
【0120】
また、第1実施例では、参照データのようなテーブルデータを記憶しておくだけなので、様々な音声素片の波形パターンを記憶しておく場合に比べて、メモリ容量を削減することができる。
【0121】
さらに、第1実施例では、ゼロクロスの間隔時間の分布を調べるだけなので、煩わしい演算処理が不要であり、したがってCPUの処理負担を軽減することができる。
【0122】
さらにまた、入力される音声波形のゼロクロスの個数に応じて、息または風の強さを設定するので、簡単に息や風の強さを設定(検出)できる。さらには、息や風の強さで異なるゲーム処理(画像処理)を実行するので、ゲームの面白みを増すことができる。
【0123】
なお、この第1実施例では、2つのLCDを備えるゲーム装置について説明したが、1つのLCDのみを備えるものであってもよい。また、タッチパネルを用いないものであってもよい。
【0124】
<変形例>
変形例のゲーム装置10は、息吹きかけ判別処理が異なる以外は、第1実施例のゲーム装置10と同じであるため、重複した説明は省略する。この変形例では、入力された音声波形についてのゼロクロスの間隔時間tの最大値と最小値とに基づいて、息吹きかけ音か否かを判別(認識)するようにしてある。したがって、第1実施例で示したような参照データ482cは不要であり、メモリ容量を削減することができる。具体的な息吹きかけ判別処理のフロー図が図13および図14に示される。ただし、第1実施例で説明した処理と同じ処理については簡単に説明することにする。また、変形例の息吹きかけ判別処理では、息の音声に近いとみなされる期間が3フレーム以上継続したときに、息による音声であると判別するようにしてある。したがって、第1実施例で示した息吹きかけ音擬制フラグ482jに変えて、息の音声に近いとみなされる期間(フレーム数)をカウントするためのカウンタ(図示せず)が、たとえば、RAM48のデータ記憶領域482に設けられる。
【0125】
図13を参照して、CPUコア42は息吹きかけ判別処理を開始すると、ステップS61で、音声検出処理を実行する。ここで、ノイズゲート処理が実行されるは、第1実施例の場合(S31)と同様である。続くステップS63では、バッファ内の振幅ゼロの部分をマイナスからプラスに交差した回数をカウントし、直近の8フレーム分の回数を8倍した値を数値fとして保存する。そして、ステップS65で、数値fが98から1883の間に収まるかどうかを判断する。ステップS65で“NO”であれば、そのままステップS73に進む。一方、ステップS65で“YES”であれば、ステップS67で、1フレーム分の音声波形に含まれる各交差間の間隔時間tを計測する。
【0126】
続くステップS69では、間隔時間tの最大値(zero−cross−max)と最小値(zero−cross−min)との比率(zero−cross−max/zero−cross−min)を算出する。そして、ステップS71では、ステップS69で算出した比率が第1所定値(ここでは、7.0)以上であり、かつ最大値が第2所定値(ここでは、50(1/8000sec))以上であるかどうかを判断する。つまり、ゼロクロスの間隔時間tが所定の条件を満たすかどうかを判断するのである。ステップS71で“YES”であれば、つまり比率が7.0以上であり、かつ最大値が50(1/8000sec)以上である場合には、息吹きかけ音に近いとみなして、図14に示すステップS77に進む。しかし、ステップS71で“NO”であれば、つまり比率が7.0未満、または最大値が50(1/8000sec)未満或いはその両方である場合には、息吹きかけ音でないと判別し、ステップS73で、息吹きかけ音カウンタをリセット(カウント値=0)し、ステップS75で、息吹きかけ音認識フラグ482kをオフして、図14に示すように、息吹きかけ判別処理をリターンする。なお、第1所定値および第2所定値は、実験等により、経験的に得られた値である。
【0127】
図14に示すように、ステップS77では、息吹きかけ音カウンタのカウント値が3であるかどうかを判断する。つまり、3フレーム連続して、息吹きかけ音に近いとみなされたかどうかを判断する。ステップS77で“YES”であれば、つまり息吹きかけ音カウンタのカウント値が3であれば(3以上であれば)、息吹きかけ音と判別し、ステップS79で、息吹きかけ音擬制フラグ482kをオンし、ステップS81で、数1に従って、息(風)の強さSを算出し、これを息強さデータの記憶領域482iに記憶する。そして、息吹きかけ判別処理をリターンする。一方、ステップS77“NO”であれば、つまり息吹きかけ音カウンタのカウント値が3でなければ(3未満であれば)、ステップS83で、息吹きかけ音カウンタをインクリメントして、息吹きかけ判別処理をリターンする。
【0128】
変形例においても、第1実施例と同様に、入力される音声波形のゼロクロスの個数が一定範囲内であり、ゼロクロスの間隔時間の最大値および最小値が所定時間連続して所定の条件を満たすとき、息吹きかけ音と判別するので、息を吹きかける操作を正確に判別することができる。
【0129】
また、変形例では、参照データを設ける必要がないため、第1実施例で示した場合よりもさらにメモリ容量を削減することができる。
【0130】
<第2実施例>
第2実施例は、第1実施例のゲーム装置20に、第1実施例とは異なる内容を含む情報が記憶されたメモリカード28を接続した場合の実施例である。従って、ゲーム装置20のハードウエア構成は第1実施例と同じであり、説明を省略する。
図15は、第2実施例においてLCD14に表示されるゲーム内容を示すものである。なお、LCD16は、第2実施例においては、使用してもよいし、しなくてもよい。図15は、ビリヤードゲームを示すものである。図15のLCD14上には、ビリヤード台202の平面図が示されている。ビリヤード台202の4隅には、ポケット(穴)210が形成されている。ビリヤード台202上には、キュー203で直接突くための球(手球)206と、その手球206を当てることで、ポケット210に落とすための球(的球)208が配置されている。符号204は、基準点であり、操作者によってその位置を任意に設定可能である。基準点204から手球206に向かうベクトルAの大きさは、キュー203で手球206を突いたときのその手球206の初速に反比例しており、ベクトルAの向きは、手球206の移動する向きとなる。一方、息の強さSは、手球206の初速に比例している。
【0131】
図16は、第2実施例のメイン処理を示すフローチャートであり、第1実施例の図10に類似する。図16については、図10と異なる部分を中心に説明する。まず、ステップS1の初期化処理を実行し、続くステップS3のゲームメイン処理を実行する。この処理には、図15の手球206と的球210の位置を必要に応じて計算し、オブジェクトの位置データとして、データ記憶領域482aに記憶する処理を含む。続くステップS5で“YES”であれば、つまりタッチ入力が有れば、ステップS6で、当該タッチ入力位置を、RAM48の座標データの記憶領域482fに記憶する。
【0132】
続くステップS201では、当該記憶領域482fを参照して得られたタッチ入力位置に基準点204を設定する。CPUコア42は、上記タッチ入力位置を基準点204の位置として、基準点データの記憶領域482dに記憶する。続くステップS203では、CPUコア42は、記憶領域482aに記憶された手球206の位置データと、記憶領域482dに記憶された基準点の位置データを参照して、ベクトル計算プログラム480hに従って、基準点204から手球206の中心に向かうベクトルAを計算し、これを記憶領域482gに記憶させる。
【0133】
続くステップS11では、第1実施例で詳細に説明された息吹きかけ判別処理(図11および図12参照)を実行して、ステップS13で、息吹きかけを認識したかどうかを判断する。ステップS13で“YES”であれば、息吹きかけを認識したと判断し、ステップS15で、息強さデータ記憶領域482iに息(風)の強さSの値を記憶して、ステップS204に進む。一方、ステップS13で“NO”であれば、息吹きかけを認識していないと判断し、ステップS17で、息強さデータ記憶領域482iに0を記憶して、ステップS21に進む。
【0134】
ここで、記憶領域482iに記憶される息の強さSは、手球206を移動させるか否か、あるいは手球206をどのような初速で移動させるかを判断するためのものであり、数値(1〜255)によって息(風)の強さが区別される。息強さデータ記憶領域482iに0が記憶される場合には、手球206を移動させない。
【0135】
ステップS204では、CPUコア42は、記憶領域482iに記憶された息の強さSと、記憶領域482gに記憶されたベクトルAを参照して、速度算出プログラム480iに従って、LCD14に描画されている手球206の初速を(定数L×息の強さS/ベクトルAの大きさ)と算出する。CPUコア42は、この初速データと、移動方向(ベクトルAの向き)のデータを、記憶領域482hに記憶する。
【0136】
続くステップS205では、CPUコア42は、記憶領域482hに記憶された手球206の速度データを参照して、画像表示プログラム480cに従って、キュー203が、手球206をベクトルAの向きに平行に移動させるように突くように表示させる処理を実行した後、手球206を(初速L×息の強さS/ベクトルAの大きさ)で、ベクトルAの向きに移動させる表示処理を実行する(Lは定数)。この移動の際には、CPUコア42は、ビリヤード台202の上面の摩擦による減速を考慮して、手球206が時間の経過とともに減速するような表示処理をする。
【0137】
続くステップS207では、記憶領域482aに記憶された手球204と的球208の位置と、記憶領域482hに記憶された手球204の速度データを参照して、衝突判別処理プログラムに従って、手球204と的球208が衝突したか否かの判別処理を実行する。そして、衝突したと判別された場合は、ステップS208で、記憶領域482のデータを参照して、的球速度計算プログラムに従って、的球208の移動速さと移動方向を計算し、記憶領域482に記憶する。そして、さらに、記憶領域482に記憶された的球208の移動速さと移動方向を参照して、的球208の移動表示処理を実行する。続くステップS211では、記憶領域482のデータを参照して、ポケットイン判別プログラムに従って、的球208が移動の結果、ポケット210に入るか否かを判別する。ポケット210に入ると判別された場合は、ステップS213で、ポイント処理プログラムに従って、ゲームのポイントを加算する処理を実行する。
【0138】
続くステップS21では、ゲーム終了か否かが判断される。ゲーム終了でないと判断されれば、CPUコア42は、ステップS3のゲームメイン処理を実行する。一方、ゲーム終了と判断されれば、ゲームを終了する。なお、ステップS207又はS211で“NO”の場合にも同様に、ステップS21でゲーム終了か否かが判断される。
【0139】
第2実施例によれば、ゲームプレイヤは、手球206の初速を設定するために、息の強さに加えて、基準点204と手球206の中心との距離も考慮することが要求されるので、面白いゲームを提供することができる。また、ゲームプレイヤがマイク34に吹きかけると、常に一定の向きではなく、基準点204から手球206の中心に向かうベクトルの向きに平行に、手球206を移動させることができるので、これによっても、ゲームの面白さを向上させることができる。
【0140】
<第3実施例>
第3実施例も、第1実施例のゲーム装置20に、第1実施例とは異なる内容を含む情報が記憶されたメモリカード28を接続した場合の実施例である。
図17は、第3実施例においてLCD14に表示されるゲーム内容を示すものである。なお、LCD16は、第3実施例においては、使用してもよいし、しなくてもよい。図17は、符号314で示す上向きの空気流によって、風船308を上限ライン310と下限ライン312の間に収めておける時間を競うゲームである。空気流314は、空気流出力器302によって出力される。空気流出力器302は、タッチパネル22の操作又はカーソルキー20aによって左右に移動させることができる。空気流314の強さは、マイク34によって入力される息の強さSとLCD14の右側に表示されるメータ306の高さHの合計(S+H)である。メータ306の高さHは、メモリカード28内のプログラムによって、自動的に経時的に変化する。従って、操作者は、ライン310、312間に風船を収めるようには、メータ306の高さHが高くなったときには、自己の息の強さSを弱くしなければならない。一方、メータ306の高さHが低くなったときには、自己の息の強さSを強くしなければならない。このように、このゲームでは、メータ306の高さHをみながら、自己の息の強さSを経時的に調節することが要求される。
【0141】
図18は、第3実施例のメイン処理を示すフローチャートであり、第1実施例の図10に類似する。図18については、図10と異なる部分を中心に説明する。CPUコア42は、ステップS1の処理を実行した後、ステップS3のゲームメイン処理を実行する。ステップS3の処理には、出力器302や風船308の位置を必要に応じて計算し、その位置を記憶領域482aに記憶する処理や、メータ306の高さHを経時的に変化させる処理を含む。その後、第1実施例とは異なり、直ちにステップS11の息吹きかけ判別処理(図11および図12参照)を実行し、ステップS13で、息吹きかけを認識したかどうかを判断する。ステップS13で“YES”であれば、息吹きかけを認識したと判断し、ステップS15で、記憶領域482iに息(風)の強さSの値を代入して、ステップS204に進む。しかし、ステップS13で“NO”であれば、息吹きかけを認識していないと判断し、ステップS17で、息強さデータ記憶領域482iに0を記憶して、ステップS309に進む。
【0142】
ここで、記憶領域482iに記憶される息の強さSは、出力器302が空気流314を出すか否か、あるいはどのような強さの空気流314を出すかを判断するためのものであり、数値(1〜255)によって息(風)の強さが区別される。息強さデータ記憶領域482iに0が記憶される場合には、空気流314を出力させない。
【0143】
ステップS301では、CPUコア42は、息吹きかけ認識時のメータ306の高さHのデータを取得し、データ記憶領域482に記憶する。続くステップS302では、記憶領域482iに記憶された息の強さSと、記憶領域482に記憶された息吹きかけ認識時のメータ306の高さHを参照して、空気流の強さ算出プログラムに従って、空気流314の強さを(S+H)と算出し、これを記憶領域482に記憶する。
【0144】
続くステップS303では、CPUコア42は、記憶領域482に記憶された空気流314の強さ(S+H)を参照して、画像表示プログラム480cに従って、空気流出力器302が、強さ(S+H)の空気流314を出力するように情報処理及び表示処理する。
【0145】
続くステップS305では、記憶領域482aに記憶された出力器302や風船308の位置と、記憶領域482に記憶された空気流314の強さ(S+H)を参照して、空気流当たり判別処理プログラムに従って、空気流314が風船308に当たっているか否かを判別する。当たっていると判別された場合は、ステップS307で、記憶領域482のデータを参照して、風船移動計算プログラムに従って、風船308の移動量と移動方向を計算する。続くステップS309では、記憶領域482のデータを参照して、ライン超え判別プログラムに従って、移動した風船308が上限ライン310を上に超えたか、および下限ライン312を下に超えたかを判別する。なお、先に述べたステップS17の処理実行後と、ステップS305で“NO”の場合にも、ステップS309が実行される。
【0146】
ステップS309で“YES”の場合、即ち、風船308が上限ライン310を上に超えた、又は下限ライン312を下に超えたと判別された場合、ゲーム終了となる。一方、ステップS309で“NO”の場合、ステップS3に戻り、ゲームメイン処理を実行する。
【0147】
第3実施例によると、ゲームプレイヤは、自動的に経時的に変化するメータ306の高さHに応じて、自己の息の強さSを経時的に調節することが要求されるので、単に息の強さを強くする、あるいは弱くすることが要求されるゲームに比べて、面白さを向上させることができる。
【0148】
<第4実施例>
第4実施例も、第1実施例のゲーム装置20に、第1実施例とは異なる内容を含む情報が記憶されたメモリカード28を接続した場合の実施例である。
第4実施例のゲーム内容は、LCD14に表示される風船を所定の大きさにまで膨らます時間を競うゲームである。吹きかけた息の強さSと、単位時間内にAボタン20dを押した回数Eの合計(S+E)を、風船の膨張速さとするものである。このように、ゲーム内容は図示しなくても明確であるため、図示を省略する。
【0149】
図19は、第4実施例のメイン処理を示すフローチャートであり、第1実施例の図10に類似する。図19については、図10と異なる部分を中心に説明する。ステップS1、S3の処理が実行された後、第1実施例とは異なり、直ちにステップS11の息吹きかけ判別処理(図11および図12参照)を実行し、ステップS13で、息吹きかけを認識したかどうかを判断する。ステップS13で“YES”であれば、息吹きかけを認識したと判断し、ステップS15で、息強さデータ記憶領域482iに息(風)の強さSの値を記憶して、ステップS204に進む。しかし、ステップS13で“NO”であれば、息吹きかけを認識していないと判断し、ステップS17で、息強さデータ記憶領域482iに0を記憶して、ステップS409に進む。
【0150】
ここで、息強さデータ記憶領域482iに記憶される息の強さSは、風船を膨らますか否か、あるいはどのような膨張速さで風船を膨らませるかを判断するためのものであり、数値(1〜255)によって息(風)の強さが区別される。息強さデータ記憶領域482iに0が記憶される場合には、風船を膨らませない。
【0151】
ステップS400では、CPUコア42は、息吹きかけを認識した時点を含む単位時間内にAボタン20dが押されたか否かを検出する。押されている場合は、ステップS401で、当該単位時間内にAボタン20dが押された回数Eを検出し、データ記憶領域482に記憶する。続くステップS402では、記憶領域482iに記憶された息の強さSと、記憶領域482に記憶されたボタン押し回数Eを参照して、膨張速さ算出プログラムに従って、風船の膨張速さを(S+E)と算出し、これを記憶領域482に記憶する。
【0152】
続くステップS403では、CPUコア42は、記憶領域482に記憶された風船の膨張速さ(S+E)を参照して、画像表示プログラム480cに従って、膨張速さ(S+E)で風船が膨らむように情報処理及び表示処理する。
【0153】
続くステップS405では、記憶領域482に記憶された風船の膨張速さ(S+E)を参照して、風船膨らみ判別プログラムに従って、風船が所定の体積まで膨らんだか否かを判別する。前記所定の体積まで膨らんだと判別された場合は、時間表示プログラムに従って、風船が前記所定の体積まで膨らむのに要した時間を表示する。そして、ゲームを終了する。一方、ステップS405で“NO”の場合は、ステップS409に進み、制限時間に達したか否かが判断される。制限時間に達している場合は、ゲームを終了する。一方、制限時間に達していない場合は、ステップS3に戻り、ゲームメイン処理を実行する。
なお、ステップS17の処理を実行後、又はステップS400で“NO”の場合も、ステップS409に進む。
【0154】
第4実施例によると、ゲームプレイヤは、風船を速く膨らませるためには、マイク34で息を強く吹きかけるだけでなく、Aボタン20dを速く連打することが要求されるので、単に息を吹きかけるのみで風船を膨らませる場合に比べて、面白さの向上したゲームを実現することができる。
【図面の簡単な説明】
【0155】
【図1】本発明のゲーム装置の一例を示す図解図である。
【図2】図1に示すゲーム装置の電気的な構成を示すブロック図である。
【図3】第1実施例におけるゲーム画面の一例を示す図解図(1)である。
【図4】第1実施例におけるゲーム画面の一例を示す図解図(2)である。
【図5】マップと、2つのLCDと、基準点との関係を示す図である。
【図6】マイクから入力される息による音声の音声波形の時間変化を示すグラフである。
【図7】図6に示す音声波形の一部を拡大したグラフである。
【図8】息吹きかけ判別処理に用いる参照データの具体的な内容を示す図解図である。
【図9】図2に示すゲーム装置に内蔵されるRAMのメモリマップを示す図解図である。
【図10】図2に示すCPUコアの第1実施例におけるゲーム処理を示すフロー図である。
【図11】図2に示すCPUコアの息吹きかけ判別処理の一部を示すフロー図である。
【図12】図11に続く息吹きかけ判別処理の他の一部を示すフロー図である。
【図13】本発明の変形例の息吹きかけ判別処理の一部を示すフロー図である。
【図14】図13に続く息吹きかけ判別処理の他の一部を示すフロー図である。
【図15】第2実施例におけるゲーム画面の一例を示す図解図である。
【図16】図2に示すCPUコアの第2実施例におけるゲーム処理を示すフロー図である。
【図17】第3実施例におけるゲーム画面の一例を示す図解図である。
【図18】図2に示すCPUコアの第3実施例におけるゲーム処理を示すフロー図である。
【図19】図2に示すCPUコアの第4実施例におけるゲーム処理を示すフロー図である。
【符号の説明】
【0156】
10 …ゲーム装置
12,14 …LCD
16,16a,16b …ハウジング
20 …操作スイッチ
22 …タッチパネル
24 …スティック
28 …メモリカード
28a …ROM
28b,48 …RAM
34 …マイク
40 …電子回路基板
42 …CPUコア
50,52 …GPU
54 …I/F回路
56,58 …VRAM
60 …LCDコントローラ
【特許請求の範囲】
【請求項1】
表示装置に表示されるゲーム空間のオブジェクトの表示処理を行うためのゲームプログラムであって、
コンピュータに、
入力手段からの入力によって前記オブジェクトを表示するオブジェクト表示ステップ、
マイクから入力されたマイク入力情報を前記メモリに記憶するマイク入力情報記憶ステップ、および
前記メモリに記憶された前記マイク入力情報を参照して、前記オブジェクト表示ステップで表示された前記オブジェクトの表示を消去する表示処理を行うオブジェクト消去ステップを実行させる、ゲームプログラム。
【請求項2】
前記オブジェクト表示ステップでは、前記入力手段による複数回の入力によって前記オブジェクトを複数表示し、
前記オブジェクト消去ステップでは、前記複数のオブジェクトを一括して消去する、請求項1に記載のゲームプログラム。
【請求項3】
表示装置に表示されるゲーム空間のオブジェクトの表示処理を行うためのゲーム装置であって、
前記表示装置に前記オブジェクトを表示させるための入力が可能な入力手段、
前記入力手段からの入力によって前記オブジェクトを表示するオブジェクト表示手段、
マイク、
前記マイクから入力されたマイク入力情報が記憶される記憶手段、および
前記記憶手段に記憶された前記マイク入力情報を参照して、前記オブジェクト表示手段によって表示された前記オブジェクトの表示を消去する表示処理手段を備えた、ゲーム装置。
【請求項1】
表示装置に表示されるゲーム空間のオブジェクトの表示処理を行うためのゲームプログラムであって、
コンピュータに、
入力手段からの入力によって前記オブジェクトを表示するオブジェクト表示ステップ、
マイクから入力されたマイク入力情報を前記メモリに記憶するマイク入力情報記憶ステップ、および
前記メモリに記憶された前記マイク入力情報を参照して、前記オブジェクト表示ステップで表示された前記オブジェクトの表示を消去する表示処理を行うオブジェクト消去ステップを実行させる、ゲームプログラム。
【請求項2】
前記オブジェクト表示ステップでは、前記入力手段による複数回の入力によって前記オブジェクトを複数表示し、
前記オブジェクト消去ステップでは、前記複数のオブジェクトを一括して消去する、請求項1に記載のゲームプログラム。
【請求項3】
表示装置に表示されるゲーム空間のオブジェクトの表示処理を行うためのゲーム装置であって、
前記表示装置に前記オブジェクトを表示させるための入力が可能な入力手段、
前記入力手段からの入力によって前記オブジェクトを表示するオブジェクト表示手段、
マイク、
前記マイクから入力されたマイク入力情報が記憶される記憶手段、および
前記記憶手段に記憶された前記マイク入力情報を参照して、前記オブジェクト表示手段によって表示された前記オブジェクトの表示を消去する表示処理手段を備えた、ゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公開番号】特開2006−204877(P2006−204877A)
【公開日】平成18年8月10日(2006.8.10)
【国際特許分類】
【出願番号】特願2005−116163(P2005−116163)
【出願日】平成17年4月13日(2005.4.13)
【分割の表示】特願2005−17982(P2005−17982)の分割
【原出願日】平成17年1月26日(2005.1.26)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成18年8月10日(2006.8.10)
【国際特許分類】
【出願日】平成17年4月13日(2005.4.13)
【分割の表示】特願2005−17982(P2005−17982)の分割
【原出願日】平成17年1月26日(2005.1.26)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]