【问题标题】:Comments on my design v3评论我的设计 v3
【发布时间】:2011-02-21 23:48:52
【问题描述】:

好吧,在考虑了我在太空入侵者游戏的类图 v1 和 v2 上获得的所有有用的 cmets 之后,我再次更新了我的类图以实现所有更改。

事不宜迟,我介绍 v3:

Bullet 抽象类中的 Move 和 Update 方法什么都不做,方法的实现在从 bullet 继承的具体类中。这些具体类中的每一个也将继承 IMovable 接口的 Speed 属性,并且每个都有自己的速度设置。整个抽象的 Bullet 类及其具体的派生类就是策略模式。

我想问一些事情:ShipInvader 类一次只能有一颗子弹 - 但 Invader 类可以也没有子弹。这是例如当所有外星人都完好无损时,只有第一排外星人可以发射子弹。他们上方的行无法射击。但是我将如何在 Invader 类中实现这一点?不能射击的入侵者的Invader类中的子弹变量应该设置还是留空?还是有更好的选择?

我希望我越来越接近获得正确的设计,欢迎所有的cmets!

【问题讨论】:

  • 看起来比 v1 好多了:-)。 Ship 和 Invader 会只有 1 颗子弹吗?
  • 谢谢! :-) 是的,飞船和每个入侵者都只有一颗子弹,尽管屏幕上随时可能有 4 颗子弹——三颗来自不同的外星人,一颗来自飞船。

标签: design-patterns architecture class-diagram


【解决方案1】:

看起来整个设计可以折叠成以下抽象:

我不确定这是否足以说明您的游戏实施。 Duke Nukem 3D 也是精灵的集合,它们之间存在某种组合关系。这是否意味着您的设计与 Duke Nukem 3D 相同?我个人觉得该图缺乏完整性和清晰度。 “游戏板”呢?它如何与 Sprite 交互?物理引擎呢?

只是留给你一些思考。祝你好运!

【讨论】:

  • 游戏板现在是 Game1 类,我仍在决定(并继续阅读)是否使用 GameComponents。一个物理引擎..哇 :-) 我猜这对于这个项目来说可能有点太多了。我看到您使抽象 Sprite 继承自 IMovable 接口 - 但这导致我可能希望某些 sprite 不移动的问题。我也很好奇当 Sprite 由自身组成时它意味着什么(如何,为什么?)。也许,在某种程度上是的,当我想到我(现在)认为应该包含在 Ship 和 Invader 类中的子弹类时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 2018-04-14
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 2011-07-05
相关资源
最近更新 更多