2014-02-08 54 views
0

這可能會更多地是關於如何使用OOP語言和過程語言來設計遊戲的問題。使用程序和OOP語言的遊戲設計差異

我見過的大多數教程和頁面都使用OOP語言(例如C++或Java)使用對象來創建基本上在遊戲中使用的所有東西,例如用於用戶可控制角色的類,用於子彈的類在屏幕上,煙霧效果類,飛箭等另一類。

我的第一個問題是:在遊戲中將所有內容作爲一個「正常」或「推薦」 ?如果我使用OOP語言,我應該如何編寫我的遊戲?

我的第二個問題是:如果有人用C這樣的程序語言編寫遊戲,你會如何去創建相同的系統?我無法爲每個遊戲物品創建一個對象。據推測,我會創建一個struct,並有一個數組structs?另外,通過OOP設計,我可以讓每個對象都能夠控制自己(例如,碰撞檢測)。我如何用程序語言來實現這一點?有一些代碼遍歷每個struct並從那裏操縱每個結構?

+0

你可以用C編寫OO代碼。雖然OO現在是事實上的設計模式,但並不意味着你總是不可避免地必須將所有東西都當作對象來思考。 – 2014-02-08 22:21:07

回答

5

關於你的第一個問題:這只是自然的方式。當你考慮你的遊戲時,你會想到玩家,敵人,場景,房間,武器,目標等等。 - 所有這些東西都被自然地建模爲對象,因爲它們將屬性(即成員變量)和行爲(即方法)。所以這就是它通常的方式,如果你選擇實現這些東西的語言提供了一種表達方式,那你爲什麼不使用它?

關於你的第二個問題:如果你選擇的語言不允許接近自然實現,你會想盡可能地模擬它。拿起你的例子:你可以用結構(屬性)來建模對象,並相應地實現行爲 - 或者在這些結構上運行的函數(例如enemy_hit(player))或者包含在結構中的函數指針(即player-> hit播放器,...))。

+0

這已經非常翔實了,謝謝。接受爲答案。 – user9993

-1

面向對象不僅僅是一個數據和函數的包。但無論如何,如何設計遊戲以及如何實現遊戲並沒有嚴格的限制,大多數設計師都不是程序員,他們通過規則和故事板進行思考。

2

添加到其他答案。如果你被迫使用程序範例,你應該嘗試模仿一個面向對象的行爲。

我想什麼補充的是,除了是使模塊化和自然想到的,面向對象的語言也支持多態性,我用了很多,覺得非常難以利用的程序語言。多態代碼允許抽象層,這使得設計你的一般行爲(槍支,角色等)變得容易,然後移動到具體的,不同的實現(像這樣射擊的槍,像這樣射擊的槍),這取決於你的的情況。您可以使用具體的實現,甚至不需要了解它們(作爲使用某人的API的程序員),因爲您始終可以使用它們的接口。還有通用編程,這允許甚至更深的抽象。

當您爲遊戲設計乾淨,可擴展,可維護的代碼時,帶抽象的參數非常有用。