0

さて、スペース インベーダー ゲームのクラス図の v1 と v2 について得た有益なコメントをすべて考慮した後、クラス図をもう一度更新して、すべての変更を実装しました。

これ以上苦労することなく、v3 を提示します。

スペースインベーダー アーキテクチャ V3.0

抽象Bulletクラスの Move および Update メソッドは何も実行せず、メソッドの実装は bullet を継承する具象クラスにあります。これらの各具象クラスは、IMovableインターフェイスから Speed プロパティも継承し、それぞれに独自の速度セットがあります。全体の抽象Bulletクラスとその具象クラスの派生物が戦略パターンです。

質問したいことがあります:シップインベーダークラスは一度に 1 つの弾丸しか持てませんが、インベーダークラスは弾丸を持たないこともできます。これは、たとえば、エイリアンのすべての列がまだ無傷である場合、最初の列のエイリアンのみが弾丸を発射できます。それらの上の列は撃つことができません。しかし、これをInvaderクラスにどのように実装すればよいでしょうか? 撃てないインベーダーのInvaderクラスの bullet 変数を設定するか、null のままにするか。または、より良いオプションがありますか?

適切なデザインにどんどん近づいていることを願っています。すべてのコメントを歓迎します!

4

1 に答える 1

0

設計全体を次の抽象化に折りたたむことができるように見えます。

s

あなたのゲームの実装について推論するのに十分かどうかはわかりません. Duke Nukem 3D はスプライトのコレクションでもあり、スプライト間に何らかの構成関係があります。Duke Nukem 3Dと同じデザインということですか?個人的には、この図には完成度と明確さが欠けていると感じています。「ゲームボード」はどうですか?スプライトとどのように相互作用しますか? 物理エンジンはどうですか?

考える材料を残すだけです。幸運を!

于 2011-02-22T17:13:07.040 に答える