我正在設計一個2D遊戲來練習Java和麪向對象的編程(如果有幫助的話,我使用JSFML庫)和I對如何最好地設計以下內容有疑問:OOP設計:如何確定程序流程和負責方法的類(JSFML庫)
我使用的庫提供了由可見遊戲元素(玩家,敵人,背景等)實現的Drawable
界面。我也有一個RenderWindow
,我將繪製Drawable
對象。
這裏的東西,RenderWindow
有draw(Drawable d)
方法借鑑了當前窗口中Drawable
對象,而Drawable
對象都有一個draw(RenderWindow r)
方法借鑑了RenderWindow
中流過的電流Drawable
對象。
如果他們做基本相同的事情,我應該使用哪一個?爲什麼?我應該考慮什麼來決定?我使用HashMap來存儲Drawable
對象。我應該將RenderWindow
傳遞給HashMap中的Drawables
,還是將HashMap中的Drawables
傳遞給RenderWindow
?任何建議表示讚賞。
我不明白,爲什麼我應該重寫這些方法? RenderWindow.draw(Drawable d)有一個工作實現(Drawable由Sprite實現,這是另一個庫類,我沒有提到它使問題更簡單,認爲沒關係)。庫(JSFML)本質上是C++庫的包裝,如果這有所作爲。 –
RenderWindow將有一個標準的實現,您只會在極少數情況下重寫。 Drawable的方法必須被覆蓋。但正如你所指出的,庫提供了一個參考實現(Sprite)(但有時你需要你自己的,比如AnimatedSprite)。所以你只需要在大多數簡單的情況下將Sprites添加到RenderWindow中。 (這是建立一個圖書館的目的,幾乎所有東西都已經實施)。我只是試圖解釋圖書館開發人員可能不會立即需要的設計注意事項。 –