我需要一些帮助,为我正在使用JavaScript开发的游戏制定类层次结构。该游戏是一个自上而下的太空射击游戏(基本级别)背景,玩家,子弹和敌人。
我想出了一个我认为需要改进的类图:
这里没有什么不寻常的,主要的类叫做Cosmos(游戏名称),它有一个tick()
方法,每秒大约发射60次。 Background
,Player
和Enemy
类属于Cosmos
,Bullet
类属于Player
类,因为Player
}“拥有”Bullet
s。
虽然这个图表有一个主要问题,但这就是我将如何在玩家子弹和敌人之间进行碰撞检测。我可以在Player
类中编写一个方法,将子弹的x
和y
传递给Cosmos
并在Cosmos
中进行碰撞检测,但这并不是'似乎是最好的方法。如果我想采用一种整洁,有组织的方法,那么Cosmos
中的碰撞检测是否可行?
为了让生活更轻松,您可以做出的任何其他修改也非常感激。
答案 0 :(得分:2)
您的图表似乎有一些问题。你写道:
Background,Player和Enemy类属于Cosmos,Bullet类属于Player类,因为玩家“拥有”子弹。“
这表示聚合或复合关系,但在您的图表中,您使用继承箭头... Player
扩展Bullets
,并在Cosmos
上进行多重继承,扩展Player
1}},Background
和Enemy
。此外,您的图表是颠倒的;一般来说,基础课程排在最前面。
如果你想使用继承链,请考虑这样的事情:
答案 1 :(得分:1)
这项工作似乎太小了,不用担心类层次结构。
在任何情况下,Java风格的类只是隔离代码的一种方式,保持合理的顺序,适当的注释几乎可以做同样的事情。
简而言之,只需将子弹直接放在宇宙之下,就没什么大不了的了。