オブザーバーパターンの実装


7

自分に基本的なゲームプログラミングを教えるために、ポンのクローンをプログラミングします。入力とゲームエンジン間のインターフェイスを備えたオブザーバーデザインパターンを使用します。ただし、インターフェイスが何をすべきかはわかりません。私が持っていた1つのアイデアは、入力インターフェイスがゲームエンジンに(たとえば)画面がクリックされたことを通知し、ゲームエンジンにその情報をどうするかを決定させる(たとえば、弾丸を撃つ)ことでした。もう1つのアイデアは、マウスクリックをキャッチして、ゲームエンジンに弾丸を発射するように入力インターフェイスを設定することでした。

どちらの方法を使用するのが良いでしょうか?


+1あなたはより良いスタート地点を選ぶことができなかったでしょう
ジョン・マクドナルド

2
ポンの弾丸は面白いですね。
MichaelHouse

1
今後アーキテクチャに影響を与える可能性があるため、実装言語をタグに追加することをお勧めします。指定された例はニーズに合わせて調整できます。さらに、その言語でのプログラマーの経験についてコメントすることで、レスポンダが適切なレベルで話しかけることができます。 。
Patrick Hughes

回答:


7

最初の方法はオブザーバーパターンの実装ですが、2番目の方法はそうではありません。監視対象オブジェクト(ユーザーの入力インターフェイス)は、監視対象オブジェクト(ゲームエンジン)が通知をどのように処理するかを知る必要はなく、通知が必要なだけです。

ただし、ここでオブザーバーパターンを使用することにした理由がわかりません。複数のオブザーバーがいる場合を除いて、回避できる複雑さのようです。クリックが常に同じことをする場合は、インターフェースにゲームエンジンにその1つのことを実行させるだけです。物事をできる限りシンプルに保つことで、自分にやさしいものになります。これは、デザインパターンを決して使用しないと言っているわけではありませんが、一般的には、自分がやっていることとは反対の方向でアプリケーションにアプローチします。IE:問題から始めて、解決するために設計パターンを選択します。設計パターンから始めて、問題を解決する方法を理解するのではありません。


2
単純なプロジェクトでオブザーバーのような新しいアイデアを使用することは、パターンを学習するための良い方法です。以来、学習が望ましい結果であるここでは、単純にポンゲームの作業を取得していない、私は両方をカバーする答えパッドにいいだろうと思います。
Patrick Hughes

彼はデザインパターンではなく基本的なゲームプログラミングを学びたいと述べたので、その側面だけに集中する方が簡単だと思います。一度に多くのことを学ぼうとすると、あなたはほんの少ししか学べなくなります。特にこの場合でも、パターンが実際には役に立たない可能性がある場合、デザインパターンを使用しない場合の学習は、その反対と同じくらい価値があります。
チューイーガムボール

私はその反対意見を、主要な質問にコメントを付けて他の分野の現在の専門知識レベルに関する情報を含め、将来の質問での混乱を避けるように前もって準備しました。いくつかは、先に読み終わったの彼の言葉遣いや外観に基づいて、私は)=あなたと一緒に100%同意することはできませんが、それはそれにもかかわらず便利な答えであるため、1のために十分に同意することができます
パトリック・ヒューズ

2

Observerパターンを使い続ける場合は、それを最初のアイデアにする必要があります。私が考えることができる最も強力な議論は、入力インターフェイスがおそらく他のゲームでも再利用したいと思うであろう一般的なコンポーネントであるということです。したがって、ゲーム固有の情報を含まないようにすることは理にかなっています。そうしないと、別のコンテキストで使用できなくなります。一般に、クラスの責任について慎重に検討し、それらを集中させ、クラスのコンテキストに限定するようにしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.