Listener設計
Posted: 2012年1月14日(土) 01:17
プログラミング技術の向上を目的に共同作業で2D格闘ゲームを作ろうとしています
言語はC++、DXライブラリを使います。まだプログラミング経験も浅い身分です。
C++から学習を始めたため、ほとんどそれらについてしか知りません
ユーザー入力を処理するクラスに関する話として、Javaに詳しい知人からリスナーという概念を聞きました。
基底リスナークラスから派生したクラスは皆キー入力を受け取って処理を行える関数を共通に持ち、
逆に入力クラス(名づけるならたとえばclass InputGamePad)はリスナーたちのリストを保持し、
登録されているインスタンスの共通関数を呼び出して処理をするものだそうです
ようは入力情報を聞き手リストたちに教えてあげる仕組みだと思っています(?
自分がその前に作っていた入力クラスは毎フレーム呼び出されて入力状態を調べ、
過去数秒の入力状態をリストに保存することでコマンド入力の成功を調べたりできるようにしてました。
bool CheckCommand(What Command?)のような関数を持たせておき、
キャラクタークラスは入力クラスを内部に保持して、どのコマンドが成功したか調べられます。
これは機能するしないでいえばしていたんですが、知人曰くあまり良くないよとのことでした。
それでリスナー使ってみて!というアドバイスをもらったのですが(あとイベント?とかも)
概念は分かっても書き方が頭に浮かびません。ていうか私の頭が知人についていってません
入力クラスは聞き手にいつ、どんな情報をどのような形態で引数に入れてリスナーに教えてあげるのか
また、リスナー設計自体についても分かりやすい説明があればいいなと思います。
C++のリスナーについて情報があまりないので質問させていただきます。
言語はC++、DXライブラリを使います。まだプログラミング経験も浅い身分です。
C++から学習を始めたため、ほとんどそれらについてしか知りません
ユーザー入力を処理するクラスに関する話として、Javaに詳しい知人からリスナーという概念を聞きました。
基底リスナークラスから派生したクラスは皆キー入力を受け取って処理を行える関数を共通に持ち、
逆に入力クラス(名づけるならたとえばclass InputGamePad)はリスナーたちのリストを保持し、
登録されているインスタンスの共通関数を呼び出して処理をするものだそうです
ようは入力情報を聞き手リストたちに教えてあげる仕組みだと思っています(?
自分がその前に作っていた入力クラスは毎フレーム呼び出されて入力状態を調べ、
過去数秒の入力状態をリストに保存することでコマンド入力の成功を調べたりできるようにしてました。
bool CheckCommand(What Command?)のような関数を持たせておき、
キャラクタークラスは入力クラスを内部に保持して、どのコマンドが成功したか調べられます。
これは機能するしないでいえばしていたんですが、知人曰くあまり良くないよとのことでした。
それでリスナー使ってみて!というアドバイスをもらったのですが(あとイベント?とかも)
概念は分かっても書き方が頭に浮かびません。ていうか私の頭が知人についていってません
入力クラスは聞き手にいつ、どんな情報をどのような形態で引数に入れてリスナーに教えてあげるのか
また、リスナー設計自体についても分かりやすい説明があればいいなと思います。
C++のリスナーについて情報があまりないので質問させていただきます。