我应该避免使用“Switch”吗?

时间:2013-08-06 19:11:58

标签: loops switch-statement

在这种情况下,我正在开发2D游戏。在这个游戏中,我需要很少的导弹类型从天空坠落作为炸弹人。与我的角色碰撞时,每种导弹类型都会根据导弹类型伤害到一定数量的伤害。

我该怎么办?

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

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

  • 选项3:创建一个带有所有导弹的单一检查循环,并使用遗传来区分导弹

  • 选项4:不要保存导弹类型,而是用它们的损坏初始化导弹,以及对同一导弹类型相同的其他许多变量(浪费内存)

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

由于

3 个答案:

答案 0 :(得分:1)

嗯,选项3非常可行。

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

所以当你遍历所有导弹类时。你可以将它们投射到(导弹),然后评估那个变量。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

为每个Missle子类提供一个计算损害的方法,并采用它需要的任何参数。为每个目标提供applyDamage(或仅damage)方法,该方法会对目标施加指定数量的伤害。

首选多态切换。

首选将方法分解为一小部分连贯的任务。