屈曉+石毅賢+黃金達(dá)+陳啟聰
摘要:該文介紹采用類(lèi)3D技術(shù)來(lái)實(shí)現(xiàn)的新型戰(zhàn)棋類(lèi)游戲,以Maya為主的Unity, 3Ds Max多種軟件技術(shù)和VC++語(yǔ)言編程相結(jié)合,以人物為棋子移動(dòng)進(jìn)行拼殺的戰(zhàn)棋類(lèi)游戲,采用非平衡二叉樹(shù)的方法來(lái)存儲(chǔ)各棋子的位置,采用局部的類(lèi)折半查找法進(jìn)行目標(biāo)的定位,以及使用模糊行為確定目標(biāo)的選取,采用遍歷的方法確定棋子所走路徑。
關(guān)鍵詞:戰(zhàn)棋游戲;算法
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)08-0083-02
1 概述
現(xiàn)在的游戲軟件越來(lái)越趨向網(wǎng)絡(luò)版,并且小型的動(dòng)漫型的小游戲越來(lái)越多,越來(lái)越讓人們喜歡,這樣的游戲在操作上簡(jiǎn)單,也不需要安裝,更有競(jìng)爭(zhēng)力。我們這個(gè)項(xiàng)目正是看到網(wǎng)絡(luò)中小游戲的優(yōu)越性,結(jié)合一些大型游戲的屬性,比如魔法屬性、能量值等,讓?xiě)?zhàn)棋類(lèi)的游戲也像其他的武俠游戲一樣,具有一定的魔幻性,為游戲玩家?guī)?lái)更多的吸引力。
本論文介紹制作一款2D-3D的新型戰(zhàn)棋類(lèi)游戲。將以Maya為主的Unity,Maya,3Ds Max多種軟件技術(shù)和VC++語(yǔ)言編程相結(jié)合,采用日式風(fēng)格,劇情將以科學(xué)與魔法共存的平行世界為背景,以人物為棋子移動(dòng)進(jìn)行拼殺的戰(zhàn)棋類(lèi)游戲。
2 需求分析
在戰(zhàn)棋游戲中,有著多方的元素在游戲中體現(xiàn),比如飛機(jī),坦克、步兵等,對(duì)各種元素都以能量的形式進(jìn)行體現(xiàn)。在各種元素使用的模塊中,相互的關(guān)系,影響和數(shù)據(jù)的存儲(chǔ),可以采用數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)。設(shè)置的系統(tǒng)架構(gòu)可以用下面的系統(tǒng)用例圖來(lái)體現(xiàn),如圖1所示。
用戶通過(guò)前臺(tái)界面的系統(tǒng)登陸區(qū)進(jìn)行登陸系統(tǒng),進(jìn)入系統(tǒng)后可以選擇其一種角色參與游戲,并且在游戲設(shè)置模塊中對(duì)棋盤(pán)的相關(guān)屬性、計(jì)算機(jī)控制屬性等進(jìn)行調(diào)整與設(shè)置。在界面的外觀需求中,為了吸引玩家,采用了以Maya為主的Unity,3Ds Max多種軟件技術(shù)相結(jié)合,制作了類(lèi)3D效果的場(chǎng)景,并且配置立體音效,以增加游戲環(huán)境的真實(shí)性。
3 算法實(shí)現(xiàn)及VC++代碼
3.1游戲整體設(shè)計(jì)思路
首先,分析該游戲中所需要的所有元素對(duì)象,接著根據(jù)各元素所對(duì)應(yīng)的場(chǎng)景進(jìn)行環(huán)境圖形分析,然后進(jìn)行算法設(shè)計(jì)思路整理,再采用VC++實(shí)現(xiàn)了游戲中各類(lèi)元素的數(shù)據(jù)結(jié)構(gòu)表示。利用了類(lèi)廣度優(yōu)先的算法實(shí)現(xiàn)對(duì)棋子可走的范圍進(jìn)行計(jì)算,用折半查找法和模糊行為確定了選取的行動(dòng)和行動(dòng)實(shí)施的目標(biāo)。采用遍歷的方法確定棋子所走路徑.采用VC++實(shí)現(xiàn)的關(guān)鍵代碼如下:
1) 用類(lèi)廣度優(yōu)先的算法遍歷棋盤(pán),以來(lái)確定能活動(dòng)的范圍大小,并且將活動(dòng)范圍壓入棧,并且設(shè)其置狀態(tài)標(biāo)志flag為1;
2) 獲取一定范圍內(nèi)的所有對(duì)方綜合元素的數(shù)量及能量情況,利用折半查找法來(lái)確定目標(biāo)的位置坐標(biāo)以及可以采用的動(dòng)作;
3) 根據(jù)當(dāng)前玩家所在的位置到目標(biāo)元素所在的坐標(biāo)位置,計(jì)算出一條可走的路徑,并且玩家根據(jù)這條路徑進(jìn)行行走。
3.2元素對(duì)象數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
3.3棋盤(pán)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
元素對(duì)象在場(chǎng)景中移動(dòng),場(chǎng)景的大小范圍設(shè)置,障礙物的放置位置,各元素對(duì)象在場(chǎng)景中移動(dòng)所花費(fèi)的移動(dòng)能量。為了元素對(duì)象在場(chǎng)景中移動(dòng)的方便性,對(duì)棋盤(pán)中的每個(gè)位置設(shè)置1個(gè)標(biāo)志,即是否有人using。
3.4棧結(jié)構(gòu)設(shè)計(jì)
4 結(jié)束語(yǔ)
通過(guò)上面的算法和數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),本文闡述的算法和數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)了戰(zhàn)棋類(lèi)游戲的開(kāi)發(fā),達(dá)到了系統(tǒng)開(kāi)發(fā)的要求,但由于開(kāi)發(fā)者的水平有限,還存在需要完善的地方,有待在以后的學(xué)習(xí)中進(jìn)行改進(jìn)。
參考文獻(xiàn):
[1] 關(guān)慧芬,師軍.網(wǎng)絡(luò)爬行技術(shù)研究[J].鄭州輕工業(yè)學(xué)院學(xué)報(bào):自然科學(xué)版,2008,23(6).
[2] 李偉青.凸多邊形窗口線裁剪的折半查找算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2005,17(5).
[3] 王浩.Visual C++游戲開(kāi)發(fā)經(jīng)典案例詳解[M].北京:清華大學(xué)出版社,2010.
[4] 鄧桂英.OpenGL制作三維游戲的研究[J].計(jì)算機(jī)與現(xiàn)代化,2005(11):33.