2013-03-09 81 views
1

我需要一些幫助來制定我正在使用JavaScript開發的遊戲的類層次結構。該遊戲是一個自上而下的太空射擊遊戲,其基本層次是背景,玩家,子彈和敵人。在JavaScript遊戲中組織課程

,我想出了一個類圖,我認爲需要進行改進: Class diagram

沒有在這裏普通的,主類被稱爲宇宙(遊戲名),其中有一個tick()方法,每秒發射大約60次。該BackgroundPlayerEnemy類屬於CosmosBullet類屬於Player類,因爲Player「擁有」 Bullet秒。

雖然這個圖表出現了一個主要問題,那就是我將如何在玩家子彈和敵人之間進行碰撞檢測。我可以在Player類中編寫一個方法來傳遞子彈的xyCosmos並在Cosmos中執行衝突檢測,但這似乎不是最好的方式。如果我正在尋求一種整潔,有組織的方法,是否可以在Cosmos中進行碰撞檢測?

任何其他修改,你可以使我的生活更容易也非常感激。

+0

這可能是上codereview.stackexchange.com,這是專門爲提交工作代碼同行評審的一個更適合。您可能會得到一些關於如何重組您的層次結構的有用想法。 – 2013-03-09 20:02:15

+0

JavaScript中沒有類,只有具有原型繼承的對象。例如,請參閱[this](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Inheritance_and_the_prototype_chain)。 – Zemljoradnik 2013-03-09 20:18:18

回答

2

你的圖似乎有一些問題。您寫道:

的背景下,玩家和敵對階級屬於宇宙和Bullet類所屬的Player類,因爲玩家「擁有」子彈「

這表明聚合或複合材料。關係,但在你的圖中使用繼承箭頭......你有Player延伸Bullets,和Cosmos多繼承Player,BackgroundEnemy。此外,你的圖是顛倒的;通常基類在頂部。

如果你想使用繼承鏈,可以考慮這樣的事情,而不是:

diagram

+0

我不確定要使用什麼箭頭,因爲我只知道類圖的極端基礎知識,但想要以可視方式說明我的觀點。雖然你的類圖看起來好多了,但我沒有想到將矢量分開並使用「Drawable」類。非常好的幫助,謝謝。 – 2013-03-10 02:30:03

1

這個工作似乎太小了,以至於擔心很多關於類的層次結構。

在任何情況下,Java風格的類只是分離代碼的一種方式,保持合理的順序,適當的註釋可以做幾乎相同的事情。

總之,只是把子彈直接放在宇宙之下,這不是什麼大不了的事情。

+0

同意,子彈爲什麼會延長玩家? – 2013-03-09 21:15:26

+0

@GGG因爲玩家類創造了子彈我猜想,如果子彈不必與敵人互動,它似乎是一個合理的地方,把它們。 – aaaaaaaaaaaa 2013-03-09 21:41:46