1

JavaScript で開発しているゲームのクラス階層を理解するのに助けが必要です。このゲームは、(基本的なレベルで) 背景、プレイヤー、弾丸、敵がいるトップダウンのスペース シューティング ゲームです。

改善する必要があると思われるクラス図を思いつきました: クラス図

メイン クラスは Cosmos (ゲームの名前) と呼ばれ、tick()1 秒あたり約 60 回起動するメソッドがあります。BackgroundPlayerおよびEnemyクラスはに属しCosmosBulletクラスはクラスに属します。これは、 が を「所有する」Playerためです。PlayerBullet

ただし、この図で頭に浮かぶ大きな問題が 1 つあります。それは、プレイヤーの弾丸と敵の間の衝突検出を行う方法です。Player弾丸のxandyを渡しCosmosて で衝突検出を行うメソッドをクラスに書くこともできますCosmosが、それは最善の方法とは思えません。Cosmosきちんと整理されたアプローチをしようとしているのであれば、衝突検出を行っても問題ないでしょうか?

私の生活を楽にするためにあなたが加えることができる他の変更も大歓迎です.

4

2 に答える 2

2

あなたの図にはいくつかの問題があるようです。あなたが書いた:

Background、Player、および Enemy クラスは Cosmos に属し、Bullet クラスは Player クラスに属します。これは、Player が Bullet を「所有」しているためです。」

これは集約または複合関係を示唆していますが、図では継承矢印を使用しています... 、 、および を拡張するPlayerBulletsおよび の多重継承があります。また、図が逆さまになっています。一般に、基本クラスが一番上にあります。CosmosPlayerBackgroundEnemy

継承チェーンを使用したい場合は、代わりに次のようなものを検討してください。

ダイアグラム

于 2013-03-10T00:42:50.190 に答える
1

クラス階層についてそれほど心配するには、仕事が小さすぎるようです。

いずれにせよ、Java スタイルのクラスはコードを分離する 1 つの方法にすぎず、合理的な順序を維持し、適切なコメントを使用することで、事実上同じことができます。

要するにコスモスの直下に弾丸を置くだけで、大したことはない。

于 2013-03-09T20:30:06.253 に答える