2011-06-15 168 views
1

我正在編寫RPG遊戲,並且發現用戶所看到的背景功能更多。我應該在哪裏放置我的功能代碼

我有一個戰鬥班。這將持有敵人的背景圖片並處理選擇哪些敵人在戰鬥中。

我開發了幾個全局函數來計算和顯示像hp和mp這樣的測量儀。另一個移動計時器欄以便戰鬥進行。但我想知道這些應該和其他所有功能一樣在戰鬥類中,因爲我認爲它會比任何其他類增長得多。

另外我知道繪圖應該從其他代碼分離,所以現在我有全局函數循環所有活動的東西,並在過程代碼完成後繪製它,但是最好是將繪圖函數放在每個通過他們類和循環,而不是保持一切分開?

另一件一直困擾着我的事情是我正在實施攻擊,並且正在考慮給予生物類四個攻擊類實例。這會起作用,但如果在戰鬥中有兩個或更多的生物使用相同的攻擊,則會造成浪費。我考慮過在每個地方製作一種攻擊類型的實例,讓每個生物存儲四個指向適用攻擊實例的指針。 這些選項都是一個好主意還是更好的實現方法?

+0

我建議你讀[好書(HTTP: //stackoverflow.com/questions/388242/)。我擔心沒有更簡單的答案。 – 2011-06-15 09:43:34

+0

@ Space_C0wb0y 1)我看過書,但有很多不同的方法,傳統上我比OOP更喜歡程序,但是看到這是一個遊戲OOP,它是:) 2)有一個人寫的頁面有區別許多年前和同行對您的具體設置的意見。 – Skeith 2011-06-15 09:51:10

+0

這聽起來像你有很多全球功能。也許你應該想出一種封裝某些功能的方法。也許一個由屏幕成員列表組成的「屏幕管理器」界面(「繪製戰鬥」,「繪製健康狀況表」等)將會很有用。 – Dennis 2011-06-15 09:53:29

回答

0

我想你應該看看有限狀態機,它通常是遊戲的基本機制。這將給你一個廣泛的想法如何組織你的代碼,以保持一切易於編輯和易於瀏覽。

我認爲你選擇課堂提取有點奇怪。自我中的「戰鬥」不符合任何類別,因爲它與OOP核心的任何「對象」沒有任何相似之處。我的意思是,是的,你可以將你的函數收集到一個特定的類中,但是首先識別你正在處理的狀態,然後在它們周圍建立一個狀態機是更有意義的,所以如果隨着進展,一套新的狀態出現後,您可以輕鬆地爲該功能構建一個新類。

我敢肯定,FSM是你要找的...

爲了讓一個想法的事情: Simple but generic FSM implementation in C++ Game design with FSM tutorial

+0

是的一場戰鬥可能是錯誤的想法,但我的理論是戰鬥是一個國家和所有的數據狀態在戰鬥類中,這個網站上的人告訴我,有這樣的類只能執行一次是可以的。 – Skeith 2011-06-15 11:05:23

相關問題