2

在这种情况下,我正在开发 2D 游戏。在这个游戏中,我需要几个导弹类型作为轰炸机从天而降。每种导弹类型在与我的角色发生碰撞时,都会根据导弹类型造成一定的伤害。

我应该怎么办?

  • 选项 1:创建一个单一的 Missile 类,其中包含一个具有自己的导弹类型的变量,在碰撞检查循环中,我使用 Switch 来确定伤害。

  • 选项2:创建几个类,然后进行相同数量的导弹碰撞检查循环,避免使用开关,知道每个循环的伤害。

  • 选项 3:创建一个包含所有导弹的单一检查循环,并使用继承来区分导弹

  • 选项4:不保存导弹类型,而是用它们的伤害和其他许多变量初始化导弹,这些变量对于相同的导弹类型是相同的(浪费内存)

如果选项 3 不存在,选项 1 还是 2?

谢谢

4

3 回答 3

1

嗯,方案3是很可行的。

你有一个具有伤害变量的导弹类。所有其他类型的导弹都扩展了这一类。因此,您可以根据需要添加其他信息字段。

因此,当您遍历所有导弹类别时。您可以将它们投射到(导弹)然后评估该变量。

于 2013-08-06T19:20:11.923 回答
0

这实际上取决于每种导弹类型的差异以及您对未来的计划。如果所有类型都在那里,您不打算添加更多类型,并且类型之间唯一不同的是它们的伤害量,我会选择切换。但是,为了更容易扩展以及为每种导弹类型建模超出伤害量的不同行为,我将创建一个基类并为每种类型继承一个新类,从而允许您重载方法,如getDamage()updateMovement()为每种导弹类型.

于 2013-08-06T19:19:34.353 回答
0

给每个Missle子类一个计算伤害的方法,接受它需要的任何参数。给每个目标一个applyDamage(或只是damage)一个方法,对目标施加指定数量的伤害。

更喜欢多态性而不是开关。

更喜欢将方法分解为最小的连贯任务集。

于 2013-08-06T19:19:39.263 回答