2013-03-09 62 views
1

我需要一些帮助来制定我正在使用JavaScript开发的游戏的类层次结构。该游戏是一个自上而下的太空射击游戏,其基本层次是背景,玩家,子弹和敌人。在JavaScript游戏中组织课程

,我想出了一个类图,我认为需要进行改进: Class diagram

没有在这里普通的,主类被称为宇宙(游戏名),其中有一个tick()方法,每秒发射大约60次。该BackgroundPlayerEnemy类属于CosmosBullet类属于Player类,因为Player“拥有” Bullet秒。

虽然这个图表出现了一个主要问题,那就是我将如何在玩家子弹和敌人之间进行碰撞检测。我可以在Player类中编写一个方法来传递子弹的xyCosmos并在Cosmos中执行冲突检测,但这似乎不是最好的方式。如果我正在寻求一种整洁,有组织的方法,是否可以在Cosmos中进行碰撞检测?

任何其他修改,你可以使我的生活更容易也非常感激。

+0

这可能是上codereview.stackexchange.com,这是专门为提交工作代码同行评审的一个更适合。您可能会得到一些关于如何重组您的层次结构的有用想法。 – 2013-03-09 20:02:15

+0

JavaScript中没有类,只有具有原型继承的对象。例如,请参阅[this](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Inheritance_and_the_prototype_chain)。 – Zemljoradnik 2013-03-09 20:18:18

回答

2

你的图似乎有一些问题。您写道:

的背景下,玩家和敌对阶级属于宇宙和Bullet类所属的Player类,因为玩家“拥有”子弹“

这表明聚合或复合材料。关系,但在你的图中使用继承箭头......你有Player延伸Bullets,和Cosmos多继承Player,BackgroundEnemy。此外,你的图是颠倒的;通常基类在顶部。

如果你想使用继承链,可以考虑这样的事情,而不是:

diagram

+0

我不确定要使用什么箭头,因为我只知道类图的极端基础知识,但想要以可视方式说明我的观点。虽然你的类图看起来好多了,但我没有想到将矢量分开并使用“Drawable”类。非常好的帮助,谢谢。 – 2013-03-10 02:30:03

1

这个工作似乎太小了,以至于担心很多关于类的层次结构。

在任何情况下,Java风格的类只是分离代码的一种方式,保持合理的顺序,适当的注释可以做几乎相同的事情。

总之,只是把子弹直接放在宇宙之下,这不是什么大不了的事情。

+0

同意,子弹为什么会延长玩家? – 2013-03-09 21:15:26

+0

@GGG因为玩家类创造了子弹我猜想,如果子弹不必与敌人互动,它似乎是一个合理的地方,把它们。 – aaaaaaaaaaaa 2013-03-09 21:41:46