2013-08-06 115 views
2

在這種情況下,我正在開發2D遊戲。在這場比賽中,我需要從天空墜落的少數導彈類型作爲炸彈人。每種類型的導彈在與我的角色相撞時都會根據導彈類型傷害一定數量的傷害。我應該避免使用「開關」?

我該怎麼辦?

  • 選項1:創建一個類導彈其中包含與自己的導彈類型的變量,並在檢查循環碰撞我用交換機來決定的損害。選項2:創建幾個類,然後製作相同數量的導彈碰撞檢查循環,避免使用開關,在每個循環中都知道損傷。

  • 方案3:創建一個單一的檢查循環,所有的導彈,並用傳承導彈

  • 選項4之間做出distintions:不要保存導彈類型,相反,他們的破壞等諸多初始化導彈變量對於相同的導彈類型(浪費內存)將是相同的

如果選項3不存在,選項1或2?

感謝

+0

爲什麼不呢?這是語言的一部分。請小心,不要忘記休息時間。 – Jiminion

+0

如果只有幾個值在類型之間有所不同,並且行爲是相同的,那麼如果使代碼更簡單,我會使用選項4。 – Troy

回答

1

恩,選項3是非常可行的。

你有一個有傷害變量的導彈類。 所有其他類型的導彈擴展這個類。所以你可以根據需要添加其他信息領域。

所以當你循環所有的導彈類。你可以將它們投擲(導彈),然後評估這個變量。

+0

記得在子類實例時使用instanceof。 – Zerkz

0

這真的取決於每個導彈類型多麼不同,以及你計劃什麼未來。如果所有類型都在那裏,你不打算增加更多的類型,而且類型之間唯一不同的是它們的損傷量,我會隨着開關一起去。然而,爲了便於擴展以及爲每種導彈類型建立不同的行爲,這些行爲不僅僅是損傷量,我會創建一個基類併爲每種類型繼承一個新類,以允許您爲每個類重載getDamage()updateMovement()等方法導彈類型。

0

給每個Missle子類提供一種計算損害的方法,並根據需要提供任何參數。給每個目標一個applyDamage(或者只是damage)方法,對目標施加指定的傷害量。

傾向於多態性交換機。

傾向於將破壞方法歸入小型一致性任務集。

相關問題