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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  伊犁師范學院</b></p><p>  本科生畢業(yè)論文(設計)</p><p>  論 文 題 目:基于Java的網(wǎng)絡版坦克大戰(zhàn)游戲設計</p><p>  學 生 姓 名: </p><p>  系 專 業(yè):計算機科學與技術</p><p>

2、;  學 號:06080605032</p><p>  指 導 教 師: </p><p>  基于Java的網(wǎng)絡版坦克大戰(zhàn)游戲設計</p><p>  (伊犁師范學院計算機科學系06-2班,新疆 伊寧市 835000)</p><p>  摘 要:本設計采用面向對象的設計模式,對游戲中的所有物體賦予對象的概念和屬性

3、。運行程序后允許用戶選擇執(zhí)行選項菜單。在開始游戲后,啟動服務器和客戶端,對背景的所有物體進行繪圖。在主程序運行的線程中,畫面刷新將以一定的頻率采用雙緩沖技術對屏幕重繪,實時反映整個游戲的進行狀態(tài)。用戶控制的坦克運行在主線程中,隨屏幕刷新的頻率而移動。坦克將在游戲開始時進行初始化,然后將坦克繪制在地圖的上層。本設計主要實現(xiàn)的功能是讓坦克移動并能夠智能的打出炮彈,躲避子彈,炸毀對方坦克。能夠支持網(wǎng)絡對戰(zhàn)和單機對戰(zhàn)兩種模式。</p>

4、;<p>  關鍵詞:面向對象;坦克大戰(zhàn);網(wǎng)絡游戲;Java;Socket 類</p><p>  中圖分類號:TP311.1</p><p><b>  目錄</b></p><p><b>  摘要</b></p><p><b>  第1章 前言1</b&g

5、t;</p><p>  1.1 游戲設計的需求分析1</p><p>  1.1.1 國內外電子網(wǎng)絡游戲的現(xiàn)狀1</p><p>  1.1.2 本系統(tǒng)的現(xiàn)實意義1</p><p>  1.1.3 本系統(tǒng)和其他開發(fā)游戲區(qū)別2</p><p>  1.2 開發(fā)技術概述2</p><

6、;p>  1.2.1 Java、C語言、C++三種主流編程技術比較2</p><p>  1.3 本章小結2</p><p>  第2章 相關技術理論3</p><p>  2.1 系統(tǒng)運行環(huán)境3</p><p>  2.1.1 系統(tǒng)運行的軟件環(huán)境3</p><p>  2.1.2 系統(tǒng)運行的硬

7、件環(huán)境3</p><p>  2.2 相關理論3</p><p>  2.2.1 關于Eclipse的介紹3</p><p>  2.2.2 J2SE框架3</p><p>  2.2.3 聯(lián)機通信機制4</p><p>  2.2.4 Java圖形編程5</p><p> 

8、 2.3 本章小結5</p><p>  第3章 系統(tǒng)設計6</p><p>  3.1 系統(tǒng)可行性分析6</p><p>  3.1.1 技術可行性6</p><p>  3.1.2 經(jīng)濟可行性6</p><p>  3.1.3 操作可行性6</p><p>  3.2 系統(tǒng)需

9、求分析6</p><p>  3.2.1 在人機對戰(zhàn)模式下實現(xiàn)的功能6</p><p>  3.2.2 在網(wǎng)絡對戰(zhàn)模式下實現(xiàn)的功能6</p><p>  3.3 系統(tǒng)功能設計7</p><p>  3.3.1 坦克大戰(zhàn)總體功能設計7</p><p>  3.3.2 TankClient類基本功能分析7

10、</p><p>  3.3.3 Tank類基本功能分析8</p><p>  3.3.4 Missile類基本功能分析9</p><p>  3.3.5 Explode類基本功能分析9</p><p>  3.3.6 服務器類基本功能分析10</p><p>  3.3.7 信息傳送類基本功能分析10<

11、;/p><p>  3.4 本章小結10</p><p>  第4章 系統(tǒng)實現(xiàn)11</p><p>  4.1 游戲主窗體實現(xiàn)11</p><p>  4.2 單機游戲的實現(xiàn)12</p><p>  4.3 聯(lián)機功能實現(xiàn)14</p><p>  4.4 本章小結17</

12、p><p>  第5章 總結與展望18</p><p>  5.1 總結18</p><p>  5.2 設計中的不足之處18</p><p>  5.3 展望18</p><p><b>  致 謝19</b></p><p><b>  參考文獻

13、20</b></p><p><b>  第1章 前言</b></p><p>  人類進入21世紀,全球一體化,互聯(lián)網(wǎng)就起到重要的作用,而且隨著互聯(lián)網(wǎng)的不斷發(fā)展,信息技術逐漸發(fā)展壯大,將成為網(wǎng)絡經(jīng)濟的核心。其中計算機、網(wǎng)絡通信的發(fā)展最為迅速。在現(xiàn)今電子信息高速發(fā)展的時代,網(wǎng)絡游戲已經(jīng)深入到人們的日常生活中,成為老少皆宜的娛樂方式。</p>

14、<p>  1.1 游戲設計的需求分析</p><p>  1.1.1 國內外電子網(wǎng)絡游戲的現(xiàn)狀</p><p>  游戲本身就是一種娛樂方式。自有人類文明的時候,就有了游戲,可以說游戲就是人們生活娛樂的一部分。在今天,借助于數(shù)字、電子、網(wǎng)絡、創(chuàng)意、編劇、美工、音樂……等等“先進”的道具,網(wǎng)絡游戲對于人們現(xiàn)實生活的虛擬達到了一個全新的境界,并且則在這新的境界上還原了游戲的

15、本源--人與人的互動。網(wǎng)絡游戲滿足了現(xiàn)代社會必須的溝通需求,無疑它應該是適合所有人的。</p><p>  國內網(wǎng)絡游戲市場,已經(jīng)坐擁了1000萬用戶且仍不斷增長的游戲玩家市場,百余款游戲也著實熱鬧,但也體現(xiàn)出國內玩家的相對固定和游戲種類的相對單一,雖說運營商的推廣手法也各具特點,可本質上的大同小異使得競爭空前慘烈,而由此誘發(fā)的種種問題更是招致了社會與媒體的不滿,阻礙了游戲產(chǎn)業(yè)的發(fā)展。網(wǎng)絡游戲市場的重新定位是最迫

16、切需要解決的問題。大型游戲機除了在大眾休閑娛樂方面,還在軍事、國防、醫(yī)療等方面有良好的發(fā)展前景。廣州大型游戲機所采用的尖端計算機圖形圖像技術、多樣化的軟件程序設計、成熟的機械和電子技術,被充分運用在軍事、國防及醫(yī)療等方面。例如,在軍事模擬對抗演習中,大型游戲機既可以模擬作戰(zhàn)現(xiàn)場的地形、軍力部署、天氣等情況,還可以進行多兵種戰(zhàn)術技能對抗訓練;在國防訓練方面,大型游戲機可以模擬坦克操縱、導彈發(fā)射、飛機駕駛、艦艇巡航等多種訓練任務;在醫(yī)療培訓

17、方面,大型游戲機擁有的全息三維立體投影技術,可以逼真地展示人體的各部分構造和器官,以上這些方面的應用,都顯示出大型游戲機在降低行業(yè)技能培訓成本的優(yōu)勢。</p><p>  1.1.2 本系統(tǒng)的現(xiàn)實意義</p><p>  游戲本身是一種娛樂方式,能帶給人們無盡的樂趣,而且游戲行業(yè)的發(fā)展還將會帶動眾多周邊產(chǎn)業(yè),如五金、塑料、機械、電子、 顯像管,高端機型甚至使用了40英寸以上的大屏幕背投、

18、液晶顯示器等,這些顯像設備不但要依賴國內眾多顯像管生產(chǎn)企業(yè)提供支持,更要針對游戲的內容進行深入開發(fā)和優(yōu)化,以適應游戲內容的飛速發(fā)展和變化,大大突破了傳統(tǒng)家電類顯像設備的限制,對國內顯像管制造企業(yè)的發(fā)展、創(chuàng)新具有極大的推動作用,大型游戲機的外部框體制造涉及工業(yè)設計、模具加工、五金加工、塑料成形、特殊印刷等工藝流程,由此帶動了一大批相關的零部件生產(chǎn)制造企業(yè),而這些企業(yè)均為生產(chǎn)密集型企業(yè),大幅度增加了勞動就業(yè)的需求。</p>&

19、lt;p>  1.1.3 本系統(tǒng)和其他開發(fā)游戲區(qū)別</p><p>  本系統(tǒng)的坦克大戰(zhàn)是基于Java語言設計開發(fā)的,具有高超的人工智能,精美的圖形處理,支持單機運行和網(wǎng)絡對戰(zhàn)的坦克射擊游戲。比之前網(wǎng)絡上實現(xiàn)的游戲更加方便,快捷,智能。游戲基本玩法較簡單,游戲可一人電腦作戰(zhàn),每次電腦方有坦克10輛,游戲以消滅全部敵方坦克過關為目的。在這過程中,坦克有機會得到血塊來添加生命值,從而變得更加強大,也能利用各種

20、有利地形來阻擊敵人。游戲設置了墻面,電腦方坦克不能穿越墻面射擊玩家坦克,而玩家坦克可隨意穿越墻面打擊電腦方坦克,這一游戲特權。還有給玩家坦克設置超級炮彈,當電腦方坦克數(shù)量過多時,玩家坦克可以發(fā)射超級炮彈打擊敵方。主要新增的功能簡單羅列如下:</p><p>  1、屏幕左上方顯示游戲狀態(tài),當玩家方坦克數(shù)全為零時則游戲結束;</p><p>  2、一般坦克只可在空地中或草叢中行走,不可通過

21、墻面等障礙物;</p><p>  3、游戲中打壞敵方坦克后,可能會在隨機位置隨機出現(xiàn)血塊獎勵,坦克經(jīng)過該位置可獲得相應加生命值獎勵;</p><p>  4、玩家坦克的游戲資格和電腦坦克不同。</p><p>  1.2 開發(fā)技術概述</p><p>  1.2.1 Java、C語言、C++三種主流編程技術比較</p>&

22、lt;p>  Java 語言是一種跨平臺,適合于分布式計算環(huán)境的面向對象編程語言。JAVA現(xiàn)在主要用在WEB開發(fā),手機游戲及一些平臺游戲的開發(fā),因為它具有很好的跨平臺性,在手機等各種電子產(chǎn)品上應用非常廣泛。</p><p>  C語言是一種面向過程編程,這就使得Java具有重用的特性,在開發(fā)速度上比C語言更快,但是在運行速度上卻是C更快,因為C屬于底層語言,它比JAVA更加親近機器,所以在許多系統(tǒng)開發(fā)上一般

23、是用C語言,比如我們常用的XP系統(tǒng)、LINUX系統(tǒng),都是C語言開發(fā)的。跨平臺的服務器端的嵌入式腳本語言。</p><p>  C++多用于游戲引擎、反病毒、硬件驅動以及一些對運行效率要求比較高的應用程序,比如數(shù)據(jù)庫管理系統(tǒng)。 C++語言在提供強大的功能的同時也提高了程序含BUG的可能性。 C++為了照顧大量的C語言使用者,而兼容了C,使得自身僅僅成為了帶類的C語言,多多少少影響了其面向對象的徹底性。</p&

24、gt;<p><b>  1.3 本章小結</b></p><p>  本章主要介紹了網(wǎng)絡游戲在國內外發(fā)展的現(xiàn)狀,現(xiàn)如今,網(wǎng)絡游戲市場的重新定位是最迫切需要解決的問題。本系統(tǒng)主要的現(xiàn)實意義,與其他游戲的區(qū)別和完善的一些功能。本文用Java語言、C語言、C++三種主流編程技術比較,闡述了使用Java語言編程的原因。</p><p>  第2章 相關技術

25、理論</p><p>  2.1 系統(tǒng)運行環(huán)境</p><p>  2.1.1 系統(tǒng)運行的軟件環(huán)境</p><p> ?。?)網(wǎng)絡服務器操作系統(tǒng):Windows XP;</p><p> ?。?)開發(fā)工具:eclipse3.2;</p><p> ?。?)運行環(huán)境:J2SDK 1.5;</p><

26、p> ?。?)編程語言:Java語言;</p><p>  2.1.2 系統(tǒng)運行的硬件環(huán)境</p><p> ?。?)CPU:Intel或者兼容微處理器,奔騰166MHz及其以上;</p><p> ?。?)內存:最低32MB,可以運行圖形界面的Java Application;最低48MB,可以運行Java Applet;內存不足,將會導致系統(tǒng)(尤其是服務器

27、)的性能大幅下降;</p><p> ?。?)硬盤:242 MB到80 GB及其以上;</p><p>  (4)圖形顯示卡:無要求;</p><p> ?。?)網(wǎng)卡:普通網(wǎng)卡,3Com OfficeConnect 10/100兆位網(wǎng)卡;</p><p><b>  2.2 相關理論</b></p>&l

28、t;p>  2.2.1 關于Eclipse的介紹</p><p>  Eclipse是一個主要針對Java項目開發(fā)所設計的【綜合性集成開發(fā)環(huán)境-Integrated Development Emironment,IDE】,最早是由Object Technologics International這家公司開發(fā),該公司于1996年被IBM并購后,將Eclipse改為Open Source software。它

29、最大的特點是:采用了插件的結構,通過下載安裝不同的插件,就可以實現(xiàn)不同類型的程序開發(fā)。利用eclipse開發(fā)項目,是可以提高項目的開發(fā)效率,因為它不但可以像傳統(tǒng)的一些編輯器一樣編寫代碼,而且還有自動找錯/糾錯功能、Debug調試和代碼自動生成等一些重要的功能,這使項目開發(fā)的效率得到了提升。Eclipse可以作為其他開發(fā)工具的平臺。工作區(qū)被存儲在磁盤上,并且對其他人是可見的。Eclipse3.2的大多數(shù)新特性都是Eclipse用戶需求的直

30、接結果。</p><p>  2.2.2 J2SE框架</p><p>  J2SE軟件是快速開發(fā)、部署關鍵任務和企業(yè)應用程序的首選解決方案。J2SE是基于Java跨平臺技術和強有力的安全模塊而開發(fā)的,其最新的特征和功能極大地提高了Java語言的伸縮性、靈活性、適用性,以及可靠性。J2SE特點:①良好的計算性能和縮放能力。J2SE提升了Java計算的性能與縮放能力,代表了Java技術的大

31、跨步進展。通過J2SE框架更簡易的步驟、花費更少的時間,采用Java技術開發(fā)與配置要求更高的應用了。J2SE在Java客戶機應用方面得到了重大性能提升?;赟wing的Java小程序和應用程序在圖形用戶界面(GUI)的響應速度上也大有提高。②跨平臺:J2SE是一個具有綜合性能的平臺,能使一個完整的、可縮放的高性能應用配置在任何種類的平臺上。③支持Web服務: J2SE對SSL、LDAP等業(yè)界標準技術也給予支持,因此保證了在不同平臺、系統(tǒng)

32、和環(huán)境間的互操作能力。J2SE支持XML技術和一整套安全服務,因此為基于各類標準的可互操作應用與服務的創(chuàng)建奠定了重要基礎。有了J2SE與Java Web Services Developer Pack的結合,開發(fā)商就能創(chuàng)建、測試和配置Web服務了</p><p>  Java之所以能夠發(fā)展得很快,是因為互聯(lián)網(wǎng)的發(fā)展非常快。從計算的結構來看,Java主要分三大類:第一是服務器端,這里就有了J2EE企業(yè)版;第二是桌面

33、PC,這一類用的是J2SE標準版;第三就是掌上電腦、移動設備,用的都是J2ME。但是,大部分非企業(yè)級軟件還是在J2SE上開發(fā)的比較多。首先,這是因為很多的應用軟件都是在J2SE上開發(fā)的;其次,J2SE是和J2EE兼容的,企業(yè)版是在標準版上的擴充,在J2SE的版本上開發(fā)的軟件,拿到企業(yè)的平臺上是一樣可以運行的;再次,一般開發(fā)還是在J2SE的環(huán)境上,只是說J2ME提供微型版的一個環(huán)境。在J2SE上虛擬出一個環(huán)境,開發(fā)出來的應用軟件是可以拿到

34、微型版上運行的。</p><p>  2.2.3 聯(lián)機通信機制</p><p>  網(wǎng)絡編程,簡單地理解就是兩臺計算機相互通信。其基本模型就是客戶機/服務器模型,也就是通信雙方中的一方必須提供一個固定的位置,而另一方只需要知道這個固定的位置,并且建立兩者之間的聯(lián)系,然后完成數(shù)據(jù)交換。這里提供固定位置的一方通常稱為服務器,而建立聯(lián)系的一方稱為客戶端。Socket(中文意思為插座),基于客戶

35、機/服務器的Soctet通信模式如圖2.1所示:</p><p>  圖2.1 基于客戶機/服務器的Soctet通信模式圖</p><p>  當客戶程序需要與服務器程序通訊的時候,客戶程序在客戶機創(chuàng)建一個socket對象,Socket類有幾個構造函數(shù)。兩個常用的構造函數(shù)是 Socket(InetAddress addr, int port) 和 Socket(String host, i

36、nt port),兩個構造函數(shù)都創(chuàng)建了一個基于Socket的連接服務器端流套接字的流套接字。兩個函數(shù)都通過參數(shù)port獲得服務器的端口號。假設已經(jīng)建立連接了,網(wǎng)絡API將在客戶端基于Socket的流套接字中捆綁客戶程序的IP地址和任意一個端口號,否則兩個函數(shù)都會拋出一個IOException對象。如果創(chuàng)建了一個Socket對象,那么它可能通過調用Socket的 getInputStream()方法從服務程序獲得輸入流讀傳送來的信息,也可

37、能通過調用Socket的 getOutputStream()方法獲得輸出流來發(fā)送消息。在讀寫活動完成之后,客戶程序調用close()方法關閉流和流套接字。</p><p>  2.2.4 Java圖形編程</p><p>  Java中的Graphics類是用于繪圖和顯示格式化文本的工具類。在Java程序中繪圖必須在一個窗口(容器)中進行,繪圖窗體經(jīng)常被設計為一個組件容器。一般首先在一個面

38、板中進行繪制,然后再將這個面板添加到顯示窗口中去。</p><p>  Graphics類是在Java.awt包中申明,顯示格式化文本和繪圖時通過調用Graphics類的draw()方法實現(xiàn)的,例如drawString(String),drawLine()等。繪圖采用的坐標系是原點在左上角,縱軸向下以像素為單位的坐標系。</p><p><b>  2.3 本章小結</b

39、></p><p>  在本章節(jié)中首先介紹了該系統(tǒng)的運行環(huán)境,值的注意的是軟件環(huán)境的配置,因為整個系統(tǒng)都是在虛擬環(huán)境下運行的,所以虛擬環(huán)境對于整個設計的調試和運行至關重要;其次對開發(fā)工具Eclipse3.2的簡單介紹,利用eclipse開發(fā)項目,是可以提高項目的開發(fā)效率。還有是對一些技術理論,J2SE框架,Java語言,系統(tǒng)運行所支持的操作系統(tǒng),聯(lián)機通信機制及Java圖形編程等理論做了簡單的介紹,為本系統(tǒng)后

40、期實現(xiàn)圖形化界面和網(wǎng)絡通信做了理論支持。</p><p><b>  第3章 系統(tǒng)設計</b></p><p>  3.1 系統(tǒng)可行性分析</p><p>  3.1.1 技術可行性</p><p>  Java語言自Sun公司于1995年5月正式發(fā)布以來,經(jīng)歷了出生、成長、成熟壯大的幾個階段,逐漸發(fā)展成為IT領域里的

41、主流計算模式,使用Java開發(fā)工具方便,容易實現(xiàn)。Java對開發(fā)網(wǎng)絡產(chǎn)品有它自己獨特的優(yōu)勢,網(wǎng)絡游戲也是其開發(fā)產(chǎn)物之一。本系統(tǒng)開發(fā)過程是利用Java編程語言和eclipse集成開發(fā)環(huán)境配合使用來實現(xiàn)的,它是基于TCP/UDP協(xié)議和Socket編程技術,建立以C/S為結構模式的娛樂性游戲平臺。</p><p>  3.1.2 經(jīng)濟可行性</p><p>  本設計的開發(fā)是基于JDK5.0和e

42、clipse3.2的,因為它們都是免費而且開源的軟件,所以實現(xiàn)本設計的成本就有所降低。隨著計算機、網(wǎng)絡通訊和信息技術的迅猛發(fā)展以及人類精神生活品質的提高,國際、國內的各種各樣的大型綜合游戲網(wǎng)站如雨后春筍般的發(fā)展起來。一款好的游戲帶來的經(jīng)濟效益可以說是不可估量的,比如現(xiàn)在網(wǎng)上最流行的魔獸世界、征途等大型網(wǎng)絡版游戲。本游戲既可單機運行,也可以是聯(lián)機版多人同時在線對戰(zhàn)。</p><p>  3.1.3 操作可行性<

43、;/p><p>  本設計是一個網(wǎng)絡版的游戲平臺,只是模擬了現(xiàn)在社會上的一些網(wǎng)絡游戲的部分功能,所以操作簡易,玩家不需要了解內部流程,只是和一般其他的網(wǎng)絡游戲一樣的操作即可開始游戲。相對于開發(fā)者而言,整個系統(tǒng)形成主要由JDK5.0虛擬環(huán)境和eclipse3.2共同完成,無需更多復雜的工具和服務器支持。</p><p>  3.2 系統(tǒng)需求分析</p><p>  3.2

44、.1 在人機對戰(zhàn)模式下實現(xiàn)的功能</p><p>  能夠發(fā)射子彈打擊敵人</p><p><b>  敵人能夠移動</b></p><p><b>  能夠模擬爆炸</b></p><p><b>  能夠產(chǎn)生障礙</b></p><p><b&

45、gt;  能夠增長生命</b></p><p>  3.2.2 在網(wǎng)絡對戰(zhàn)模式下實現(xiàn)的功能</p><p>  在人機對戰(zhàn)模式中實現(xiàn)功能基礎上,增加以下功能實現(xiàn)網(wǎng)絡對戰(zhàn)功能:</p><p>  1)添加網(wǎng)絡功能,使兩臺或者多臺不同計算機的玩家通過一定的網(wǎng)絡連接,加入到游戲中;</p><p>  2)能夠自主分組并選擇角色,填寫

46、自己的游戲信息,各個玩家之間實現(xiàn)網(wǎng)絡對戰(zhàn)功能,并且同是一方的坦克不能相互攻擊;</p><p>  3.3 系統(tǒng)功能設計</p><p>  3.3.1 坦克大戰(zhàn)總體功能設計</p><p>  坦克大戰(zhàn)游戲主要實現(xiàn)玩家參加游戲的整個流程,用戶登陸游戲客戶端選擇游戲模式,可分為單機模式和網(wǎng)絡對戰(zhàn)模式,選擇單機模式可以直接進入游戲狀態(tài);選擇網(wǎng)絡對戰(zhàn)模式,在啟動服務

47、器后,玩家需要選擇自己的角色,用戶名和ID等玩家相關資料,成功后使用其賬號進行登錄游戲(只有成功登錄的玩家才能參與網(wǎng)絡對戰(zhàn)游戲功能);登陸玩家就可以通過控制鍵盤操作,加入對戰(zhàn)游戲。整個網(wǎng)絡版坦克大戰(zhàn)游戲流程圖如圖3.1所示:</p><p>  圖3.1 網(wǎng)絡坦克大戰(zhàn)游戲流程</p><p>  3.3.2 TankClient類基本功能分析</p><p> 

48、 TankClient類是整個系統(tǒng)的核心部分,它承擔整個系統(tǒng)的所有可實現(xiàn)功能的調度工作。 是整個游戲運行的場所。TankClient類設計流程圖如圖3.2所示:</p><p>  圖3.2 TankClient類設計流程</p><p>  TankClient類是主類,通過調用其他類中封裝的方法來使整個系統(tǒng)運行起來,下面顯示TankClient與各個類之間的關系如圖3.3所示:<

49、;/p><p>  圖3.3 游戲系統(tǒng)類關聯(lián)圖</p><p>  3.3.3 Tank類基本功能分析</p><p>  Tank(坦克)類中,封裝了一些變量屬性,包括坦克自己的大?。╓IDTH,HRIGHT),運動速度(SPRRD_X:在x軸方向的速度;SPEED_Y:在Y軸方向的速度)、生命值控制(life)、坦克編號(id)、坦克名(name)、方向控制(di

50、r)、生死控制(live)、好壞控制(good)的變量等。Tank類中沒有main函數(shù),不是主類,它當中只封裝一些變量屬性和靜態(tài)方法,被TankClient類調用來實現(xiàn)坦克的一系列動作。Tank類中的主要方法羅列如下:</p><p> ?。?)getRect()方法</p><p>  public Rectangle getRect() {</p><p>  

51、return new Rectangle(x, y, this.WIDTH, this.HEIGHT);</p><p><b>  }</b></p><p>  Rectangle類是碰撞檢測的輔助類,通過得到子彈的x,y坐標和寬高度,檢測兩個矩形是否碰撞(相交);</p><p>  (2)draw()方法:負責將所有的活動在屏幕上畫出來

52、;</p><p> ?。?)move()方法:主要負責控制坦克的移動,包括8個方向(左,左上,上,右上,右,右下,下,左下)的控制以及給坦克一個移動的速度;</p><p>  (4)keyPressed()方法:設定使用鍵盤的“↑”“↓”“←”“→”鍵控制坦克移動;</p><p> ?。?)keyReleased()方法:處理按鍵抬起事件,抬起“CTRL”鍵時

53、,發(fā)射炮彈并加入新炮彈,能夠逐一發(fā)射每一發(fā)炮彈、抬起“A”鍵可以發(fā)射超級炮彈等功能;</p><p> ?。?)locationDirection()方法:定義了炮筒方向,可以向八個方向發(fā)射炮彈;</p><p> ?。?)fire()方法:處理發(fā)送子彈的方法;</p><p>  (8)bumpWithWall()方法:主要負責處理坦克撞墻事件;</p>

54、;<p>  (9)bumpWithTank()方法:主要到負責處理坦克和坦克相撞事件;</p><p>  3.3.4 Missile類基本功能分析</p><p>  Misslile(子彈)類和Tank類一樣,只封裝一些變量屬性和靜態(tài)方法,主要變量包括:子彈自己的大小(WIDTH,HRIGHT),運動速度(SPRRD_X:在x軸方向的速度;SPEED_Y:在Y軸方向的速

55、度)、子彈標示(ID)、所屬坦克的id號(TankId用于網(wǎng)絡版)等。Misslie類持有一個TankClient類(大管家)的引用tc,TankClient類要執(zhí)行發(fā)射炮彈操作時調用Missile類中的方法。Misslie類中的主要方法如下:</p><p>  draw()方法:負責畫出子彈的所有活動;</p><p>  move()方法:先判斷方向再移動,并給它一定的移動速度;&l

56、t;/p><p>  getRect()方法:負責取得子彈的外切方形,為碰撞檢測做準備;</p><p>  hitTan()方法:檢測子彈是否撞到坦克,若撞到返回true,否則返回false;</p><p>  hitTanks()方法:檢測是否撞到一系列坦克中的一個;</p><p>  hitWall()方法:檢測子彈和墻是否相撞。<

57、;/p><p>  3.3.5 Explode類基本功能分析</p><p>  Explode(爆炸)類也是一個只封裝自己的變量和方法的外部包裝類,沒有main方法,供TankClient主類需要時調用它的draw()方法,當子彈擊中坦克時需要產(chǎn)生爆炸。使用11張圖片重疊現(xiàn)實爆炸效果如3.4圖所示:</p><p><b>  圖3.4 爆炸圖</b

58、></p><p>  3.3.6 服務器類基本功能分析</p><p>  TankServer(服務器)類主要負責在網(wǎng)絡對戰(zhàn)游戲時維護各個在線玩家的基本信息,并動態(tài)的維護玩家列表。聯(lián)機模式下類關系圖如圖3.5所示:</p><p>  3.5 聯(lián)機模式類關聯(lián)圖</p><p>  3.3.7 信息傳送類基本功能分析</p&g

59、t;<p>  信息傳送類就是用來封裝客戶端和服務器端的交互信息。將網(wǎng)絡中傳遞的眾多信息封裝成可序列化的類,將會使程序有很好的可擴展性。</p><p><b>  3.4 本章小結</b></p><p>  本章首先對整個游戲設計進行了可行性分析,其次對游戲要達到怎么樣的需求,要實現(xiàn)哪些功能做以及實現(xiàn)這些功能設計到的類,最后再詳細的介紹了系統(tǒng)要實現(xiàn)

60、這些功能所涉及到的各個類之間的關系。</p><p><b>  第4章 系統(tǒng)實現(xiàn)</b></p><p>  4.1 游戲主窗體實現(xiàn)</p><p>  TankClient類負責畫出游戲主窗體,它是整個游戲運行和所有活動的場所。登陸主窗口后,主界面上包括兩個下拉菜單條,“游戲”和“幫助”,玩家點擊“游戲”菜單條下可以選擇游戲模式;“幫助

61、”下拉菜單條中有游戲說明和游戲操作,方便用戶了解游戲規(guī)則。為了游戲不至于太單調,還配置了背景音樂。除此之外,本設計優(yōu)點是TankClient類還封裝了一個update()方法,使用雙緩沖消除閃爍現(xiàn)象。因為刷新重畫頻率太快,paint()方法還沒有完成,會造成逐條顯示,影響系統(tǒng)的運行,所以解決辦法是創(chuàng)建一個虛擬屏幕,在屏幕的后面,在要畫的將所有的東西畫在虛擬屏幕上,也就是內存上,畫完之后一次性將虛擬屏幕上的內容貼到屏幕上,這樣就消除了閃爍

62、現(xiàn)象,用戶的眼睛便感覺不到閃爍了。TankClient類是整個系統(tǒng)的“大管家”,當要執(zhí)行某動作時,“大管家”只需要調用各個類中封裝好的方法,讓被調用的類自己去執(zhí)行它自己的方法,這更體現(xiàn)了面向對象的思想。游戲主窗體界面如圖4.1所示:</p><p>  圖4.1 游戲主窗口預覽效果圖</p><p>  實現(xiàn)虛擬屏幕消除閃爍的關鍵代碼如下:</p><p>  pu

63、blic void update(Graphics g) { //利用雙緩沖消除閃爍的效果</p><p>  if(offScreenImage == null) {</p><p>  offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);</p><p><b>  }

64、</b></p><p>  Graphics gOffScreen = offScreenImage.getGraphics();</p><p>  Color c = gOffScreen.getColor();</p><p>  gOffScreen.setColor(Color.BLACK);</p><p>  gO

65、ffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);</p><p>  gOffScreen.setColor(c);</p><p>  paint(gOffScreen);</p><p>  g.drawImage(offScreenImage,0,0,null);</p><p><

66、;b>  }</b></p><p>  4.2 單機游戲的實現(xiàn)</p><p>  游戲運行主界面,在下拉菜單中選擇單機游戲進入單人模式,通過鍵盤控制坦克運動,相互對戰(zhàn),當被打中時產(chǎn)生一個爆炸,屏幕左上方顯示游戲信息:子彈數(shù)目(出界就死亡)、爆炸數(shù)目、敵方坦克數(shù)目、玩家坦克生命值(當玩家坦克被擊中4次時,游戲結束)、玩家得分。其效果圖如圖4.2所示:</p>

67、;<p>  圖4.2 單機游戲模式主界面圖</p><p>  當玩家分數(shù)達到60分時可以使用超級炮彈,可同時向八個方向發(fā)射炮彈,效果如圖4.3所示:</p><p>  圖4.3 發(fā)射超級炮彈</p><p>  當玩家被炮彈擊中達到4次,而又沒有及時吃到增長生命的血塊時,提示游戲結束,可以選擇重新開始或退出該模式,效果如圖4.4 所示:<

68、/p><p>  圖4.4 玩家死亡時游戲界面</p><p>  4.3 聯(lián)機功能實現(xiàn)</p><p>  在本系統(tǒng)的實現(xiàn)過程中,在支持網(wǎng)絡對戰(zhàn)的服務器類的定義中需要使用ServerSocket類來響應多個客戶端連接請求,server服務器上需要兩大協(xié)議,一個是TCP,用來接收客戶端;另一個是UDP,用來轉發(fā)游戲的數(shù)據(jù)。Server類系統(tǒng)模型圖如圖4.5所示:&l

69、t;/p><p>  圖4.5 Server類系統(tǒng)簡單模型圖</p><p>  網(wǎng)絡游戲模式下,游戲主要在客戶端運行,啟動客戶端時玩家首先要填寫信息之后才能加入到游戲中去,先啟動服務器,紅色小方塊表示確定服務器已連接。如圖4.6所示:</p><p>  圖4.6 啟動服務器</p><p>  進入網(wǎng)絡模式,輸入信息:IP、Port、選擇

70、自己的角色【P(警)\B(匪)】,是玩家加入游戲的必填欄。游戲主界面圖如圖4.7所示:</p><p>  圖4.7 網(wǎng)絡版游戲玩家信息欄</p><p>  填寫好玩家信息,登陸后游戲主界面,進入游戲后,通過玩家坦克上方的ID號(單雙數(shù))和顏色(藍\紅)來區(qū)分敵友。游戲界面左上角顯示游戲的基本信息,包括玩家姓名,對戰(zhàn)坦克數(shù)等,如圖4.8所示:</p><p> 

71、 圖4.8 登陸網(wǎng)絡模式主界面</p><p>  多個玩家加入后,開始對戰(zhàn),在此模式中沒有吃血塊,添加生命值這一功能,所以一旦中彈就死亡被淘汰出局,各個玩家游戲界面上都能顯示實時動態(tài),效果如圖4.9所示:</p><p>  圖4.9 網(wǎng)絡版游戲對戰(zhàn)實時顯示圖</p><p>  網(wǎng)絡模式設計主要代碼如下:</p><p>  TankSe

72、rver(服務器)類代碼片段如下:</p><p>  public class TankServer {</p><p>  public static final int TCP_PORT = 8888; //TCP的監(jiān)聽端口</p><p>  public static final int UDP_PORT = 6666; //UDP的監(jiān)聽端口

73、</p><p>  public static int ID = 100;</p><p>  List<Client> clients = new ArrayList<Client>();</p><p>  public void strat() { //啟動服務器</p><

74、;p>  new Thread(new UDPThread()).start();</p><p>  ServerSocket ss = null;</p><p>  Socket s = null;</p><p><b>  try {</b></p><p>  ss = new ServerSocket

75、(TCP_PORT); </p><p>  } catch (IOException e) {</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p>  while(true) { //鏈接TCP

76、</p><p><b>  try {</b></p><p>  s = ss.accept();</p><p>  DataInputStream dis = new DataInputStream(s.getInputStream());</p><p>  int udpPort = dis.readInt(

77、);</p><p>  String IP = s.getInetAddress().getHostAddress();</p><p>  Client c = new Client(IP,udpPort);</p><p>  DataOutputStream dos = new DataOutputStream(s.getOutputStream());&l

78、t;/p><p>  dos.writeInt(ID++);</p><p>  clients.add(c);</p><p>  System.out.println("A Client Connected!Addr_"+IP+":"+s.getPort()+"_UDPPort:"+udpPort);<

79、;/p><p>  }catch(IOException e) {</p><p>  e.printStackTrace();</p><p><b>  }}}</b></p><p>  private class UDPThread implements Runnable { //建立一個UDP的接受和轉發(fā)線

80、程</p><p>  byte[] buf = new byte[1024];</p><p>  public void run() {</p><p>  DatagramSocket ds = null;</p><p>  try { ds = new DatagramSocket(UDP_PORT);</p>&l

81、t;p>  System.out.println("UDPThread started at PORT:"+UDP_PORT);</p><p>  while(ds != null) {</p><p>  DatagramPacket dp = new DatagramPacket(buf,buf.length);</p><p> 

82、 ds.receive(dp); //接受數(shù)據(jù)包</p><p>  for(int i=0;i<clients.size();i++) { //分別轉發(fā)給其他客戶端</p><p>  Client c = clients.get(i);</p><p>  dp.setSocketAddress(new I

83、netSocketAddress(c.IP, c.udpPort));//得到將要轉發(fā)的客戶端的IP地址和端口ds.send(dp);</p><p>  System.out.println("A Packet Sent to PORT:"+c.udpPort);}}</p><p>  } catch (SocketException e)

84、{</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  }</b>&

85、lt;/p><p><b>  4.4 本章小結</b></p><p>  本章主要介紹了該系統(tǒng)的實現(xiàn)和運行,分別敘述了在單機模式和網(wǎng)絡對戰(zhàn)模式下游戲的運行和調試過程。在單機模式下,玩家的游戲發(fā)射火力要比電腦隨機產(chǎn)生的坦克能力稍強一些,當分數(shù)值達到一定時,玩家可以發(fā)射超級炮彈。網(wǎng)絡模式下,注意一定要先啟動服務器,只有啟動服務器后,各個玩家才能加入游戲。到此為止,本設計

86、基本完成預期效果。</p><p>  第5章 總結與展望</p><p><b>  5.1 總結</b></p><p>  本次設計已是大學最后一次對專業(yè)知識的綜合實踐活動,同時也是我所做的工作量最大的一次作業(yè),因此從一開始我對本次畢業(yè)設計就給予了高度重視。從選題、收集資料、學習相關技術到實際編程,我都一絲不茍的對待了。當然其間我也走

87、了不少彎路,有時甚至需要推倒重來,但同時我也多次體會過克服困難后的成就感。</p><p>  通過這次畢業(yè)設計以及撰寫本畢業(yè)論文,我學會了一些編程技巧,而且對調試的錯誤有進一步的認識,有時候就一個小小的語法錯誤就會導致程序調試不通過。所以每個字符,每句程序都要認真對待。使用不同的編程環(huán)境,其效率完全不一樣,所以我選擇了Eclipse,它自動找錯/糾錯功能、Debug調試和代碼自動生成等一些重要的功能大大提高了我

88、的設計效率。對于設計論文,一定要注意格式,認識事情都有它的規(guī)則、規(guī)范,不能按個人喜好隨意改變。</p><p>  5.2 設計中的不足之處</p><p>  本系統(tǒng)實現(xiàn)了坦克游戲所應有的基本功能,但是由于時間和能力有限,還有一部分功能未能實現(xiàn),例如:外部文件讀取、地圖設定、升級、坦克的高級人工智能控制等,不能和現(xiàn)在Internet上各種坦克大戰(zhàn)游戲相媲美。還有就是對部分功能在設計過程

89、中未能做到更加完善,稍有瑕疵,游戲時偶爾還會產(chǎn)生閃爍現(xiàn)象,但是已經(jīng)盡力改善了。還有就是當運行網(wǎng)絡模式時,必須專門啟動服務器,而不是一鍵啟動。對于玩家里來說有點麻煩。</p><p><b>  5.3 展望</b></p><p>  本系統(tǒng)基本實現(xiàn)了坦克游戲所應有的基本功能,在大學中最后一次專攻式的學習了Java語言,使我對Java語言有了更深層次的理解,通過該游

90、戲設計,提高了我的編程能力,也讓我養(yǎng)成了良好的編程習慣。希望在今后自己能繼續(xù)對J2SE等技術進行深入的學習和研究。</p><p><b>  致 謝</b></p><p>  經(jīng)過三個多月的忙碌和工作,本次畢業(yè)設計業(yè)已完成了,作為一個本科生的畢業(yè)設計,由于經(jīng)驗的匱乏和業(yè)務邏輯的不熟悉,難免有許多考慮不周全和不完善的地方,但是在指導老師和宿舍同學的幫助下很多困難都得

91、以解決,所以在此本人要特別感謝他們對我的幫助。</p><p>  首先我要感謝我的指導老師林巧老師,感謝她在整個畢業(yè)設計過程中的指導,為我提示游戲設計的邏輯思路;為我提供參考書籍;為我提供了技術方面資料,而且在遇到問題的時候,總是鼓勵我去解決;尤其在論文格式的修改方面,讓我明白了要寫出一個標準的論文,它的格式的重要性,哪怕就算是一個標點符號都要符合其標準和格式要求。在設計的整個過程中從開題報告的確定到初稿的修改

92、,以及中期檢查,以及定稿的過程中都給予了我細心的指導。</p><p>  其次還要特別感謝大學四年來所有的老師,為我們打下計算機專業(yè)知識的基礎。以前總是覺得學的課程沒有什么用處,但是當真正用計算機來解決實際問題的時候,才知道每門課程的重要性,甚至覺得所學習的那些課程還遠遠不夠,所以以后還應該不斷的學習。也可以這么說要不是您們在大學四年中嚴格要求我們,現(xiàn)在要完成整個畢業(yè)設計那是根本不可能的。</p>

93、<p>  再次,感謝我們小組的幾位同學,在我遇到一些難以解決的問題時,給與我支持,鼓勵和幫助,在論文撰寫過程中,認真仔細的幫我修改,包括一些難以發(fā)覺的語法,符號錯誤,使我受益匪淺。</p><p>  最后感謝我的院系和我的母?!晾鐜煼秾W院四年來對我的精心培養(yǎng)。</p><p><b>  參考文獻</b></p><p> 

94、 [1] 姜志強編著. Java語言程序設計 [M].北京:電子工業(yè)出版社,2007</p><p>  [2] 侯俊杰編著. Java語言應用開發(fā)基礎 [M].</p><p>  [3] 孫更新, 賓晟, 呂婕編著. Java畢業(yè)設計指南與項目實踐 [M]. 北京:科技出版社,2007.</p><p>  [4] 杜江, 管佩森編著. Java使用編程100例

95、 [M]. 北京:中國貼到出版社,2004.</p><p>  [5] 殷兆麟編著. Java語言程序設計 [M]. 北京:高等教育出版社, 2002.</p><p>  [6] 侯俊杰編著. Java程序設計教程與實訓 [M]. 北京:科學出版社, 2005.</p><p>  [7] 趙強, 陳洪譯著. Java程序設計高級主題 [M]. 北京:北京大學出

96、版社,2004.</p><p>  [8] 《電腦編程技巧與維護》雜志社編著. Java編程技巧典型案例解析 [J]. 北京:中國電力出版社,2005</p><p>  [9]張基溫,朱嘉鋼,張景莉編著. Java程序開發(fā)教程 [M]. 北京:清華大學出版社,2002</p><p>  [10]丁來佳,周靜. 基于JAVA平臺事件驅動模型的研究與設計[J].

97、黃岡師范學院學報 , 2008,(S1) .</p><p>  Java-based Web version of Battle City Game Design</p><p><b>  Lv Yan</b></p><p>  (Department of Computer Science,class2,2006 YiLi Normal

98、 University, Yining 835000, Xinjiang)</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 the program

99、 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 screen refresh

100、 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; Socket class<

溫馨提示

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

評論

0/150

提交評論