霍家亮 劉 博
(青島理工大學(xué)琴島學(xué)院計(jì)算機(jī)工程系,山東 青島 266106)
任天堂FC上的坦克大戰(zhàn)是游戲史上的經(jīng)典游戲,隨著時(shí)代的發(fā)展,硬件水平的不斷提高,人們對(duì)于娛樂的要求逐漸提高,F(xiàn)C等上個(gè)世紀(jì)80年代出現(xiàn)的游戲機(jī)早已不能滿足人們對(duì)于娛樂的需求。
在學(xué)習(xí).NET的過程中,隨著對(duì)于.NET開發(fā)工具Visual Studio 2008的深入了解以及.NET開發(fā)技術(shù)、開發(fā)規(guī)范的不斷認(rèn)識(shí),萌生了將FC上的經(jīng)典游戲--坦克大戰(zhàn)在電腦上重現(xiàn)并加以改進(jìn)的想法,這就是本項(xiàng)目開發(fā)背景。
瘋狂坦克是一個(gè)基于.NET平臺(tái)的Windows Forms小型應(yīng)用程序,使用C#語言編寫,要求能夠?qū)崿F(xiàn)畫布的生成,坦克的生成,敵我識(shí)別,我方坦克移動(dòng),敵方AI坦克移動(dòng),坦克的越界處理,坦克射擊功能,子彈與坦克的碰撞檢測(cè),坦克護(hù)甲系統(tǒng),墻體系統(tǒng)等;另外還要求能夠在游戲過程中顯示游戲的實(shí)時(shí)信息、畫布上子彈總數(shù)、殘存物體總數(shù)、擊毀坦克數(shù),來作為游戲水平的檢測(cè);在游戲中還能夠隨即產(chǎn)生AI坦克以及墻體。
(1)模塊劃分:
瘋狂坦克游戲按照功能劃分為兩個(gè)模塊:游戲元素和游戲處理。其中,游戲元素是游戲中的裝備,主要包括了:繪制坦克、繪制墻體、繪制子彈;游戲處理完成游戲的各種操作,主要包括:子彈命中、坦克護(hù)甲、坦克移除,如圖3-1所示:
圖3-1 游戲模塊圖
(2)業(yè)務(wù)流程:
游戲的工作流程:初始化生成游戲,繪制坦克、墻體,完成坦克移動(dòng)、射擊,根據(jù)子彈碰撞的情況,判斷目標(biāo)是否命中,如果坦克被命中,那么坦克將被銷毀;然后,游戲結(jié)束,簡(jiǎn)單描述如下:
<1>當(dāng)程序開始運(yùn)行的時(shí)候,首先生成一個(gè)窗體,然后創(chuàng)建一個(gè)容器,用來容納游戲中的元素。
<2>容器創(chuàng)建完成后,開始繪制敵方坦克和己方坦克以及墻體。
<3>繪制完成后,敵方坦克按照AI開始移動(dòng),并開始射擊,射擊時(shí)根據(jù)坦克的方向繪制子彈。己方坦克根據(jù)鍵盤按鍵進(jìn)行移動(dòng),若按下ctrl鍵則己方坦克開始射擊。如果子彈命中目標(biāo),如果目標(biāo)擁有護(hù)甲,則目標(biāo)減去一層護(hù)甲,如果目標(biāo)已經(jīng)沒有護(hù)甲,則目標(biāo)被消滅,從容器中移除它。墻體和坦克一樣,也擁有護(hù)甲值,但和坦克不同的是,墻體不能移動(dòng)。當(dāng)消滅一定數(shù)量的坦克或者墻體后,游戲會(huì)自動(dòng)添加一定數(shù)量的坦克或者墻體,從而增加游戲難度。
<4>當(dāng)己方坦克被消滅時(shí),游戲結(jié)束。
(3)運(yùn)行環(huán)境:
操作系統(tǒng):選擇win7或者indows xp
運(yùn)行框架:.Net framework3.0
根據(jù)模塊功能,創(chuàng)建游戲運(yùn)行界面,包含坦克、子彈、墻等游戲元素的繪制和重畫;構(gòu)建類庫,包含游戲?qū)崿F(xiàn)的主要方法,完成游戲的操作;創(chuàng)建配置文件,主要包括游戲元素的初始化信息,如:坐標(biāo)信息。下面是游戲部分功能的實(shí)現(xiàn)方法:
(1)坦克的生成方法,部分代碼如下:
(2)坦克繪制以及坦克裝甲繪制,部分代碼如下:
(3)坦克的移動(dòng)及射擊,用random.Next()控制坦克的隨機(jī)運(yùn)動(dòng),用next值表示對(duì)應(yīng)的方向,用random.Next()控制坦克的隨機(jī)發(fā)射炮彈,部分代碼如下:
(4)子彈與坦克的碰撞檢測(cè)方法,用Intersects With來檢測(cè)兩個(gè)矩形相碰撞。碰撞后,依次檢視是否為墻、是否無效子彈、是否有護(hù)甲,主要代碼如下:
本文采用C#語言實(shí)現(xiàn)了游戲的全部功能,在單機(jī)和局域網(wǎng)上測(cè)試通過,并改進(jìn)了部分功能,游戲占內(nèi)存比較小,運(yùn)行比較流暢、沒有出現(xiàn)死機(jī)或者其它問題。
[1]于國防.李劍.C#語言Windows程序設(shè)計(jì)[M],清華大學(xué)出版社,2010.5
[2]童恒慶,梅清.基于.NET平臺(tái)的B/S系統(tǒng)開發(fā)框架的研究[J].微機(jī)發(fā)展,2004.6
[3]許洪明,趙金城.基于Web的重大工程項(xiàng)目管理信息系統(tǒng)應(yīng)用研究[J].建筑技術(shù)開發(fā),2004.3