2017-02-22 75 views
0

我正在使用SDL2圖形庫在C++中編寫遊戲。我正在使用繼承類來定義我的遊戲中的實體。遊戲實體更新方法

Entity 
-> Player 
-> BadGuy 
-> Bullet 

在這個例子中,Player,BadGuy和Bullet都是實體的子類。我這樣做是爲了讓我可以在我的遊戲中存儲一個實體列表,並遍歷每個實體來更新和渲染它們。因此,每個實體將具有唯一的update()來定義其行爲。

我碰到的問題是,在更新方法中,不同的實體不能'看見'彼此。如果Player的一個實例想要檢查一個Bullet的實例是否與它發生衝突,那麼我必須將所有實體的列表作爲參數傳遞給update()以供它檢查。在你考慮更新方法可能需要引用的所有內容之前,這似乎並不那麼糟糕。遊戲地圖,任意遊戲狀態信息和其他東西都必須作爲參數傳遞給update()才能使用。

有沒有簡單的解決方案呢?或者使用更好,但仍然類似的編程模式?任何意見,將不勝感激。

回答

2

您可以使用簡單的消息。當你更新你的遊戲世界時,你會檢查碰撞併發送相互碰撞的任何對象。這通常與組合與繼承相結合。閱讀this