版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科生畢業(yè)論文(設(shè)計(jì))</p><p> 論 文 題 目:基于Java的網(wǎng)絡(luò)版坦克大戰(zhàn)游戲設(shè)計(jì)</p><p> 基于Java的網(wǎng)絡(luò)版坦克大戰(zhàn)游戲設(shè)計(jì)</p><p> 摘 要:本設(shè)計(jì)采用面向?qū)ο蟮脑O(shè)計(jì)模式,對(duì)游戲中的所有物體賦予對(duì)象的概念和屬性。運(yùn)行程序后允許用戶選擇執(zhí)行選項(xiàng)菜單。在開(kāi)始游戲后,啟動(dòng)服務(wù)器和客戶端,對(duì)背景的所有物體
2、進(jìn)行繪圖。在主程序運(yùn)行的線程中,畫面刷新將以一定的頻率采用雙緩沖技術(shù)對(duì)屏幕重繪,實(shí)時(shí)反映整個(gè)游戲的進(jìn)行狀態(tài)。用戶控制的坦克運(yùn)行在主線程中,隨屏幕刷新的頻率而移動(dòng)。坦克將在游戲開(kāi)始時(shí)進(jìn)行初始化,然后將坦克繪制在地圖的上層。本設(shè)計(jì)主要實(shí)現(xiàn)的功能是讓坦克移動(dòng)并能夠智能的打出炮彈,躲避子彈,炸毀對(duì)方坦克。能夠支持網(wǎng)絡(luò)對(duì)戰(zhàn)和單機(jī)對(duì)戰(zhàn)兩種模式。</p><p> 關(guān)鍵詞:面向?qū)ο螅惶箍舜髴?zhàn);網(wǎng)絡(luò)游戲;Java;Socket
3、 類</p><p> 中圖分類號(hào):TP311.1</p><p><b> 目錄</b></p><p><b> 摘要</b></p><p><b> 第1章 前言1</b></p><p> 1.1 游戲設(shè)計(jì)的需求分析1<
4、;/p><p> 1.1.1 國(guó)內(nèi)外電子網(wǎng)絡(luò)游戲的現(xiàn)狀1</p><p> 1.1.2 本系統(tǒng)的現(xiàn)實(shí)意義1</p><p> 1.1.3 本系統(tǒng)和其他開(kāi)發(fā)游戲區(qū)別2</p><p> 1.2 開(kāi)發(fā)技術(shù)概述2</p><p> 1.2.1 Java、C語(yǔ)言、C++三種主流編程技術(shù)比較2</
5、p><p> 1.3 本章小結(jié)2</p><p> 第2章 相關(guān)技術(shù)理論3</p><p> 2.1 系統(tǒng)運(yùn)行環(huán)境3</p><p> 2.1.1 系統(tǒng)運(yùn)行的軟件環(huán)境3</p><p> 2.1.2 系統(tǒng)運(yùn)行的硬件環(huán)境3</p><p> 2.2 相關(guān)理論3</
6、p><p> 2.2.1 關(guān)于Eclipse的介紹3</p><p> 2.2.2 J2SE框架3</p><p> 2.2.3 聯(lián)機(jī)通信機(jī)制4</p><p> 2.2.4 Java圖形編程5</p><p> 2.3 本章小結(jié)5</p><p> 第3章 系統(tǒng)設(shè)計(jì)
7、6</p><p> 3.1 系統(tǒng)可行性分析6</p><p> 3.1.1 技術(shù)可行性6</p><p> 3.1.2 經(jīng)濟(jì)可行性6</p><p> 3.1.3 操作可行性6</p><p> 3.2 系統(tǒng)需求分析6</p><p> 3.2.1 在人機(jī)對(duì)戰(zhàn)模式下實(shí)現(xiàn)
8、的功能6</p><p> 3.2.2 在網(wǎng)絡(luò)對(duì)戰(zhàn)模式下實(shí)現(xiàn)的功能6</p><p> 3.3 系統(tǒng)功能設(shè)計(jì)7</p><p> 3.3.1 坦克大戰(zhàn)總體功能設(shè)計(jì)7</p><p> 3.3.2 TankClient類基本功能分析7</p><p> 3.3.3 Tank類基本功能分析8&l
9、t;/p><p> 3.3.4 Missile類基本功能分析9</p><p> 3.3.5 Explode類基本功能分析9</p><p> 3.3.6 服務(wù)器類基本功能分析10</p><p> 3.3.7 信息傳送類基本功能分析10</p><p> 3.4 本章小結(jié)10</p>
10、<p> 第4章 系統(tǒng)實(shí)現(xiàn)11</p><p> 4.1 游戲主窗體實(shí)現(xiàn)11</p><p> 4.2 單機(jī)游戲的實(shí)現(xiàn)12</p><p> 4.3 聯(lián)機(jī)功能實(shí)現(xiàn)14</p><p> 4.4 本章小結(jié)17</p><p> 第5章 總結(jié)與展望18</p>&
11、lt;p> 5.1 總結(jié)18</p><p> 5.2 設(shè)計(jì)中的不足之處18</p><p> 5.3 展望18</p><p><b> 致 謝19</b></p><p><b> 參考文獻(xiàn)20</b></p><p><b>
12、 第1章 前言</b></p><p> 人類進(jìn)入21世紀(jì),全球一體化,互聯(lián)網(wǎng)就起到重要的作用,而且隨著互聯(lián)網(wǎng)的不斷發(fā)展,信息技術(shù)逐漸發(fā)展壯大,將成為網(wǎng)絡(luò)經(jīng)濟(jì)的核心。其中計(jì)算機(jī)、網(wǎng)絡(luò)通信的發(fā)展最為迅速。在現(xiàn)今電子信息高速發(fā)展的時(shí)代,網(wǎng)絡(luò)游戲已經(jīng)深入到人們的日常生活中,成為老少皆宜的娛樂(lè)方式。</p><p> 1.1 游戲設(shè)計(jì)的需求分析</p><p
13、> 1.1.1 國(guó)內(nèi)外電子網(wǎng)絡(luò)游戲的現(xiàn)狀</p><p> 游戲本身就是一種娛樂(lè)方式。自有人類文明的時(shí)候,就有了游戲,可以說(shuō)游戲就是人們生活?yuàn)蕵?lè)的一部分。在今天,借助于數(shù)字、電子、網(wǎng)絡(luò)、創(chuàng)意、編劇、美工、音樂(lè)……等等“先進(jìn)”的道具,網(wǎng)絡(luò)游戲?qū)τ谌藗儸F(xiàn)實(shí)生活的虛擬達(dá)到了一個(gè)全新的境界,并且則在這新的境界上還原了游戲的本源--人與人的互動(dòng)。網(wǎng)絡(luò)游戲滿足了現(xiàn)代社會(huì)必須的溝通需求,無(wú)疑它應(yīng)該是適合所有人的。&
14、lt;/p><p> 國(guó)內(nèi)網(wǎng)絡(luò)游戲市場(chǎng),已經(jīng)坐擁了1000萬(wàn)用戶且仍不斷增長(zhǎng)的游戲玩家市場(chǎng),百余款游戲也著實(shí)熱鬧,但也體現(xiàn)出國(guó)內(nèi)玩家的相對(duì)固定和游戲種類的相對(duì)單一,雖說(shuō)運(yùn)營(yíng)商的推廣手法也各具特點(diǎn),可本質(zhì)上的大同小異使得競(jìng)爭(zhēng)空前慘烈,而由此誘發(fā)的種種問(wèn)題更是招致了社會(huì)與媒體的不滿,阻礙了游戲產(chǎn)業(yè)的發(fā)展。網(wǎng)絡(luò)游戲市場(chǎng)的重新定位是最迫切需要解決的問(wèn)題。大型游戲機(jī)除了在大眾休閑娛樂(lè)方面,還在軍事、國(guó)防、醫(yī)療等方面有良好的發(fā)
15、展前景。廣州大型游戲機(jī)所采用的尖端計(jì)算機(jī)圖形圖像技術(shù)、多樣化的軟件程序設(shè)計(jì)、成熟的機(jī)械和電子技術(shù),被充分運(yùn)用在軍事、國(guó)防及醫(yī)療等方面。例如,在軍事模擬對(duì)抗演習(xí)中,大型游戲機(jī)既可以模擬作戰(zhàn)現(xiàn)場(chǎng)的地形、軍力部署、天氣等情況,還可以進(jìn)行多兵種戰(zhàn)術(shù)技能對(duì)抗訓(xùn)練;在國(guó)防訓(xùn)練方面,大型游戲機(jī)可以模擬坦克操縱、導(dǎo)彈發(fā)射、飛機(jī)駕駛、艦艇巡航等多種訓(xùn)練任務(wù);在醫(yī)療培訓(xùn)方面,大型游戲機(jī)擁有的全息三維立體投影技術(shù),可以逼真地展示人體的各部分構(gòu)造和器官,以上這
16、些方面的應(yīng)用,都顯示出大型游戲機(jī)在降低行業(yè)技能培訓(xùn)成本的優(yōu)勢(shì)。</p><p> 1.1.2 本系統(tǒng)的現(xiàn)實(shí)意義</p><p> 游戲本身是一種娛樂(lè)方式,能帶給人們無(wú)盡的樂(lè)趣,而且游戲行業(yè)的發(fā)展還將會(huì)帶動(dòng)眾多周邊產(chǎn)業(yè),如五金、塑料、機(jī)械、電子、 顯像管,高端機(jī)型甚至使用了40英寸以上的大屏幕背投、液晶顯示器等,這些顯像設(shè)備不但要依賴國(guó)內(nèi)眾多顯像管生產(chǎn)企業(yè)提供支持,更要針對(duì)游戲的內(nèi)容進(jìn)
17、行深入開(kāi)發(fā)和優(yōu)化,以適應(yīng)游戲內(nèi)容的飛速發(fā)展和變化,大大突破了傳統(tǒng)家電類顯像設(shè)備的限制,對(duì)國(guó)內(nèi)顯像管制造企業(yè)的發(fā)展、創(chuàng)新具有極大的推動(dòng)作用,大型游戲機(jī)的外部框體制造涉及工業(yè)設(shè)計(jì)、模具加工、五金加工、塑料成形、特殊印刷等工藝流程,由此帶動(dòng)了一大批相關(guān)的零部件生產(chǎn)制造企業(yè),而這些企業(yè)均為生產(chǎn)密集型企業(yè),大幅度增加了勞動(dòng)就業(yè)的需求。</p><p> 1.1.3 本系統(tǒng)和其他開(kāi)發(fā)游戲區(qū)別</p><
18、;p> 本系統(tǒng)的坦克大戰(zhàn)是基于Java語(yǔ)言設(shè)計(jì)開(kāi)發(fā)的,具有高超的人工智能,精美的圖形處理,支持單機(jī)運(yùn)行和網(wǎng)絡(luò)對(duì)戰(zhàn)的坦克射擊游戲。比之前網(wǎng)絡(luò)上實(shí)現(xiàn)的游戲更加方便,快捷,智能。游戲基本玩法較簡(jiǎn)單,游戲可一人電腦作戰(zhàn),每次電腦方有坦克10輛,游戲以消滅全部敵方坦克過(guò)關(guān)為目的。在這過(guò)程中,坦克有機(jī)會(huì)得到血塊來(lái)添加生命值,從而變得更加強(qiáng)大,也能利用各種有利地形來(lái)阻擊敵人。游戲設(shè)置了墻面,電腦方坦克不能穿越墻面射擊玩家坦克,而玩家坦克可隨意
19、穿越墻面打擊電腦方坦克,這一游戲特權(quán)。還有給玩家坦克設(shè)置超級(jí)炮彈,當(dāng)電腦方坦克數(shù)量過(guò)多時(shí),玩家坦克可以發(fā)射超級(jí)炮彈打擊敵方。主要新增的功能簡(jiǎn)單羅列如下:</p><p> 1、屏幕左上方顯示游戲狀態(tài),當(dāng)玩家方坦克數(shù)全為零時(shí)則游戲結(jié)束;</p><p> 2、一般坦克只可在空地中或草叢中行走,不可通過(guò)墻面等障礙物;</p><p> 3、游戲中打壞敵方坦克后,可
20、能會(huì)在隨機(jī)位置隨機(jī)出現(xiàn)血塊獎(jiǎng)勵(lì),坦克經(jīng)過(guò)該位置可獲得相應(yīng)加生命值獎(jiǎng)勵(lì);</p><p> 4、玩家坦克的游戲資格和電腦坦克不同。</p><p> 1.2 開(kāi)發(fā)技術(shù)概述</p><p> 1.2.1 Java、C語(yǔ)言、C++三種主流編程技術(shù)比較</p><p> Java 語(yǔ)言是一種跨平臺(tái),適合于分布式計(jì)算環(huán)境的面向?qū)ο缶幊陶Z(yǔ)言。
21、JAVA現(xiàn)在主要用在WEB開(kāi)發(fā),手機(jī)游戲及一些平臺(tái)游戲的開(kāi)發(fā),因?yàn)樗哂泻芎玫目缙脚_(tái)性,在手機(jī)等各種電子產(chǎn)品上應(yīng)用非常廣泛。</p><p> C語(yǔ)言是一種面向過(guò)程編程,這就使得Java具有重用的特性,在開(kāi)發(fā)速度上比C語(yǔ)言更快,但是在運(yùn)行速度上卻是C更快,因?yàn)镃屬于底層語(yǔ)言,它比JAVA更加親近機(jī)器,所以在許多系統(tǒng)開(kāi)發(fā)上一般是用C語(yǔ)言,比如我們常用的XP系統(tǒng)、LINUX系統(tǒng),都是C語(yǔ)言開(kāi)發(fā)的??缙脚_(tái)的服務(wù)器端的
22、嵌入式腳本語(yǔ)言。</p><p> C++多用于游戲引擎、反病毒、硬件驅(qū)動(dòng)以及一些對(duì)運(yùn)行效率要求比較高的應(yīng)用程序,比如數(shù)據(jù)庫(kù)管理系統(tǒng)。 C++語(yǔ)言在提供強(qiáng)大的功能的同時(shí)也提高了程序含BUG的可能性。 C++為了照顧大量的C語(yǔ)言使用者,而兼容了C,使得自身僅僅成為了帶類的C語(yǔ)言,多多少少影響了其面向?qū)ο蟮膹氐仔浴?lt;/p><p><b> 1.3 本章小結(jié)</b>
23、</p><p> 本章主要介紹了網(wǎng)絡(luò)游戲在國(guó)內(nèi)外發(fā)展的現(xiàn)狀,現(xiàn)如今,網(wǎng)絡(luò)游戲市場(chǎng)的重新定位是最迫切需要解決的問(wèn)題。本系統(tǒng)主要的現(xiàn)實(shí)意義,與其他游戲的區(qū)別和完善的一些功能。本文用Java語(yǔ)言、C語(yǔ)言、C++三種主流編程技術(shù)比較,闡述了使用Java語(yǔ)言編程的原因。</p><p> 第2章 相關(guān)技術(shù)理論</p><p> 2.1 系統(tǒng)運(yùn)行環(huán)境</p&g
24、t;<p> 2.1.1 系統(tǒng)運(yùn)行的軟件環(huán)境</p><p> ?。?)網(wǎng)絡(luò)服務(wù)器操作系統(tǒng):Windows XP;</p><p> ?。?)開(kāi)發(fā)工具:eclipse3.2;</p><p> ?。?)運(yùn)行環(huán)境:J2SDK 1.5;</p><p> ?。?)編程語(yǔ)言:Java語(yǔ)言;</p><p>
25、 2.1.2 系統(tǒng)運(yùn)行的硬件環(huán)境</p><p> ?。?)CPU:Intel或者兼容微處理器,奔騰166MHz及其以上;</p><p> ?。?)內(nèi)存:最低32MB,可以運(yùn)行圖形界面的Java Application;最低48MB,可以運(yùn)行Java Applet;內(nèi)存不足,將會(huì)導(dǎo)致系統(tǒng)(尤其是服務(wù)器)的性能大幅下降;</p><p> (3)硬盤:242 MB
26、到80 GB及其以上;</p><p> ?。?)圖形顯示卡:無(wú)要求;</p><p> (5)網(wǎng)卡:普通網(wǎng)卡,3Com OfficeConnect 10/100兆位網(wǎng)卡;</p><p><b> 2.2 相關(guān)理論</b></p><p> 2.2.1 關(guān)于Eclipse的介紹</p><
27、p> Eclipse是一個(gè)主要針對(duì)Java項(xiàng)目開(kāi)發(fā)所設(shè)計(jì)的【綜合性集成開(kāi)發(fā)環(huán)境-Integrated Development Emironment,IDE】,最早是由Object Technologics International這家公司開(kāi)發(fā),該公司于1996年被IBM并購(gòu)后,將Eclipse改為Open Source software。它最大的特點(diǎn)是:采用了插件的結(jié)構(gòu),通過(guò)下載安裝不同的插件,就可以實(shí)現(xiàn)不同類型的程序開(kāi)發(fā)。利
28、用eclipse開(kāi)發(fā)項(xiàng)目,是可以提高項(xiàng)目的開(kāi)發(fā)效率,因?yàn)樗坏梢韵駛鹘y(tǒng)的一些編輯器一樣編寫代碼,而且還有自動(dòng)找錯(cuò)/糾錯(cuò)功能、Debug調(diào)試和代碼自動(dòng)生成等一些重要的功能,這使項(xiàng)目開(kāi)發(fā)的效率得到了提升。Eclipse可以作為其他開(kāi)發(fā)工具的平臺(tái)。工作區(qū)被存儲(chǔ)在磁盤上,并且對(duì)其他人是可見(jiàn)的。Eclipse3.2的大多數(shù)新特性都是Eclipse用戶需求的直接結(jié)果。</p><p> 2.2.2 J2SE框架<
29、/p><p> J2SE軟件是快速開(kāi)發(fā)、部署關(guān)鍵任務(wù)和企業(yè)應(yīng)用程序的首選解決方案。J2SE是基于Java跨平臺(tái)技術(shù)和強(qiáng)有力的安全模塊而開(kāi)發(fā)的,其最新的特征和功能極大地提高了Java語(yǔ)言的伸縮性、靈活性、適用性,以及可靠性。J2SE特點(diǎn):①良好的計(jì)算性能和縮放能力。J2SE提升了Java計(jì)算的性能與縮放能力,代表了Java技術(shù)的大跨步進(jìn)展。通過(guò)J2SE框架更簡(jiǎn)易的步驟、花費(fèi)更少的時(shí)間,采用Java技術(shù)開(kāi)發(fā)與配置要求更
30、高的應(yīng)用了。J2SE在Java客戶機(jī)應(yīng)用方面得到了重大性能提升。基于Swing的Java小程序和應(yīng)用程序在圖形用戶界面(GUI)的響應(yīng)速度上也大有提高。②跨平臺(tái):J2SE是一個(gè)具有綜合性能的平臺(tái),能使一個(gè)完整的、可縮放的高性能應(yīng)用配置在任何種類的平臺(tái)上。③支持Web服務(wù): J2SE對(duì)SSL、LDAP等業(yè)界標(biāo)準(zhǔn)技術(shù)也給予支持,因此保證了在不同平臺(tái)、系統(tǒng)和環(huán)境間的互操作能力。J2SE支持XML技術(shù)和一整套安全服務(wù),因此為基于各類標(biāo)準(zhǔn)的可互操
31、作應(yīng)用與服務(wù)的創(chuàng)建奠定了重要基礎(chǔ)。有了J2SE與Java Web Services Developer Pack的結(jié)合,開(kāi)發(fā)商就能創(chuàng)建、測(cè)試和配置Web服務(wù)了</p><p> Java之所以能夠發(fā)展得很快,是因?yàn)榛ヂ?lián)網(wǎng)的發(fā)展非???。從計(jì)算的結(jié)構(gòu)來(lái)看,Java主要分三大類:第一是服務(wù)器端,這里就有了J2EE企業(yè)版;第二是桌面PC,這一類用的是J2SE標(biāo)準(zhǔn)版;第三就是掌上電腦、移動(dòng)設(shè)備,用的都是J2ME。但是,大
32、部分非企業(yè)級(jí)軟件還是在J2SE上開(kāi)發(fā)的比較多。首先,這是因?yàn)楹芏嗟膽?yīng)用軟件都是在J2SE上開(kāi)發(fā)的;其次,J2SE是和J2EE兼容的,企業(yè)版是在標(biāo)準(zhǔn)版上的擴(kuò)充,在J2SE的版本上開(kāi)發(fā)的軟件,拿到企業(yè)的平臺(tái)上是一樣可以運(yùn)行的;再次,一般開(kāi)發(fā)還是在J2SE的環(huán)境上,只是說(shuō)J2ME提供微型版的一個(gè)環(huán)境。在J2SE上虛擬出一個(gè)環(huán)境,開(kāi)發(fā)出來(lái)的應(yīng)用軟件是可以拿到微型版上運(yùn)行的。</p><p> 2.2.3 聯(lián)機(jī)通信機(jī)制
33、</p><p> 網(wǎng)絡(luò)編程,簡(jiǎn)單地理解就是兩臺(tái)計(jì)算機(jī)相互通信。其基本模型就是客戶機(jī)/服務(wù)器模型,也就是通信雙方中的一方必須提供一個(gè)固定的位置,而另一方只需要知道這個(gè)固定的位置,并且建立兩者之間的聯(lián)系,然后完成數(shù)據(jù)交換。這里提供固定位置的一方通常稱為服務(wù)器,而建立聯(lián)系的一方稱為客戶端。Socket(中文意思為插座),基于客戶機(jī)/服務(wù)器的Soctet通信模式如圖2.1所示:</p><p>
34、; 圖2.1 基于客戶機(jī)/服務(wù)器的Soctet通信模式圖</p><p> 當(dāng)客戶程序需要與服務(wù)器程序通訊的時(shí)候,客戶程序在客戶機(jī)創(chuàng)建一個(gè)socket對(duì)象,Socket類有幾個(gè)構(gòu)造函數(shù)。兩個(gè)常用的構(gòu)造函數(shù)是 Socket(InetAddress addr, int port) 和 Socket(String host, int port),兩個(gè)構(gòu)造函數(shù)都創(chuàng)建了一個(gè)基于Socket的連接服務(wù)器端流套接字的流套接
35、字。兩個(gè)函數(shù)都通過(guò)參數(shù)port獲得服務(wù)器的端口號(hào)。假設(shè)已經(jīng)建立連接了,網(wǎng)絡(luò)API將在客戶端基于Socket的流套接字中捆綁客戶程序的IP地址和任意一個(gè)端口號(hào),否則兩個(gè)函數(shù)都會(huì)拋出一個(gè)IOException對(duì)象。如果創(chuàng)建了一個(gè)Socket對(duì)象,那么它可能通過(guò)調(diào)用Socket的 getInputStream()方法從服務(wù)程序獲得輸入流讀傳送來(lái)的信息,也可能通過(guò)調(diào)用Socket的 getOutputStream()方法獲得輸出流來(lái)發(fā)送消息。在
36、讀寫活動(dòng)完成之后,客戶程序調(diào)用close()方法關(guān)閉流和流套接字。</p><p> 2.2.4 Java圖形編程</p><p> Java中的Graphics類是用于繪圖和顯示格式化文本的工具類。在Java程序中繪圖必須在一個(gè)窗口(容器)中進(jìn)行,繪圖窗體經(jīng)常被設(shè)計(jì)為一個(gè)組件容器。一般首先在一個(gè)面板中進(jìn)行繪制,然后再將這個(gè)面板添加到顯示窗口中去。</p><p&g
37、t; Graphics類是在Java.awt包中申明,顯示格式化文本和繪圖時(shí)通過(guò)調(diào)用Graphics類的draw()方法實(shí)現(xiàn)的,例如drawString(String),drawLine()等。繪圖采用的坐標(biāo)系是原點(diǎn)在左上角,縱軸向下以像素為單位的坐標(biāo)系。</p><p><b> 2.3 本章小結(jié)</b></p><p> 在本章節(jié)中首先介紹了該系統(tǒng)的運(yùn)行環(huán)
38、境,值的注意的是軟件環(huán)境的配置,因?yàn)檎麄€(gè)系統(tǒng)都是在虛擬環(huán)境下運(yùn)行的,所以虛擬環(huán)境對(duì)于整個(gè)設(shè)計(jì)的調(diào)試和運(yùn)行至關(guān)重要;其次對(duì)開(kāi)發(fā)工具Eclipse3.2的簡(jiǎn)單介紹,利用eclipse開(kāi)發(fā)項(xiàng)目,是可以提高項(xiàng)目的開(kāi)發(fā)效率。還有是對(duì)一些技術(shù)理論,J2SE框架,Java語(yǔ)言,系統(tǒng)運(yùn)行所支持的操作系統(tǒng),聯(lián)機(jī)通信機(jī)制及Java圖形編程等理論做了簡(jiǎn)單的介紹,為本系統(tǒng)后期實(shí)現(xiàn)圖形化界面和網(wǎng)絡(luò)通信做了理論支持。</p><p><
39、;b> 第3章 系統(tǒng)設(shè)計(jì)</b></p><p> 3.1 系統(tǒng)可行性分析</p><p> 3.1.1 技術(shù)可行性</p><p> Java語(yǔ)言自Sun公司于1995年5月正式發(fā)布以來(lái),經(jīng)歷了出生、成長(zhǎng)、成熟壯大的幾個(gè)階段,逐漸發(fā)展成為IT領(lǐng)域里的主流計(jì)算模式,使用Java開(kāi)發(fā)工具方便,容易實(shí)現(xiàn)。Java對(duì)開(kāi)發(fā)網(wǎng)絡(luò)產(chǎn)品有它自己獨(dú)特的優(yōu)
40、勢(shì),網(wǎng)絡(luò)游戲也是其開(kāi)發(fā)產(chǎn)物之一。本系統(tǒng)開(kāi)發(fā)過(guò)程是利用Java編程語(yǔ)言和eclipse集成開(kāi)發(fā)環(huán)境配合使用來(lái)實(shí)現(xiàn)的,它是基于TCP/UDP協(xié)議和Socket編程技術(shù),建立以C/S為結(jié)構(gòu)模式的娛樂(lè)性游戲平臺(tái)。</p><p> 3.1.2 經(jīng)濟(jì)可行性</p><p> 本設(shè)計(jì)的開(kāi)發(fā)是基于JDK5.0和eclipse3.2的,因?yàn)樗鼈兌际敲赓M(fèi)而且開(kāi)源的軟件,所以實(shí)現(xiàn)本設(shè)計(jì)的成本就有所降低。隨
41、著計(jì)算機(jī)、網(wǎng)絡(luò)通訊和信息技術(shù)的迅猛發(fā)展以及人類精神生活品質(zhì)的提高,國(guó)際、國(guó)內(nèi)的各種各樣的大型綜合游戲網(wǎng)站如雨后春筍般的發(fā)展起來(lái)。一款好的游戲帶來(lái)的經(jīng)濟(jì)效益可以說(shuō)是不可估量的,比如現(xiàn)在網(wǎng)上最流行的魔獸世界、征途等大型網(wǎng)絡(luò)版游戲。本游戲既可單機(jī)運(yùn)行,也可以是聯(lián)機(jī)版多人同時(shí)在線對(duì)戰(zhàn)。</p><p> 3.1.3 操作可行性</p><p> 本設(shè)計(jì)是一個(gè)網(wǎng)絡(luò)版的游戲平臺(tái),只是模擬了現(xiàn)在社會(huì)
42、上的一些網(wǎng)絡(luò)游戲的部分功能,所以操作簡(jiǎn)易,玩家不需要了解內(nèi)部流程,只是和一般其他的網(wǎng)絡(luò)游戲一樣的操作即可開(kāi)始游戲。相對(duì)于開(kāi)發(fā)者而言,整個(gè)系統(tǒng)形成主要由JDK5.0虛擬環(huán)境和eclipse3.2共同完成,無(wú)需更多復(fù)雜的工具和服務(wù)器支持。</p><p> 3.2 系統(tǒng)需求分析</p><p> 3.2.1 在人機(jī)對(duì)戰(zhàn)模式下實(shí)現(xiàn)的功能</p><p> 能夠發(fā)射子
43、彈打擊敵人</p><p><b> 敵人能夠移動(dòng)</b></p><p><b> 能夠模擬爆炸</b></p><p><b> 能夠產(chǎn)生障礙</b></p><p><b> 能夠增長(zhǎng)生命</b></p><p>
44、3.2.2 在網(wǎng)絡(luò)對(duì)戰(zhàn)模式下實(shí)現(xiàn)的功能</p><p> 在人機(jī)對(duì)戰(zhàn)模式中實(shí)現(xiàn)功能基礎(chǔ)上,增加以下功能實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)戰(zhàn)功能:</p><p> 1)添加網(wǎng)絡(luò)功能,使兩臺(tái)或者多臺(tái)不同計(jì)算機(jī)的玩家通過(guò)一定的網(wǎng)絡(luò)連接,加入到游戲中;</p><p> 2)能夠自主分組并選擇角色,填寫自己的游戲信息,各個(gè)玩家之間實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)戰(zhàn)功能,并且同是一方的坦克不能相互攻擊;</
45、p><p> 3.3 系統(tǒng)功能設(shè)計(jì)</p><p> 3.3.1 坦克大戰(zhàn)總體功能設(shè)計(jì)</p><p> 坦克大戰(zhàn)游戲主要實(shí)現(xiàn)玩家參加游戲的整個(gè)流程,用戶登陸游戲客戶端選擇游戲模式,可分為單機(jī)模式和網(wǎng)絡(luò)對(duì)戰(zhàn)模式,選擇單機(jī)模式可以直接進(jìn)入游戲狀態(tài);選擇網(wǎng)絡(luò)對(duì)戰(zhàn)模式,在啟動(dòng)服務(wù)器后,玩家需要選擇自己的角色,用戶名和ID等玩家相關(guān)資料,成功后使用其賬號(hào)進(jìn)行登錄游戲(
46、只有成功登錄的玩家才能參與網(wǎng)絡(luò)對(duì)戰(zhàn)游戲功能);登陸玩家就可以通過(guò)控制鍵盤操作,加入對(duì)戰(zhàn)游戲。整個(gè)網(wǎng)絡(luò)版坦克大戰(zhàn)游戲流程圖如圖3.1所示:</p><p> 圖3.1 網(wǎng)絡(luò)坦克大戰(zhàn)游戲流程</p><p> 3.3.2 TankClient類基本功能分析</p><p> TankClient類是整個(gè)系統(tǒng)的核心部分,它承擔(dān)整個(gè)系統(tǒng)的所有可實(shí)現(xiàn)功能的調(diào)度工作。
47、 是整個(gè)游戲運(yùn)行的場(chǎng)所。TankClient類設(shè)計(jì)流程圖如圖3.2所示:</p><p> 圖3.2 TankClient類設(shè)計(jì)流程</p><p> TankClient類是主類,通過(guò)調(diào)用其他類中封裝的方法來(lái)使整個(gè)系統(tǒng)運(yùn)行起來(lái),下面顯示TankClient與各個(gè)類之間的關(guān)系如圖3.3所示:</p><p> 圖3.3 游戲系統(tǒng)類關(guān)聯(lián)圖</p>
48、<p> 3.3.3 Tank類基本功能分析</p><p> Tank(坦克)類中,封裝了一些變量屬性,包括坦克自己的大?。╓IDTH,HRIGHT),運(yùn)動(dòng)速度(SPRRD_X:在x軸方向的速度;SPEED_Y:在Y軸方向的速度)、生命值控制(life)、坦克編號(hào)(id)、坦克名(name)、方向控制(dir)、生死控制(live)、好壞控制(good)的變量等。Tank類中沒(méi)有main函數(shù),
49、不是主類,它當(dāng)中只封裝一些變量屬性和靜態(tài)方法,被TankClient類調(diào)用來(lái)實(shí)現(xiàn)坦克的一系列動(dòng)作。Tank類中的主要方法羅列如下:</p><p> ?。?)getRect()方法</p><p> public Rectangle getRect() {</p><p> return new Rectangle(x, y, this.WIDTH, this.
50、HEIGHT);</p><p><b> }</b></p><p> Rectangle類是碰撞檢測(cè)的輔助類,通過(guò)得到子彈的x,y坐標(biāo)和寬高度,檢測(cè)兩個(gè)矩形是否碰撞(相交);</p><p> (2)draw()方法:負(fù)責(zé)將所有的活動(dòng)在屏幕上畫出來(lái);</p><p> ?。?)move()方法:主要負(fù)責(zé)控制坦克
51、的移動(dòng),包括8個(gè)方向(左,左上,上,右上,右,右下,下,左下)的控制以及給坦克一個(gè)移動(dòng)的速度;</p><p> ?。?)keyPressed()方法:設(shè)定使用鍵盤的“↑”“↓”“←”“→”鍵控制坦克移動(dòng);</p><p> ?。?)keyReleased()方法:處理按鍵抬起事件,抬起“CTRL”鍵時(shí),發(fā)射炮彈并加入新炮彈,能夠逐一發(fā)射每一發(fā)炮彈、抬起“A”鍵可以發(fā)射超級(jí)炮彈等功能;&l
52、t;/p><p> (6)locationDirection()方法:定義了炮筒方向,可以向八個(gè)方向發(fā)射炮彈;</p><p> ?。?)fire()方法:處理發(fā)送子彈的方法;</p><p> ?。?)bumpWithWall()方法:主要負(fù)責(zé)處理坦克撞墻事件;</p><p> ?。?)bumpWithTank()方法:主要到負(fù)責(zé)處理坦克和
53、坦克相撞事件;</p><p> 3.3.4 Missile類基本功能分析</p><p> Misslile(子彈)類和Tank類一樣,只封裝一些變量屬性和靜態(tài)方法,主要變量包括:子彈自己的大?。╓IDTH,HRIGHT),運(yùn)動(dòng)速度(SPRRD_X:在x軸方向的速度;SPEED_Y:在Y軸方向的速度)、子彈標(biāo)示(ID)、所屬坦克的id號(hào)(TankId用于網(wǎng)絡(luò)版)等。Misslie類持
54、有一個(gè)TankClient類(大管家)的引用tc,TankClient類要執(zhí)行發(fā)射炮彈操作時(shí)調(diào)用Missile類中的方法。Misslie類中的主要方法如下:</p><p> draw()方法:負(fù)責(zé)畫出子彈的所有活動(dòng);</p><p> move()方法:先判斷方向再移動(dòng),并給它一定的移動(dòng)速度;</p><p> getRect()方法:負(fù)責(zé)取得子彈的外切方形
55、,為碰撞檢測(cè)做準(zhǔn)備;</p><p> hitTan()方法:檢測(cè)子彈是否撞到坦克,若撞到返回true,否則返回false;</p><p> hitTanks()方法:檢測(cè)是否撞到一系列坦克中的一個(gè);</p><p> hitWall()方法:檢測(cè)子彈和墻是否相撞。</p><p> 3.3.5 Explode類基本功能分析<
56、/p><p> Explode(爆炸)類也是一個(gè)只封裝自己的變量和方法的外部包裝類,沒(méi)有main方法,供TankClient主類需要時(shí)調(diào)用它的draw()方法,當(dāng)子彈擊中坦克時(shí)需要產(chǎn)生爆炸。使用11張圖片重疊現(xiàn)實(shí)爆炸效果如3.4圖所示:</p><p><b> 圖3.4 爆炸圖</b></p><p> 3.3.6 服務(wù)器類基本功能分析&
57、lt;/p><p> TankServer(服務(wù)器)類主要負(fù)責(zé)在網(wǎng)絡(luò)對(duì)戰(zhàn)游戲時(shí)維護(hù)各個(gè)在線玩家的基本信息,并動(dòng)態(tài)的維護(hù)玩家列表。聯(lián)機(jī)模式下類關(guān)系圖如圖3.5所示:</p><p> 3.5 聯(lián)機(jī)模式類關(guān)聯(lián)圖</p><p> 3.3.7 信息傳送類基本功能分析</p><p> 信息傳送類就是用來(lái)封裝客戶端和服務(wù)器端的交互信息。將網(wǎng)絡(luò)中
58、傳遞的眾多信息封裝成可序列化的類,將會(huì)使程序有很好的可擴(kuò)展性。</p><p><b> 3.4 本章小結(jié)</b></p><p> 本章首先對(duì)整個(gè)游戲設(shè)計(jì)進(jìn)行了可行性分析,其次對(duì)游戲要達(dá)到怎么樣的需求,要實(shí)現(xiàn)哪些功能做以及實(shí)現(xiàn)這些功能設(shè)計(jì)到的類,最后再詳細(xì)的介紹了系統(tǒng)要實(shí)現(xiàn)這些功能所涉及到的各個(gè)類之間的關(guān)系。</p><p><b
59、> 第4章 系統(tǒng)實(shí)現(xiàn)</b></p><p> 4.1 游戲主窗體實(shí)現(xiàn)</p><p> TankClient類負(fù)責(zé)畫出游戲主窗體,它是整個(gè)游戲運(yùn)行和所有活動(dòng)的場(chǎng)所。登陸主窗口后,主界面上包括兩個(gè)下拉菜單條,“游戲”和“幫助”,玩家點(diǎn)擊“游戲”菜單條下可以選擇游戲模式;“幫助”下拉菜單條中有游戲說(shuō)明和游戲操作,方便用戶了解游戲規(guī)則。為了游戲不至于太單調(diào),還配置了
60、背景音樂(lè)。除此之外,本設(shè)計(jì)優(yōu)點(diǎn)是TankClient類還封裝了一個(gè)update()方法,使用雙緩沖消除閃爍現(xiàn)象。因?yàn)樗⑿轮禺嬵l率太快,paint()方法還沒(méi)有完成,會(huì)造成逐條顯示,影響系統(tǒng)的運(yùn)行,所以解決辦法是創(chuàng)建一個(gè)虛擬屏幕,在屏幕的后面,在要畫的將所有的東西畫在虛擬屏幕上,也就是內(nèi)存上,畫完之后一次性將虛擬屏幕上的內(nèi)容貼到屏幕上,這樣就消除了閃爍現(xiàn)象,用戶的眼睛便感覺(jué)不到閃爍了。TankClient類是整個(gè)系統(tǒng)的“大管家”,當(dāng)要執(zhí)行
61、某動(dòng)作時(shí),“大管家”只需要調(diào)用各個(gè)類中封裝好的方法,讓被調(diào)用的類自己去執(zhí)行它自己的方法,這更體現(xiàn)了面向?qū)ο蟮乃枷搿S螒蛑鞔绑w界面如圖4.1所示:</p><p> 圖4.1 游戲主窗口預(yù)覽效果圖</p><p> 實(shí)現(xiàn)虛擬屏幕消除閃爍的關(guān)鍵代碼如下:</p><p> public void update(Graphics g) { //利用
62、雙緩沖消除閃爍的效果</p><p> if(offScreenImage == null) {</p><p> offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);</p><p><b> }</b></p><p> Graphics gO
63、ffScreen = offScreenImage.getGraphics();</p><p> Color c = gOffScreen.getColor();</p><p> gOffScreen.setColor(Color.BLACK);</p><p> gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEI
64、GHT);</p><p> gOffScreen.setColor(c);</p><p> paint(gOffScreen);</p><p> g.drawImage(offScreenImage,0,0,null);</p><p><b> }</b></p><p> 4.
65、2 單機(jī)游戲的實(shí)現(xiàn)</p><p> 游戲運(yùn)行主界面,在下拉菜單中選擇單機(jī)游戲進(jìn)入單人模式,通過(guò)鍵盤控制坦克運(yùn)動(dòng),相互對(duì)戰(zhàn),當(dāng)被打中時(shí)產(chǎn)生一個(gè)爆炸,屏幕左上方顯示游戲信息:子彈數(shù)目(出界就死亡)、爆炸數(shù)目、敵方坦克數(shù)目、玩家坦克生命值(當(dāng)玩家坦克被擊中4次時(shí),游戲結(jié)束)、玩家得分。其效果圖如圖4.2所示:</p><p> 圖4.2 單機(jī)游戲模式主界面圖</p>&l
66、t;p> 當(dāng)玩家分?jǐn)?shù)達(dá)到60分時(shí)可以使用超級(jí)炮彈,可同時(shí)向八個(gè)方向發(fā)射炮彈,效果如圖4.3所示:</p><p> 圖4.3 發(fā)射超級(jí)炮彈</p><p> 當(dāng)玩家被炮彈擊中達(dá)到4次,而又沒(méi)有及時(shí)吃到增長(zhǎng)生命的血塊時(shí),提示游戲結(jié)束,可以選擇重新開(kāi)始或退出該模式,效果如圖4.4 所示:</p><p> 圖4.4 玩家死亡時(shí)游戲界面</p>
67、<p> 4.3 聯(lián)機(jī)功能實(shí)現(xiàn)</p><p> 在本系統(tǒng)的實(shí)現(xiàn)過(guò)程中,在支持網(wǎng)絡(luò)對(duì)戰(zhàn)的服務(wù)器類的定義中需要使用ServerSocket類來(lái)響應(yīng)多個(gè)客戶端連接請(qǐng)求,server服務(wù)器上需要兩大協(xié)議,一個(gè)是TCP,用來(lái)接收客戶端;另一個(gè)是UDP,用來(lái)轉(zhuǎn)發(fā)游戲的數(shù)據(jù)。Server類系統(tǒng)模型圖如圖4.5所示:</p><p> 圖4.5 Server類系統(tǒng)簡(jiǎn)單模型圖<
68、;/p><p> 網(wǎng)絡(luò)游戲模式下,游戲主要在客戶端運(yùn)行,啟動(dòng)客戶端時(shí)玩家首先要填寫信息之后才能加入到游戲中去,先啟動(dòng)服務(wù)器,紅色小方塊表示確定服務(wù)器已連接。如圖4.6所示:</p><p> 圖4.6 啟動(dòng)服務(wù)器</p><p> 進(jìn)入網(wǎng)絡(luò)模式,輸入信息:IP、Port、選擇自己的角色【P(警)\B(匪)】,是玩家加入游戲的必填欄。游戲主界面圖如圖4.7所示:&
69、lt;/p><p> 圖4.7 網(wǎng)絡(luò)版游戲玩家信息欄</p><p> 填寫好玩家信息,登陸后游戲主界面,進(jìn)入游戲后,通過(guò)玩家坦克上方的ID號(hào)(單雙數(shù))和顏色(藍(lán)\紅)來(lái)區(qū)分?jǐn)秤?。游戲界面左上角顯示游戲的基本信息,包括玩家姓名,對(duì)戰(zhàn)坦克數(shù)等,如圖4.8所示:</p><p> 圖4.8 登陸網(wǎng)絡(luò)模式主界面</p><p> 多個(gè)玩家加入
70、后,開(kāi)始對(duì)戰(zhàn),在此模式中沒(méi)有吃血塊,添加生命值這一功能,所以一旦中彈就死亡被淘汰出局,各個(gè)玩家游戲界面上都能顯示實(shí)時(shí)動(dòng)態(tài),效果如圖4.9所示:</p><p> 圖4.9 網(wǎng)絡(luò)版游戲?qū)?zhàn)實(shí)時(shí)顯示圖</p><p> 網(wǎng)絡(luò)模式設(shè)計(jì)主要代碼如下:</p><p> TankServer(服務(wù)器)類代碼片段如下:</p><p> publ
71、ic class TankServer {</p><p> public static final int TCP_PORT = 8888; //TCP的監(jiān)聽(tīng)端口</p><p> public static final int UDP_PORT = 6666; //UDP的監(jiān)聽(tīng)端口</p><p> public static int ID
72、= 100;</p><p> List<Client> clients = new ArrayList<Client>();</p><p> public void strat() { //啟動(dòng)服務(wù)器</p><p> new Thread(new UDPThread()).start();
73、</p><p> ServerSocket ss = null;</p><p> Socket s = null;</p><p><b> try {</b></p><p> ss = new ServerSocket(TCP_PORT); </p><p> } catc
74、h (IOException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p> while(true) { //鏈接TCP</p><p><b> try {</b&
75、gt;</p><p> s = ss.accept();</p><p> DataInputStream dis = new DataInputStream(s.getInputStream());</p><p> int udpPort = dis.readInt();</p><p> String IP = s.getIn
76、etAddress().getHostAddress();</p><p> Client c = new Client(IP,udpPort);</p><p> DataOutputStream dos = new DataOutputStream(s.getOutputStream());</p><p> dos.writeInt(ID++);<
77、/p><p> clients.add(c);</p><p> System.out.println("A Client Connected!Addr_"+IP+":"+s.getPort()+"_UDPPort:"+udpPort);</p><p> }catch(IOException e) {&
78、lt;/p><p> e.printStackTrace();</p><p><b> }}}</b></p><p> private class UDPThread implements Runnable { //建立一個(gè)UDP的接受和轉(zhuǎn)發(fā)線程</p><p> byte[] buf = new byt
79、e[1024];</p><p> public void run() {</p><p> DatagramSocket ds = null;</p><p> try { ds = new DatagramSocket(UDP_PORT);</p><p> System.out.println("UDPThread
80、started at PORT:"+UDP_PORT);</p><p> while(ds != null) {</p><p> DatagramPacket dp = new DatagramPacket(buf,buf.length);</p><p> ds.receive(dp); //接受數(shù)據(jù)
81、包</p><p> for(int i=0;i<clients.size();i++) { //分別轉(zhuǎn)發(fā)給其他客戶端</p><p> Client c = clients.get(i);</p><p> dp.setSocketAddress(new InetSocketAddress(c.IP, c.udpPort));//得到將要轉(zhuǎn)發(fā)的
82、客戶端的IP地址和端口ds.send(dp);</p><p> System.out.println("A Packet Sent to PORT:"+c.udpPort);}}</p><p> } catch (SocketException e) {</p><p> e.printStackTrace();
83、</p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p><b> 4.4 本章小結(jié)<
84、/b></p><p> 本章主要介紹了該系統(tǒng)的實(shí)現(xiàn)和運(yùn)行,分別敘述了在單機(jī)模式和網(wǎng)絡(luò)對(duì)戰(zhàn)模式下游戲的運(yùn)行和調(diào)試過(guò)程。在單機(jī)模式下,玩家的游戲發(fā)射火力要比電腦隨機(jī)產(chǎn)生的坦克能力稍強(qiáng)一些,當(dāng)分?jǐn)?shù)值達(dá)到一定時(shí),玩家可以發(fā)射超級(jí)炮彈。網(wǎng)絡(luò)模式下,注意一定要先啟動(dòng)服務(wù)器,只有啟動(dòng)服務(wù)器后,各個(gè)玩家才能加入游戲。到此為止,本設(shè)計(jì)基本完成預(yù)期效果。</p><p> 第5章 總結(jié)與展望&l
85、t;/p><p><b> 5.1 總結(jié)</b></p><p> 本次設(shè)計(jì)已是大學(xué)最后一次對(duì)專業(yè)知識(shí)的綜合實(shí)踐活動(dòng),同時(shí)也是我所做的工作量最大的一次作業(yè),因此從一開(kāi)始我對(duì)本次畢業(yè)設(shè)計(jì)就給予了高度重視。從選題、收集資料、學(xué)習(xí)相關(guān)技術(shù)到實(shí)際編程,我都一絲不茍的對(duì)待了。當(dāng)然其間我也走了不少?gòu)澛?,有時(shí)甚至需要推倒重來(lái),但同時(shí)我也多次體會(huì)過(guò)克服困難后的成就感。</p&
86、gt;<p> 通過(guò)這次畢業(yè)設(shè)計(jì)以及撰寫本畢業(yè)論文,我學(xué)會(huì)了一些編程技巧,而且對(duì)調(diào)試的錯(cuò)誤有進(jìn)一步的認(rèn)識(shí),有時(shí)候就一個(gè)小小的語(yǔ)法錯(cuò)誤就會(huì)導(dǎo)致程序調(diào)試不通過(guò)。所以每個(gè)字符,每句程序都要認(rèn)真對(duì)待。使用不同的編程環(huán)境,其效率完全不一樣,所以我選擇了Eclipse,它自動(dòng)找錯(cuò)/糾錯(cuò)功能、Debug調(diào)試和代碼自動(dòng)生成等一些重要的功能大大提高了我的設(shè)計(jì)效率。對(duì)于設(shè)計(jì)論文,一定要注意格式,認(rèn)識(shí)事情都有它的規(guī)則、規(guī)范,不能按個(gè)人喜好隨意
87、改變。</p><p> 5.2 設(shè)計(jì)中的不足之處</p><p> 本系統(tǒng)實(shí)現(xiàn)了坦克游戲所應(yīng)有的基本功能,但是由于時(shí)間和能力有限,還有一部分功能未能實(shí)現(xiàn),例如:外部文件讀取、地圖設(shè)定、升級(jí)、坦克的高級(jí)人工智能控制等,不能和現(xiàn)在Internet上各種坦克大戰(zhàn)游戲相媲美。還有就是對(duì)部分功能在設(shè)計(jì)過(guò)程中未能做到更加完善,稍有瑕疵,游戲時(shí)偶爾還會(huì)產(chǎn)生閃爍現(xiàn)象,但是已經(jīng)盡力改善了。還有就是當(dāng)
88、運(yùn)行網(wǎng)絡(luò)模式時(shí),必須專門啟動(dòng)服務(wù)器,而不是一鍵啟動(dòng)。對(duì)于玩家里來(lái)說(shuō)有點(diǎn)麻煩。</p><p><b> 5.3 展望</b></p><p> 本系統(tǒng)基本實(shí)現(xiàn)了坦克游戲所應(yīng)有的基本功能,在大學(xué)中最后一次專攻式的學(xué)習(xí)了Java語(yǔ)言,使我對(duì)Java語(yǔ)言有了更深層次的理解,通過(guò)該游戲設(shè)計(jì),提高了我的編程能力,也讓我養(yǎng)成了良好的編程習(xí)慣。希望在今后自己能繼續(xù)對(duì)J2SE等
89、技術(shù)進(jìn)行深入的學(xué)習(xí)和研究。</p><p><b> 致 謝</b></p><p> 經(jīng)過(guò)三個(gè)多月的忙碌和工作,本次畢業(yè)設(shè)計(jì)業(yè)已完成了,作為一個(gè)本科生的畢業(yè)設(shè)計(jì),由于經(jīng)驗(yàn)的匱乏和業(yè)務(wù)邏輯的不熟悉,難免有許多考慮不周全和不完善的地方,但是在指導(dǎo)老師和宿舍同學(xué)的幫助下很多困難都得以解決,所以在此本人要特別感謝他們對(duì)我的幫助。</p><p>
90、 首先我要感謝我的指導(dǎo)老師**老師,感謝她在整個(gè)畢業(yè)設(shè)計(jì)過(guò)程中的指導(dǎo),為我提示游戲設(shè)計(jì)的邏輯思路;為我提供參考書籍;為我提供了技術(shù)方面資料,而且在遇到問(wèn)題的時(shí)候,總是鼓勵(lì)我去解決;尤其在論文格式的修改方面,讓我明白了要寫出一個(gè)標(biāo)準(zhǔn)的論文,它的格式的重要性,哪怕就算是一個(gè)標(biāo)點(diǎn)符號(hào)都要符合其標(biāo)準(zhǔn)和格式要求。在設(shè)計(jì)的整個(gè)過(guò)程中從開(kāi)題報(bào)告的確定到初稿的修改,以及中期檢查,以及定稿的過(guò)程中都給予了我細(xì)心的指導(dǎo)。</p><p
91、> 其次還要特別感謝大學(xué)四年來(lái)所有的老師,為我們打下計(jì)算機(jī)專業(yè)知識(shí)的基礎(chǔ)。以前總是覺(jué)得學(xué)的課程沒(méi)有什么用處,但是當(dāng)真正用計(jì)算機(jī)來(lái)解決實(shí)際問(wèn)題的時(shí)候,才知道每門課程的重要性,甚至覺(jué)得所學(xué)習(xí)的那些課程還遠(yuǎn)遠(yuǎn)不夠,所以以后還應(yīng)該不斷的學(xué)習(xí)。也可以這么說(shuō)要不是您們?cè)诖髮W(xué)四年中嚴(yán)格要求我們,現(xiàn)在要完成整個(gè)畢業(yè)設(shè)計(jì)那是根本不可能的。</p><p> 再次,感謝我們小組的幾位同學(xué),在我遇到一些難以解決的問(wèn)題時(shí),給與
92、我支持,鼓勵(lì)和幫助,在論文撰寫過(guò)程中,認(rèn)真仔細(xì)的幫我修改,包括一些難以發(fā)覺(jué)的語(yǔ)法,符號(hào)錯(cuò)誤,使我受益匪淺。</p><p> 最后感謝我的院系和我的母?!?*學(xué)院四年來(lái)對(duì)我的精心培養(yǎng)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 姜志強(qiáng)編著. Java語(yǔ)言程序設(shè)計(jì) [M].北京:電子工業(yè)出版社,2007<
93、/p><p> [2] 侯俊杰編著. Java語(yǔ)言應(yīng)用開(kāi)發(fā)基礎(chǔ) [M].</p><p> [3] 孫更新, 賓晟, 呂婕編著. Java畢業(yè)設(shè)計(jì)指南與項(xiàng)目實(shí)踐 [M]. 北京:科技出版社,2007.</p><p> [4] 杜江, 管佩森編著. Java使用編程100例 [M]. 北京:中國(guó)貼到出版社,2004.</p><p> [
94、5] 殷兆麟編著. Java語(yǔ)言程序設(shè)計(jì) [M]. 北京:高等教育出版社, 2002.</p><p> [6] 侯俊杰編著. Java程序設(shè)計(jì)教程與實(shí)訓(xùn) [M]. 北京:科學(xué)出版社, 2005.</p><p> [7] 趙強(qiáng), 陳洪譯著. Java程序設(shè)計(jì)高級(jí)主題 [M]. 北京:北京大學(xué)出版社,2004.</p><p> [8] 《電腦編程技巧與維護(hù)》
95、雜志社編著. Java編程技巧典型案例解析 [J]. 北京:中國(guó)電力出版社,2005</p><p> [9]張基溫,朱嘉鋼,張景莉編著. Java程序開(kāi)發(fā)教程 [M]. 北京:清華大學(xué)出版社,2002</p><p> [10]丁來(lái)佳,周靜. 基于JAVA平臺(tái)事件驅(qū)動(dòng)模型的研究與設(shè)計(jì)[J]. 黃岡師范學(xué)院學(xué)報(bào) , 2008,(S1) .</p><p> J
96、ava-based Web version of Battle City Game Design</p><p> 【Abstract】The design of object-oriented design patterns, all the objects on in the game to give the concept of objects and attributes. After running
97、the program allows the user to select the implementation of the Options menu. At the beginning of the game, start the server and client, all objects on the background graphics. Thread running in the main program, the scr
98、een refresh frequency will be some double buffer technology to redraw the screen in real time to reflect the state of the game. Use</p><p> Key words: Object-oriented; Battle City; online games; Java; Socke
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)---基于java的網(wǎng)絡(luò)版坦克大戰(zhàn)游戲設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----基于java的網(wǎng)絡(luò)版坦克大戰(zhàn)游戲設(shè)計(jì)
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)設(shè)計(jì)基于java的網(wǎng)絡(luò)版坦克大戰(zhàn)游戲設(shè)計(jì)
- 基于java的游戲坦克大戰(zhàn)
- 畢業(yè)論文——基于安卓坦克大戰(zhàn)游戲
- 基于java的坦克大戰(zhàn)游戲開(kāi)發(fā)
- java坦克大戰(zhàn)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)論文---flash游戲制作——坦克大戰(zhàn)
- 基于安卓坦克大戰(zhàn)游戲畢業(yè)論文.doc
- 畢業(yè)設(shè)計(jì)---java編寫的坦克大戰(zhàn)的游戲設(shè)計(jì)
- 基于java的坦克大戰(zhàn)游戲的設(shè)計(jì)與實(shí)現(xiàn)
- java版坦克大戰(zhàn)
- 坦克大戰(zhàn)游戲設(shè)計(jì)論文
- 基于java的“網(wǎng)絡(luò)版五子棋”游戲的設(shè)計(jì)和實(shí)現(xiàn)【畢業(yè)論文】
- 基于java的坦克大戰(zhàn)游戲的設(shè)計(jì)與實(shí)現(xiàn) 開(kāi)題報(bào)告
- 坦克大戰(zhàn)游戲畢業(yè)設(shè)計(jì)
- 基于java的坦克大戰(zhàn)游戲的設(shè)計(jì)與實(shí)現(xiàn)【開(kāi)題報(bào)告】
- java版坦克大戰(zhàn)論文正式版.doc
- 基于java的坦克大戰(zhàn)游戲的設(shè)計(jì)與實(shí)現(xiàn)【文獻(xiàn)綜述】
- java課程設(shè)計(jì)---基于java的坦克大戰(zhàn)
評(píng)論
0/150
提交評(píng)論