對於我的遊戲,我使用狀態模式來處理我的屏幕。屏幕需要更新和渲染每一幀。遊戲循環在Game類中。遊戲開發 - 更新方法和狀態模式
但我也需要在實體類中的更新和渲染方法。我應該在屏幕和實體類(例如FrameProcess)中使用接口嗎?或者我可以像這樣離開它(見圖)?
面向對象的最佳實踐是什麼?這有什麼模式嗎?
這個問題的基本UML:
對於我的遊戲,我使用狀態模式來處理我的屏幕。屏幕需要更新和渲染每一幀。遊戲循環在Game類中。遊戲開發 - 更新方法和狀態模式
但我也需要在實體類中的更新和渲染方法。我應該在屏幕和實體類(例如FrameProcess)中使用接口嗎?或者我可以像這樣離開它(見圖)?
面向對象的最佳實踐是什麼?這有什麼模式嗎?
這個問題的基本UML:
我會爲Entity
類中的update()
和render()
方法創建純虛函數,並讓從它繼承的類定義它們自己的行爲,這將允許系統以多態方式行爲。然後在Game
類或一些其他類型的處理程序類調用update()
和draw()
方法基於系統的當前狀態,使用狀態模式決定它。
順便說一句,它告訴更多的國家模式,在http://gameprogrammingpatterns.com/state.html
這取決於你所說的 「實體」 在這方面的意思。如果一個實體覆蓋可呈現和可更新的所有內容,爲兩者創建一個虛擬函數都可以(如果您計劃派生其他類型的實體,如車輛或武器)。如果你有除Entity以外的其他可渲染和可更新的類型,在我看來,一個界面會是更好的選擇。
您可能還有更好的選擇https://gamedev.stackexchange.com/以獲取更多Q & A關於gamedev。
實體是抽象的,因此必須已經可以推導出來。 –
其用法示例(或多個)以非常明確的方式,如果得到的實體會發生什麼,你從屏幕遞給你的遊戲對象,而不是GameScreen實體或MenuScreen? –
是的,有一種狀態機的模式,我甚至爲此提供了一個抽象[framework](http://makulik.github.io/sttcl/)。 –
@DanielT。我想在我的遊戲中擁有不同的屏幕。標題屏幕,菜單屏幕和遊戲屏幕。而在我的GameScreen中,我將擁有包含玩家,敵人等實體的關卡。 – Liddelfranks