2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  畢業(yè)論文文獻(xiàn)綜述</b></p><p><b>  計(jì)算機(jī)科學(xué)與技術(shù)</b></p><p>  基于JAVA的坦克大戰(zhàn)游戲的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  摘要</b></p><p>  坦克大戰(zhàn)(Battle City)是一款經(jīng)典休

2、閑防御射擊類游戲。游戲以坦克戰(zhàn)斗及保衛(wèi)基地為主題,屬于策略型聯(lián)機(jī)類。同時(shí)也是少有的內(nèi)建關(guān)卡編輯器的幾個(gè)游戲之一,玩家可自己創(chuàng)建獨(dú)特的關(guān)卡,并通過獲取一些道具使坦克和基地得到強(qiáng)化。</p><p>  本項(xiàng)目介紹了坦克大戰(zhàn)的基本構(gòu)建方法、java的相關(guān)技術(shù)及本程序的結(jié)構(gòu)分析和具體功能的實(shí)現(xiàn)。重點(diǎn)運(yùn)用了圖形化用戶界面GUI,Thread多線程的有關(guān)知識(shí),其中涉及了繪圖工具的運(yùn)用,事件處理操作以及圖形的碰撞檢測(cè)等知識(shí)點(diǎn)

3、。</p><p>  學(xué)會(huì)圖形化用戶界面的構(gòu)建,通過啟用多線程機(jī)制,將畫面構(gòu)造出來,使用雙緩沖消除閃爍現(xiàn)象。使用鍵盤監(jiān)聽類KeyMonitor實(shí)現(xiàn)坦克的控制操作,實(shí)現(xiàn)坦克與障礙物之間的碰撞檢測(cè),利用容器類添加對(duì)象。</p><p>  關(guān)鍵詞:基地 射擊 關(guān)卡</p><p><b>  1.引言</b></p><p

4、>  坦克大戰(zhàn)是一款風(fēng)靡全球的電視游戲機(jī)和掌上游戲機(jī)游戲。此游戲由于游戲簡(jiǎn)單、操作方便而備受大家青睞。游戲編程涉及圖形[3]圖像、實(shí)時(shí)輸入獲取、邏輯控制[4]、音樂音效編程、人工智能[5]等方面。不同于一般的圖形應(yīng)用程序,游戲圖像對(duì)硬件有著嚴(yán)格甚至于苛刻的要求。游戲開發(fā)人員總是想著如何發(fā)揮現(xiàn)有的硬件的極限性能[6]以實(shí)現(xiàn)更華麗更逼真的游戲圖形效果。這不僅需要硬件技術(shù)的發(fā)展支持,也要求游戲程序員在數(shù)據(jù)結(jié)構(gòu)、圖形算法領(lǐng)域不斷地加以突破

5、。經(jīng)典的坦克大戰(zhàn)游戲卻是一個(gè)特例,它規(guī)則簡(jiǎn)單,所有人都比較熟悉,而且涉及到鍵盤控制、計(jì)分功能、內(nèi)建關(guān)卡以及其他邏輯問題,是一個(gè)比較綜合而相對(duì)難度不很大的游戲,很適合初學(xué)者學(xué)習(xí)計(jì)算機(jī)程序開發(fā)技術(shù),鍛煉自己的動(dòng)手能力。</p><p>  2. 游戲語言與工具</p><p>  開發(fā)任何軟件,掌握一門編程語言是必不可少的。在某些應(yīng)用程序中,總有一些計(jì)算機(jī)語言優(yōu)于其他語言。下面是幾種用于編寫游

6、戲的主要編程語言[7]的介紹及其優(yōu)缺點(diǎn)。</p><p>  C/C++語言:實(shí)際上大部分游戲都是由C/C++語言編寫的,C語言支持結(jié)構(gòu)化編程,也就是說C的程序被編寫成一些分離的函數(shù)呼叫(調(diào)用)的集合,這些呼叫是自上而下運(yùn)行,而不像一個(gè)單獨(dú)的集成塊的代碼使用GOTO語句控制流程。由于C是由匯編語言編寫的,將C和匯編語言進(jìn)行結(jié)合變得相當(dāng)容易。函數(shù)調(diào)用接口非常簡(jiǎn)單,而且匯編語言指令還能內(nèi)嵌到C代碼中,所以,不需要連接

7、獨(dú)立的匯編模塊。C++語言是具有面向?qū)ο筇匦缘腃語言的繼承者。面向?qū)ο缶幊?,或稱OOP是結(jié)構(gòu)化編程的下一步。OO程序由對(duì)象組成,其中的對(duì)象是數(shù)據(jù)和函數(shù)離散集合。有許多可用的對(duì)象庫存在,這使得編程簡(jiǎn)單得只需要將一些程序“建筑材料”堆在一起(至少理論上是這樣),組織大型程序的能力和程序移植性都比C語言好得多。</p><p>  匯編語言:最小、最快的語言。匯編高手能編寫出比任何其他語言能實(shí)現(xiàn)的快得多的程序。確切的說

8、,任何能在其他語言里做到的事情,匯編都能做,只是不那么簡(jiǎn)單 — 這是當(dāng)然,就像既可以開車到某個(gè)地方,也可以走路去,只是難易之分。匯編語言的缺點(diǎn)也很明顯:缺點(diǎn):難學(xué)、語法晦澀、堅(jiān)持效率,額外代碼多,維護(hù)困難且移植性近于零??偟膩碚f,匯編語言不會(huì)在游戲中單獨(dú)應(yīng)用。游戲使用匯編主要是來編寫游戲核心中需要高速反復(fù)運(yùn)行的部分。</p><p>  JAVA:一門緊湊而易學(xué)的語言,Java從C++ 中借用了大量的語法,丟棄了

9、很多C++的復(fù)雜功能,。不像C++,Java強(qiáng)制面向?qū)ο缶幊蹋?。自?dòng)分配資源配合垃圾回收[3]使得JAVA很容易實(shí)現(xiàn)不易崩潰且不會(huì)泄漏資源的可靠程序,程序也可以在網(wǎng)頁中運(yùn)行。JAVA的另一個(gè)優(yōu)勢(shì)就是移植性[4]非常好。JAVA的缺點(diǎn)是使用一個(gè)“虛擬機(jī)[8]”來運(yùn)行可移植的字節(jié)碼而非本地機(jī)器碼,程序?qū)⒈日嬲幾g器慢。</p><p>  通過對(duì)幾種語言的比較,我選擇用Java[9]進(jìn)行坦克大戰(zhàn)的編寫。重點(diǎn)運(yùn)用了圖形

10、化用戶界面GUI,Thread多線程的有關(guān)知識(shí),其中涉及了繪圖工具的運(yùn)用,事件處理操作以及圖形的碰撞檢測(cè)[16]等知識(shí)點(diǎn)</p><p><b>  3.游戲系統(tǒng)簡(jiǎn)介 </b></p><p>  坦克大戰(zhàn)游戲是一款面向所有愛好射擊類等的游戲迷所創(chuàng)建的游戲,打開游戲界面,游戲界面中有開始游戲、游戲幫助和退出游戲的選項(xiàng)。點(diǎn)擊開始游戲即可開始玩,WASD控制方向,J為子彈

11、,玩家控制主坦克的移動(dòng)和炮彈的發(fā)射,將地方坦克全部消滅并保證己方基地不被打掉則視為玩家勝利,游戲中有超級(jí)武器和加血道具,靠玩家自己的摸索,游戲按鍵簡(jiǎn)單,易于操作。</p><p><b>  3.1游戲規(guī)則</b></p><p>  勝利條件:保護(hù)位于游戲界面中下部的我方基地,將20架敵方坦克擊毀便可勝利,進(jìn)入下一關(guān)。</p><p>  失

12、敗條件:我方坦克全滅或基地被毀。無論我方坦克殘量幾何,基地一旦被毀,游戲立刻CAME OVER。</p><p>  4.游戲制作編程需求</p><p>  以一架坦克的大小為一格,每場(chǎng)戰(zhàn)斗開始時(shí),游戲的設(shè)置是在一個(gè)特定的場(chǎng)景中,玩家控制我方坦克,由游戲提供了讓玩家坦克運(yùn)行的方法和發(fā)射子彈的方法,消滅敵方坦克保護(hù)基地的一個(gè)游戲,游戲中敵方的坦克是由系統(tǒng)所控制的,能自動(dòng)的隨機(jī)發(fā)射出子彈。游

13、戲功能要求如下:</p><p>  坦克移動(dòng)需求:運(yùn)用十字鍵進(jìn)行暢快自如的移動(dòng),炮口方向與移動(dòng)方向自動(dòng)一致。移動(dòng)的最小單位為1/2格,如果只消減了1/4的障礙物,就無法繼續(xù)前進(jìn)。</p><p>  地形需求:戰(zhàn)場(chǎng)并不是一馬平川,各種障礙物構(gòu)成了復(fù)雜的地形,地形包括磚墻、森林、樹木等,學(xué)會(huì)利用地形是坦克大戰(zhàn)基礎(chǔ)中的基礎(chǔ)。</p><p>  攻擊需求:一枚炮彈的攻

14、擊判定寬度為1格,強(qiáng)度為1/4格,也就是說,要擊毀1格的紅磚,需要發(fā)射四枚炮彈。當(dāng)己方坦克火力處于1級(jí)時(shí),同屏只能出現(xiàn)己方的一枚炮彈,合理的開炮是制勝的最有效的途徑。</p><p>  勝利需求: 保護(hù)我方基地,將所有敵方坦克擊毀便可勝利。</p><p><b>  5.游戲主要類</b></p><p>  5.1構(gòu)建坦克類(Tank類)

15、</p><p>  創(chuàng)建一個(gè)坦克類,為Tank類添加成員變量,添加draw方法,使Tank類獨(dú)立控制自己的畫法,構(gòu)造函數(shù)中創(chuàng)建使得每個(gè)坦克都擁有自己的一顆子彈,這些子彈將隨著坦克自己的調(diào)動(dòng)而調(diào)動(dòng)。為區(qū)分?jǐn)澄姨箍?,在類中?chuàng)建了Good tank和bad tank來分別表示我方坦克和敵方坦克,以簡(jiǎn)化結(jié)構(gòu)。</p><p>  5.2添加炮彈類(Missile類)</p><

16、;p>  添加Missile類,添加x,y,dir等屬性以及常量。在Missile類當(dāng)中添加構(gòu)造方法,draw方法等必要方法。根據(jù)不同的方向,子彈要進(jìn)行不同的運(yùn)動(dòng)。在Tank類當(dāng)中增加對(duì)J鍵的按鍵處理,使每按下J鍵的時(shí)候,坦克打出一發(fā)炮彈。為了解決坦克停下來也能開火的問題——給坦克加一炮筒,根據(jù)炮筒方向和位置設(shè)定子彈的方向和位置并new出來,然后返回。</p><p>  5.3添加基地類(Headquar

17、ters 類) </p><p>  建立Headquarters類,在Headquarters類中為基地添加紅磚,當(dāng)紅磚中的Headquarters被打掉后游戲結(jié)束。讓敵方坦克發(fā)射炮彈,本軍坦克不打本軍坦克,向炮彈添加表示好壞的Boolean量good。修改炮彈的構(gòu)造方法;修改Tank的fire方法,坦克只能打擊對(duì)方。</p><p>  5.4添加墻類(wall 類)</p>

18、;<p>  建立wall類,往里添加相應(yīng)屬性以及相應(yīng)方法,當(dāng)子彈接觸到墻壁時(shí),墻壁消失。在MainFrame類當(dāng)中創(chuàng)建容器,將爆炸存放于容器當(dāng)中,擊斃一輛坦克就產(chǎn)生爆炸,將爆炸逐一畫出(如果死去就去除)。</p><p>  5.5創(chuàng)建地圖類(Map 類)</p><p>  建立map類,在障礙物中添加元素,當(dāng)子彈打到障礙物抵消掉時(shí),隨機(jī)有道具出現(xiàn),創(chuàng)建Blood類添加血

19、藥箱,加入必要的屬性和方法。當(dāng)主站Tank與藥箱接觸的時(shí)候,血自動(dòng)加滿。添加容器類,用容器來裝敵方坦克,可多輛裝入。</p><p><b>  6.總結(jié)</b></p><p>  該游戲包括游戲場(chǎng)景(地圖)的處理、雙方作戰(zhàn)對(duì)象(坦克和子彈)的生成、消減和控制,以及敵方坦克和子彈運(yùn)行智能性的控制,實(shí)現(xiàn)了特定場(chǎng)景中的敵我雙方坦克的對(duì)戰(zhàn),敵方坦克由系統(tǒng)控制,自動(dòng)的發(fā)射子

20、彈;我方坦克由玩家控制,系統(tǒng)為玩家提供控制坦克運(yùn)行和子彈發(fā)射攻擊的方法。該游戲軟件具有一定的復(fù)雜性和可玩性。 </p><p>  在該游戲的設(shè)計(jì)與實(shí)現(xiàn)過程中,不可避免的遇到一些技術(shù)方面的問題,比如對(duì)游戲地圖加載技術(shù)、坦克間的檢測(cè)碰撞技術(shù)等,這些問題的解決是本游戲的關(guān)鍵。當(dāng)然,該游戲有待于進(jìn)一步的提高,比如更大程度的提高敵方坦克智能化、游戲中添加寶物(物品),增加可玩性等等。</p><p&g

21、t;<b>  參考文獻(xiàn)</b></p><p>  [1] 耿衛(wèi)東,陳為.計(jì)算機(jī)游戲程序設(shè)計(jì).電子工業(yè)出版社.2009.01[2] 王鵬,何昀峰.Java Swing圖形界面開發(fā)與案例詳解.清華大學(xué)出版社,2008.12[3] BruceEckel,Java 編程思想[M].機(jī)械工業(yè)出版社,2003.10[4] 呂建德.游戲程序設(shè)計(jì)概論.中國鐵道出版社.2006[5] 趙

22、毅.跨平臺(tái)程序設(shè)計(jì)語言——Java.西安電子科技大學(xué)出版社,2006.01[6] 楊恩雄,麥凱翔.瘋狂Java實(shí)戰(zhàn)演義.電子工業(yè)出版社.2010.06[7] Jonathan S. Harbour.Java 5 游戲編程.機(jī)械工業(yè)出版社,2007.01[8] 趙強(qiáng),喬新亮.J2EE應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社.2003.</p><p>  [9] 陳東.編程常用設(shè)計(jì)模式.電子工業(yè)出版,20

23、05.10</p><p>  [10] [美]Herbert Schidt著.Java參考大全.鄢愛蘭.鹿江春譯.北京:清華大學(xué)出版社,2006</p><p>  [11] 宛延闿等.實(shí)用Java程序設(shè)計(jì)教程.機(jī)械工業(yè)出版社,2006</p><p>  [12] 張海藩.軟件工程導(dǎo)論.清華大學(xué)出版社, 2008.2</p><p>  

24、[13] Andy Budd&Cameron Moll&Simon Collison .CSS Mastery: Advanced Web Standards Solutions .Apress, 2006.10</p><p>  [14] Harvey M. Deitel .java how to program. Pearson Education ,2001.8</p>&l

25、t;p>  [15] 李尊朝,蘇軍. Java語言程序設(shè)計(jì).中國鐵道出版社,2006.1 </p><p>  [16] 邱郁惠.系統(tǒng)分析師UML實(shí)務(wù)手冊(cè).機(jī)械工業(yè)出版社,2008.04</p><p>  [17] 陳軼.姚曉昆.Java程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo).清華大學(xué)出版社,2006</p><p>  [18] 邱郁惠.系統(tǒng)分析師UML實(shí)務(wù)手冊(cè).機(jī)械工業(yè)出版社

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論