版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 學(xué)生課程設(shè)計(論文)</p><p> 題 目: 基于JAVA的坦克大戰(zhàn) </p><p> 學(xué) 生 姓 名: </p><p> 學(xué) 號: </p><p> 所在院 (系): 計算機學(xué)院
2、 </p><p> 專 業(yè): 計算機科學(xué)與技術(shù) </p><p> 班 級: </p><p> 指 導(dǎo) 教 師: 職稱: </p><p> 2011年 5 月 26 日</p><p><b> 課程設(shè)計任務(wù)書&
3、lt;/b></p><p> 注:任務(wù)書由指導(dǎo)教師填</p><p><b> 摘 要</b></p><p> 系統(tǒng)擁有可視化的登錄界面,配有游戲幫助文檔,程序的編寫涵蓋J2SE基礎(chǔ)知識,包括典型的封裝、繼承、多態(tài)的實現(xiàn),同時結(jié)合了socket網(wǎng)絡(luò)編程、GUI圖形用戶界面的相關(guān)知識。</p><p>
4、 項目集成了單機個人、網(wǎng)絡(luò)對戰(zhàn)兩個版本。單機版實現(xiàn)精彩的人機對戰(zhàn),電腦間隔性產(chǎn)生敵方坦克,玩家通過血塊持續(xù)攻擊。游戲進行了后門設(shè)計,玩家可以輕松穿越墻體攻擊敵方坦克。</p><p> 網(wǎng)絡(luò)版游戲中作為服務(wù)器的主機需提前啟動坦克服務(wù)器,服務(wù)器主線程將接收的客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)到其他客戶端,實現(xiàn)客戶端游戲界面的實時更新。</p><p> 開始游戲后,主線程調(diào)用窗體對象的Paint方法進行
5、繪圖,畫面采用雙緩沖技術(shù)進行刷新。坦克將在游戲開始時進行初始化,并隨屏幕刷新的頻率而移動。</p><p> 關(guān)鍵字 坦克大戰(zhàn),C/S網(wǎng)絡(luò)體系,JAVA,Socket編程,GUI</p><p><b> 目 錄</b></p><p><b> 摘 要Ⅰ</b></p><p>
6、1 可行性研究1</p><p> 1.1 可行性分析1</p><p> 1.1.1 系統(tǒng)可行性1</p><p> 1.1.2 技術(shù)可行性1</p><p> 1.1.3 經(jīng)濟可行性1</p><p> 1.1.4 操作可行性2</p><p> 1.2 網(wǎng)絡(luò)游戲的
7、發(fā)展2</p><p> 1.3 系統(tǒng)的現(xiàn)實意義2</p><p> 1.4 系統(tǒng)特點2</p><p> 1.5 Java、C語言、C++主流技術(shù)比較3</p><p> 1.6 本章小結(jié)3</p><p> 2 系統(tǒng)需求分析4</p><p> 2.1 系統(tǒng)運行環(huán)境
8、4</p><p> 2.1.1 系統(tǒng)運行的軟件環(huán)境4</p><p> 2.1.2 系統(tǒng)運行的硬件環(huán)境4</p><p> 2.2 相關(guān)理論4</p><p> 2.2.1 關(guān)于Eclipse的介紹4</p><p> 2.2.2 J2SE框架5</p><p> 2.
9、3 系統(tǒng)功能需求6</p><p> 2.3.1 主界面人性化功能6</p><p> 2.3.2 人機對戰(zhàn)模式功能6</p><p> 2.3.3 網(wǎng)絡(luò)對戰(zhàn)模式功能6</p><p> 2.3.4 聯(lián)機通信機制6</p><p> 2.3.5 Java圖形編程7</p><p
10、> 2.4 本章小結(jié)8</p><p> 3 系統(tǒng)概要設(shè)計9</p><p> 3.1系統(tǒng)功能設(shè)計9</p><p> 3.1.1 坦克大戰(zhàn)總體功能設(shè)計9</p><p> 3.1.2 TankClient類基本功能分析10</p><p> 3.1.3 Tank類基本功能分析11<
11、;/p><p> 3.1.4 Missile類基本功能分析12</p><p> 3.1.5 Explode類基本功能分析12</p><p> 3.1.6 服務(wù)器類基本功能分析13</p><p> 3.1.7 信息傳送類基本功能分析13</p><p> 3.2 本章小結(jié)13</p>
12、<p> 4 系統(tǒng)詳細設(shè)計14</p><p> 4.1 游戲主窗體實現(xiàn)14</p><p> 4.2 單機游戲的實現(xiàn)15</p><p> 4.3 聯(lián)機功能實現(xiàn)16</p><p> 4.4 網(wǎng)絡(luò)模式主要代碼20</p><p> 4.5 本章小結(jié)23</p><
13、p><b> 5 結(jié)論24</b></p><p> 5.1 課程設(shè)計總結(jié)24</p><p> 5.2 本程序需解決的有關(guān)技術(shù)問題24</p><p><b> 5.3 展望25</b></p><p> 參 考 文 獻26</p><p>&
14、lt;b> 1 可行性研究</b></p><p><b> 1.1 可行性分析</b></p><p> 1.1.1 系統(tǒng)可行性</p><p> 人類進入21世紀,全球一體化,互聯(lián)網(wǎng)就起到重要的作用,而且隨著互聯(lián)網(wǎng)的不斷發(fā)展,信息技術(shù)逐漸發(fā)展壯大,將成為網(wǎng)絡(luò)經(jīng)濟的核心。其中計算機、網(wǎng)絡(luò)通信的發(fā)展最為迅速。在現(xiàn)今電
15、子信息高速發(fā)展的時代,網(wǎng)絡(luò)游戲已經(jīng)深入到人們的日常生活中,成為老少皆宜的娛樂方式。</p><p> 1.1.2 技術(shù)可行性</p><p> Java語言自Sun公司于1995年5月正式發(fā)布以來,經(jīng)歷了出生、成長、成熟壯大的幾個階段,逐漸發(fā)展成為IT領(lǐng)域里的主流計算模式,使用Java開發(fā)工具方便,容易實現(xiàn)。Java對開發(fā)網(wǎng)絡(luò)產(chǎn)品有它自己獨特的優(yōu)勢,網(wǎng)絡(luò)游戲也是其開發(fā)產(chǎn)物之一。本系統(tǒng)開
16、發(fā)過程是利用Java編程語言和eclipse集成開發(fā)環(huán)境配合使用來實現(xiàn)的,它是基于TCP/UDP協(xié)議和Socket編程技術(shù),建立以C/S為結(jié)構(gòu)模式的娛樂性游戲平臺。</p><p> 1.1.3 經(jīng)濟可行性</p><p> 本設(shè)計的開發(fā)是基于JDK5.0和eclipse3.2的,因為它們都是免費而且開源的軟件,所以實現(xiàn)本設(shè)計的成本就有所降低。隨著計算機、網(wǎng)絡(luò)通訊和信息技術(shù)的迅猛發(fā)展以
17、及人類精神生活品質(zhì)的提高,國際、國內(nèi)的各種各樣的大型綜合游戲網(wǎng)站如雨后春筍般的發(fā)展起來。一款好的游戲帶來的經(jīng)濟效益可以說是不可估量的,比如現(xiàn)在網(wǎng)上最流行的魔獸世界、征途等大型網(wǎng)絡(luò)版游戲。本游戲既可單機運行,也可以是聯(lián)機版多人同時在線對戰(zhàn)。</p><p> 1.1.4 操作可行性</p><p> 本設(shè)計是一個網(wǎng)絡(luò)版的游戲平臺,只是模擬了現(xiàn)在社會上的一些網(wǎng)絡(luò)游戲的部分功能,所以操作簡易
18、,玩家不需要了解內(nèi)部流程,只是和一般其他的網(wǎng)絡(luò)游戲一樣的操作即可開始游戲。相對于開發(fā)者而言,整個系統(tǒng)形成主要由JDK5.0虛擬環(huán)境和eclipse3.2共同完成,無需更多復(fù)雜的工具和服務(wù)器支持。</p><p> 1.2 網(wǎng)絡(luò)游戲的發(fā)展</p><p> 在今天,借助于數(shù)字、電子、網(wǎng)絡(luò)、創(chuàng)意、編劇、美工、音樂……等等“先進”的道具,網(wǎng)絡(luò)游戲?qū)τ谌藗儸F(xiàn)實生活的虛擬達到了一個全新的境界,并
19、且則在這新的境界上還原了游戲的本源--人與人的互動。網(wǎng)絡(luò)游戲滿足了現(xiàn)代社會必須的溝通需求,無疑它應(yīng)該是適合所有人的。在軍事模擬對抗演習(xí)中,大型游戲機既可以模擬作戰(zhàn)現(xiàn)場的地形、軍力部署、天氣等情況,還可以進行多兵種戰(zhàn)術(shù)技能對抗訓(xùn)練;在國防訓(xùn)練方面,大型游戲機可以模擬坦克操縱、導(dǎo)彈發(fā)射、飛機駕駛、艦艇巡航等多種訓(xùn)練任務(wù);在醫(yī)療培訓(xùn)方面,大型游戲機擁有的全息三維立體投影技術(shù),可以逼真地展示人體的各部分構(gòu)造和器官等。</p>&l
20、t;p> 1.3 系統(tǒng)的現(xiàn)實意義</p><p> 游戲本身是一種娛樂方式,能帶給人們無盡的樂趣,而且游戲行業(yè)的發(fā)展還將會帶動眾多周邊產(chǎn)業(yè),如五金、塑料、機械、電子、 顯像管,高端機型甚至使用了40英寸以上的大屏幕背投、液晶顯示器等,這些顯像設(shè)備不但要依賴國內(nèi)眾多顯像管生產(chǎn)企業(yè)提供支持,更要針對游戲的內(nèi)容進行深入開發(fā)和優(yōu)化,以適應(yīng)游戲內(nèi)容的飛速發(fā)展和變化,大大突破了傳統(tǒng)家電類顯像設(shè)備的限制,對國內(nèi)顯像管
21、制造企業(yè)的發(fā)展、創(chuàng)新具有極大的推動作用,大型游戲機的外部框體制造涉及工業(yè)設(shè)計、模具加工、五金加工、塑料成形、特殊印刷等工藝流程,由此帶動了一大批相關(guān)的零部件生產(chǎn)制造企業(yè),而這些企業(yè)均為生產(chǎn)密集型企業(yè),大幅度增加了勞動就業(yè)的需求。</p><p><b> 1.4 系統(tǒng)特點</b></p><p> 本系統(tǒng)的坦克大戰(zhàn)是基于Java語言設(shè)計開發(fā)的,具有高超的人工智能,
22、精美的圖形處理,支持單機運行和網(wǎng)絡(luò)對戰(zhàn)的坦克射擊游戲。比之前網(wǎng)絡(luò)上實現(xiàn)的游戲更加方便,快捷,智能。游戲基本玩法較簡單,游戲可一人電腦作戰(zhàn),每次電腦方有坦克10輛,游戲以消滅全部敵方坦克過關(guān)為目的。在這過程中,坦克有機會得到血塊來添加生命值,從而變得更加強大,也能利用各種有利地形來阻擊敵人。游戲進行了后門程序設(shè)計可以輕松穿越墻體攻擊敵方坦克。還有給玩家坦克設(shè)置超級炮彈,當電腦方坦克數(shù)量過多時,玩家坦克可以發(fā)射超級炮彈打擊敵方。主要新增的功
23、能簡單羅列如下:</p><p> ?。?)屏幕左上方顯示游戲狀態(tài),當玩家方坦克數(shù)全為零時則游戲結(jié)束;</p><p> ?。?)一般坦克只可在空地中或草叢中行走,不可通過墻面等障礙物;</p><p> ?。?)游戲中打壞敵方坦克后,可能會在隨機位置隨機出現(xiàn)血塊獎勵,坦克經(jīng)過該位置可獲得相應(yīng)加生命值獎勵;</p><p> (4)玩家坦克
24、的游戲資格和電腦坦克不同。</p><p> 1.5 Java、C語言、C++主流技術(shù)比較</p><p> Java 語言是一種跨平臺,適合于分布式計算環(huán)境的面向?qū)ο缶幊陶Z言。JAVA現(xiàn)在主要用在WEB開發(fā),手機游戲及一些平臺游戲的開發(fā),因為它具有很好的跨平臺性,在手機等各種電子產(chǎn)品上應(yīng)用非常廣泛。</p><p> C語言是一種面向過程編程,這就使得Jav
25、a具有重用的特性,在開發(fā)速度上比C語言更快,但是在運行速度上卻是C更快,因為C屬于底層語言,它比JAVA更加親近機器,所以在許多系統(tǒng)開發(fā)上一般是用C語言。 </p><p> C++多用于游戲引擎、反病毒、硬件驅(qū)動以及一些對運行效率要求比較高的應(yīng)用程序,比如數(shù)據(jù)庫管理系統(tǒng)。 C++語言在提供強大的功能的同時也提高了程序含BUG的可能性。 C++為了照顧大量的C語言使用者,而兼容了C,使得自身僅僅成為了帶類的C語
26、言,多多少少影響了其面向?qū)ο蟮膹氐仔浴?lt;/p><p><b> 1.6 本章小結(jié)</b></p><p> 本章主要介紹了網(wǎng)絡(luò)游戲在國內(nèi)外發(fā)展的現(xiàn)狀,現(xiàn)如今,網(wǎng)絡(luò)游戲市場的重新定位是最迫切需要解決的問題。本系統(tǒng)主要的現(xiàn)實意義,與其他游戲的區(qū)別和完善的一些功能。本文用Java語言、C語言、C++三種主流編程技術(shù)比較,闡述了使用Java語言編程的原因。</p&
27、gt;<p><b> 2 系統(tǒng)需求分析</b></p><p> 2.1 系統(tǒng)運行環(huán)境</p><p> 2.1.1 系統(tǒng)運行的軟件環(huán)境</p><p> (1)網(wǎng)絡(luò)服務(wù)器操作系統(tǒng):Windows XP或以上系統(tǒng);</p><p> (2)開發(fā)工具:eclipse3.2或以上;</p&g
28、t;<p> ?。?)運行環(huán)境:J2SDK 1.6以上;</p><p> ?。?)編程語言:Java語言;</p><p> 2.1.2 系統(tǒng)運行的硬件環(huán)境</p><p> ?。?)CPU:Intel或者兼容微處理器,奔騰166MHz及其以上;</p><p> ?。?)內(nèi)存:最低32MB,可以運行圖形界面的Java Ap
29、plication;最低48MB,可以運行Java Applet;內(nèi)存不足,將會導(dǎo)致系統(tǒng)(尤其是服務(wù)器)的性能大幅下降;</p><p> ?。?)硬盤:242 MB到80 GB及其以上;</p><p> (4)圖形顯示卡:無要求;</p><p> ?。?)網(wǎng)卡:普通網(wǎng)卡,3Com OfficeConnect 10/100兆位網(wǎng)卡;</p>&l
30、t;p><b> 2.2 相關(guān)理論</b></p><p> 2.2.1 關(guān)于Eclipse的介紹</p><p> Eclipse是一個主要針對Java項目開發(fā)所設(shè)計的(綜合性集成開發(fā)環(huán)境-Integrated Development Emironment,IDE),最早是由Object Technologics International這家公司開發(fā),
31、該公司于1996年被IBM并購后,將Eclipse改為Open Source software。它最大的特點是:采用了插件的結(jié)構(gòu),通過下載安裝不同的插件,就可以實現(xiàn)不同類型的程序開發(fā)。利用eclipse開發(fā)項目,是可以提高項目的開發(fā)效率,因為它不但可以像傳統(tǒng)的一些編輯器一樣編寫代碼,而且還有自動找錯/糾錯功能、Debug調(diào)試和代碼自動生成等一些重要的功能,這使項目開發(fā)的效率得到了提升。Eclipse可以作為其他開發(fā)工具的平臺。工作區(qū)被存
32、儲在磁盤上,并且對其他人是可見的。Eclipse3.2的大多數(shù)新特性都是Eclipse用戶需求的直接結(jié)果。</p><p> 2.2.2 J2SE框架</p><p> Java主要分三大類:第一是服務(wù)器端,這里就有了J2EE企業(yè)版;第二是桌面PC,這一類用的是J2SE標準版;第三就是掌上電腦、移動設(shè)備,用的都是J2ME。但是,大部分非企業(yè)級軟件還是在J2SE上開發(fā)的比較多。首先,這是
33、因為很多的應(yīng)用軟件都是在J2SE上開發(fā)的;其次,J2SE是和J2EE兼容的,企業(yè)版是在標準版上的擴充,在J2SE的版本上開發(fā)的軟件,拿到企業(yè)的平臺上是一樣可以運行的;再次,一般開發(fā)還是在J2SE的環(huán)境上,只是說J2ME提供微型版的一個環(huán)境。在J2SE上虛擬出一個環(huán)境,開發(fā)出來的應(yīng)用軟件是可以拿到微型版上運行的??缙脚_:J2SE是一個具有綜合性能的平臺,能使一個完整的、可縮放的高性能應(yīng)用配置在任何種類的平臺上。</p>&l
34、t;p><b> J2SE特點:</b></p><p> 支持Web服務(wù): J2SE對SSL、LDAP等業(yè)界標準技術(shù)也給予支持,因此保證了在不同平臺、系統(tǒng)和環(huán)境間的互操作能力。J2SE支持XML技術(shù)和一整套安全服務(wù),因此為基于各類標準的可互操作應(yīng)用與服務(wù)的創(chuàng)建奠定了重要基礎(chǔ)。有了J2SE與Java Web Services Developer Pack的結(jié)合,開發(fā)商就能創(chuàng)建、測試
35、和配置Web服務(wù)了。</p><p> 完整性:J2SE還是一個完整的開發(fā)環(huán)境。開發(fā)商可基于這一環(huán)境創(chuàng)建功能豐富的交互式應(yīng)用。這些應(yīng)用可以配置在任何平臺上。J2SE具有新的GUI控制功能、快速的Java 2DT圖形功能、支持國際化與本地化擴展和新的配置選項,并對Windows XP提供擴展支持。總之,J2SE是多種不同風格軟件的開發(fā)基礎(chǔ),包括客戶端Java小程序和應(yīng)用程序,以及獨立的服務(wù)器應(yīng)用程序等。J2SE版
36、還是J2ME的基礎(chǔ),是J2EE執(zhí)行程序的推動力。</p><p> 2.3 系統(tǒng)功能需求</p><p> 2.3.1 主界面人性化功能</p><p> (1)具有游戲歡迎界面</p><p><b> ?。?)游戲幫助文檔</b></p><p> (3)實現(xiàn)游戲單機/網(wǎng)絡(luò)的便捷選擇&
37、lt;/p><p> ?。?)具有服務(wù)器設(shè)置選項</p><p> 2.3.2 人機對戰(zhàn)模式功能</p><p> (1)能夠發(fā)射子彈打擊敵人</p><p><b> ?。?)敵人能夠移動</b></p><p><b> ?。?)能夠模擬爆炸</b></p>
38、<p><b> ?。?)能夠產(chǎn)生障礙</b></p><p><b> ?。?)能夠增長生命</b></p><p> ?。?)能夠使用超級子彈</p><p> 2.3.3 網(wǎng)絡(luò)對戰(zhàn)模式功能</p><p><b> ?。?)添加網(wǎng)絡(luò)功能</b></p&
39、gt;<p> ?。?)能夠自主分組并選擇角色</p><p> ?。?)能夠?qū)崿F(xiàn)本機服務(wù)器設(shè)置</p><p> 2.3.4 聯(lián)機通信機制</p><p> 網(wǎng)絡(luò)編程,簡單地理解就是兩臺計算機相互通信。其基本模型就是C/S模型,也就是通信雙方中的一方必須提供一個固定的位置,而另一方只需要知道這個固定的位置,并且建立兩者之間的聯(lián)系,然后完成數(shù)據(jù)交換
40、。這里提供固定位置的一方通常稱為服務(wù)器,而建立聯(lián)系的一方稱為客戶端。Socket(中文意思為插座),基于客戶機/服務(wù)器的Soctet通信模式如圖2.1所示:</p><p> 圖2.1 基于客戶機/服務(wù)器的Soctet通信模式圖</p><p> 當客戶程序需要與服務(wù)器程序通訊的時候,客戶程序在客戶機創(chuàng)建一個Socket對象,Socket類有幾個構(gòu)造函數(shù)。兩個常用的構(gòu)造函數(shù)是 Sock
41、et(InetAddress addr, int port) 和 Socket(String host, int port),兩個構(gòu)造函數(shù)都創(chuàng)建了一個基于Socket的連接服務(wù)器端流套接字的流套接字。兩個函數(shù)都通過參數(shù)port獲得服務(wù)器的端口號。假設(shè)已經(jīng)建立連接了,網(wǎng)絡(luò)API將在客戶端基于Socket的流套接字中捆綁客戶程序的IP地址和任意一個端口號,否則兩個函數(shù)都會拋出一個IOException對象。如果創(chuàng)建了一個Socket對象,那
42、么它可能通過調(diào)用Socket的 getInputStream()方法從服務(wù)程序獲得輸入流讀傳送來的信息,也可能通過調(diào)用Socket的 getOutputStream()方法獲得輸出流來發(fā)送消息。在讀寫活動完成之后,客戶程序調(diào)用close()方法關(guān)閉流和流套接字。</p><p> 2.3.5 Java圖形編程</p><p> Java中的Graphics類是用于繪圖和顯示格式化文本的
43、工具類。在Java程序中繪圖必須在一個窗口(容器)中進行,繪圖窗體經(jīng)常被設(shè)計為一個組件容器。一般首先在一個面板中進行繪制,然后再將這個面板添加到顯示窗口中去。</p><p> Graphics類是在Java.awt包中申明,顯示格式化文本和繪圖時通過調(diào)用Graphics類的draw()方法實現(xiàn)的,例如drawString(String),drawLine()等。繪圖采用的坐標系是原點在左上角,縱軸向下以像素為
44、單位的坐標系。</p><p><b> 2.4 本章小結(jié)</b></p><p> 在本章節(jié)中首先介紹了該系統(tǒng)的運行環(huán)境,值的注意的是軟件環(huán)境的配置,因為整個系統(tǒng)都是在虛擬環(huán)境下運行的,所以虛擬環(huán)境對于整個設(shè)計的調(diào)試和運行至關(guān)重要;其次對開發(fā)工具Eclipse3.2的簡單介紹,利用eclipse開發(fā)項目,是可以提高項目的開發(fā)效率。還有是對一些技術(shù)理論,J2SE框
45、架,Java語言,系統(tǒng)運行所支持的操作系統(tǒng),聯(lián)機通信機制及Java圖形編程等理論做了簡單的介紹,為本系統(tǒng)后期實現(xiàn)圖形化界面和網(wǎng)絡(luò)通信做了理論支持。</p><p><b> 3 系統(tǒng)概要設(shè)計</b></p><p><b> 3.1系統(tǒng)功能設(shè)計</b></p><p> 3.1.1 坦克大戰(zhàn)總體功能設(shè)計</p
46、><p> 坦克大戰(zhàn)游戲主要實現(xiàn)玩家參加游戲的整個流程,用戶登陸游戲客戶端選擇游戲模式,可分為單機模式和網(wǎng)絡(luò)對戰(zhàn)模式,選擇單機模式可以直接進入游戲狀態(tài);選擇網(wǎng)絡(luò)對戰(zhàn)模式,在啟動服務(wù)器后,玩家需要選擇自己的角色,用戶名和ID等玩家相關(guān)資料,成功后使用其賬號進行登錄游戲(只有成功登錄的玩家才能參與網(wǎng)絡(luò)對戰(zhàn)游戲功能);登陸玩家就可以通過控制鍵盤操作,加入對戰(zhàn)游戲。整個網(wǎng)絡(luò)版坦克大戰(zhàn)游戲流程圖如圖3.1所示:</p&
47、gt;<p> 圖3.1 網(wǎng)絡(luò)坦克大戰(zhàn)游戲流程</p><p> 3.1.2 TankClient類基本功能分析</p><p> TankClient類是整個系統(tǒng)的核心部分,它承擔整個系統(tǒng)的所有可實現(xiàn)功能的調(diào)度工作。 是整個游戲運行的場所。TankClient類設(shè)計流程圖如圖3.2所示:</p><p> 圖3.2 TankClient類
48、設(shè)計流程</p><p> TankClient類是主類,通過調(diào)用其他類中封裝的方法來使整個系統(tǒng)運行起來,下面顯示TankClient與各個類之間的關(guān)系如圖3.3所示:</p><p> 圖3.3 游戲系統(tǒng)類關(guān)聯(lián)圖</p><p> 3.1.3 Tank類基本功能分析</p><p> Tank(坦克)類中,封裝了一些變量屬性,包括
49、坦克自己的大小(WIDTH,HRIGHT),運動速度(SPRRD_X:在x軸方向的速度;SPEED_Y:在Y軸方向的速度)、生命值控制(life)、坦克編號(id)、坦克名(name)、方向控制(dir)、生死控制(live)、好壞控制(good)的變量等。Tank類中沒有main函數(shù),不是主類,它當中只封裝一些變量屬性和靜態(tài)方法,被TankClient類調(diào)用來實現(xiàn)坦克的一系列動作。Tank類中的主要方法羅列如下:</p>
50、<p> ?。?)getRect()方法</p><p> public Rectangle getRect() {</p><p> return new Rectangle(x, y, this.WIDTH, this.HEIGHT);</p><p><b> }</b></p><p> Re
51、ctangle類是碰撞檢測的輔助類,通過得到子彈的x,y坐標和寬高度,檢測兩個矩形是否碰撞(相交);</p><p> ?。?)draw()方法:負責將所有的活動在屏幕上畫出來;</p><p> ?。?)move()方法:主要負責控制坦克的移動,包括8個方向(左,左上,上,右上,右,右下,下,左下)的控制以及給坦克一個移動的速度;</p><p> ?。?)key
52、Pressed()方法:設(shè)定使用鍵盤的“↑”“↓”“←”“→”鍵控制坦克移動;</p><p> ?。?)keyReleased()方法:處理按鍵抬起事件,抬起“CTRL”鍵時,發(fā)射炮彈并加入新炮彈,能夠逐一發(fā)射每一發(fā)炮彈、抬起“A”鍵可以發(fā)射超級炮彈等功能;</p><p> (6)locationDirection()方法:定義了炮筒方向,可以向八個方向發(fā)射炮彈;</p>
53、<p> (7)fire()方法:處理發(fā)送子彈的方法;</p><p> ?。?)bumpWithWall()方法:主要負責處理坦克撞墻事件;</p><p> (9)bumpWithTank()方法:主要到負責處理坦克和坦克相撞事件;</p><p> 3.1.4 Missile類基本功能分析</p><p> Mis
54、slile(子彈)類和Tank類一樣,只封裝一些變量屬性和靜態(tài)方法,主要變量包括:子彈自己的大?。╓IDTH,HRIGHT),運動速度(SPRRD_X:在x軸方向的速度;SPEED_Y:在Y軸方向的速度)、子彈標示(ID)、所屬坦克的id號(TankId用于網(wǎng)絡(luò)版)等。Misslie類持有一個TankClient類(大管家)的引用tc,TankClient類要執(zhí)行發(fā)射炮彈操作時調(diào)用Missile類中的方法。Misslie類中的主要方法如
55、下:</p><p> draw()方法:負責畫出子彈的所有活動;</p><p> move()方法:先判斷方向再移動,并給它一定的移動速度;</p><p> getRect()方法:負責取得子彈的外切方形,為碰撞檢測做準備;</p><p> hitTan()方法:檢測子彈是否撞到坦克,若撞到返回true,否則返回false;&
56、lt;/p><p> hitTanks()方法:檢測是否撞到一系列坦克中的一個;</p><p> hitWall()方法:檢測子彈和墻是否相撞。</p><p> 3.1.5 Explode類基本功能分析</p><p> Explode(爆炸)類也是一個只封裝自己的變量和方法的外部包裝類,沒有main方法,供TankClient主類需
57、要時調(diào)用它的draw()方法,當子彈擊中坦克時需要產(chǎn)生爆炸。使用11張圖片重疊現(xiàn)實爆炸效果如3.4圖所示:</p><p><b> 圖3.4 爆炸圖</b></p><p> 3.1.6 服務(wù)器類基本功能分析</p><p> TankServer(服務(wù)器)類主要負責在網(wǎng)絡(luò)對戰(zhàn)游戲時維護各個在線玩家的基本信息,并動態(tài)的維護玩家列表。聯(lián)
58、機模式下類關(guān)系圖如圖3.5所示:</p><p> 3.5 聯(lián)機模式類關(guān)聯(lián)圖</p><p> 3.1.7 信息傳送類基本功能分析</p><p> 信息傳送類就是用來封裝客戶端和服務(wù)器端的交互信息。將網(wǎng)絡(luò)中傳遞的眾多信息封裝成可序列化的類,將會使程序有很好的可擴展性。</p><p><b> 3.2 本章小結(jié)</
59、b></p><p> 本章首先對整個游戲設(shè)計進行了可行性分析,其次對游戲要達到怎么樣的需求,要實現(xiàn)哪些功能做以及實現(xiàn)這些功能設(shè)計到的類,最后再詳細的介紹了系統(tǒng)要實現(xiàn)這些功能所涉及到的各個類之間的關(guān)系</p><p><b> 4 系統(tǒng)詳細設(shè)計</b></p><p> 4.1 游戲主窗體實現(xiàn)</p><p>
60、; TankClient類負責畫出游戲主窗體,它是整個游戲運行和所有活動的場所。登陸主窗口后,主界面上包括單機個人、網(wǎng)絡(luò)對戰(zhàn)、小小幫助、啟動服務(wù)器選項 ,根據(jù)用戶意愿選擇游戲類型,“幫助”下拉菜單條中有游戲說明和游戲操作,方便用戶了解游戲規(guī)則。</p><p> 除此之外,本設(shè)計優(yōu)點是TankClient類還封裝了一個update()方法,使用雙緩沖消除閃爍現(xiàn)象。因為刷新重畫頻率太快,paint()方法還沒有
61、完成,會造成逐條顯示,影響系統(tǒng)的運行,所以解決辦法是創(chuàng)建一個虛擬屏幕,在屏幕的后面,在要畫的將所有的東西畫在虛擬屏幕上,也就是內(nèi)存上,畫完之后一次性將虛擬屏幕上的內(nèi)容貼到屏幕上,這樣就消除了閃爍現(xiàn)象,用戶的眼睛便感覺不到閃爍了。 </p><p> TankClient類是整個系統(tǒng)的“大管家”,當要執(zhí)行某動作時,“大管家”只需要調(diào)用各個類中封裝好的方法,讓被調(diào)用的類自己去執(zhí)行它自己的方法,這更體現(xiàn)了面向
62、對象的思想。游戲主窗體界面如圖4.1所示:</p><p> 圖4.1 游戲主窗口預(yù)覽效果圖</p><p><b> 游戲幫助文檔設(shè)計:</b></p><p> 圖4.2 游戲幫助文檔</p><p> 4.2 單機游戲的實現(xiàn)</p><p> 游戲運行主界面,在下拉菜單中選擇單機游
63、戲進入單人模式,通過鍵盤控制坦克運動,相互對戰(zhàn),當被打中時產(chǎn)生一個爆炸,屏幕左上方顯示游戲信息:子彈數(shù)目(出界就死亡)、爆炸數(shù)目、敵方坦克數(shù)目、玩家坦克生命值。其效果圖如圖4.2所示:</p><p> 圖4.3 單機游戲模式主界面圖</p><p> 實現(xiàn)虛擬屏幕消除閃爍的關(guān)鍵代碼如下:</p><p> public void update(Graphi
64、cs g) {//利用雙緩沖消除閃爍的效果</p><p> if(offScreenImage == null) {</p><p> offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);</p><p><b> }</b></p><p>
65、Graphics gOffScreen = offScreenImage.getGraphics();</p><p> Color c = gOffScreen.getColor();</p><p> gOffScreen.setColor(Color.BLACK);</p><p> gOffScreen.fillRect(0, 0, GAME_WIDT
66、H, GAME_HEIGHT);</p><p> gOffScreen.setColor(c);</p><p> paint(gOffScreen);</p><p> g.drawImage(offScreenImage,0,0,null);</p><p><b> }</b></p>&l
67、t;p><b> 坦克圖片技術(shù):</b></p><p> private static Toolkit tk = Toolkit.getDefaultToolkit();</p><p> private static Image[] tankImages = null;</p><p> private static Map&
68、lt;String, Image> imgs = new HashMap<String, Image>();//定義HashMap,又來盛裝坦克的游戲用圖,8個方向</p><p><b> static {</b></p><p> tankImages = new Image[] {</p><p> tk.getI
69、mage(Tank.class.getClassLoader().getResource("images/tankL.gif")),//指定坦克游戲用圖的文件目錄</p><p> tk.getImage(Tank.class.getClassLoader().getResource("images/tankLU.gif")),//本項目中坦克圖片存放于項目文件之下的im
70、ages包中</p><p> tk.getImage(Tank.class.getClassLoader().getResource("images/tankU.gif")),</p><p> tk.getImage(Tank.class.getClassLoader().getResource("images/tankRU.gif")),&
71、lt;/p><p> tk.getImage(Tank.class.getClassLoader().getResource("images/tankR.gif")),</p><p> tk.getImage(Tank.class.getClassLoader().getResource("images/tankRD.gif")),</p&g
72、t;<p> tk.getImage(Tank.class.getClassLoader().getResource("images/tankD.gif")),</p><p> tk.getImage(Tank.class.getClassLoader().getResource("images/tankLD.gif"))</p><
73、p><b> };</b></p><p> imgs.put("L", tankImages[0]);</p><p> imgs.put("LU", tankImages[1]);</p><p> imgs.put("U", tankImages[2]);</
74、p><p> imgs.put("RU", tankImages[3]);</p><p> imgs.put("R", tankImages[4]);</p><p> imgs.put("RD", tankImages[5]);</p><p> imgs.put("
75、;D", tankImages[6]);</p><p> imgs.put("LD", tankImages[7]);</p><p><b> }</b></p><p> 玩家可以使用超級炮彈,可同時向八個方向發(fā)射炮彈,效果如圖4.3所示:</p><p> 圖4.4 發(fā)射超級
76、炮彈</p><p><b> 坦克圖片調(diào)用:</b></p><p> switch(ptDir) {//游戲進行時,根據(jù)方向調(diào)用相應(yīng)的坦克圖片</p><p><b> case L:</b></p><p> g.drawImage(imgs.get("L"), x
77、, y, null);</p><p><b> break;</b></p><p><b> case LU:</b></p><p> g.drawImage(imgs.get("LU"), x, y, null);</p><p><b> break;
78、</b></p><p><b> case U:</b></p><p> g.drawImage(imgs.get("U"), x, y, null);</p><p><b> break;</b></p><p><b> case RU:&
79、lt;/b></p><p> g.drawImage(imgs.get("RU"), x, y, null);</p><p><b> break;</b></p><p><b> case R:</b></p><p> g.drawImage(imgs.g
80、et("R"), x, y, null);</p><p><b> break;</b></p><p><b> case RD:</b></p><p> g.drawImage(imgs.get("RD"), x, y, null);</p><p&
81、gt;<b> break;</b></p><p><b> case D:</b></p><p> g.drawImage(imgs.get("D"), x, y, null);</p><p><b> break;</b></p><p>
82、<b> case LD:</b></p><p> g.drawImage(imgs.get("LD"), x, y, null);</p><p><b> break;</b></p><p><b> }</b></p><p><b&
83、gt; move();</b></p><p><b> }</b></p><p> 4.3 聯(lián)機功能實現(xiàn)</p><p> 在本系統(tǒng)的實現(xiàn)過程中,在支持網(wǎng)絡(luò)對戰(zhàn)的服務(wù)器類的定義中需要使用ServerSocket類來響應(yīng)多個客戶端連接請求,server服務(wù)器上需要兩大協(xié)議,一個是TCP,用來接收客戶端;另一個是UDP,用來
84、轉(zhuǎn)發(fā)游戲的數(shù)據(jù)。Server類</p><p> 系統(tǒng)模型圖如圖4.5所示:</p><p> 圖4.5 Server類系統(tǒng)簡單模型圖</p><p> 網(wǎng)絡(luò)游戲模式下,游戲主要在客戶端運行,啟動客戶端時玩家首先要填寫信息之后才能加入到游戲中去,先啟動服務(wù)器,紅色小方塊表示確定服務(wù)器已連接。如圖4.6所示:</p><p> 圖4.
85、6 服務(wù)器主機想啟動服務(wù)</p><p> 圖4.7 服務(wù)器啟動成功</p><p> 進入網(wǎng)絡(luò)模式,輸入信息:IP、Port,若是客戶端玩家,需要填入主機IP,和Port;主機服務(wù)器只需填寫UDP Port。游戲主界面圖如圖4.7所示:</p><p> 圖4.8 網(wǎng)絡(luò)版游戲玩家信息欄</p><p> 圖4.9 多個玩家連入&
86、lt;/p><p> 填寫好玩家信息,登陸后游戲主界面,進入游戲后,通過玩家坦克上方的ID號(單雙數(shù))和顏色(藍\紅)來區(qū)分敵友。游戲界面左上角顯示游戲的基本信息,戰(zhàn)坦克數(shù)等,如圖4.8所示:</p><p> 圖4.10 登陸網(wǎng)絡(luò)模式主界面</p><p> 圖中模擬多個客戶端進行游戲時各客戶端的實時運行情況,如圖4.9所示:</p><p&
87、gt; 圖4.11 網(wǎng)絡(luò)版游戲?qū)?zhàn)實時顯示圖</p><p> 4.4 網(wǎng)絡(luò)模式主要代碼</p><p> 網(wǎng)絡(luò)模式設(shè)計主要代碼如下:</p><p> TankServer(服務(wù)器)類代碼片段如下:</p><p> import java.io.DataInputStream;</p><p> imp
88、ort java.io.DataOutputStream;</p><p> import java.io.IOException;</p><p> import java.net.DatagramPacket;</p><p> import java.net.DatagramSocket;</p><p> import jav
89、a.net.InetSocketAddress;</p><p> import java.net.ServerSocket;</p><p> import java.net.Socket;</p><p> import java.net.SocketException;</p><p> import java.util.Arr
90、ayList;</p><p> import java.util.List;</p><p><b> /**</b></p><p> * 坦克游戲的服務(wù)器</p><p> * @author mashibing</p><p><b> *</b></
91、p><p><b> */</b></p><p> public class TankServer {</p><p> private static int ID = 100;</p><p><b> /**</b></p><p> * TCP的監(jiān)聽端口<
92、/p><p><b> */</b></p><p> public static final int TCP_PORT = 8888; //TCP的監(jiān)聽端口</p><p><b> /**</b></p><p> * UDP的監(jiān)聽端口</p><p><b&
93、gt; */</b></p><p> public static final int UDP_PORT = 6666; //UDP的監(jiān)聽端口</p><p> List<Client> clients = new ArrayList<Client>();</p><p><b> /**</b>&l
94、t;/p><p><b> * 啟動服務(wù)器</b></p><p><b> *</b></p><p><b> */</b></p><p> public void start() {</p><p> new Thread(new UDPT
95、hread()).start();</p><p> ServerSocket ss = null;</p><p><b> try {</b></p><p> ss = new ServerSocket(TCP_PORT);</p><p> } catch (IOException e) {</p&
96、gt;<p> e.printStackTrace();</p><p><b> }</b></p><p> while (true) { //鏈接TCP</p><p> Socket s = null;</p><p><b> try {</b></p>
97、<p> s = ss.accept();</p><p> DataInputStream dis= new DataInputStream(s.getInputStream());</p><p> String IP = s.getInetAddress().getHostAddress();</p><p> int udpPort =
98、 dis.readInt();</p><p> Client c = new Client(IP, udpPort);</p><p> clients.add(c);</p><p> DataOutputStream dos=new DataOutputStream(s.getOutputStream());</p><p>
99、dos.writeInt(ID++);</p><p> // s.close();</p><p> System.out.println("A Client Connect! Addr- "</p><p> + s.getInetAddress() + ":" + s.getPort()</p>&l
100、t;p> + "----UDP Port:" + udpPort);</p><p> } catch (IOException e) {</p><p> e.printStackTrace();</p><p> } finally {</p><p> if (s != null) {</p&g
101、t;<p><b> try {</b></p><p> s.close();</p><p><b> s = null;</b></p><p> } catch (IOException e) {</p><p> e.printStackTrace();</p
102、><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
103、<p> public static void main(String[] args) {</p><p> new TankServer().start();</p><p><b> }</b></p><p> private class Client {</p><p> String IP
104、;</p><p> int udpPort;</p><p> public Client(String IP, int udpPort) {</p><p> this.IP = IP;</p><p> this.udpPort = udpPort;</p><p><b> }</b&
105、gt;</p><p><b> }</b></p><p> private class UDPThread implements Runnable {//建立一個UDP的接受和轉(zhuǎn)發(fā)線程</p><p> byte[] buf = new byte[1024];</p><p> public void run
106、() {</p><p> DatagramSocket ds = null;</p><p><b> try {</b></p><p> ds = new DatagramSocket(UDP_PORT);</p><p> } catch (SocketException e) {</p>
107、<p> e.printStackTrace();</p><p><b> }</b></p><p> System.out.println("UDP thread started at port :" + UDP_PORT);</p><p> while (ds != null) {</p&g
108、t;<p> DatagramPacket dp = new DatagramPacket(buf, buf.length);</p><p><b> try {</b></p><p> ds.receive(dp); //接受數(shù)據(jù)包</p><p> for (int i = 0; i < clients.si
109、ze(); i++) {//分別轉(zhuǎn)發(fā)給其他客戶端</p><p> Client c = clients.get(i);</p><p> dp.setSocketAddress(new InetSocketAddress(c.IP,</p><p> c.udpPort)); //得到將要轉(zhuǎn)發(fā)的客戶端的IP地址和端口</p><p>
110、 ds.send(dp);</p><p><b> }</b></p><p> System.out.println("a packet received!");</p><p> } catch (IOException e) {</p><p> e.printStackTrace(
111、);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b><
112、;/p><p><b> 4.5 本章小結(jié)</b></p><p> 本章主要介紹了該系統(tǒng)的實現(xiàn)和運行,分別敘述了在單機模式和網(wǎng)絡(luò)對戰(zhàn)模式下游戲的運行和調(diào)試過程。在單機模式下,玩家的游戲發(fā)射火力要比電腦隨機產(chǎn)生的坦克能力稍強一些,當分數(shù)值達到一定時,玩家可以發(fā)射超級炮彈。網(wǎng)絡(luò)模式下,注意一定要先啟動服務(wù)器,只有啟動服務(wù)器后,各個玩家才能加入游戲。到此為止,本設(shè)計基本完
113、成預(yù)期效果。</p><p><b> 5 結(jié)論</b></p><p> 5.1 課程設(shè)計總結(jié)</p><p> 本次課程設(shè)計選擇了Eclipse,它自動找錯/糾錯功能、Debug調(diào)試和代碼自動生成等一些重要的功能大大提高了設(shè)計效率。同時將自學(xué)額網(wǎng)絡(luò)編程運用到實際項目變成當中,并對圖形用戶界面的程序設(shè)計有了更為深刻的認識。</
114、p><p> 5.2 本程序需解決的有關(guān)技術(shù)問題</p><p> 游戲程序是一項精度要求很高的程序系統(tǒng),因為其代碼利用率很高。一個實時運行的最終作品,每秒都會運行成千上萬行程序,繪圖事件、鍵盤事件都會以極高的頻率在后臺等待響應(yīng),若有絲毫的差別都將很容易導(dǎo)致程序在運行不久后可能出現(xiàn)嚴重錯誤,甚至死循環(huán)。因此,其邏輯設(shè)計應(yīng)當相當嚴謹,需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計中。</p
115、><p> 己方坦克的運行可以通過鍵盤響應(yīng)事件控制,但敵方則因為是自動運行,就需要有一定其一定的智能性;同時,出現(xiàn)在屏幕上的敵方可能會有較多的數(shù)量,這需要為每個敵方開辟一個線程以便能讓其獨立運行。Java的多線程能力為實現(xiàn)這樣的游戲提供了可能。敵人坦克的運行算法也需要進行適當?shù)脑O(shè)置,以免游戲過于簡單,單調(diào)。</p><p> 對于雙方坦克發(fā)出的子彈的控制也需要對其跟蹤控制,子彈也需要處在獨
116、立的線程中。敵方子彈僅需要掃描用戶坦克,而用戶坦克需要在每一步掃描所有的敵方坦克。這需要對所有的對象有較好的控制。另外,子彈在運行過程中也需要實時掃描是否碰撞到了相關(guān)障礙物或屏幕邊界。如此過多的線程同時在本來效率就不高的KVM虛擬機上運行,也許會導(dǎo)致程序的緩慢。</p><p> 雙方的坦克在前進時也需要考慮到是否碰撞到相關(guān)物體或?qū)Ψ教箍?,以免重疊運行,造成許多物理上不可能的情況,缺乏真實感。每一次刷新頁面、每
117、前進一步都需要將所有的周圍環(huán)境都進行掃描。</p><p> 游戲的結(jié)束、開始、動態(tài)信息畫面作為構(gòu)成一個完美程序都是必不可少的重要部分。良好的用戶界面更是吸引用戶的硬指標,相關(guān)的美術(shù)構(gòu)圖也需要有一定的考慮。</p><p> 游戲的地圖不可能通過繪圖來解決。否則,不僅難于控制和處理過多的元素,也會因過多的大型圖片而不能限制程序的大小,失去手機上程序的原則和Java的優(yōu)勢。同時,地圖關(guān)卡
118、不宜保存在手機有限的內(nèi)存中,而最好采取外部文件的讀入讀出方法。</p><p> 用戶運行游戲時需要有分數(shù)記錄的可能。如何采用合理的記分標準,需要進行適當?shù)脑O(shè)計。記錄分數(shù)的存儲方式也需要有較好的解決方案。手機中由于處理器和內(nèi)存空間、存儲空間都十分有限,其數(shù)據(jù)庫系統(tǒng)與普通PC大相徑庭。其數(shù)據(jù)庫結(jié)構(gòu)較為簡單,被稱之為RMS系統(tǒng)。</p><p> Java是基于虛擬機的半解釋型編譯系統(tǒng),其
119、執(zhí)行效率較C++等完全編譯后的程序會低很多,程序如果不進行精簡和優(yōu)化,將可能導(dǎo)致運行的不流暢。除開發(fā)過程中對結(jié)構(gòu)上的控制、變量的使用、算法的優(yōu)化等優(yōu)化外,還可以使用混淆器(Obfuscator)進行程序打包后的優(yōu)化。</p><p><b> 5.3 展望</b></p><p> 本系統(tǒng)基本實現(xiàn)了坦克游戲所應(yīng)有的基本功能,在大學(xué)中最后一次專攻式的學(xué)習(xí)了Java語
120、言,使我對Java語言有了更深層次的理解,通過該游戲設(shè)計,提高了我的編程能力,也讓我養(yǎng)成了良好的編程習(xí)慣。希望在今后自己能繼續(xù)對J2SE等技術(shù)進行深入的學(xué)習(xí)和研究。</p><p><b> 參 考 文 獻</b></p><p> [1]蔡昭權(quán). 利用Socket實現(xiàn)多線程通信程序[J].2004,(06)</p><p> [2]仲宇
121、, 顧國昌 , 張汝波. 應(yīng)用TCP/IP網(wǎng)關(guān)實現(xiàn)數(shù)據(jù)遠程傳輸[J]. 2001,(12)</p><p> [3] 姜志強編著. Java語言程序設(shè)計 [M].北京:電子工業(yè)出版社,2007</p><p> [4] 侯俊杰編著. Java語言應(yīng)用開發(fā)基礎(chǔ) [M].</p><p> [5] 孫更新編著. Java畢業(yè)設(shè)計指南與項目實踐 [M]. 北京:科技
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計----基于java的坦克大戰(zhàn)
- 基于java坦克大戰(zhàn)課程設(shè)計
- 坦克大戰(zhàn)--java課程設(shè)計
- java坦克大戰(zhàn)課程設(shè)計報告
- java坦克大戰(zhàn)課程設(shè)計報告
- java坦克大戰(zhàn)課程設(shè)計報告
- java坦克大戰(zhàn)課程設(shè)計報告.doc
- java語言程序課程設(shè)計-- 坦克大戰(zhàn)
- java關(guān)于坦克大戰(zhàn)的課程設(shè)計報告
- java課程設(shè)計坦克大戰(zhàn)游戲(含代碼)
- 基于java語言的坦克大戰(zhàn)
- 基于java的游戲坦克大戰(zhàn)
- java版坦克大戰(zhàn)
- 基于java語言的坦克大戰(zhàn)
- 基于java的坦克大戰(zhàn)游戲開發(fā)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-- 坦克大戰(zhàn)游戲設(shè)計(java版)
- 基于java的坦克大戰(zhàn)軟件程序設(shè)計
- java坦克大戰(zhàn)畢業(yè)設(shè)計論文
- 基于java的坦克大戰(zhàn)設(shè)計與實現(xiàn)代碼
- 基于java的坦克大戰(zhàn)游戲的設(shè)計與實現(xiàn)
評論
0/150
提交評論