遊戲程式的設計模式 工廠模式

2021-06-05 19:10:56 字數 1832 閱讀 5869

最近打算翻譯一些外國的文章,既長見識,有練習了英語,真是一石二鳥,一舉兩得,一箭雙鵰。下面就是第一篇:

動機

我在一些技術**訪談中發現,很多公司在尋找擁有「strong cs fundamental」的職員。我並不是很明白這樣做的具體含義,但是我知道他們會問什麼樣的問題--經常它會是「寫乙個快速排序的函式」或者「寫乙個二叉樹的搜尋演算法」。這些經常會成為難題,尤其是如果距離你最初作出這些題有幾年時間了的話。對我而言,我認為更重要的是設計的質量以及對模式的實現。然而快速排序和bst是非常重要的,在很多語言及系統庫中都會使用它。我認為設計更加高效複雜的演算法的方法是了解演算法的根本,但是更重要的是知道如何去組裝他們。

所以,因為我認為設計可能滴最有價值並且稀缺的技能,我打算開始寫一系列的文章來解釋遊戲設計中的那些基本的設計模式。

注意:我打算在這本書裡好好解釋盡可能多的設計模式。我並不認為我是個專家,所以沒有顧忌地糾正我吧,我會盡力的修正我的觀點。

第一:工廠模式

工廠模式是乙個相當基本的模式。它是把乙個複雜類的生成過程抽象為乙個用來生成該類的類方法。舉個例子,下面的偽**來自我的遊戲《total toads》(暫定名稱):

class bug ...

class bugfalling implements bug ...

class bugfirefly implements bug ...

class bugmultiply implements bug ...

在我的遊戲中,你有乙個想吃掉小蟲的青蛙在螢幕的低端,那些小蟲會以各種方式出現在螢幕上。每種小蟲有不同的外觀,而且就算是同一種的小蟲也有不同的屬性。比如,bugfalling 是靜止的,有些是tutorial bugs,有些移動得很快,有些不活潑等等。我會把這些特別的屬性整合到我的工廠類,而不是用一大串複雜而又難懂的初始化函式。我把這個工廠類叫做「bugfactory」,在bugfactory的有檔案中,包含我之前提到的那些類,就像這樣:

// bugfactory creates bugs for specific uses

class bugfactory 

注意到bugfactory現在有四個類方法其返回值是bugfalling的例項。相比之前我需要在bugfalling類中寫複雜的建構函式,而現在我只要實現簡單的建構函式,而那些附加的初始化資訊會由bugfactory來完成。現在我們來看乙個bugfactory的函式, bugfallingstatic():

static bugfalling bugfallingstatic()

正如你看到的,這是乙個目標簡單的函式,你可以想象在越來越複雜的遊戲中有越來越複雜的物件,這些物件的例項化會讓人抓狂。使用物件會讓你有你個單獨的地方來檢視與修改物件的創造。你可以想象,在bugfactory中新增bugfirefly和bugmultiply的生成不用費什麼勁(其實是要的。。)。並且因為他們是類似的物件(都繼承於父類bug),有乙個工廠製造他們是很方便的,並且可以很方便的修改他們特定的初始化過程。

。。。。終於翻譯完了,就這麼短的文章翻譯了乙個多小時。。。真是很累啊。。

還有不懂  while quicksort and bst delete are important, they're oftentimes implemented in basic language/system libraries  和  write a binary search tree delete   這兩句中的delete是什麼意思?

翻譯完才發現這文章一般般,不過工廠模式的確是很好很基本的設計模式,可能大家平時無意間都在用這個模式,的但是卻不知道怎麼稱呼,而現在你就可以很逼的說我這段程式是用了工廠模式,沒聽說過的就會很仰慕的看著你,高手。。。

原文出處:

遊戲中的設計模式 工廠模式

現在的網遊更新很快,要延長網路遊戲生命週期的方法是,更新,不斷地更新,不斷的將新內容呈現於玩家面前。這要求遊戲程式的設計要有彈性,的重用至關重要。今天就說說遊戲中的工廠模式。說到工廠模式,有簡單工廠模式,工廠方法模式,抽象工廠模式。一 簡單工廠模式 ps 物件導向的程式設計,並不是類越多越好,類的劃...

設計模式遊戲完美開發 工廠模式

一 最簡單的工廠模式 其一 factory抽象類 內有乙個create抽象方法,子類factorya 實現create方法生成a產品,子類factoryb 實現create方法生成b產品 二 最簡單的工廠模式 其二 factory抽象類 內有create int type 抽象方法,子類factor...

遊戲中的設計模式之抽象工廠模式

遊戲中需要用到抽象工廠的地方很多,比如 你想得到乙個怪物monster,而我們在遊戲中可能會出現幾十種怪物,而且每種怪物都有自己特有技能,如 大蛇可以發射毒液使你減速,熊會有重擊技能可以將你打暈,老虎會有暴擊技能等等。而怎樣將這些怪初始化並能夠與遊戲中的人物聯絡起來,這地方使用抽象工廠可以解決這些問...