(57)【特許請求の範囲】
【請求項１】
情報処理装置のコンピュータに、複数の設問のそれぞれについて正解となる正解方向への方向入力をプレイヤに行わせるゲーム処理を行わせるゲームプログラムであって、
前記コンピュータに、
前記設問ごとの前記正解方向を表示によって指定する出題処理を行わせ、
操作装置から送信される操作データを取得させ、
前記操作データに基づいて入力方向の特定を行わせ、
所定の判定条件に基づいて前記入力方向が指定された前記正解方向であるかそれ以外の方向であるかの正解判定を行わせ、当該正解判定を行わせる際に、前記特定された入力方向が正解と判定され易くなるように前記判定条件を前記正解方向に応じて変化させ、
前記正解判定の結果に基づいてゲームを進行させる、ゲームプログラム。
【請求項２】
前記操作装置は慣性センサを備え、
前記操作データには前記慣性センサの検出結果に基づいたデータが含まれ、
前記コンピュータに、
更に前記操作データに基づいて前記操作装置の姿勢または移動方向を算出させ、
前記操作装置の姿勢または移動方向に基づいて前記入力方向を特定させる、請求項１に記載のゲームプログラム。
【請求項３】
前記コンピュータに、
前記操作装置の所定軸を示すベクトルを前記姿勢として算出させ、
前記ベクトルの値に関して判定領域を設定し、前記ベクトルが正解の判定領域に含まれるか否かを前記判定条件とする前記正解判定を行わせ、当該正解判定を行わせる際に、前記設問ごとに正解に対応する前記判定領域を大きくすることによって、正解と判定され易くなるように当該判定条件を変化させる、請求項２に記載のゲームプログラム。
【請求項４】
前記ベクトルは、前記操作装置の前記所定軸を示す３次元ベクトルを、基準姿勢におけるベクトルが原点となるように２次元に射影した射影ベクトルであって、
前記判定領域は、２次元の前記射影ベクトルに対し、前記原点を通る直線によって上下左右に区分された領域のうち、前記原点から所定の距離以内の範囲であっていずれの方向入力でもないと判定される無判定領域と、前記上下左右に区分された当該無判定領域の外側の領域であって、前記上下左右それぞれの方向への方向入力と判定するための方向判定領域とを含み、前記正解判定において、正解に対応する前記方向判定領域の中心角が大きくされる、請求項３に記載のゲームプログラム。
【請求項５】
前記無判定領域は、前記下または上下の領域に対する前記原点からの距離が、前記左右の領域に対する前記原点からの距離よりも短くなるように設定される、請求項４に記載のゲームプログラム。
【請求項６】
前記操作データには前記入力の大きさを示すデータが含まれ、
前記コンピュータに、
前記入力の大きさが所定の閾値より大きい場合、前記正解判定を行わせる前に、前記入力方向を判定する他の判定処理を更に行わせ、
前記他の判定処理の結果、前記入力方向が指定された前記正解方向である場合は、前記正解判定を行うことなく、入力方向が正解である場合のゲーム進行を行わせる、請求項１に記載のゲームプログラム。
【請求項７】
前記コンピュータに、
前記正解判定において、前記入力方向がいずれかの方向と判定される状態が所定時間継続したときに判定を確定させ、かつ前記正解方向と判定される状態について、それ以外の方向と判定される状態よりも短い継続時間で正解方向として判定を確定させることによって、正解と判定され易くなるように前記判定条件を変化させる、請求項１から６のいずれかに記載のゲームプログラム。
【請求項８】
複数の設問のそれぞれについて正解となる正解方向への方向入力をプレイヤに行わせるゲーム処理を行うゲームシステムであって、
操作装置と、
プロセッサとを備え、
前記プロセッサは、
前記設問ごとの前記正解方向を表示によって指定する出題処理を行い、
操作装置から送信される操作データを取得し、
前記操作データに基づいて入力方向の特定を行い、
所定の判定条件に基づいて前記入力方向が指定された前記正解方向であるかそれ以外の方向であるかの正解判定を行い、当該正解判定を行う際に、前記特定された入力方向が正解と判定され易くなるように前記判定条件を前記正解方向に応じて変化させ、
前記正解判定の結果に基づいてゲームを進行する、ゲームシステム。
【請求項９】
前記操作装置は慣性センサを備え、
前記操作データには前記慣性センサの検出結果に基づいたデータが含まれ、
前記プロセッサは、
更に前記操作データに基づいて前記操作装置の姿勢または移動方向を算出し、
前記操作装置の姿勢または移動方向に基づいて前記入力方向を特定する、請求項８に記載のゲームシステム。
【請求項１０】
前記プロセッサは、
前記操作装置の所定軸を示すベクトルを前記姿勢として算出し、
前記ベクトルの値に関して判定領域を設定し、前記ベクトルが正解の判定領域に含まれるか否かを前記判定条件とする前記正解判定を行い、当該正解判定を行う際に、前記設問ごとに正解に対応する前記判定領域を大きくすることによって、正解と判定され易くなるように当該判定条件を変化させる、請求項９に記載のゲームシステム。
【請求項１１】
前記ベクトルは、前記操作装置の前記所定軸を示す３次元ベクトルを、基準姿勢におけるベクトルが原点となるよう２次元に射影した射影ベクトルであって、
前記判定領域は、２次元の前記射影ベクトルに対し、前記原点を通る直線によって上下左右に区分された領域のうち、前記原点から所定の距離以内の範囲であっていずれの方向入力でもないと判定される無判定領域と、前記上下左右に区分された当該無判定領域の外側の領域であって、前記上下左右それぞれの方向への方向入力と判定するための方向判定領域とを含み、前記正解判定が行われる際、正解に対応する前記方向判定領域の中心角が大きくされる、請求項１０に記載のゲームシステム。
【請求項１２】
前記無判定領域は、前記下または上下の領域に対する前記原点からの距離が、前記左右の領域に対する前記原点からの距離よりも短くなるように設定される、請求項１１に記載のゲームシステム。
【請求項１３】
前記操作データには前記入力の大きさを示すデータが含まれ、
前記プロセッサは、
前記入力の大きさが所定の閾値より大きい場合、前記正解判定を行わせる前に、前記入力方向を判定する他の判定処理を更に行い、
前記他の判定処理の結果、前記入力方向が指定された前記正解方向である場合は、前記正解判定を行うことなく、入力方向が正解である場合のゲーム進行を行う、請求項８に記載のゲームシステム。
【請求項１４】
前記プロセッサは、
前記正解判定において、前記入力方向がいずれかの方向と判定される状態が所定時間継続したときに判定を確定させ、かつ前記正解方向と判定される状態について、それ以外の方向と判定される状態よりも短い継続時間で正解方向として判定を確定させることによって、正解と判定され易くなるように前記判定条件を変化させる、請求項８から１３のいずれかに記載のゲームシステム。
【請求項１５】
複数の設問のそれぞれについて正解となる正解方向への方向入力をプレイヤに行わせるゲーム処理を行うゲーム装置であって、
前記設問ごとの前記正解方向を表示によって指定する出題処理を行い、
操作装置から送信される操作データを取得し、
前記操作データに基づいて入力方向の特定を行い、
所定の判定条件に基づいて前記入力方向が指定された前記正解方向であるかそれ以外の方向であるかの正解判定を行い、当該正解判定を行う際に、前記特定された入力方向が正解と判定され易くなるように前記判定条件を前記正解方向に応じて変化させ、
前記正解判定の結果に基づいてゲームを進行する、ゲーム装置。
【請求項１６】
前記操作装置は慣性センサを備え、
前記操作データには前記慣性センサの検出結果に基づいたデータが含まれ、
前記ゲーム装置は、
更に前記操作データに基づいて前記操作装置の姿勢または移動方向を算出し、
前記操作装置の姿勢または移動方向に基づいて前記入力方向を特定する、請求項１５に記載のゲーム装置。
【請求項１７】
前記ゲーム装置は、
前記操作装置の所定軸を示すベクトルを前記姿勢として算出し、
前記ベクトルの値に関して判定領域を設定し、前記ベクトルが正解の判定領域に含まれるか否かを前記判定条件とする前記正解判定を行い、当該正解判定を行う際に、前記設問ごとに正解に対応する前記判定領域を大きくすることによって、正解と判定され易くなるように当該判定条件を変化させる、請求項１６に記載のゲーム装置。
【請求項１８】
前記ゲーム装置は、
前記正解判定において、前記入力方向がいずれかの方向と判定される状態が所定時間継続したときに判定を確定させ、かつ前記正解方向と判定される状態について、それ以外の方向と判定される状態よりも短い継続時間で正解方向として判定を確定させることによって、正解と判定され易くなるように前記判定条件を変化させる、請求項１５から１７のいずれかに記載のゲーム装置。
【請求項１９】
複数の設問のそれぞれについて正解となる正解方向への方向入力をプレイヤに行わせるゲーム処理をコンピュータに実行させるためのゲーム処理制御方法であって、
前記コンピュータに、
前記設問ごとの前記正解方向を表示によって指定する出題処理を行わせ、
操作装置から送信される操作データを取得させ、
前記操作データに基づいて入力方向の特定を行わせ、
所定の判定条件に基づいて前記入力方向が指定された前記正解方向であるかそれ以外の方向であるかの正解判定を行わせ、当該正解判定を行わせる際に、前記特定された入力方向が正解と判定され易くなるように前記判定条件を前記正解方向に応じて変化させ、
前記正解判定の結果に基づいてゲームを進行させる、ゲーム処理制御方法。
【請求項２０】
前記操作装置は慣性センサを備え、
前記操作データには前記慣性センサの検出結果に基づいたデータが含まれ、
前記コンピュータに、
更に前記操作データに基づいて前記操作装置の姿勢または移動方向を算出させ、
前記操作装置の姿勢または移動方向に基づいて前記入力方向を特定させる、請求項１９に記載のゲーム処理制御方法。
【請求項２１】
前記コンピュータに、
前記操作装置の所定軸を示すベクトルを前記姿勢として算出させ、
前記ベクトルの値に関して判定領域を設定し、前記ベクトルが正解の判定領域に含まれるか否かを前記判定条件とする前記正解判定を行わせ、当該正解判定を行わせる際に、前記設問ごとに正解に対応する前記判定領域を大きくすることによって、正解と判定され易くなるように当該判定条件を変化させる、請求項２０に記載のゲーム処理制御方法。
【請求項２２】
前記コンピュータに、
前記正解判定において、前記入力方向がいずれかの方向と判定される状態が所定時間継続したときに判定を確定させ、かつ前記正解方向と判定される状態について、それ以外の方向と判定される状態よりも短い継続時間で正解方向として判定を確定させることによって、正解と判定され易くなるように前記判定条件を変化させる、請求項１９から２１のいずれかに記載のゲーム処理制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の設問のそれぞれについて正解となる正解方向への方向入力をプレイヤに行わせるゲーム処理に関する。
【背景技術】
【０００２】
従来から、コントローラの移動態様を指示する画像を表示し、プレイヤはこれを見てコントローラを実空間内で移動させるゲームが知られている（例えば特許文献１）。このようなゲームでは、コントローラの姿勢を判定して、コントローラの移動方向と指示された移動態様との適合度を判定している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−８２６９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のようなゲームにおいて、コントローラを移動させている途中で、指示されている移動態様とは違う方向にコントローラが（一時的に）移動したような場合に、入力失敗と判定され易いという問題があった。
【０００５】
それ故に、本発明の目的は、指示された方向への方向入力の正解／不正解によって進行するゲームにおいて、方向入力の誤判定を減らすことが可能なゲームプログラム、ゲームシステム、ゲーム装置、ゲーム処理制御方法を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【０００７】
構成例の一例は、情報処理装置のコンピュータに、複数の設問のそれぞれについて正解となる正解方向への方向入力をプレイヤに行わせるゲーム処理を行わせるゲームプログラムである。当該ゲームプログラムは、コンピュータに、以下の処理を行わせる。設問ごとの正解方向を表示によって指定する出題処理を行わせる。操作装置から送信される操作データを取得させる。操作データに基づいて入力方向の特定を行わせる。所定の判定条件に基づいて入力方向が指定された正解方向であるかそれ以外の方向であるかの正解判定を行わせ、当該正解判定を行わせる際に、特定された入力方向が正解と判定され易くなるように判定条件を正解方向に応じて変化させる。正解判定の結果に基づいてゲームを進行させる。
【０００８】
上記構成例によれば、プレイヤが入力した方向を判定するための判定条件について、正解方向に応じて当該判定条件を、正解と判定されやすくなるように変化させる。これにより、正解しやすいように調整された判定条件によって入力方向を判定することができる。そのため、予め正解方向をプレイヤに提示し、当該プレイヤに方向入力を行わせるゲームにおいて、誤判定が発生することを軽減できる。例えば、上下左右の４方向のいずれかが正解方向である場合における、右斜め上方向のような曖昧な方向の入力が行われた場合の誤判定を減らすことができる。
【０００９】
他の構成例として、操作装置は慣性センサを備えていてもよい。操作データには、慣性センサの検出結果に基づいたデータが含まれていてもよい。そして、コンピュータに、更に操作データに基づいて操作装置の姿勢または移動方向を算出させ、操作装置の姿勢または移動方向に基づいて入力方向を特定させてもよい。
【００１０】
上記構成例によれば、操作装置自体を動かして方向入力を行わせるゲームにおいて、誤判定の発生を軽減してゲームの興趣性を高めることができる。
【００１１】
他の構成例として、コンピュータに、操作装置の所定軸を示すベクトルを姿勢として算出させ、ベクトルの値に関して判定領域を設定し、ベクトルが正解の判定領域に含まれるか否かを判定条件とする正解判定を行わせ、当該正解判定を行わせる際に、設問ごとに正解に対応する判定領域を大きくすることによって、正解と判定され易くなるように当該判定条件を変化させてもよい。
【００１２】
上記構成例によれば、操作装置の所定軸を示すベクトルと、正解とされる判定領域とを用いて正解判定を行うが、その際に、判定領域の大きさを正解方向に応じて変化させてから正解判定を行うことができる。
【００１３】
他の構成例として、ベクトルは、操作装置の所定軸を示す３次元ベクトルを、基準姿勢におけるベクトルが原点となるよう２次元に射影した射影ベクトルであってもよい。そして、判定領域は、２次元の射影ベクトルに対し、原点を通る直線によって上下左右に区分された領域のうち、原点から所定の距離以内の範囲であっていずれの方向入力でもないと判定される無判定領域と、上下左右に区分された当該無判定領域の外側の領域であって、上下左右それぞれの方向への方向入力と判定するための方向判定領域とを含み、正解判定において、正解に対応する方向判定領域の中心角が大きくされてもよい。
【００１４】
上記構成例によれば、入力の大きさが無判定領域内に収まるような大きさの場合は有効な方向入力として扱わないようにできる。すなわち、ある程度しっかりと操作装置を傾けること要求することができ、中途半端な大きさの入力が誤判定されることを抑制できる。また、正解方向に応じて方向判定領域を大きくして判定するため、曖昧な方向入力が行われたような場合の誤判定を減らすこともできる。
【００１５】
他の構成例として、無判定領域は、下または上下の領域に対する原点からの距離が、左右の領域に対する原点からの距離よりも短くなるように設定されてもよい。
【００１６】
上記構成例によれば、例えば手首を支点として操作装置の姿勢を上下左右に変化させる場合に、左右方向に比べて方向入力が行いにくく、また、姿勢の変化が小さくなりがちなが上・下方向について、正解入力として判定されやすくすることができる。
【００１７】
他の構成例として、操作データには入力の大きさを示すデータが含まれていてもよい。そして、コンピュータに、入力の大きさが所定の閾値より大きい場合、正解判定を行わせる前に、入力方向を判定する他の判定処理を更に行わせてもよい。当該他の判定処理の結果、入力方向が指定された正解方向である場合は、上記正解判定を行うことなく、入力方向が正解である場合のゲーム進行を行わせてもよい。
【００１８】
上記構成例によれば、ある程度入力が大きい場合は、先に他の判定処理を用いて正解方向入力の判定を行う。これにより、正解判定を段階的なものをすることができ、より速やかな判定処理を行いつつ、総合的な判定精度をより高めることができる。
【００１９】
他の構成例として、コンピュータに、正解判定において、入力方向がいずれかの方向と判定される状態が所定時間継続したときに判定を確定させ、かつ前記正解方向と判定される状態について、それ以外の方向と判定される状態よりも短い継続時間で正解方向として判定を確定させることによって、正解と判定され易くなるように判定条件を変化させてもよい。
【００２０】
上記構成例によれば、正解あるいは不正解として確定するために、所定方向を向いている状態を所定の時間維持することを要求できる。また、正解のほうが不正解のほうよりも確定に必要な時間を短くしている。これにより、連続的に方向入力を行うように操作装置を動かした場合であって、その移動軌跡において（入力の途中で）不正解となる方向を跨ぐような入力になった場合に誤判定されることを抑制できる。
【発明の効果】
【００２１】
本実施形態によれば、正解方向がプレイヤに提示され、その方向入力を行わせるゲームにおいて、不正解の方向として誤判定されることを軽減することができる。
【図面の簡単な説明】
【００２２】
【図１】本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図
【図２】本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図
【図３】本体装置２の一例を示す六面図
【図４】左コントローラ３の一例を示す六面図
【図５】右コントローラ４の一例を示す六面図
【図６】本体装置２の内部構成の一例を示すブロック図
【図７】本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図
【図８】本ゲームをプレイする際のプレイヤおよびコントローラの姿勢の一例を示す図
【図９】基準姿勢と上下方向への右コントローラ４の姿勢の変化例を示す図
【図１０】基準姿勢と左右方向への右コントローラ４の姿勢の変化例を示す図
【図１１】ゲーム画面の一例を示す図
【図１２】ゲーム画面の一例を示す図
【図１３】ゲーム画面の一例を示す図
【図１４】ゲーム画面の一例を示す図
【図１５】ゲーム画面の一例を示す図
【図１６】射影平面上における射影ベクトルの角度の定義を示した図
【図１７】入力の大きさについて説明するための図
【図１８】入力の大きさについて説明するための図
【図１９】第１種閾値の一例を示す図
【図２０】調整後の第１種閾値の一例を示す図
【図２１】調整後の第１種閾値の一例を示す図
【図２２】調整後の第１種閾値の一例を示す図
【図２３】正解方向が上の場合の第２種閾値の一例を示す図
【図２４】正解方向が左または右の場合の第２種閾値の一例を示す図
【図２５】正解方向が下の場合の第２種閾値の一例を示す図
【図２６】調整後の第２種閾値の一例を示す図
【図２７】調整後の第２種閾値の一例を示す図
【図２８】第３種閾値の一例を示す図
【図２９】調整後の第３種閾値の一例を示す図
【図３０】調整後の第３種閾値の一例を示す図
【図３１】調整後の第３種閾値の一例を示す図
【図３２】調整後の第３種閾値の一例を示す図
【図３３】本体装置２のＤＲＡＭ８５に格納されるプログラムおよび情報の一例
【図３４】ステージ情報４０６データ構成の一例
【図３５】本実施形態のゲーム処理の詳細を示すフローチャート
【図３６】解答入力・判定処理の詳細を示すフローチャート
【図３７】解答入力・判定処理の詳細を示すフローチャート
【図３８】第１の判定処理の詳細を示すフローチャート
【図３９】第２の判定処理の詳細を示すフローチャート
【図４０】第３の判定処理の詳細を示すフローチャート
【図４１】正誤判定処理の詳細を示すフローチャート
【図４２】判定用の閾値の他の例を示す図
【発明を実施するための形態】
【００２３】
以下、本発明の一実施形態について説明する。まず、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム１の一例は、本体装置（情報処理装置；本実施形態ではゲーム装置本体として機能する）２と左コントローラ３および右コントローラ４とを含む。本体装置２は、左コントローラ３および右コントローラ４がそれぞれ着脱可能である。つまり、ゲームシステム１は、左コントローラ３および右コントローラ４をそれぞれ本体装置２に装着して一体化された装置として利用できる。また、ゲームシステム１は、本体装置２と左コントローラ３および右コントローラ４とを別体として利用することもできる（図２参照）。以下では、本実施形態のゲームシステム１のハードウェア構成について説明し、その後に本実施形態のゲームシステム１の制御について説明する。
【００２４】
図１は、本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図である。図１に示すように、左コントローラ３および右コントローラ４は、それぞれ本体装置２に装着されて一体化されている。本体装置２は、ゲームシステム１における各種の処理（例えば、ゲーム処理）を実行する装置である。本体装置２は、ディスプレイ１２を備える。左コントローラ３および右コントローラ４は、ユーザが入力を行うための操作部を備える装置である。
【００２５】
図２は、本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図である。図１および図２に示すように、左コントローラ３および右コントローラ４は、本体装置２に着脱可能である。なお、以下において、左コントローラ３および右コントローラ４の総称として「コントローラ」と記載することがある。
【００２６】
図３は、本体装置２の一例を示す六面図である。図３に示すように、本体装置２は、略板状のハウジング１１を備える。本実施形態において、ハウジング１１の主面（換言すれば、表側の面、すなわち、ディスプレイ１２が設けられる面）は、大略的には矩形形状である。
【００２７】
なお、ハウジング１１の形状および大きさは、任意である。一例として、ハウジング１１は、携帯可能な大きさであってよい。また、本体装置２単体または本体装置２に左コントローラ３および右コントローラ４が装着された一体型装置は、携帯型装置となってもよい。また、本体装置２または一体型装置が手持ち型の装置となってもよい。また、本体装置２または一体型装置が可搬型装置となってもよい。
【００２８】
図３に示すように、本体装置２は、ハウジング１１の主面に設けられるディスプレイ１２を備える。ディスプレイ１２は、本体装置２が生成した画像を表示する。本実施形態においては、ディスプレイ１２は、液晶表示装置（ＬＣＤ）とする。ただし、ディスプレイ１２は任意の種類の表示装置であってよい。
【００２９】
本体装置２は、ハウジング１１の内部においてスピーカ（すなわち、図６に示すスピーカ８８）を備えている。図３に示すように、ハウジング１１の主面には、スピーカ孔１１ａおよび１１ｂが形成される。そして、スピーカ８８の出力音は、これらのスピーカ孔１１ａおよび１１ｂからそれぞれ出力される。
【００３０】
また、本体装置２は、本体装置２が左コントローラ３と有線通信を行うための端子である左側端子１７と、本体装置２が右コントローラ４と有線通信を行うための右側端子２１を備える。
【００３１】
図３に示すように、本体装置２は、スロット２３を備える。スロット２３は、ハウジング１１の上側面に設けられる。スロット２３は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム１およびそれと同種の情報処理装置に専用の記憶媒体（例えば、専用メモリカード）である。所定の種類の記憶媒体は、例えば、本体装置２で利用されるデータ（例えば、アプリケーションのセーブデータ等）、および／または、本体装置２で実行されるプログラム（例えば、アプリケーションのプログラム等）を記憶するために用いられる。また、本体装置２は、電源ボタン２８を備える。
【００３２】
本体装置２は、下側端子２７を備える。下側端子２７は、本体装置２がクレードルと通信を行うための端子である。本実施形態において、下側端子２７は、ＵＳＢコネクタ（より具体的には、メス側コネクタ）である。上記一体型装置または本体装置２単体をクレードルに載置した場合、ゲームシステム１は、本体装置２が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置２単体を充電する機能を有する。また、クレードルは、ハブ装置（具体的には、ＵＳＢハブ）の機能を有する。
【００３３】
図４は、左コントローラ３の一例を示す六面図である。図４に示すように、左コントローラ３は、ハウジング３１を備える。本実施形態においては、ハウジング３１は、縦長の形状、すなわち、上下方向（すなわち、図１および図４に示すｙ軸方向）に長い形状である。左コントローラ３は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング３１は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ３は、横長となる向きで把持されることも可能である。左コントローラ３が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００３４】
左コントローラ３は、アナログスティック３２を備える。図４に示すように、アナログスティック３２は、ハウジング３１の主面に設けられる。アナログスティック３２は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック３２を傾倒することによって傾倒方向に応じた方向の入力（および、傾倒した角度に応じた大きさの入力）が可能である。なお、左コントローラ３は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック３２を押下する入力が可能である。
【００３５】
左コントローラ３は、各種操作ボタンを備える。左コントローラ３は、ハウジング３１の主面上に４つの操作ボタン３３〜３６（具体的には、右方向ボタン３３、下方向ボタン３４、上方向ボタン３５、および左方向ボタン３６）を備える。更に、左コントローラ３は、録画ボタン３７および−（マイナス）ボタン４７を備える。左コントローラ３は、ハウジング３１の側面の左上に第１Ｌボタン３８およびＺＬボタン３９を備える。また、左コントローラ３は、ハウジング３１の側面の、本体装置２に装着される際に装着される側の面に第２Ｌボタン４３および第２Ｒボタン４４を備える。これらの操作ボタンは、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションプログラム）に応じた指示を行うために用いられる。
【００３６】
また、左コントローラ３は、左コントローラ３が本体装置２と有線通信を行うための端子４２を備える。
【００３７】
図５は、右コントローラ４の一例を示す六面図である。図５に示すように、右コントローラ４は、ハウジング５１を備える。本実施形態においては、ハウジング５１は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ４は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング５１は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ４は、横長となる向きで把持されることも可能である。右コントローラ４が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００３８】
右コントローラ４は、左コントローラ３と同様、方向入力部としてアナログスティック５２を備える。本実施形態においては、アナログスティック５２は、左コントローラ３のアナログスティック３２と同じ構成である。また、右コントローラ４は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ４は、左コントローラ３と同様、ハウジング５１の主面上に４つの操作ボタン５３〜５６（具体的には、Ａボタン５３、Ｂボタン５４、Ｘボタン５５、およびＹボタン５６）を備える。更に、右コントローラ４は、＋（プラス）ボタン５７およびホームボタン５８を備える。また、右コントローラ４は、ハウジング５１の側面の右上に第１Ｒボタン６０およびＺＲボタン６１を備える。また、右コントローラ４は、左コントローラ３と同様、第２Ｌボタン６５および第２Ｒボタン６６を備える。
【００３９】
また、右コントローラ４は、右コントローラ４が本体装置２と有線通信を行うための端子６４を備える。
【００４０】
図６は、本体装置２の内部構成の一例を示すブロック図である。本体装置２は、図３に示す構成の他、図６に示す各構成要素８１〜９１、９７、および９８を備える。これらの構成要素８１〜９１、９７、および９８のいくつかは、電子部品として電子回路基板上に実装されてハウジング１１内に収納されてもよい。
【００４１】
本体装置２は、プロセッサ８１を備える。プロセッサ８１は、本体装置２において実行される各種の情報処理を実行する情報処理部であって、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のみから構成されてもよいし、ＣＰＵ機能、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）機能等の複数の機能を含むＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）から構成されてもよい。プロセッサ８１は、記憶部（具体的には、フラッシュメモリ８４等の内部記憶媒体、あるいは、スロット２３に装着される外部記憶媒体等）に記憶される情報処理プログラム（例えば、ゲームプログラム）を実行することによって、各種の情報処理を実行する。
【００４２】
本体装置２は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ８４およびＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８５を備える。フラッシュメモリ８４およびＤＲＡＭ８５は、プロセッサ８１に接続される。フラッシュメモリ８４は、主に、本体装置２に保存される各種のデータ（プログラムであってもよい）を記憶するために用いられるメモリである。ＤＲＡＭ８５は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【００４３】
本体装置２は、スロットインターフェース（以下、「Ｉ／Ｆ」と略記する。）９１を備える。スロットＩ／Ｆ９１は、プロセッサ８１に接続される。スロットＩ／Ｆ９１は、スロット２３に接続され、スロット２３に装着された所定の種類の記憶媒体（例えば、専用メモリカード）に対するデータの読み出しおよび書き込みを、プロセッサ８１の指示に応じて行う。
【００４４】
プロセッサ８１は、フラッシュメモリ８４およびＤＲＡＭ８５、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【００４５】
本体装置２は、コントローラ通信部８３を備える。コントローラ通信部８３は、プロセッサ８１に接続される。コントローラ通信部８３は、左コントローラ３および／または右コントローラ４と無線通信を行う。本体装置２と左コントローラ３および右コントローラ４との通信方式は任意であるが、本実施形態においては、コントローラ通信部８３は、左コントローラ３との間および右コントローラ４との間で、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信を行う。
【００４６】
プロセッサ８１は、上述の左側端子１７、右側端子２１、および下側端子２７に接続される。プロセッサ８１は、左コントローラ３と有線通信を行う場合、左側端子１７を介して左コントローラ３へデータを送信するとともに、左側端子１７を介して左コントローラ３から操作データを受信する。また、プロセッサ８１は、右コントローラ４と有線通信を行う場合、右側端子２１を介して右コントローラ４へデータを送信するとともに、右側端子２１を介して右コントローラ４から操作データを受信する。また、プロセッサ８１は、クレードルと通信を行う場合、下側端子２７を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置２は、左コントローラ３および右コントローラ４との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置または本体装置２単体がクレードルに装着された場合、本体装置２は、クレードルを介してデータ（例えば、画像データや音声データ）を据置型モニタ等に出力することができる。
【００４７】
ここで、本体装置２は、複数の左コントローラ３と同時に（換言すれば、並行して）通信を行うことができる。また、本体装置２は、複数の右コントローラ４と同時に（換言すれば、並行して）通信を行うことができる。したがって、複数のユーザは、左コントローラ３および右コントローラ４のセットをそれぞれ用いて、本体装置２に対する入力を同時に行うことができる。一例として、第１ユーザが左コントローラ３および右コントローラ４の第１セットを用いて本体装置２に対して入力を行うと同時に、第２ユーザが左コントローラ３および右コントローラ４の第２セットを用いて本体装置２に対して入力を行うことが可能となる。
【００４８】
また、ディスプレイ１２は、プロセッサ８１に接続される。プロセッサ８１は、（例えば、上記の情報処理の実行によって）生成した画像および／または外部から取得した画像をディスプレイ１２に表示する。
【００４９】
本体装置２は、コーデック回路８７およびスピーカ（具体的には、左スピーカおよび右スピーカ）８８を備える。コーデック回路８７は、スピーカ８８および音声入出力端子２５に接続されるとともに、プロセッサ８１に接続される。コーデック回路８７は、スピーカ８８および音声入出力端子２５に対する音声データの入出力を制御する回路である。
本体装置２は、電力制御部９７およびバッテリ９８を備える。電力制御部９７は、バッテリ９８およびプロセッサ８１に接続される。また、図示しないが、電力制御部９７は、本体装置２の各部（具体的には、バッテリ９８の電力の給電を受ける各部、左側端子１７、および右側端子２１）に接続される。電力制御部９７は、プロセッサ８１からの指令に基づいて、バッテリ９８から上記各部への電力供給を制御する。
【００５０】
また、バッテリ９８は、下側端子２７に接続される。外部の充電装置（例えば、クレードル）が下側端子２７に接続され、下側端子２７を介して本体装置２に電力が供給される場合、供給された電力がバッテリ９８に充電される。
【００５１】
図７は、本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図である。なお、本体装置２に関する内部構成の詳細については、図６で示しているため図７では省略している。
【００５２】
左コントローラ３は、本体装置２との間で通信を行う通信制御部１０１を備える。図７に示すように、通信制御部１０１は、端子４２を含む各構成要素に接続される。本実施形態においては、通信制御部１０１は、端子４２を介した有線通信と、端子４２を介さない無線通信との両方で本体装置２と通信を行うことが可能である。通信制御部１０１は、左コントローラ３が本体装置２に対して行う通信方法を制御する。すなわち、左コントローラ３が本体装置２に装着されている場合、通信制御部１０１は、端子４２を介して本体装置２と通信を行う。また、左コントローラ３が本体装置２から外されている場合、通信制御部１０１は、本体装置２（具体的には、コントローラ通信部８３）との間で無線通信を行う。コントローラ通信部８３と通信制御部１０１との間の無線通信は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）の規格に従って行われる。
【００５３】
また、左コントローラ３は、例えばフラッシュメモリ等のメモリ１０２を備える。通信制御部１０１は、例えばマイコン（マイクロプロセッサとも言う）で構成され、メモリ１０２に記憶されるファームウェアを実行することによって各種の処理を実行する。
【００５４】
左コントローラ３は、各ボタン１０３（具体的には、ボタン３３〜３９、４３、４４、および４７）を備える。また、左コントローラ３は、アナログスティック（図７では「スティック」と記載する）３２を備える。各ボタン１０３およびアナログスティック３２は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部１０１へ出力する。
【００５５】
左コントローラ３は、慣性センサを備える。具体的には、左コントローラ３は、加速度センサ１０４を備える。また、左コントローラ３は、角速度センサ１０５を備える。本実施形態においては、加速度センサ１０４は、所定の３軸（例えば、図４に示すｘｙｚ軸）方向に沿った加速度の大きさを検出する。なお、加速度センサ１０４は、１軸方向あるいは２軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ１０５は、所定の３軸（例えば、図４に示すｘｙｚ軸）回りの角速度を検出する。なお、角速度センサ１０５は、１軸回りあるいは２軸回りの角速度を検出するものであってもよい。加速度センサ１０４および角速度センサ１０５は、それぞれ通信制御部１０１に接続される。そして、加速度センサ１０４および角速度センサ１０５の検出結果は、適宜のタイミングで繰り返し通信制御部１０１へ出力される。
【００５６】
通信制御部１０１は、各入力部（具体的には、各ボタン１０３、アナログスティック３２、各センサ１０４および１０５）から、入力に関する情報（具体的には、操作に関する情報、またはセンサによる検出結果）を取得する。通信制御部１０１は、取得した情報（または取得した情報に所定の加工を行った情報）を含む操作データを本体装置２へ送信する。なお、操作データは、所定時間に１回の割合で繰り返し送信される。なお、入力に関する情報が本体装置２へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【００５７】
上記操作データが本体装置２へ送信されることによって、本体装置２は、左コントローラ３に対して行われた入力を得ることができる。すなわち、本体装置２は、各ボタン１０３およびアナログスティック３２に対する操作を、操作データに基づいて判別することができる。また、本体装置２は、左コントローラ３の動きおよび／または姿勢に関する情報を、操作データ（具体的には、加速度センサ１０４および角速度センサ１０５の検出結果）に基づいて算出することができる。
【００５８】
左コントローラ３は、電力供給部１０８を備える。本実施形態において、電力供給部１０８は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ３の各部（具体的には、バッテリの電力の給電を受ける各部）に接続される。
【００５９】
図７に示すように、右コントローラ４は、本体装置２との間で通信を行う通信制御部１１１を備える。また、右コントローラ４は、通信制御部１１１に接続されるメモリ１１２を備える。通信制御部１１１は、端子６４を含む各構成要素に接続される。通信制御部１１１およびメモリ１１２は、左コントローラ３の通信制御部１０１およびメモリ１０２と同様の機能を有する。したがって、通信制御部１１１は、端子６４を介した有線通信と、端子６４を介さない無線通信（具体的には、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信）との両方で本体装置２と通信を行うことが可能であり、右コントローラ４が本体装置２に対して行う通信方法を制御する。
【００６０】
右コントローラ４は、左コントローラ３の各入力部と同様の各入力部を備える。具体的には、各ボタン１１３、アナログスティック５２、慣性センサ（加速度センサ１１４および角速度センサ１１５）を備える。これらの各入力部については、左コントローラ３の各入力部と同様の機能を有し、同様に動作する。
【００６１】
右コントローラ４は、電力供給部１１８を備える。電力供給部１１８は、左コントローラ３の電力供給部１０８と同様の機能を有し、同様に動作する。
【００６２】
なお、本実施形態では、本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態で、本体装置２単体をクレードルに載置して、本体装置２が生成して出力する画像を据置型モニタに表示する態様でプレイする場合を例として説明する。
【００６３】
次に、本実施形態で想定するゲーム処理の概要を説明する。本実施形態では、事前に正解方向を提示し、プレイヤにこの正解方向への方向入力を行わせるゲームを想定している。具体的には、複数の設問が用意されており、各設問毎に、上下左右の４方向のうちのいずれか１つの方向が「正解」の方向（以下、正解方向）として定義されている。そして、「出題」として各設問の正解方向が事前にプレイヤに示される。その後、プレイヤにコントローラを用いた方向入力を行わせ、その入力方向が上記正解方向か否かを判定することで進行するゲームである。特に、本例では、出題する際に、複数の設問分の正解方向を順番に示し、プレイヤに対してこの順番通りに正解方向を入力させるというゲームである。換言すれば、プレイヤの記憶力を試すゲームでもある。より具体的には、本実施形態で想定するゲームは旗振りゲームである。旗を振る方向が事前にプレイヤに提示（出題）され、プレイヤはコントローラを使って方向入力を行い、プレイヤオブジェクトに旗を振らせる、というゲームである。
【００６４】
次に、本実施形態で想定するゲームにおける操作に関して説明する。本ゲームでは、上記慣性センサを利用した方向入力を行う。すなわち、プレイヤは、コントローラを上下左右方向に振ることで、各方向への方向入力を行う。図８に、本ゲームをプレイする際のプレイヤおよびコントローラの姿勢の一例を示す。図８では、プレイヤが右コントローラ４を縦長となる向きで右手に把持してプレイする例を示す。また、上記の方向入力操作に際しては、右コントローラ４のｙ軸方向が地面と水平になる姿勢（右コントローラ４のｙ軸方向が、重力方向と直交する姿勢／図８の実空間座標系のｚ軸と平行となる姿勢）を「基準姿勢」とする。そして、プレイヤは、この「基準姿勢」を基準として、上下左右方向に右コントローラ４を振る動作を行う。この動作に伴う右コントローラ４の動きが検出され、上下左右方向への振りが各方向への方向入力として扱われる。
【００６５】
参考のため、図９及び図１０に、上記基準姿勢と上下左右方向への右コントローラ４の姿勢の変化例を示す。図９は、上下方向への振りに伴う右コントローラ４の姿勢変化の一例を示す模式図である。図９で示すように、右コントローラ４のｘ軸方向を回転軸として右コントローラ４の先端部分が上（実空間座標系のｙ軸正方向）を向くように姿勢を回転させるような操作が「上方向」への入力（以下、上振り）となる。また、逆に右コントローラ４の先端部分が下（実空間座標系のｙ軸負方向）を向くように姿勢を回転させるような操作が「下方向」への入力（以下、下振り）となる。次に、図１０は、左右方向への振りに伴う右コントローラ４の姿勢変化の一例を示す模式図である。図１０で示すように、右コントローラ４のｚ軸方向を回転軸として右コントローラ４の先端部分が左（実空間座標系のｘ軸正方向）を向くように姿勢を回転させるような操作が「左方向」への入力（以下、左振り）となる。また、逆に右コントローラ４の先端部分が右（実空間座標系のｘ軸負方向）を向くように姿勢を回転させるような操作が「右方向」への入力（以下、右振り）となる。
【００６６】
なお、本例では右コントローラ４を用いる例を示すが、左コントローラ３を用いても同様の処理は可能である。
【００６７】
次に、画面例を用いてゲームの流れを説明する。ここでは、設問数が４つの場合を例とする。なお、正解方向については、第１問目から順に、上、右、左、下であるとする。
ゲームが開始されると、まず、旗を振る順番を示す「お手本」がプレイヤに提示される（換言すれば、出題される）。図１１および図１２は、当該お手本を提示する画面の一例である。図１１では、旗を持ったお手本提示キャラクタが表示され、また、お手本を提示する旨のメッセージも表示されている。図１２は、お手本提示キャラクタが実際に旗を振っている様子を示している。ここでは、お手本提示キャラクタが、上、右、左、下の順番で旗を振る動き（アニメーション）が表示されることになる（そして、プレイヤは、この旗を振る順番を記憶する必要がある）。
【００６８】
上記お手本の提示が終わると、図１３に示すような解答のための準備画面が表示される。当該画面では、旗を持ったプレイヤキャラクタ２０１が表示され、更に、コントローラを水平の姿勢にして持つ旨の指示が表示される。プレイヤは上記図８で示したような姿勢となるようにコントローラを把持する。コントローラの姿勢が水平でかつ静止している状態が所定時間継続することで、解答の準備が整ったものと判定される。そして、図示は省略するが、解答開始の旨のメッセージ等が適宜表示され、解答の入力が開始する。その後、プレイヤは解答操作を行う。すなわち、プレイヤは、（自身の記憶力を頼りに）お手本で提示された順番通り、とプレイヤが考える方向にコントローラを振る操作を行っていく。つまり、方向入力を行っていく。この例では設問数は４つであるとする。そして、１設問が１回の振り操作に対応する。そのため、プレイヤは、合計４回の振り操作を行う必要がある。図１４は、解答入力中の画面の一例である。プレイヤがコントローラを振る操作に応じて、画面内のプレイヤキャラクタ２０１が所定の方向に旗を振っている様子が示されている。また、プレイヤキャラクタ２０１の上方には、残りの設問数を示す情報も表示されている。なお、本例では、１回の方向入力（１回分の振り操作）毎に、その入力方向が正解か不正解かが示されるものとする。他の例では、４問分の入力が終わってからまとめて正解／不正解の表示を行うようにしてもよい。また、不正解のときにはそこで解答を終了するようにしてもよい。正解／不正解の表示は、例えば、丸印やバツ印を画面に適宜表示すること等で行われる。そして、解答入力が終われば、図１５に示すような結果画面が表示される。当該結果画面では、正解数や得点等が表示される。
【００６９】
ところで、本例のように連続的にコントローラを振って方向入力を行う場合、その入力の途中で、本来入力したい方向とは違う方向への入力が発生して誤判定される可能性がある。すなわち、プレイヤの振り方（のクセ）等によっては、コントローラの姿勢変化の軌跡上（姿勢変化の過程）において、意図する方向と違う方向への入力として判定される場合もあり得る。例えば、右→上、の順に振る場合、プレイヤは腕を真上に上げているつもりでも、コントローラ（の先端）はまっすぐ上を向いておらずに、右斜めに傾いた姿勢となっている状態のとき、右方向への振りとして判定される可能性もある。また、コントローラの姿勢が上向きの姿勢に完全に変化しきる前の中間状態の姿勢のときに、タイミングによっては、右方向への振りとして判定される可能性もある。また、例えば右→上という順でコントローラを振る場合、プレイヤの振り方やクセ等によっては、上に振る前に、一瞬だけ下方向への入力が発生することがあり得る（上方向に振るために、下方向への「溜め」を無意識に行う等）。このような場合、プレイヤは右から上方向にコントローラを振ったつもりが、右→下方向への入力が行われたと誤判定される可能性がある。このような点に鑑みて、本実施形態では、連続的に方向入力を行う場合に誤判定される可能性を軽減し、正解しやすくするような入力判定制御を行っている。以下、本実施形態に係る入力判定制御の概要を説明する。
【００７０】
本実施例では、入力方向の判定に射影ベクトルを用いる。具体的には、プレイヤの正面方向に対して垂直な仮想平面（以下、射影平面）を想定する。この射影平面にコントローラのｙ軸方向（図４、図５参照）の姿勢ベクトルを、後述する基準姿勢におけるベクトルが原点となるようにして射影することで、射影ベクトルを算出する。そして、この射影ベクトルに基づいて、入力方向の判定を行う。
【００７１】
ここで、本実施形態に係る入力方向判定の前提として、本実施形態における上記射影平面上での射影ベクトルの角度の定義について説明する。図１６は、当該射影平面上における射影ベクトルの角度の定義を示した図である、図１６で示すように、ｙ軸の右側を０度〜１８０度に割り当て、ｙ軸の左側を０度〜−１８０度に割り当てている。以下の説明では、射影ベクトルの角度についてはこのような定義を前提として説明する。
【００７２】
また、本実施形態に係る入力方向判定の前提として、本実施形態における「入力の大きさ」の定義について説明する。この入力の大きさは、プレイヤが上下左右方向へコントローラを振る操作による、方向入力の大きさを示すものである。基本的に、上記射影ベクトルは、プレイヤがコントローラを上下左右にしっかりと向けるほど、大きなベクトルとなる。しかし、プレイヤがコントローラを振ったときに、勢い余って上記射影平面より手前にコントローラが向いてしまうことも考えられる。例えば、右コントローラ４を上振りする場合を想定する。この場合、振りの勢いが強いと、図１７に示すように、右コントローラ４の姿勢について、右コントローラ４の先端が真上を向いた状態で止まらずに、プレイヤの背面側に少し傾いた姿勢になることも考えられる。このような場合、右コントローラ４の先端が真上を向いた状態のときと比べると、入力の大きさとしてはより大きなものであるにも関わらず、射影ベクトルの大きさとしては、右コントローラ４の先端が真上を向いた状態のときよりも小さいものとなってしまう。この点を考慮して、本実施形態では、以下のようにして入力の大きさを算出する。
【００７３】
上振りの場合を例にして説明すると、まず、入力の大きさの範囲と姿勢の変化との対応について、図１８に示すように、０〜２の範囲内の値を割り当てる。図１８では、基準姿勢の状態の入力の大きさを０とし、コントローラの先端が真上を向いている状態（コントローラのｙ軸が射影平面と平行になる姿勢）のときの入力の大きさを１としている。そして、コントローラの先端が実空間座標系におけるｚ軸負方向に向いた状態のときの入力の大きさを２としている。
【００７４】
このような割り当てを前提に、上記図１７で示したような、コントローラの先端がプレイヤの背面側に少し傾いた姿勢（コントローラの向きが射影平面より手前に入っている姿勢）を例にする。この場合は、「２−射影ベクトルの大きさ」を入力の大きさとして算出する。例えば、図１７の姿勢のときの射影ベクトルの大きさが０．８であるとする。この場合、２−０．８＝１．２、が入力の大きさとして算出されることになる。つまり、コントローラの向きが射影平面より手前に入っている姿勢であるか否かが判定され、肯定の場合は「２−射影ベクトルの大きさ」が入力の大きさとして算出される。否定の場合は、射影ベクトルの大きさがそのまま入力の大きさとして算出されることになる。なお、コントローラの向きが射影平面より手前に入っている姿勢であるか否かは、慣性センサからの出力（例えばコントローラの回転角度等）に基づいて判定可能である。このような算出手法によって、本実施形態では、入力の大きさを０〜２の範囲内で変化する値として算出する。
【００７５】
次に、本実施形態における入力方向判定で用いる各種の閾値およびこれを用いた判定手法について説明する。基本的には、上記射影平面上における射影ベクトルの向きを見ることで、入力方向を判定する。本実施形態では、判定結果としては、「上」・「下」・「左」・「右」・「無し」の５種類の判定結果が得られるとする。また、判定に用いる閾値として、上方向として判定されるの角度、左方向として判定される角度、右方向として判定される角度、下方向として判定される角度が設定されている。また、それぞれの方向について必要な入力の大きさも設定されている（例えば、上下方向に比べて、左右方向への方向入力のほうが、よりしっかりとした入力が要求される）。
【００７６】
更に、本実施形態では、上記判定に使う閾値について、大きく分けて３種類の閾値を用いる。そして、上記入力の大きさに基づき、これら３種類の閾値を使い分ける３種類の判定が段階的に行われる。以下の説明では、この３種類の判定のことを「第１の判定」「第２の判定」「第３の判定」と呼ぶ。また、これら判定の順番としては、「第１の判定」「第２の判定」「第３の判定」の順番で行われ、いずれかの判定においていずれかの方向入力があることが判定されれば、そこで「現在の入力方向」が確定する。なお、この判定においては、主に、各設問の正解方向に応じて正解と判定される射影平面上の領域の大きさを調整するような制御を行うことで、誤判定される可能性を軽減して正解しやすくする入力判定制御を実現している。以下、これら３種類の判定について説明する。
【００７７】
［第１の判定について］
まず、第１の判定について説明する、第１の判定は、「入力の大きさがある程度大きなものである」場合を想定した判定である。つまり、ある程度大きな入力があった場合に当該第１の判定が行われる。本例では基本的には各設問の正解方向と判定される射影平面上の領域の大きさを調整するような制御を行うが、入力がある程度大きなものである場合は、プレイヤは、所定の方向を指示しきっていると考えられる。そこで、この場合は、正解方向として判定される角度（領域の大きさ）を必要以上に大きくする、ということはなるべく行わないようにしている。つまり、不正解方向に入力があったとしても、入力が大きいことからすれば、それは本当にプレイヤが入力方向を間違えている、という観点によるものである。
【００７８】
図１９に、第１の判定で用いられる第１種閾値の模式図を示す。これは、上記射影平面を大きく４つの領域に区分けしたようなイメージである。図１９においては、当該射影平面の中心が原点となっている。また、当該原点は、上記基準姿勢（の射影ベクトル）に対応する。また、図１９において黒塗りで示される部分は、無判定領域を示す。この領域は、有効な方向入力として判定されるために最低限必要となる入力の大きさを示すものである。なお、本実施形態では、第１種閾値における無判定領域に対応する入力の大きさは０．９であるものとする。すなわち、０．９より大きな入力の大きさが発生した場合に、第１の判定が行われるものとする。
【００７９】
第１種閾値においては、まず、射影平面用で上方向と判定される領域（以下、上領域と呼ぶ）は、無反応領域外の領域であって、−４０度〜＋４０度の範囲の領域である。また、右方向と判定される領域（以下、右領域と呼ぶ）は、無反応領域外の領域であって、＋４０度〜＋１２０度の範囲の領域である。左方向と判定される領域（以下、左領域と呼ぶ）のは、無反応領域外の領域であって、−４０度〜−１２０度の範囲の領域である。下方向と判定される領域（以下、下領域と呼ぶ）は、無反応領域外の領域であって、−１２０度〜−１８０度、および＋１８０度〜＋１２０度の範囲の領域である。なお、各方向に対応する領域の境界となる角度を示している境界線のことを、以下では角度閾値と呼ぶ。
【００８０】
第１の判定では、上記のような角度が設定されている第１種閾値の角度閾値を、設問毎にその正解方向に応じて変化させてから射影ベクトルの向きを判定する。この変化の具体例を挙げると、まず、正解が「上」の場合は、図２０に示すように、上領域の角度閾値を−７０度〜＋７０度に変化させる。つまり、上領域の中心角を大きくすることによって、上領域自体を少し大きくしている（なお、この値は、上記のように、必要以上に領域を大きくしすぎない意図を有する値にもなっている）。また、正解が「右」の場合は、図２１に示すように、右領域の角度閾値を＋４０度〜＋１４５度に変化させる。つまり、右領域を少し大きくしている。正解が「左」の場合は、図２２に示すように、左領域の角度閾値を−４０度〜−１４５度に変化させる。つまり、左領域を少し大きくしている。なお、正解が「下」の場合は、角度閾値は変化させない。また、この変化の具体的な値はあくまで一例であり、他の実施形態ではゲーム内容等に応じて他の値を用いてもよい。
【００８１】
このように、設問毎に、正解方向に対応する方向の領域を大きくすることで、その方向への正解入力として判定されやすくすることができる。
【００８２】
［直前入力を加味した調整について］
ところで、本実施形態では、上記のような正解方向に応じた調整に加えて、更に、直前の入力方向を加味した調整も行っている。これは、プレイヤが方向入力する操作の流れによっては、誤入力となりやすいものもあることに鑑みたものである。つまり、直前（の設問に対して）にプレイヤが入力した方向と、これから入力されるであろう正解方向との組み合わせによって、正解方向に対応する領域の大きさを更に変化させる、あるいはさせない、という制御も行っている。例えば、直前の入力方向が「左」または「右」である場合で、次に入力されるべき正解方向が「上」の場合を想定する。この場合、プレイヤが「上」へ動かそうとした際に一度手首を返してしまって「下」への入力として判定される場合があり得る。このような点を考慮して、「左」または「右」から「上」という入力の組み合わせの場合は、左右の角度閾値を大きくして「下」方向の領域を小さくすることで、「下」への入力を判定されにくいようにする。また、その逆に、方向の組み合わせによっては、上記のような判定領域を大きくする、ということを行わないようにする制御もあり得る。
【００８３】
本実施形態では、第１の判定においては、上記直前の入力を加味した調整として、次のような調整が行われる。すなわち、正解が「上」の場合で、直前の入力方向が「下」である場合（下→上の組み合わせの場合）は、上述したような上方向の角度閾値を大きくするという調整は行わないようにする。下から上への動きの場合は、入力方向がぶれることは少ないと考えられるためである。
【００８４】
［姿勢変化が無くても入力判定される場合の対処について］
また、上記の直前方向を加味した調整に加え、本実施形態では、更に、コントローラを動かしていないにもかかわらず入力判定されることを防ぐための調整も行う。例えば、第１問目の正解が「右」、第２問目の正解が「上」の場合を想定する。この場合、第１問目の判定では、図２１で示したような閾値が用いられ、第２問目の判定では図２０で示したような閾値が用いられることになる。そして、第１問目において、プレイヤの入力にかかる射影ベクトルの角度が＋４１度の方向であったとする。この場合、第１問目については、右領域の範囲内であるため、「右」方向への入力として判定される。その後、第２問目にかかる処理に移った場合で、コントローラを動かしていない場合を想定する。この場合、第２問目の判定では、＋４１度の方向は上領域に含まれるため、このまま判定すると、プレイヤがコントローラを動かしていない（姿勢を一切変化させていない）場合でも、上方向への入力（換言すれば、右方向以外の方向への入力）として判定されてしまう。そこで、本実施形態では、（コントローラの姿勢変化が発生していないにもかかわらず）現在の入力方向が設問をまたいだ前後で異なる方向として判定され得る場合には、現在の入力角度（＝前回の入力角度）からプラスまたはマイナス５度の角度を新たな角度閾値とするという制御も行う。プラスまたはマイナスのいずれの方向に調整するかについては、現在の入力方向が前回の設問における入力方向となるような方向に調整する。例えば、上記の場合は、現在の射影ベクトルの角度である＋４１度が「右」方向に含まれるように、＋４１度から５度引いた＋３６度を上方向と右方向の境界の角度閾値とする。
【００８５】
［第２の判定について］
次に、第２の判定について説明する。本実施形態では、第２の判定は、入力の大きさが０．９以下の場合に行われる。つまり、第１の判定を行う条件が満たされなかった場合、この第２の判定が行われる。第２の判定では、上下左右の方向に対応する閾値がそれぞれ予め用意されている（つまり、プリセットされている）。これらの閾値のことを、第２種閾値と呼ぶ。以下、図面を用いて、各方向に対応する第２種閾値の例を説明する。
【００８６】
図２３は、正解方向が上方向の場合に用いる第２種閾値の一例である（以下、第２種上方向閾値と呼ぶ）。第２種上方向閾値では、必要となる入力の大きさは、上下左右全ての方向について、０．５に設定されている。また、上領域としては−６８度〜＋６８度の範囲となっている。右領域は＋６８度〜＋１２０度、左領域は、−６８度〜−１２０度の範囲となっている。また、−１２０度〜−１８０度および＋１８０度〜＋１２０度の範囲が下領域となっている。
【００８７】
次に、図２４は、正解方向が左または右方向である場合に用いる第２種閾値の一例である（以下、第２種左右方向閾値と呼ぶ）。第２種左右方向閾値では、必要となる入力の大きさは、上下左右全ての方向について、０．５に設定されている。また、上領域は−４０度〜＋４０度の範囲となっている。右領域は＋４０度〜＋１４５度の範囲であり、左領域は、−４０度〜−１４５度の範囲となっている。また、下領域は、−１４５度〜−１８０度および＋１８０度〜＋１４５度の範囲となっている。
【００８８】
次に、図２５は、正解方向が下方向の場合に用いる第２種閾値の一例である（以下、第２種下方向閾値と呼ぶ）。第２種下方向閾値では、必要となる入力の大きさは、上下左右全ての方向について、０．１５に設定されている。また、上領域は−４０度〜＋４０度の範囲となっている。右領域は＋４０度〜＋１２５度の範囲であり、左領域は、−４０度〜−１２５度の範囲となっている。また、下領域は、−１２０度〜−１８０度および＋１８０度〜＋１２０度の範囲となっている。
【００８９】
このように、正解方向に応じて複数の第２種閾値を使い分けることで、各方向について正解として判定されやすいようにすることができる。
【００９０】
また、第２の判定においても、第１の判定と同様に、直前入力を加味した調整が行われる。具体的には、上述の第２種閾値に対して、更に以下のような調整が行われる。まず、正解方向が上方向であって、直前の入力方向が左または右方向だった場合、図２６に示すように第２種上方向閾値の調整が行われる。すなわち、角度閾値は変化しないが、必要となる入力の大きさ（無判定領域の大きさ）の調整が行われる。具体的には、上方向の判定について必要な入力の大きさが０．５から０．８６に変更される。また、正解方向が左方向であって、直前の入力方向が右である場合、あるいは、正解方向が右方向であって、直前の入力方向が左である場合は、図２７に示すように第２種左右方向閾値が調整される。すなわち、右および左方向について必要な入力の大きさが０．５から０．３に変更される（結果、左右方向においてそれぞれ逆方向へ移動する動きについては、より小さな入力でも拾えることになる）。
【００９１】
なお、本例では、第２の判定において、下方向が正解の場合は、直前方向を加味した調整は特に行わない。
【００９２】
また、第２の判定においても、上記第１の判定において説明したような、コントローラの姿勢変化がない場合の入力判定に対処するための調整が行われる。
【００９３】
［第３の判定］
次に、第３の判定について説明する。本実施形態では、上記第２の判定において、方向入力が無しと判定された場合に、この第３の判定が行われる。図２８に、第３の判定において用いられる第３種閾値の模式図を示す。第３種閾値では、必要となる入力の大きさは、上方向については０．４５、それ以外の方向は、０．４に設定されている。また、上領域は−６０度〜＋６０度の範囲となっている。右領域は＋６０度〜＋１２５度の範囲であり、左領域は、−６０度〜−１２５度の範囲となっている。また、下領域は、−１２５度〜−１８０度および＋１８０度〜＋１２５度の範囲となっている。
【００９４】
また、第３の判定においては、正解方向が下方向である場合、図２８で示した第３種閾値に対して、次のような調整を加えたうえ入力方向の判定が行われる。すなわち、図２９に示すように、右領域の大きさを＋６０度〜＋１２０度に変更し、左領域の大きさを−６０度〜−１２０度の大きさに変更する（つまり、下領域を少し大きくする）。
【００９５】
更に、第３の判定においても、上記第１及び第２の判定と同様に、直前入力を加味した調整が行われる。具体的には、上述の第３種閾値に対して、更に以下のような調整が行われる。まず、正解方向が上方向の場合であって、直前の入力方向が下方向の場合は、図３０に示すように、上領域の大きさを−４０度〜＋４０度に変更する。また、正解方向が上方向の場合であって、直前の入力方向が左または右方向の場合は、図３１に示すように、右領域の大きさを＋６０度〜＋１４０度に、左領域の大きさを−６０度〜−１４０度の大きさに変更する。
【００９６】
次に、正解方向が下方向の場合であって、直前の入力方向が上の場合は、上述した図２９のような変化に加えて更に、図３２で示すように、下方向において必要な入力の大きさを０．４から０．４５に変更する。
【００９７】
また、第３の判定においても、上記第１の判定に関して説明したような、コントローラの姿勢変化がない場合の入力判定に対処するための調整は行われる。
【００９８】
このように、第３の判定を用意することで、第２の判定では方向入力として判定されないような（入力の大きさが小さめの）入力でも、その入力方向を判定することが可能である。
【００９９】
上記のような判定手法で、「現在の入力方向」を判定することができる。ここで、本実施形態では、判定された「現在の入力方向」を即座に「設問に対する解答」としては確定せずに、所定フレーム分の時間の経過を待ってから、「設問に対する解答」として確定している。具体的には、「現在の入力方向」が正解方向である場合は、５フレームの間その方向が続けば、正解の解答として確定させる。「現在の入力方向」が不正解である場合は、その方向が１２フレームの間続けば、不正解の解答として確定させている。これにより、不正解方向を跨ぐような軌跡でコントローラを動かした場合、この不正解の方向が正式な解答として誤検出されることを防ぐことができる。
【０１００】
このように、本実施形態では、入力方向を判定する際に３種類の閾値を利用しており、更に、各種の閾値について、正解方向に応じてその内容を変化させている。これにより、プレイヤの入力が正解方向への入力として判定されやすくすることができる。
【０１０１】
なお、上述した各種閾値における具体的な数値はあくまで一例であり、ゲーム内容などに応じた値に適宜設定すればよい。
【０１０２】
次に、図３３〜図４１を参照して、本実施形態で実行されるゲーム処理についてより詳細に説明する。
【０１０３】
［利用されるデータについて］
まず、本ゲームシステム１で用いられる各種データについて説明する。図３３は、本体装置２のＤＲＡＭ８５に格納されるプログラムおよび情報の一例を示している。ＤＲＡＭ８５には、ゲーム処理プログラム４０１、操作データ４０２、設問データ４０５、第１種閾値データ４０９、第２種閾値データ４１０、第３種閾値データ４１４、現在方向データ４１５、前回入力方向データ４１６、正誤判定確定用データ４１７、解答結果データ４１８、等が格納される。
【０１０４】
ゲーム処理プログラム４０１は、本実施形態にかかるゲーム処理を実行するためのプログラムである。具体的には、後述する図３５のフローチャートの処理を実行するためのプログラムである。
【０１０５】
操作データ４０２は、コントローラに対して行われた各種操作を示すデータである。操作データ４０２には、慣性センサデータ４０３、ボタンデータ４０４等が含まれる。慣性センサデータ４０３は、上記加速度センサ１０４、１１４および角速度センサ１０５、１１５から出力された加速度データ、角速度データである。ボタンデータ４０４は各種ボタンの押下状態を示すデータである。
【０１０６】
設問データ４０５は、本ゲーム処理で出題される各設問に関するデータである。ここで、本ゲームでは、上記のように複数の設問の正解方向を順番に提示して、その順番通りに入力させている。この一度に出題する設問のセットのことを本例では「ステージ」と呼ぶ。つまり、１ステージに複数の設問が含まれているという構成となっている。そして、設問データ４０５には、このステージ単位でデータを格納する構成となっている。具体的には、設問データ４０５には複数のステージ情報４０６が含まれている。図３３では、第ｎステージ情報（ｎは１から始まる整数）として示している。図３４に、当該ステージ情報４０６のデータ構成の一例を示す。ステージ情報４０６は、出題順番４０６１および正解方向情報４０６２の項目を有するテーブル形式のデータとして構成されている。出題順番４０６１は、各設問を出題する順番を示す情報である。本例では、旗を振る順番に対応する。正解方向情報４０６２は、各設問における正解方向を示す情報である。
【０１０７】
図３３に戻り、第１種閾値データ４０９は、上記図１９で示したような第１種閾値の内容を定義したデータである。すなわち、必要な入力の大きさや、上下左右の境界となる上記角度閾値について定義しているデータである。
【０１０８】
第２種閾値データ４１０は、上記第２種閾値の内容を定義したデータである。本例では、第２種閾値データ４１０には、第２種上方向閾値データ４１１、第２種左右方向閾値データ４１２、第２種下方向閾値データ４１３が含まれている。それぞれ、図２３〜２５を用いて説明したような第２種上方向閾値、第２種左右方向閾値、第２種下方向閾値に対応するデータである。
【０１０９】
なお、本実施形態では、第２の判定において右方向と左方向の判定に用いる閾値が実質的に同じであるため、左右に共通のデータとしているが、他の実施形態では、左方向と右方向とで異なる内容の閾値とし、別々のデータとして持たせる構成でもよい。
【０１１０】
次に、第３種閾値データ４１４は、図２８を用いて上述した第３種閾値の内容を定義したデータである。
【０１１１】
現在方向データ４１５は、「現在の入力方向」を示すデータである。すなわち、上述したような判定の結果として決定された、現在のフレームにおける入力方向を示すデータである。なお、初期値は、現在方向がまだ判定されていないことを示す「未設定」を示す情報が設定されるものとする。
【０１１２】
前回入力方向データ４１６は、直前の設問における解答（正解不正解にかかわらず）として確定した入力方向を示すデータである。
【０１１３】
正誤確定判定用データ４１７は、上述したような、所定フレーム分の時間の経過を待ってから「設問に対する解答」を確定する処理に用いるデータである。具体的には、現在方向データ４１５の履歴を過去１２フレーム分まで格納可能なデータである。また、１２フレーム分を越えた場合は、古い順に消去される。
【０１１４】
解答結果データ４１８は、各設問に対するプレイヤの解答内容を記憶しておくためのデータである。例えば、各設問に対して未解答の状態か否か、未解答でない場合は、その解答内容、が示されるデータである。当該データは、最終的な得点計算等に用いられる。また、解答の進行状況（何問目まで解答済みか）についても当該データに基づき把握可能である。
【０１１５】
その他、図示は省略するが、処理中に算出された上記射影ベクトルを示すデータや上記お手本提示キャラクタやプレイヤキャラクタ等の画像データ等、ゲーム処理で用いられる各種データもＤＲＡＭ８５に格納される。
【０１１６】
［詳細フローチャート］
次に、図３５のフローチャートを参照して、ゲームシステム１によって実行されるゲーム処理の流れを説明する。なお、図３５においてステップＳ３〜Ｓ５の処理ループは、例えば１フレーム（例えば１／６０秒）毎に繰り返し実行されるものとする。
【０１１７】
ゲームが開始されると、ゲーム処理に用いる各種データが初期化された後、ステップＳ１で、プロセッサ８１は、出題処理を実行する。これは、上記図１１を用いて示したような、「お手本」をプレイヤに提示するための処理である。具体的には、プロセッサ８１は、設問データ４０５から今回出題するステージに対応するステージ情報４０６を取得する。続いて、プロセッサ８１は、上記図１１で示したような出題画面を生成して表示する。そして、プロセッサ８１は、ステージ情報４０６に含まれる出題順番４０６１および正解方向情報４０６２に基づいて、正解方向、すなわち、コントローラ（旗）を振る順番をプレイヤに提示する。具体的には、プロセッサ８１は、上記お手本提示キャラクタに、出題順番４０６１で示される順番で各設問の正解方向に旗オブジェクトを振る動きを行わせる。
【０１１８】
出題処理が終われば、次に、ステップＳ２で、プロセッサ８１は、ゲーム開始処理を実行する。具体的には、プロセッサ８１は、上記図１３で示したような準備画面を表示し、プレイヤにコントローラを基準姿勢になるように持つことを促す表示を行う。その後、コントローラが基準姿勢になったことが確認できれば、例えば解答入力開始のためのカウントダウン表示等を行い、プレイヤからの解答入力の受付を開始する。なお、基準姿勢の確認については、例えば、慣性センサデータ４０３に基づいて、コントローラが上記図８等で示したような水平かつ静止している状態が所定フレーム数継続したか否か、等で判定する。
【０１１９】
次に、ステップＳ３で、プロセッサ８１は、解答入力・判定処理を実行する。図３６〜図３７は、当該解答入力・判定処理の詳細を示すフローチャートである。図３６において、まず、ステップＳ１１で、プロセッサ８１は、操作データ４０２を取得する。
【０１２０】
次に、ステップＳ１２で、プロセッサ８１は、慣性センサデータ４０３に基づいて、上記のような射影ベクトルを算出する。具体的には、プロセッサ８１は、慣性センサデータ４０３に基づいてコントローラのｙ軸方向（図５参照）の姿勢を示す３次元ベクトルを算出する。更に、この３次元ベクトルを、上記基準姿勢が原点となるように上述したような射影平面に射影して２次元の射影ベクトルを算出する。これにより、射影ベクトルの向きおよび射影ベクトルの大きさが算出できる。
【０１２１】
次に、ステップＳ１３で、プロセッサ８１は、上記図１８を用いて説明したような入力の大きさを算出する。例えば、プロセッサ８１は、コントローラの姿勢が、図１８で示したような０〜１の範囲内であるか、１〜２の範囲内であるかを判定する。そして、１〜２の範囲内の姿勢である場合は、「２−射影ベクトルの大きさ」で得られる値を入力の大きさとして算出する。一方、０〜１の範囲内であれば、射影ベクトルの大きさをそのまま入力の大きさとして算出する。
【０１２２】
なお、本例では、当該算出した入力の大きさを用いて以下の処理を行うが、他の実施形態では、当該入力の大きさを「射影ベクトルの大きさ」に反映して、射影ベクトルの大きさを用いた処理を行うようにしてもよい。
【０１２３】
次に、ステップＳ１４で、プロセッサ８１は、現在方向データ４１５を初期化する。
【０１２４】
次に、ステップＳ１５で、プロセッサ８１は、第１の判定処理を実行する。図３８は、当該第１の判定処理の詳細を示すフローチャートである。まず、ステップＳ３１で、プロセッサ８１は、上記算出した入力の大きさが０．９より大きいか否かを判定する。当該判定の結果、０．９以下の場合は（ステップＳ３１でＮＯ）、プロセッサ８１は、当該第１の判定を処理を終了する。すなわち、「現在の入力方向」がまだ決まっていない状態で第１の判定処理が終了することになる。
【０１２５】
一方、入力の大きさが０．９より大きい場合は（ステップＳ３１でＹＥＳ）、ステップＳ３２で、プロセッサ８１は、第１種閾値データ４０９を読み込む。
【０１２６】
次に、ステップＳ３３で、プロセッサ８１は、現在の設問についての正解方向情報４０６２を取得する。そして、プロセッサ８１は、上記図２０〜図２２を用いて説明したような、正解方向に応じて角度閾値を調整する処理を実行する。
【０１２７】
次に、ステップＳ３４で、プロセッサ８１は、直前の入力方向を加味した角度閾値の調整処理を実行する。すなわち、前回入力方向データ４１６と今回の正解方向とに基づき、所定の方向の角度閾値を更に調整する処理を実行する。なお、設問が第１問目の場合は、前回の入力方向は確定していない（例えば前回入力方向データ４１６の内容が未設定と判定される）ため、当該処理は行われない。
【０１２８】
次に、ステップＳ３５で、プロセッサ８１は、上述したようなコントローラの姿勢変化がないにもかかわらず、前回フレームと今回フレームとの処理で異なる入力方向として判定されることに対処するための調整処理を実行する。例えば、プロセッサ８１は、前回入力方向データ４１６で示される入力方向の角度と、上記ステップＳ３４までの処理で調整した閾値（今回使用する閾値）を用いて、入力方向を判定する。そして、その判定結果が前回フレームの処理における入力方向と変わってしまうか否かを判定する。つまり、コントローラを動かしていなくても入力判定されてしまうような状態か否かを判定する。その結果、前回の入力角度を今回使用する閾値で判定すると前回の判定結果と変わってしまう場合は、上記のように、今回の判定で用いる閾値の角度閾値を更に調整する処理を行う。なお、この処理についても、設問が第１問目の場合は前回入力方向データ４１６がまだ無いため、行われないことになる。
【０１２９】
次に、ステップＳ３６で、プロセッサ８１は、上記各種の調整が行われた第１種閾値と上記算出した射影ベクトル（の向き）を用いて、現在の入力方向の判定を行う。続いてステップＳ３７で、プロセッサ８１は、当該判定結果を示す情報を現在方向データ４１５に格納する。つまり、「現在の入力方向」が決まったことになる（なお、ここでは、「上」・「下」・「左」・「右」のいずれかが決まることになる）。更に、プロセッサ８１は、当該現在方向データ４１５と同内容の情報を正誤確定判定用データ４１７にも追加する。以上で、第１の判定処理は終了する。
【０１３０】
図３６に戻り、次に、ステップＳ１６で、プロセッサ８１は、現在方向データ４１５を参照して、上記第１の判定処理の結果、「現在の入力方向」が決まったか否かを判定する。その結果、「現在の入力方向」が決まった場合は（ステップＳ１６でＹＥＳ）、後述するステップＳ２０に処理が進められる。
【０１３１】
一方、「現在の入力方向」がまだ決まっていない場合は（ステップＳ１６でＮＯ）、ステップＳ１７で、プロセッサ８１は、第２の判定処理を実行する。図３９は、第２判定処理の詳細を示すフローチャートである。まず、ステップＳ４１で、プロセッサ８１は、現在の設問についての正解方向情報４０６２を取得する。更に、プロセッサ８１は、現在の設問の正解方向に応じて、上記第２種上方向閾値データ４１１、第２種左右方向閾値データ４１２、第２種下方向閾値データ４１３のうちのいずれかを読み込む。
【０１３２】
次に、ステップＳ４２で、プロセッサ８１は、直前の入力方向を加味した角度閾値の調整処理を実行する。すなわち、前回入力方向データ４１６と現在の設問の正解方向とに基づき、所定の方向の角度閾値を更に調整する処理を実行する。なお、上記ステップＳ３４と同様、設問が第１問目の場合は、当該処理は行われない。
【０１３３】
次に、ステップＳ４３で、プロセッサ８１は、上記ステップＳ３５と同様の、コントローラの姿勢変化がないにもかかわらず、前回フレームと今回フレームとの処理で異なる入力方向として判定されることに対処するための調整処理を実行する。この処理も、上記ステップＳ３５と同様に、設問が第１問目の場合は実行されないことになる。
【０１３４】
次に、ステップＳ４４で、プロセッサ８１は、上記各種の調整が行われた第２種閾値と上記算出した射影ベクトルの方向および入力の大きさを用いて、現在の入力方向の判定が行われる。この判定では、判定結果としては、「上」・「下」・「左」・「右」・「無し」のいずれかとなる。ここで、「無し」と判定されるのは、例えば、上記ステップＳ１３で算出された入力の大きさが、上記調整後の第２種閾値で必要とされる「入力の大きさ」に満たない場合等である。
【０１３５】
次に、ステップＳ４５で、上記判定結果が「無し」であるか否かが判定される。その結果、「無し」ではない場合は（ステップＳ４５でＮＯ）、ステップＳ４６で、プロセッサ８１は、上記判定結果を示す情報を現在方向データ４１５に格納する。つまり、「上」・「下」・「左」・「右」のいずれかが現在の入力方向として決定されることになる。更に、プロセッサ８１は、当該現在方向データ４１５と同内容の情報を正誤確定判定用データ４１７にも追加する。そして、第２の判定処理は終了する。一方、上記判定結果が「無し」の場合は（ステップＳ４５でＹＥＳ）、上記ステップＳ４６の処理は行われずに、第２の判定処理は終了する。
【０１３６】
図３６に戻り、次に、ステップＳ１８で、プロセッサ８１は、第２の判定処理の結果、現在の入力方向が「無し」と判定されていたか否かを判定する。すなわち、現在方向データ４１５に「上」・「下」・「左」・「右」のいずれかが設定されているか否かを判定する。当該判定の結果、「無し」ではない場合（「上」・「下」・「左」・「右」のいずれかが設定されている場合）は（ステップＳ１８でＮＯ）、後述するステップＳ２０に処理が進められる。一方、「無し」の場合は（ステップＳ１８でＹＥＳ）、ステップＳ１９で、プロセッサ８１は、第３の判定処理を実行する。
【０１３７】
図４０は、第３判定処理の詳細を示すフローチャートである。まず、ステップＳ５１で、プロセッサ８１は、第３種閾値データ４１４を読み込む。
【０１３８】
次に、ステップＳ５２で、プロセッサ８１は、直前の入力方向を加味した角度閾値の調整処理を実行する。すなわち、前回入力方向データ４１６と今回の正解方向情報４０６２とに基づき、所定の方向の角度閾値を更に調整する処理を実行する。なお、上記ステップＳ３４と同様、設問が第１問目の場合は、当該処理は行われない。
【０１３９】
次に、ステップＳ５３で、プロセッサ８１は、上述したようなコントローラの姿勢変化がないにもかかわらず、前回フレームと今回フレームとの処理で異なる入力方向として判定されることに対処するための調整処理を実行する。この処理についても、上記ステップＳ３５と同様に設問が第１問目の場合は行われないことになる。
【０１４０】
次に、ステップＳ５４で、プロセッサ８１は、上記の調整が行われた第３種閾値と上記算出した射影ベクトルの方向および入力の大きさを用いて、現在の入力方向の判定を行う。この判定結果としては、「上」・「下」・「左」・「右」・「無し」のいずれかとなる。
【０１４１】
次に、ステップＳ５５で、プロセッサ８１は、当該判定結果を示す情報を現在方向データ４１５に格納する。これにより、「無し」の場合も含めて、「現在の入力方向」が決まることになる。更に、プロセッサ８１は、当該現在方向データ４１５と同内容の情報を正誤確定判定用データ４１７にも追加する。以上で、第３の判定処理は終了する。
【０１４２】
次に、図３７のステップＳ２０で、プロセッサ８１は、正誤確定処理を実行する。これは、正解／不正解の状態が所定フレーム数続いたかを見ることで、正解／不正解の解答を確定させるための処理である。図４１は、当該正誤確定処理の詳細を示すフローチャートである。まず、ステップＳ６１で、プロセッサ８１は、現在方向データ４１５を参照して、現在の入力方向が今回の設問の正解方向であるか否かを判定する。その結果、正解方向である場合は（ステップＳ６１でＹＥＳ）、次に、ステップＳ６２で、プロセッサ８１は、正誤確定判定用データ４１７を参照し、（コントローラの姿勢が）正解方向である状態が５フレーム続いたか否かを判定する。当該判定の結果、正解方向の状態が５フレーム続いた場合は（ステップＳ６２でＹＥＳ）、ステップＳ６３で、プロセッサ８１は、今回の設問に対する解答として正解したことを確定するための処理を実行する。具体的には、解答結果データ４１８に現在の設問に対して正解した旨を示す情報を設定する。更に、プロセッサ８１は、ここで確定した入力方向を示す情報を前回入力方向データ４１６に設定する。
【０１４３】
一方、まだ５フレーム続いていない場合は（ステップＳ６２でＮＯ）、上記ステップＳ６３の処理は行われず、正誤確定処理は終了する。
【０１４４】
一方、上記ステップＳ６１の判定の結果、現在の入力方向が正解方向ではない場合（ステップＳ６１でＮＯ）、次に、ステップＳ６４で、プロセッサ８１は、正解方向では無い状態が１２フレーム続いたか否かを判定する。すなわち、コントローラの姿勢が正解以外の所定の１方向を向いている状態が１２フレーム続いたか否かを判定する。例えば、正解が上方向である場合は、右、左、下の方向入力が１２フレーム続いたか否かを判定する。すなわち、現在の入力方向が「無し」の場合は、このような不正解確定のためのフレーム数のカウントは行わない。
【０１４５】
上記判定の結果、不正解となる所定の一方向を入力している状態が（同じ姿勢のまま）１２フレーム続いた場合は（ステップＳ６４でＹＥＳ）、ステップＳ６５で、プロセッサ８１は、今回の設問に対する解答が不正解であることを確定するための処理を実行する。すなわち、解答結果データ４１８に現在の設問に対して不正解である旨を示す情報を設定する。更に、プロセッサ８１は、ここで確定した入力方向を示す情報を前回入力方向データ４１６に設定する。
【０１４６】
一方、上記判定の結果、まだ１２フレーム続いていない場合は（ステップＳ６４でＮＯ）、上記ステップＳ６５の処理は行われず、正誤確定処理は終了する。
【０１４７】
図３７に戻り、次に、ステップＳ２１で、プロセッサ８１は、正誤確定処理の結果、現在の設問に対して正解が確定したか否かを判定する。その結果、正解が確定した場合は（ステップＳ２１でＹＥＳ）、ステップＳ２２で、プロセッサ８１は、正解時の処理を実行する。具体的には、プロセッサ８１は、正解時の演出を表示するための各種設定を行う（例えば丸印を表示する演出等）。その他、プロセッサ８１は、残り設問数の表示を更新するための処理等も行う。
【０１４８】
一方、現在の設問について正解が確定していない場合は（ステップＳ２１でＮＯ）、ステップＳ２３で、プロセッサ８１は、正誤確定処理の結果、現在の設問に対して不正解であることが確定したか否かを判定する。その結果、不正解が確定した場合は（ステップＳ２３でＹＥＳ）、ステップＳ２４で、プロセッサ８１は、不正解時の処理を実行する。具体的には、プロセッサ８１は、不正解時の演出を表示するための各種設定を行う（例えばバツ印を表示する演出等）。その他、プロセッサ８１は、残り設問数の表示を更新するための処理等も行う。
【０１４９】
一方、ステップＳ２３の判定の結果、現在の設問について正解も不正解も確定していない場合は（ステップＳ２３でＮＯ）、上記ステップＳ２４の処理は行われず、解答入力・判定処理は終了する。
【０１５０】
図３５に戻り、解答入力・判定処理が終われば、ステップＳ４で、プロセッサ８１は、上記の処理結果を反映した画面を生成して表示する。これにより、現在の入力方向に応じてプレイヤキャラクタ２０１が旗を振る動作や、各設問毎の正解・不正解の演出等が表示される。
【０１５１】
次に、ステップＳ５で、プロセッサ８１は、プレイヤが解答入力を終了したか否かを判定する。たとえば全ての設問に解答させる場合には、プロセッサ８１は、解答結果データ４１８に基づき、正誤のいずれかが確定した方向入力が設問数の分だけ行われたか否かを判定する。または、いずれかの設問に不正解となった時点で解答を終了してもよい。当該判定の結果、解答入力がまだ終わっていない場合は（ステップＳ５でＮＯ）、ステップＳ３に戻り、処理が繰り返される。
【０１５２】
一方、解答入力が終わっている場合は（ステップＳ５でＹＥＳ）、ステップＳ６で、プロセッサ８１は、結果表示処理を実行する。プロセッサ８１は、解答結果データ４１８を参照し、得点計算等を行い、今回のステージにおける結果画面を生成して表示する。以上で、（１ステージ分にかかる）ゲーム処理は終了する。
【０１５３】
このように、本実施形態では、正解方向を予めプレイヤに提示してその方向を入力させるゲームにおいて、正解と判定されやすくなるように、正解判定に用いる判定条件をその正解方向に応じて調整している。これにより、誤判定が発生する頻度を軽減させることができる。
【０１５４】
（変形例）
なお、上記実施形態では、一人プレイのゲームであることを想定した例を挙げているが、例えば二人のプレイヤによる対戦形式のゲームとしてもよい。例えば、一方のプレイヤが右コントローラ４を使い、他方のプレイヤが左コントローラ３を使い、二人同時に解答入力を行わせてもよい。そして、より早く、より正解数を多く解答したほうが勝利するというゲームとしてもよい。
【０１５５】
また、出題と解答入力のタイミングに関して、上記の例では、１ステージ分の設問セットの正解方向を先にまとめて提示し、解答させるという例を挙げていた。正解方向の提示と解答入力については、これに限らない。例えば、いわゆる音楽ゲームのように、画面の上から下に正解方向を示す矢印画像が移動してきて、この矢印画像が画面の所定の位置に来るタイミングに合わせて方向入力を行わせるような態様のゲームでも、上記のような処理は適用可能である。この場合は、移動してくる矢印画像の１つ１つが上記における「設問」に該当する。
【０１５６】
また、入力方向の判定（特定）手法について、上述の例では、コントローラの姿勢を射影平面に射影した射影ベクトルを用いる例を挙げた。いわば、コントローラの姿勢の変化を見て入力方向を特定していた。他の実施形態では、慣性センサデータ４０３に基づいてコントローラの移動方向を特定し、この移動方向に基づいて入力方向を特定するようにしてもよい。つまり、コントローラを平行移動させることで方向入力を可能としてもよい。また、この場合でも、入力方向の判定に用いる判定条件（例えば上記の各種閾値）について、正解方向に応じて判定条件を変化させてから判定するようにすればよい。
【０１５７】
また、解答のための方向入力についても、上記のような慣性センサを利用する入力の他、いわゆるアナログスティックやタッチパネル等のアナログ入力が可能な操作装置を用いてもよい。このようなアナログ入力が可能な操作装置を用いる場合でも、上記の処理は適用可能である。もちろん、方向キーや方向ボタンのようなボタン入力で方向入力を行うような場合でも上記処理は適用可能である。
【０１５８】
また、上記実施形態では、入力方向の判定に用いる閾値として大きく３種類挙げ、各種の閾値についていくつか例示した。他の実施形態では、上述した例以外の閾値を用いてもよいことはいうまでもない。例えば、上または下方向が正解方向である場合、図４２に示すような閾値を用いるようにしてもよい。この図の例では、上領域および下領域において必要な入力の大きさが、左右領域における入力の大きさよりも小さく設定されている。すなわち、原点からの距離が短く設定されている。これは、コントローラを振ることで方向入力する際に、上下方向への方向入力が左右方向への入力よりも入力しにくい場合（特に、手首を支点としてコントローラを振るような場合）があることを考慮したものである。これにより、上下方向への入力を拾いやすくすることができ、上下方向が正解方向の場合に、正解と判定されやすいようにすることができる。また、この他、（ゲームの内容に応じて）下領域の入力の大きさだけを小さくするようにしてもよい。あるいは、必要な入力の大きさを上領域のものよりも更に小さいものとしてもよい。手首を支点としてコントローラを振るような場合、上下左右のうち、下方向への入力が最も認識されにくい（下方向が最も手首が曲がりにくい）ことに鑑みたものである。
【０１５９】
また、上記実施形態で示したようなゲームシステム１に限らず、他の実施形態では、上記のようなゲーム処理が可能なスマートフォンやタブレット端末等の情報処理装置を用いる態様であってもよい。コントローラについても、このようなスマートフォン等と通信可能なものであってもよい。
【符号の説明】
【０１６０】
１    ゲームシステム
２    本体装置
３    左コントローラ
４    右コントローラ
８１  プロセッサ
【図１】
0006938580.tif 000002
【図２】
0006938580.tif 000003
【図３】
0006938580.tif 000004
【図４】
0006938580.tif 000005
【図５】
0006938580.tif 000006
【図６】
0006938580.tif 000007
【図７】
0006938580.tif 000008
【図８】
0006938580.tif 000009
【図９】
0006938580.tif 000010
【図１０】
0006938580.tif 000011
【図１１】
0006938580.tif 000012
【図１２】
0006938580.tif 000013
【図１３】
0006938580.tif 000014
【図１４】
0006938580.tif 000015
【図１５】
0006938580.tif 000016
【図１６】
0006938580.tif 000017
【図１７】
0006938580.tif 000018
【図１８】
0006938580.tif 000019
【図１９】
0006938580.tif 000020
【図２０】
0006938580.tif 000021
【図２１】
0006938580.tif 000022
【図２２】
0006938580.tif 000023
【図２３】
0006938580.tif 000024
【図２４】
0006938580.tif 000025
【図２５】
0006938580.tif 000026
【図２６】
0006938580.tif 000027
【図２７】
0006938580.tif 000028
【図２８】
0006938580.tif 000029
【図２９】
0006938580.tif 000030
【図３０】
0006938580.tif 000031
【図３１】
0006938580.tif 000032
【図３２】
0006938580.tif 000033
【図３３】
0006938580.tif 000034
【図３４】
0006938580.tif 000035
【図３５】
0006938580.tif 000036
【図３６】
0006938580.tif 000037
【図３７】
0006938580.tif 000038
【図３８】
0006938580.tif 000039
【図３９】
0006938580.tif 000040
【図４０】
0006938580.tif 000041
【図４１】
0006938580.tif 000042
【図４２】
0006938580.tif 000043