我剛剛閱讀了一些當我輸入主題時出現的相關問題,所以我會盡量不要重複這些問題。C++遊戲,課堂設計和責任
我最近開始重新研究一個大約兩三年前開始的學習項目 - 一個Mega Man引擎的C++端口。是的,我使用了撕裂的精靈。我也正在使用一個遊戲引擎庫進行繪圖,音樂和輸入。
我原來的代碼非常殘酷。儘管它可以(但幾乎)被稱爲面向對象,但它完全錯過了這一點。我已經開始添加諸如接口之類的東西,並且刪除了很多重複的代碼。有些事情我不確定,因爲有時遊戲設計變得非常複雜。
代表我的遊戲庫的對象目前是全局的(我知道全局變量通常是不好的),因爲許多對象可能會依賴它來加載它們的藝術或音樂。將對象拉出全局範圍的最佳方式是什麼,而不必將五十個參數傳遞給一切直接使用它的東西?
下一個問題:衆所周知,洛克人射出許多小白色射彈。目前,Player對象負責他發射的子彈對象,更新它們的位置等等(字面上,在Player :: Update()方法內,每次擊球時都調用一次Projectile :: Update()方法)。這是做錯了嗎?我的第一個改進是所有這些對象都實現了一個DrawnObject接口,這樣我的遊戲就可以繪製一切。爲更新做同樣的事情意味着我可以控制遠離玩家的投射物並將其投放到更廣泛的遊戲對象。我對此猶豫不決的原因是感覺上帝反對反模式。或者我誤解了這個反模式?還有額外的複雜性 - 拋射物如果離開可見屏幕就會死亡,所以任何更新炮彈的調用都需要調用者訪問屏幕對象。
這就是現在,當我到達他們時我會回來更多的問題。第一篇文章結束!
誰寫了SRP文章?我一直在努力尋找那本書,因爲它是我真正關心的主題,你能指出我的意思嗎? – Goles 2009-09-21 01:11:22
我在閱讀「敏捷軟件開發:原則,模式和實踐」一書時第一次遇到這個詞。由羅伯特C.馬丁(2002年)。 Martin是Object Mentor(發佈文章的網站)的創始人和總裁。 – Harry 2009-09-22 17:16:03