網(wǎng)絡(luò)棋牌游戲設(shè)計(jì)方法

網(wǎng)絡(luò)棋牌游戲設(shè)計(jì)方法

ID:14302682

大?。?8.00 KB

頁(yè)數(shù):13頁(yè)

時(shí)間:2018-07-27

網(wǎng)絡(luò)棋牌游戲設(shè)計(jì)方法_第1頁(yè)
網(wǎng)絡(luò)棋牌游戲設(shè)計(jì)方法_第2頁(yè)
網(wǎng)絡(luò)棋牌游戲設(shè)計(jì)方法_第3頁(yè)
網(wǎng)絡(luò)棋牌游戲設(shè)計(jì)方法_第4頁(yè)
網(wǎng)絡(luò)棋牌游戲設(shè)計(jì)方法_第5頁(yè)
資源描述:

《網(wǎng)絡(luò)棋牌游戲設(shè)計(jì)方法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、網(wǎng)絡(luò)棋牌游戲設(shè)計(jì)方法先前在論壇中看了一位朋友讓大家給他查看一下他寫(xiě)的推箱子游戲?yàn)槭裁闯鲥e(cuò),我第一想法就是這很難做到,別人寫(xiě)的程序,特別是實(shí)現(xiàn)流程和邏輯只有作者本人比較清楚,外人是要花費(fèi)一定時(shí)間才能把握程序的中主體設(shè)計(jì)思想再進(jìn)一步研究。我想除了學(xué)習(xí)或項(xiàng)目要求是很少人愿意花這樣的精力去讀別人的代碼的,而粗看他的代碼,我覺(jué)得是他本人在程序設(shè)計(jì)的思想上出了差錯(cuò),而細(xì)想現(xiàn)在對(duì)引擎或硬件知識(shí)介紹的多卻很少有講解怎么實(shí)現(xiàn)對(duì)現(xiàn)實(shí)的抽象,即怎么合理的去設(shè)計(jì)游戲,實(shí)用軟件......所以想寫(xiě)這樣一篇文章來(lái)和大家探討一下“棋盤(pán)”游戲的設(shè)

2、計(jì)思路。??“棋盤(pán)”游戲的種類(lèi)豐富,俄羅斯方塊,推箱子,象棋,五子棋......等等這些都可以歸類(lèi)到“棋盤(pán)”游戲中來(lái)。面對(duì)這類(lèi)游戲設(shè)計(jì)的時(shí)候,我本人的見(jiàn)解是首先對(duì)“棋盤(pán)”做研究,實(shí)在不行再去研究“棋子”。換句話說(shuō),就是以游戲中的活動(dòng)區(qū)域?yàn)檠芯繉?duì)象,像象棋就是他的棋盤(pán),俄羅斯方塊就是他整個(gè)的方塊的活動(dòng)區(qū)域。我們這里姑且就把他叫做“棋盤(pán)法”。??一.“棋盤(pán)法”基本實(shí)現(xiàn)方法??“棋盤(pán)法”實(shí)現(xiàn)起來(lái)其實(shí)很簡(jiǎn)單,一般來(lái)說(shuō)就是把棋盤(pán)看作一個(gè)網(wǎng)格,那么我們就把他看作與之對(duì)應(yīng)的二維數(shù)組。然后適當(dāng)組織數(shù)據(jù)結(jié)構(gòu)去抽象旗子,制定規(guī)?則,這

3、樣就很容易實(shí)現(xiàn)游戲。??二.“棋盤(pán)法”的優(yōu)缺點(diǎn)??任何一個(gè)算法或思想都是有優(yōu)缺點(diǎn)的,而我們的“棋盤(pán)法”的最大優(yōu)點(diǎn)就是可以方便我們組織數(shù)據(jù)結(jié)構(gòu),簡(jiǎn)化了游戲規(guī)則的編寫(xiě),使我們編程時(shí)思路比較清晰直觀,通常就是直接根據(jù)游戲?qū)嶋H規(guī)則編寫(xiě)就可以了,這個(gè)我們會(huì)以實(shí)例加以說(shuō)明。然而他最大的缺點(diǎn)就是可能耗費(fèi)大量?jī)?nèi)存,試想,如果我們的棋盤(pán)規(guī)格很大,那我們就得開(kāi)辟一個(gè)比較大的二維數(shù)組,并且如果你要將代碼移植到單片機(jī),ARM等硬件平臺(tái)上。那你就不得不考慮自己的方法問(wèn)題,在這些硬件平臺(tái)上內(nèi)存資源是極其寶貴的。也許有朋友會(huì)說(shuō)那在PC機(jī)上總可以

4、的。的確現(xiàn)在PC機(jī)資源豐富,功能強(qiáng)大,可有時(shí)候還是不能如你所愿。一個(gè)很經(jīng)典的例子就是五子棋的人工智能,為了讓五子棋在人機(jī)對(duì)戰(zhàn)中具備攻防兼?zhèn)涞闹悄?,我們只有開(kāi)辟一個(gè)于棋盤(pán)規(guī)格相呼應(yīng)的二維的樹(shù)組來(lái)記錄棋盤(pán)上各點(diǎn)的勝算幾率,(有興趣的朋友可以到網(wǎng)上去找找資料)這樣的話,在DOS下你就只能開(kāi)辟一個(gè)約10X10的棋盤(pán),即使在WINDOS下也只能大約16X16的棋盤(pán)。(當(dāng)然,這里是說(shuō)直接開(kāi)辟數(shù)組,采用特別技術(shù)的不算)。所以說(shuō),這個(gè)“棋盤(pán)法”也是有他自己的限制的。??三.“棋盤(pán)法”的適用條件??根據(jù)上面的介紹,我們應(yīng)該很容易總結(jié)

5、出“棋盤(pán)法”的適用條件。即棋盤(pán)規(guī)格適中,棋子會(huì)頻繁的在棋盤(pán)中移動(dòng)。游戲規(guī)則若復(fù)雜更應(yīng)首先推選“棋盤(pán)法”。很好的一個(gè)例子就是象棋。象棋的走法規(guī)則復(fù)雜,而采用棋盤(pán)法就可以很直觀的把規(guī)則做出來(lái)。當(dāng)然其中要注意的是,程序員要考慮好使用內(nèi)存的大小,考慮好游戲編寫(xiě)方法和內(nèi)存數(shù)據(jù)管理技巧的相匹配。比如,一個(gè)很經(jīng)典的游戲--貪食蛇。他就不適合用“棋盤(pán)法”或是說(shuō)用這個(gè)方法不合算。貪食蛇的棋盤(pán)很大,可蛇身并不會(huì)很大,若采用“棋盤(pán)法”那內(nèi)存無(wú)疑是浪費(fèi),而且在規(guī)則實(shí)現(xiàn)上也是直接以蛇身作為研究對(duì)象好解決問(wèn)題。所以在編寫(xiě)這類(lèi)游戲時(shí)得在宏觀上對(duì)

6、他有個(gè)較全面的考慮。??四.“棋盤(pán)法”的例子??前面說(shuō)過(guò),可以用“棋盤(pán)法”編寫(xiě)的游戲很多,我們以前玩的小游戲我基本都寫(xiě)過(guò),基于方便說(shuō)明問(wèn)題和論壇朋友提出的幫忙看看他的推箱子游戲。那下面我們就拿推箱子游戲來(lái)說(shuō)明“棋盤(pán)法”的編寫(xiě)過(guò)程。?1.前期準(zhǔn)備??在編寫(xiě)這個(gè)游戲之前,我們先個(gè)游戲找個(gè)主題,我的是“植樹(shù)”。即“箱子其實(shí)就是樹(shù),由一個(gè)小人搬運(yùn)到樹(shù)坑中。首先我們開(kāi)辟一個(gè)12X12大小的二維數(shù)組作為棋盤(pán)。然后我們思考一下推箱子的棋子有哪些?一個(gè)是小人,可移動(dòng)的數(shù),還有樹(shù)坑。我們的游戲過(guò)程也很簡(jiǎn)單,在棋盤(pán)上有一圈籬笆,這個(gè)是

7、小人的活動(dòng)方法,其中有幾個(gè)固定的樹(shù)坑,還有分散在不同地方的樹(shù),小人要推動(dòng)這些樹(shù)全部進(jìn)入樹(shù)坑就算游戲通關(guān)。有了以上思考,我們就著手來(lái)實(shí)現(xiàn)。??2.定義數(shù)據(jù)??我們開(kāi)辟一個(gè)12X12的二維數(shù)組表示棋盤(pán),然后我們來(lái)定義個(gè)數(shù)值代表的含義。數(shù)值為0表示此格子為背景,1表示為籬笆,2表示為樹(shù),3表示為樹(shù)坑,4表示人小人,5表示為樹(shù)已移植到樹(shù)坑。?有了此定義,我們就寫(xiě)出顯示各棋子的模塊:voidDot_pawn(charx,chary,charmode);/*在棋盤(pán)相應(yīng)位置畫(huà)出棋子,其中mode為0表示背景,1表示籬笆,2表示未

8、移植樹(shù),3表示樹(shù)坑,4表示人,5表示樹(shù)種坑中*/voidDot_pawn(charx,chary,charmode){char*name_bmp;switch(mode)/*根據(jù)Mode決定顯示的圖片*/{case0:name_bmp="kong.bmp";break;case1:name_bmp="liba.bmp";break;case2:name_bm

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。