2017-02-11 1 views
1

私のゲームでは、自分の画面を処理するために状態パターンを使用します。画面は各フレームを更新してレンダリングする必要があります。ゲームループはGameクラスにあります。ゲームの開発 - 更新方法と状態パターン

しかし、私はエンティティクラスの更新とレンダリングメソッドも必要です。 ScreenとEntityクラス(たとえば、FrameProcess)でインターフェースを使用する必要がありますか?または、私はそれをこのように残すことができますか?(画像参照)

OOPで最も優れているのは何ですか?それにはどんなパターンがありますか?この問題の

基本UML:

enter image description here

+0

で非常に明確な方法で国家のパターンとその使用例(複数可)についての詳細を伝えますし、あなたのゲームではなくGameScreenのエンティティオブジェクト手渡しかMenuScreen? –

+0

はい、ステートマシンのパターンがあります。そのために抽象的な[framework](http://makulik.github.io/sttcl/)を提供しました。 @DanielT。 –

+0

私は自分のゲームで別の画面を持っていたい。タイトル画面、メニュー画面、ゲーム画面。私のGameScreenでは、プレーヤー、敵などのエンティティを含むレベルの私のゲームを持っています。 – Liddelfranks

答えて

1

私は、Entityクラスのupdate()render()メソッドの純粋仮想関数を作成し、それを継承したクラスにはシステムが多態的な振る舞いをするような独自の振る舞いを定義させます。次に、Gameクラスまたは他のタイプのハンドラクラスでは、ステートパターンを使用してシステムを決定するシステムの現在の状態に基づいて、update()およびdraw()メソッドを呼び出します。

ところで、それが画面からエンティティを得られる場合が起こるかどうhttp://gameprogrammingpatterns.com/state.html

1

それはあなたが、この文脈で "エンティティ" によって何を意味するかによって決まります。エンティティがレンダリング可能で更新可能なものすべてをカバーしている場合は、両方の仮想関数を作成すると良いでしょう(車両や武器のような他のタイプのエンティティを派生する予定の場合)。あなたがEntity以外の他のレンダリング可能なタイプと更新可能なタイプを持っているなら、私の意見ではインターフェースがより良いオプションになります。

また、https://gamedev.stackexchange.com/をチェックアウトして、さらにQ & Aを確認する方がよい場合もあります。

+0

エンティティは抽象であり、したがって、すでに派生可能でなければなりません。 –

関連する問題