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