畢業(yè)設(shè)計(jì)(論文)Java桌面游戲爭(zhēng)霸的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)Java桌面游戲爭(zhēng)霸的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)Java桌面游戲爭(zhēng)霸的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)Java桌面游戲爭(zhēng)霸的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)Java桌面游戲爭(zhēng)霸的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、畢業(yè)設(shè)計(jì)(論文)說(shuō)明書(shū)題 目: java桌面游戲爭(zhēng)霸 的設(shè)計(jì)與實(shí)現(xiàn) 畢業(yè)設(shè)計(jì)(論文)中文摘要java桌面游戲爭(zhēng)霸的設(shè)計(jì)與實(shí)現(xiàn)摘 要:隨著計(jì)算機(jī)日益普及,計(jì)算機(jī)已然成為人們?nèi)粘I畹囊徊糠值慕裉?,?jì)算機(jī)游戲也越來(lái)越成為人們生活中不可或缺的一部分??梢杂糜谟螒蜷_(kāi)發(fā)的計(jì)算機(jī)語(yǔ)言多種多樣,而java語(yǔ)言只是其中一種。然而java是現(xiàn)在全球最時(shí)髦的開(kāi)發(fā)工具之一,它擁有一套龐大且完善的類(lèi)庫(kù),內(nèi)置了其他語(yǔ)言需要靠庫(kù)甚至是操作系統(tǒng)才能支持的功能。java語(yǔ)言的大部分是為因特網(wǎng)設(shè)計(jì)的,所以,程序員可以很容易的用java編寫(xiě)并運(yùn)行基于web的游戲。本設(shè)計(jì)是一款基于java的桌面游戲軟件。本游戲的大體設(shè)計(jì)分為游戲引

2、擎設(shè)計(jì)和游戲界面設(shè)計(jì)兩個(gè)模塊,游戲引擎設(shè)計(jì)中主要涉及到了核心模塊core包、本地翻譯模塊translaition包、網(wǎng)絡(luò)模塊net包和人工智能模塊ai包的設(shè)計(jì)與實(shí)現(xiàn)。整個(gè)系統(tǒng)從操作簡(jiǎn)便、界面美觀、靈活實(shí)用的用戶(hù)要求為出發(fā)點(diǎn)。本文從游戲的背景研究和發(fā)展現(xiàn)狀開(kāi)始,詳細(xì)描述了整個(gè)游戲的制作過(guò)程。對(duì)實(shí)現(xiàn)的主要功能以及操作過(guò)程進(jìn)行了重點(diǎn)討論,開(kāi)發(fā)用到了java類(lèi)庫(kù)中的很多的包以及其中的類(lèi),例如java.io包、java.util包、包、javax.swing包、java.awt包等等,文中會(huì)對(duì)這些包和類(lèi)的用法進(jìn)行講解。關(guān)鍵詞:游戲 java語(yǔ)言 類(lèi)庫(kù) 人工智能 本地翻譯畢業(yè)設(shè)計(jì)(論文)外文摘要java

3、gamekings design and implementationabstract: with the increasing popularity of computer, the computer has become part of peoples daily life today, computer games have become an integral part of peoples lives. the language can be used in the computer game development is diversity, and the java langua

4、ge is only one of them. however, java is the most popular development tools of the world, it also has a huge sound library, built-in the function that the other language need to rely on library or even operating system. most part of the java language is designed for internet, so programmers can easi

5、ly use java to develop and run web-based games. this design is a desktop game software that based on java. the game s design is generally divided into the game engine design and game interface design, and the game engine design mainly related to the core module core package, local translation module

6、 translation package, network module net package and artificial intelligence module ai packages design and implementation. the entire system is from the simple operation, beautiful interface, a flexible and practical -users requirements as a starting point. this paper from the game background resear

7、ch and development status, a detailed description of the entire process of producing the game. implementation of the main functions and the operation of the process were discussed, the development used many packages and classes of the java library, such as the java.lang package, java.util package, j

8、avax.swing package, java.awt package and so on, the text will talk about the useage of the packages and classes.keywords: game; java language; library; artificial intelligence; local translators. 目 錄1 引言11.1 課題的研究背景與意義11.2java語(yǔ)言的特點(diǎn)和及其與游戲的結(jié)合11.2.1java語(yǔ)言的特點(diǎn)11.2.2java與網(wǎng)絡(luò)的結(jié)合21.3可行性的分析31.3.1技術(shù)可行性31.3.2經(jīng)濟(jì)

9、可行性41.3.3操作可行性41.3.4法律可行性42 需求分析42.1 系統(tǒng)初步分析42.1.1 用戶(hù)需求分析42.1.2 功能需求分析52.1.3 系統(tǒng)的可靠性和可用性需求分析52.2 數(shù)據(jù)流分析63總體設(shè)計(jì)73.1 系統(tǒng)開(kāi)發(fā)73.1.1系統(tǒng)開(kāi)發(fā)的原則73.1.2系統(tǒng)設(shè)計(jì)階段73.1.3結(jié)構(gòu)設(shè)計(jì)階段94 詳細(xì)設(shè)計(jì)134.1核心包的設(shè)計(jì)134.1.1card類(lèi)的設(shè)計(jì)與實(shí)現(xiàn):134.1.2continent類(lèi)的設(shè)計(jì)與實(shí)現(xiàn):144.1.3country類(lèi)的設(shè)計(jì)與實(shí)現(xiàn):164.1.4mission類(lèi)的設(shè)計(jì)與實(shí)現(xiàn):174.1.5player類(lèi)的設(shè)計(jì)與實(shí)現(xiàn):174.1.6statistic類(lèi)的設(shè)計(jì)與實(shí)

10、現(xiàn):184.2本地翻譯包的設(shè)計(jì)204.2.1translationboudle類(lèi)的設(shè)計(jì)與實(shí)現(xiàn)204.2.2maptranslator類(lèi)的設(shè)計(jì)與實(shí)現(xiàn)214.3網(wǎng)絡(luò)包的設(shè)計(jì)234.4人工智能包的設(shè)計(jì)274.5其他工具類(lèi)的設(shè)計(jì)304.6游戲界面的設(shè)計(jì)335 用戶(hù)使用手冊(cè)405.1 系統(tǒng)環(huán)境說(shuō)明405.2 系統(tǒng)簡(jiǎn)介405.2.1 系統(tǒng)特點(diǎn)405.2.2 操作方法405.3 游戲需要改進(jìn)的地方41結(jié) 論42致 謝43參 考 文 獻(xiàn)441 引言1.1 課題的研究背景與意義隨著計(jì)算機(jī)日益普及,計(jì)算機(jī)已然成為人們?nèi)粘I畹囊徊糠值慕裉欤?jì)算機(jī)游戲也越來(lái)越成為人們生活中不可或缺的元素。游戲可以簡(jiǎn)單地理解為調(diào)節(jié)人

11、們生活節(jié)奏和緩解人們生活壓力的一種手段?,F(xiàn)在理解的游戲基本意義都是娛樂(lè)性質(zhì)較濃,要有特定的行為模式,遵循一定規(guī)則以達(dá)到游戲者目的的行動(dòng)。游戲的最初目的就是讓游戲者(玩家)在游戲中得到放松。游戲一直存在于人類(lèi)活動(dòng)中,如今定義的游戲從早期的猜謎游戲,發(fā)展到如今的單機(jī)rpg游戲,網(wǎng)絡(luò)游戲等,已經(jīng)升華為更高級(jí)別意義上的娛樂(lè)活動(dòng),對(duì)人們的感官刺激也越發(fā)強(qiáng)烈,得到的樂(lè)趣也更多。而對(duì)于編寫(xiě)游戲而言,java終于變得足夠成熟了(java的語(yǔ)言特性和其與游戲的結(jié)合請(qǐng)見(jiàn)下一小節(jié))。它現(xiàn)在是一種開(kāi)發(fā)能夠在多種平臺(tái)上運(yùn)行的中小型游戲的很好的方式。此外,java支持和其他的庫(kù)一起工作,而且它的速度變得越來(lái)越快。java

12、并不是以游戲編程為目的而被開(kāi)發(fā)的,事實(shí)上,游戲編程可能是java創(chuàng)造者心中的最后一個(gè)目標(biāo)。在過(guò)去,妨礙java發(fā)展的是它的運(yùn)行環(huán)境;瀏覽器和java類(lèi)庫(kù)一起從本質(zhì)上決定了java應(yīng)該用來(lái)寫(xiě)哪種類(lèi)型的應(yīng)用程序,而高速的游戲和圖象則不在其中。這給java帶來(lái)了不好的影響,因?yàn)槿藗冏⒁獾牟皇钦Z(yǔ)言,而是它的運(yùn)行環(huán)境。現(xiàn)在,瀏覽器已經(jīng)不能控制一切了,java作為游戲編程語(yǔ)言的另一個(gè)機(jī)會(huì)到來(lái)了。java在過(guò)去有一點(diǎn)超前于它的時(shí)代,當(dāng)時(shí)市場(chǎng)的動(dòng)力落后于java,但是現(xiàn)在java可以而且已經(jīng)取得成功。據(jù)悉,中國(guó)民族網(wǎng)絡(luò)游戲出版工程將在5年內(nèi)出版100種大型民族網(wǎng)絡(luò)游戲,總投資預(yù)計(jì)超過(guò)3億元。信息產(chǎn)業(yè)部已將網(wǎng)絡(luò)

13、游戲通用引擎研究及示范產(chǎn)品納入國(guó)家“863計(jì)劃”,這是中國(guó)首次將網(wǎng)絡(luò)游戲技術(shù)納入國(guó)家科技計(jì)劃。文化部也向國(guó)內(nèi)12家在網(wǎng)絡(luò)游戲業(yè)的實(shí)力廠商首批頒發(fā)了網(wǎng)絡(luò)文化經(jīng)營(yíng)許可證,加大對(duì)網(wǎng)絡(luò)游戲的監(jiān)管力度,進(jìn)口游戲?qū)彶橹?,限制?guó)內(nèi)對(duì)國(guó)外的受理措施??萍疾恐贫萍及l(fā)展規(guī)劃,將把網(wǎng)絡(luò)游戲納入現(xiàn)代服務(wù)業(yè)并加以扶持。政府態(tài)度和政策都是一種信號(hào),表明2005年對(duì)本土網(wǎng)絡(luò)游戲的扶持力度將加大;國(guó)內(nèi)游戲廠商將可獲得發(fā)展的核心技術(shù)平臺(tái);政策有利于保護(hù)中國(guó)游戲軟件的自主知識(shí)產(chǎn)權(quán);這為網(wǎng)絡(luò)游戲發(fā)展創(chuàng)造了良好的政策環(huán)境。而java的創(chuàng)建者把java稱(chēng)為“網(wǎng)絡(luò)編程語(yǔ)言”,且由于java游戲一般來(lái)說(shuō)簡(jiǎn)單有趣,并且對(duì)用戶(hù)硬件要求極小,

14、所以java游戲通常對(duì)85%的計(jì)算機(jī)用戶(hù)都有吸引力。1.2 java語(yǔ)言的特點(diǎn)和及其與游戲的結(jié)合1.2.1 java語(yǔ)言的特點(diǎn)java能夠取得如此的成功,是因?yàn)樗谠O(shè)計(jì)時(shí)的目標(biāo)就定位在要解決當(dāng)今程序員們所面臨的眾多問(wèn)題。java的基本目標(biāo)之一就是要提高生產(chǎn)率。生產(chǎn)率來(lái)源于許多方面,但是java希望在語(yǔ)言方面相對(duì)于它的前輩有明顯的提高,從而為程序員提供更大的便利。1.系統(tǒng)易于表達(dá)、易于理解被設(shè)計(jì)用來(lái)適應(yīng)問(wèn)題的“類(lèi)”,在表達(dá)問(wèn)題的能力上顯得更強(qiáng)。這意味著當(dāng)你編寫(xiě)代碼時(shí),你是在用問(wèn)題空間的術(shù)語(yǔ),而不是計(jì)算機(jī)也就是解空間的術(shù)語(yǔ),來(lái)描述解決方案??梢杂酶邔拥母拍顏?lái)處理問(wèn)題,并且只用一行代碼就可以做更多

15、的事。易于表達(dá)所帶來(lái)的另一個(gè)好處就是易于維護(hù),維護(hù)在程序生命周期中所占的成本比例極大。如果程序易于理解,那么他必定易于維護(hù)。同時(shí),這也降低了創(chuàng)建和維護(hù)文檔的費(fèi)用。2.類(lèi)庫(kù)的巨大影響力創(chuàng)建程序最快捷的方式就是使用已經(jīng)編寫(xiě)好的代碼:類(lèi)庫(kù)。java的主要目標(biāo)之一就是要使類(lèi)庫(kù)更易于使用。這是通過(guò)將類(lèi)庫(kù)轉(zhuǎn)型為新的數(shù)據(jù)類(lèi)型來(lái)實(shí)現(xiàn)的,因此,引入類(lèi)庫(kù)意味著在語(yǔ)言中添加了新的數(shù)據(jù)類(lèi)型。因?yàn)閖ava編譯器會(huì)照管類(lèi)庫(kù)的使用方式確保正確地初始化和回收垃圾,并保證其他方法被正確地調(diào)用,因此,你只需專(zhuān)注于你想讓類(lèi)庫(kù)做些什么,而不必關(guān)心應(yīng)如何去做。3.錯(cuò)誤處理在c語(yǔ)言中,錯(cuò)誤處理一直是一個(gè)聲名狼籍的問(wèn)題,而且經(jīng)常被忽視經(jīng)常

16、只能靠上帝保佑了。如果你在構(gòu)建一個(gè)大型的、復(fù)雜的程序,那么沒(méi)有什么比在程序某處暗藏了一個(gè)錯(cuò)誤,而你卻沒(méi)有任何能夠暗示它在何處的線索更糟糕的事情了。java異常處理便是一種能夠確保錯(cuò)誤必須被報(bào)告,而且對(duì)此必須有所響應(yīng)的機(jī)制。4.大型程序設(shè)計(jì)許多傳統(tǒng)語(yǔ)言在程序大小和復(fù)雜度方面都有內(nèi)置的限制。例如,basic可能對(duì)某類(lèi)問(wèn)題的解決能力非常強(qiáng),可以快速地創(chuàng)建解決方案,但是如果程序長(zhǎng)度超過(guò)數(shù)頁(yè),或者超出該語(yǔ)言正常的題域之外,它就會(huì)像“在非常粘稠的液體中游泳”。它沒(méi)有明確的界線來(lái)表示何時(shí)你所使用的語(yǔ)言會(huì)導(dǎo)致最終的失敗,即使有這樣的界線,你也會(huì)忽視它。你總不能說(shuō):“我的basic程序太大了,我不得不用c來(lái)重寫(xiě)

17、它!”相反,你會(huì)試著將幾行代碼硬塞進(jìn)去,以便在程序中增加新功能。因此,不知不覺(jué)中,你就付出了額外的開(kāi)銷(xiāo)。java具備編寫(xiě)大型程序的能力也就是說(shuō),它消除了小型程序和大型程序之間的復(fù)雜度界線。在編寫(xiě)“hello,world”風(fēng)格的小應(yīng)用程序時(shí),你當(dāng)然不必使用oop,但是當(dāng)你需要用到時(shí),這些功能隨手可得。而且,對(duì)小型程序和大型程序,編譯器都會(huì)一視同仁地、積極地找出因bug而產(chǎn)生的錯(cuò)誤。1.2.2 java與網(wǎng)絡(luò)的結(jié)合java不僅是一種功能強(qiáng)大的、安全的、跨平臺(tái)的、國(guó)際化的編程語(yǔ)言,而且它還在不斷地被擴(kuò)展,以提供更多的 語(yǔ)言功能和類(lèi)庫(kù),能夠優(yōu)雅地處理在傳統(tǒng)編程語(yǔ)言中很難解決的問(wèn)題,例如線程、數(shù)據(jù)庫(kù)訪問(wèn)

18、、網(wǎng)絡(luò)編程和分部式計(jì)算。java是通過(guò)applet以及使用java web start來(lái)進(jìn)行客戶(hù)端編程的。applet是只在web瀏覽中器運(yùn)行的小程序,它是作為網(wǎng)頁(yè)的一部分而自動(dòng)下載的。當(dāng)applet被激活時(shí),它便開(kāi)始執(zhí)行一個(gè)程序,這正是它優(yōu)雅之處:它提供一種分發(fā)軟件的方法,一旦用戶(hù)需要客戶(hù)端軟件時(shí),就自動(dòng)從服務(wù)器把客戶(hù)端軟件分發(fā)給用戶(hù)。用戶(hù)獲取最新版本的客戶(hù)端軟件時(shí)不會(huì)產(chǎn)生錯(cuò)誤,而且也不需要很麻煩的重新安裝過(guò)程。java的這種設(shè)計(jì)方式,使得程序員只需創(chuàng)建單一的程序,而只要一臺(tái)計(jì)算機(jī)有瀏覽器,且瀏覽器具有內(nèi)置的java解釋器,那么這個(gè)程序就可以自動(dòng)在這臺(tái)計(jì)算機(jī)上運(yùn)行。由于java是一種成熟的編

19、程語(yǔ)言,所以在提出對(duì)服務(wù)器的請(qǐng)求之前和之后,可以在客戶(hù)端盡可能多地多做些事情。例如,不必跨網(wǎng)絡(luò)地發(fā)送一張請(qǐng)求表單來(lái)檢查自己是否填寫(xiě)了錯(cuò)誤的日期或其他參數(shù),客戶(hù)端計(jì)算機(jī)就可以快速地標(biāo)出錯(cuò)誤數(shù)據(jù),而不用等待服務(wù)器作出標(biāo)記并給你傳回圖片。這不僅立即就獲得了高速度和快速的響應(yīng)能力,而且也降低了網(wǎng)絡(luò)流量和服務(wù)器負(fù)載,從而不會(huì)使整個(gè)internet的速度都慢下來(lái)。java applet勝過(guò)腳本語(yǔ)言程序的優(yōu)勢(shì)之一就是,它是以被編譯過(guò)的形式存在的,因此其源代碼對(duì)客戶(hù)端來(lái)說(shuō)是不可見(jiàn)的。另一方面,雖然反編譯java applet并不需要花費(fèi)多少力氣,但是隱藏你的代碼通常并不是一個(gè)重要的話題。有另外兩個(gè)因素很重要。

20、如果編譯過(guò)的applet很大的話,那么就需要額外的時(shí)間去下載它。腳本語(yǔ)言程序只是被作為web頁(yè)面的一部分文本而集成到了web頁(yè)面中。這對(duì)web網(wǎng)站的響應(yīng)能力來(lái)說(shuō)很重要。另一個(gè)因素是非常重要的“學(xué)習(xí)曲線”問(wèn)題。如果你是一個(gè)visual basic程序員,那么轉(zhuǎn)而學(xué)習(xí)vbscript可能是最快的解決方案,而且由于它或許能夠解決大多數(shù)典型的客戶(hù)/服務(wù)器問(wèn)題,所以你可能很難對(duì)學(xué)習(xí)java報(bào)以公正的態(tài)度。如果你已經(jīng)對(duì)腳本語(yǔ)言很有經(jīng)驗(yàn)了,那么你在考慮使用java之前,應(yīng)該先看看javascript是否滿(mǎn)足你的要求,這樣對(duì)你會(huì)很有好處,因?yàn)樗鼈兡軌蚋奖愕貪M(mǎn)足你的要求,而且使你更具生產(chǎn)力。java引起人們的

21、注意很大程度上始于applet。java確實(shí)是一種通用的編程語(yǔ)言,至少在理論上可以解決各種其他語(yǔ)言能夠解決的問(wèn)題。正像前面指出的那樣,可能存在其他更有效的方式去解決客戶(hù)/服務(wù)器問(wèn)題。當(dāng)你離開(kāi)applet的競(jìng)技場(chǎng)時(shí),你便步入了通用應(yīng)用系統(tǒng)的世界,這里的系統(tǒng)都是獨(dú)立運(yùn)行的,不需要瀏覽器,就像其他普通程序一樣。在這里,java的威力不僅在于它的可移植性,還包括它的可編程性。java已經(jīng)具備了許多功能,讓你創(chuàng)建健壯的程序,而花費(fèi)的時(shí)間比使用java之前的任何編程語(yǔ)言都更少。不過(guò),這是好壞參半的事。為java帶來(lái)的改進(jìn),所付出的代價(jià)是降低了執(zhí)行速度。像任何語(yǔ)言一樣,java也具有不適合解決某類(lèi)問(wèn)題的天生

22、的限制。然而,java是快速進(jìn)化的語(yǔ)言,而且每當(dāng)發(fā)布一個(gè)新版本時(shí),它都會(huì)因?yàn)槟軌蚪鉀Q更多的問(wèn)題而變得越來(lái)越具有吸引力。1.3 可行性的分析可行性研究的目的,就是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問(wèn)題是否能夠解決。要達(dá)到這個(gè)目的,必須分析幾種主要的可能解法的利弊,從而判斷原定的系統(tǒng)規(guī)模和目標(biāo)是否現(xiàn)實(shí),系統(tǒng)完成后所能帶來(lái)的效益是否大到值得投資開(kāi)發(fā)這個(gè)系統(tǒng)的程度。因此,可行性研究實(shí)質(zhì)上是要進(jìn)行一次大大壓縮簡(jiǎn)化了的系統(tǒng)分析和設(shè)計(jì)的過(guò)程,也就是在較高層次上以較抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計(jì)的過(guò)程。1.3.1 技術(shù)可行性本游戲是在windows xp環(huán)境下開(kāi)發(fā)的,一般的機(jī)器配置就可以了,對(duì)機(jī)器本身沒(méi)有太高

23、的要求,一般當(dāng)前學(xué)校或個(gè)人電腦完全可滿(mǎn)足要求,環(huán)境只需裝上jdk 1.4或以上版本就行了,java是現(xiàn)在全球最時(shí)髦的開(kāi)發(fā)工具之一,它擁有一套龐大且完善的類(lèi)庫(kù),內(nèi)置了其他語(yǔ)言需要靠庫(kù)甚至是操作系統(tǒng)才能支持的功能,擁有一個(gè)虛擬機(jī)。neatbeans ide 5.5是sun公司開(kāi)發(fā)的java可視化集成開(kāi)發(fā)工具,是目前最優(yōu)秀的java集成開(kāi)發(fā)工具之一。1.3.2 經(jīng)濟(jì)可行性由于本系統(tǒng)使用到的工具一般機(jī)器都具備,使用環(huán)境也很簡(jiǎn)單,開(kāi)發(fā)成本低,本課題研究的內(nèi)容是涉及網(wǎng)絡(luò)的游戲?qū)?zhàn)。當(dāng)今形式下網(wǎng)絡(luò)游戲儼然已經(jīng)成為年輕人最時(shí)興的消費(fèi)方式之一,java一直以來(lái)由于其可以“跨平臺(tái)”以及“一次編譯,到處運(yùn)行”等特點(diǎn)

24、,許多人直接它為網(wǎng)絡(luò)編程語(yǔ)言,且由于java游戲一般來(lái)說(shuō)簡(jiǎn)單有趣,并且對(duì)用戶(hù)硬件要求極小,所以java游戲通常對(duì)85%的計(jì)算機(jī)用戶(hù)都有吸引力。且政府態(tài)度和政策都是一種信號(hào),表明2005年對(duì)本土網(wǎng)絡(luò)游戲的扶持力度將加大;國(guó)內(nèi)游戲廠商將可獲得發(fā)展的核心技術(shù)平臺(tái);政策有利于保護(hù)中國(guó)游戲軟件的自主知識(shí)產(chǎn)權(quán);這為網(wǎng)絡(luò)游戲發(fā)展創(chuàng)造了良好的政策環(huán)境。1.3.3 操作可行性由于在整個(gè)系統(tǒng)的開(kāi)發(fā)過(guò)程中從操作簡(jiǎn)便、界面美觀、靈活實(shí)用的用戶(hù)要求為出發(fā)點(diǎn),界面設(shè)計(jì)時(shí)充分考慮玩家的感受,界面比較直觀,交互性很好,所以操作起來(lái)簡(jiǎn)單明了。1.3.4 法律可行性信息產(chǎn)業(yè)部已將網(wǎng)絡(luò)游戲通用引擎研究及示范產(chǎn)品納入國(guó)家“863計(jì)劃

25、”,這是中國(guó)首次將網(wǎng)絡(luò)游戲技術(shù)納入國(guó)家科技計(jì)劃。文化部也向國(guó)內(nèi)12家在網(wǎng)絡(luò)游戲業(yè)的實(shí)力廠商首批頒發(fā)了網(wǎng)絡(luò)文化經(jīng)營(yíng)許可證,加大對(duì)網(wǎng)絡(luò)游戲的監(jiān)管力度,進(jìn)口游戲?qū)彶橹疲拗茋?guó)內(nèi)對(duì)國(guó)外的受理措施??萍疾恐贫萍及l(fā)展規(guī)劃,將把網(wǎng)絡(luò)游戲納入現(xiàn)代服務(wù)業(yè)并加以扶持。政府態(tài)度和政策都是一種信號(hào),表明2005年對(duì)本土網(wǎng)絡(luò)游戲的扶持力度將加大;國(guó)內(nèi)游戲廠商將可獲得發(fā)展的核心技術(shù)平臺(tái);政策有利于保護(hù)中國(guó)游戲軟件的自主知識(shí)產(chǎn)權(quán);這為網(wǎng)絡(luò)游戲發(fā)展創(chuàng)造了良好的政策環(huán)境。2 需求分析所謂系統(tǒng)分析,就是指在整個(gè)系統(tǒng)開(kāi)發(fā)工程中,解決“做什么”的問(wèn)題,把要解決哪些問(wèn)題,滿(mǎn)足用戶(hù)哪些具體的信息需求調(diào)查分析清楚,從邏輯上或是說(shuō)從信息處

26、理的功能需求上提出系統(tǒng)的方案,即邏輯模型,為下一階段進(jìn)行物理方案設(shè)計(jì),解決怎么辦提供依據(jù)。2.1 系統(tǒng)初步分析2.1.1 用戶(hù)需求分析隨著internet的發(fā)展,進(jìn)入信息時(shí)代后快速獲得網(wǎng)絡(luò)共享資源成為很簡(jiǎn)單的事情,人們對(duì)互聯(lián)網(wǎng)也有了很大的依賴(lài)性。網(wǎng)絡(luò)的普及化使得原本單人的游戲已經(jīng)不能適應(yīng)人們的需要,廣大的游戲者迫切需要能夠和身在異地的朋友一起享受游戲的樂(lè)趣。在這種環(huán)境下,網(wǎng)絡(luò)游戲應(yīng)運(yùn)而生,越來(lái)越多的游戲者投身到網(wǎng)絡(luò)游戲中。這樣帶來(lái)的問(wèn)題自然成為越來(lái)越多的游戲研究者將研究方向轉(zhuǎn)為網(wǎng)絡(luò)游戲的研究。據(jù)目前的網(wǎng)絡(luò)游戲的調(diào)研來(lái)看,以運(yùn)動(dòng)休閑為主的運(yùn)動(dòng)類(lèi)游戲正在受到越來(lái)越多玩家的支持和愛(ài)戴。但是此類(lèi)網(wǎng)絡(luò)游

27、戲中,由java開(kāi)發(fā)的網(wǎng)絡(luò)游戲仍然是一個(gè)空白頁(yè),但是它卻是一個(gè)迫切需要填補(bǔ)的空白頁(yè)。而java由于其天生的語(yǔ)言特性(請(qǐng)見(jiàn)1.2節(jié)),很適合用于開(kāi)發(fā)網(wǎng)絡(luò)游戲,但由于系統(tǒng)環(huán)境的問(wèn)題使得它一直以來(lái)未能用于游戲開(kāi)發(fā),而近來(lái)由于java的發(fā)展,它已經(jīng)擺脫了束縛,浮出了游戲開(kāi)發(fā)的水面,若能在網(wǎng)絡(luò)上出現(xiàn)高要求多人互動(dòng)的java游戲,它將是一項(xiàng)極為偉大的發(fā)展。這也正是現(xiàn)在許多玩家迫切要求的。2.1.2 功能需求分析系統(tǒng)功能的需求指定系統(tǒng)必須提供的服務(wù)。通過(guò)需求分析應(yīng)該劃分出系統(tǒng)必須完成的所有功能。本作的功能模塊主要包括游戲的引擎設(shè)計(jì),游戲的界面設(shè)計(jì)。1.游戲的引擎設(shè)計(jì)的需求分析:游戲引擎是游戲的靈魂,也就是這

28、個(gè)游戲的框架,它的好壞直接決定著游戲的質(zhì)量。它是控制所有游戲功能的主程序,包括畫(huà)面的處理,人工智能的實(shí)現(xiàn),接受玩家的設(shè)置,以及網(wǎng)絡(luò)聯(lián)機(jī)的實(shí)現(xiàn)等等。所以鑒定一個(gè)游戲的好壞,從內(nèi)部設(shè)計(jì)的原因上說(shuō)來(lái),是從游戲的引擎設(shè)計(jì)體現(xiàn)出來(lái)的。一個(gè)游戲的引擎設(shè)計(jì),直接關(guān)系到游戲設(shè)計(jì)的其他方面,諸如游戲的圖形系統(tǒng)、聲音系統(tǒng)及設(shè)計(jì)的物理模塊等等各個(gè)方面。就如一臺(tái)電腦需要cpu一樣,游戲的引擎也是直接牽制著整個(gè)游戲的設(shè)計(jì)。它的主要作用就是處理游戲中的事件,運(yùn)行游戲中的圖象,輸出聲音及畫(huà)面,調(diào)整游戲的節(jié)奏,響應(yīng)玩家的游戲監(jiān)聽(tīng)事件等等。所以,游戲的引擎設(shè)計(jì)是必要的功能模塊,而且游戲的引擎設(shè)計(jì)必須做好,以使得游戲更具有可玩性

29、。游戲程序是一項(xiàng)精度要求很高的程序系統(tǒng),因?yàn)槠浯a利用率很高。一個(gè)實(shí)時(shí)運(yùn)行的最終作品,每秒都會(huì)運(yùn)行成千上萬(wàn)行程序,繪圖事件等都會(huì)以極高的頻率在后臺(tái)等待響應(yīng),若有絲毫的差別都將很容易導(dǎo)致程序在運(yùn)行不久后可能出現(xiàn)嚴(yán)重錯(cuò)誤,甚至死循環(huán)。因此,其邏輯設(shè)計(jì)應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計(jì)中。2游戲界面設(shè)計(jì)的需求分析:作為一個(gè)游戲吸引玩家的重要方面,游戲的界面要很漂亮,圖形動(dòng)畫(huà)的設(shè)計(jì)是非常必要的。本作將采用模擬動(dòng)畫(huà)的方式將戰(zhàn)爭(zhēng)展現(xiàn)在玩家眼前。設(shè)計(jì)出豐富的戰(zhàn)爭(zhēng)環(huán)境,游戲中為了美觀,適用性強(qiáng),需要采用外部文件引入的圖片貼圖,而java中提供了用于處理圖片的功能包,使得解決靜態(tài)或動(dòng)態(tài)、畫(huà)

30、面背景、屏幕刷新的雙緩沖等都有較好的解決方案。2.1.3 系統(tǒng)的可靠性和可用性需求分析可靠性需求定量地指定系統(tǒng)的可靠性。例如,游戲在運(yùn)行過(guò)程中不能頻繁發(fā)生錯(cuò)誤而不得不終止游戲??捎眯詣t與可靠性密切相關(guān),它量化了用戶(hù)可以使用系統(tǒng)的程度。例如,游戲的運(yùn)行必須保證隨時(shí)可以,不能在一段不使用的時(shí)間內(nèi),游戲產(chǎn)生不可預(yù)見(jiàn)的錯(cuò)誤而致無(wú)法運(yùn)行等等。2.2 數(shù)據(jù)流分析數(shù)據(jù)流程分析主要包括對(duì)信息的流動(dòng)、傳遞、處理、存儲(chǔ)等的分析。數(shù)據(jù)流程分析的目的就是要發(fā)現(xiàn)和解決數(shù)據(jù)流通中的問(wèn)題。通過(guò)對(duì)本系統(tǒng)的需求分析,確定了系統(tǒng)的基本功能。整個(gè)系統(tǒng)的數(shù)據(jù)流圖如圖2-1所示: 圖2-1 系統(tǒng)數(shù)據(jù)流程圖3總體設(shè)計(jì)總體設(shè)計(jì)過(guò)程通常由兩

31、個(gè)主要階段組成:系統(tǒng)設(shè)計(jì)階段,確定系統(tǒng)的具體實(shí)現(xiàn)方案;結(jié)構(gòu)設(shè)計(jì)階段,確定軟件結(jié)構(gòu)和功能模塊。3.1 系統(tǒng)開(kāi)發(fā)3.1.1系統(tǒng)開(kāi)發(fā)的原則經(jīng)過(guò)需求分析階段的工作,系統(tǒng)必須“做什么”已經(jīng)清楚了,現(xiàn)在是決定“怎么做”的時(shí)候了??傮w設(shè)計(jì)的基本目的就是回答“概括地說(shuō),系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?”這個(gè)問(wèn)題,因此,總體設(shè)計(jì)又稱(chēng)為概要設(shè)計(jì)或初步設(shè)計(jì)。通過(guò)這個(gè)階段的工作將劃分出組成系統(tǒng)的物理元素程序、文件、數(shù)據(jù)庫(kù)、人工過(guò)程和文檔等等,但是每個(gè)物理元素仍然處于黑盒子級(jí),這些黑盒子里的具體內(nèi)容將在以后仔細(xì)設(shè)計(jì)。總體設(shè)計(jì)階段的另一項(xiàng)重要任務(wù)是設(shè)計(jì)軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個(gè)程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。

32、總體設(shè)計(jì)過(guò)程首先尋找實(shí)現(xiàn)目標(biāo)系統(tǒng)的各種不同的方案,需求分析階段得到的數(shù)據(jù)流圖是設(shè)想各種可能方案的基礎(chǔ)。然后從這些供選擇的方案中選取若干合理的方案,為每個(gè)合理的方案都準(zhǔn)備一份系統(tǒng)流程圖,列出組成系統(tǒng)的所有物理元素,進(jìn)行成本/效益分析,并且指定實(shí)現(xiàn)此方案的進(jìn)度計(jì)劃。通常,設(shè)計(jì)出初步的軟件結(jié)構(gòu)后還要多方改進(jìn),從而得到更合理的結(jié)構(gòu),進(jìn)行必要的數(shù)據(jù)庫(kù)設(shè)計(jì),確定測(cè)試要求并且制定測(cè)試計(jì)劃?;谏厦娴臄⑹?,在詳細(xì)設(shè)計(jì)之前先進(jìn)行總體設(shè)計(jì)的必要性:可以站在全局高度上,花較少成本,從較抽象的層次上分析比對(duì)多種可能的系統(tǒng)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的軟件結(jié)構(gòu),從而用較低成本開(kāi)發(fā)出較高質(zhì)量的軟件系統(tǒng)。3.1

33、.2 系統(tǒng)設(shè)計(jì)階段系統(tǒng)設(shè)計(jì)階段的主要目的就是確定軟件如何做的問(wèn)題。主要任務(wù)就是確定系統(tǒng)中的大模塊和設(shè)計(jì)方法,確定軟件的功能模塊和模塊的作用,組成,關(guān)系等等。本系統(tǒng)是一款希望可以基于網(wǎng)絡(luò)的多人對(duì)戰(zhàn)游戲,當(dāng)游戲者打開(kāi)游戲,游戲界面打開(kāi),然后玩家可以選擇是進(jìn)行一輪新的游戲,還是選擇接著玩上次沒(méi)玩結(jié)束的游戲(如果先前已經(jīng)玩過(guò)該游戲,但沒(méi)有玩結(jié)束,有事了,并且保存了),只需要選擇載入游戲就可以;玩家還可以選擇是進(jìn)行單機(jī)游戲或是聯(lián)機(jī)游戲,如果選擇網(wǎng)絡(luò)聯(lián)機(jī)玩的話只需要啟動(dòng)服務(wù)器等待其他玩家加入就可以了;如果選擇了單機(jī)游戲,并選擇了進(jìn)行一輪新的游戲,則游戲會(huì)出現(xiàn)游戲設(shè)置界面,通過(guò)該界面玩家可以設(shè)置游戲的玩家數(shù)

34、量(2-6個(gè))以及游戲的難度,電腦玩家有簡(jiǎn)單智力的和高智力的,然后玩家可以選擇不同的卡片模式和不同的游戲模式(分為統(tǒng)治型、首都型和任務(wù)型),并且玩家可以選擇不同的游戲地圖,游戲的目標(biāo)是統(tǒng)治全世界,當(dāng)玩家設(shè)置好一切后,可以點(diǎn)擊開(kāi)始游戲,則游戲開(kāi)始。游戲開(kāi)始,游戲畫(huà)面是一張被分割成多個(gè)國(guó)家的地圖,每個(gè)玩家可以輪流在地圖上選擇自己的地盤(pán)和軍隊(duì)的布置,而電腦玩家也會(huì)自動(dòng)放置軍隊(duì),當(dāng)每個(gè)國(guó)家都被放上軍隊(duì)后,才可以重復(fù)在一個(gè)國(guó)家放置多余的軍隊(duì),當(dāng)默認(rèn)的所有軍隊(duì)全都放置好,然后玩家就可以開(kāi)始統(tǒng)一全球的戰(zhàn)爭(zhēng)游戲了,而當(dāng)一方的軍隊(duì)侵略另一邊時(shí),游戲程序通過(guò)一定的人工智能算法讓?xiě)?zhàn)爭(zhēng)的雙方分別產(chǎn)生隨機(jī)數(shù),然后進(jìn)行比

35、較,大的一方勝利,而當(dāng)進(jìn)攻者與防守者產(chǎn)生的數(shù)字一樣大時(shí),算是進(jìn)攻失敗,如果進(jìn)攻勝利,則勝者將占領(lǐng)該國(guó)家,并可以選擇留守該國(guó)家的軍隊(duì)數(shù),而等到下一輪到該玩家進(jìn)攻時(shí),可以根據(jù)該玩家在占領(lǐng)的領(lǐng)土來(lái)決定你可以增加多少軍隊(duì),以及你可以獲得的卡片,獲得的卡片可以用來(lái)交換軍隊(duì),最后占領(lǐng)全世界(消滅了其他兩個(gè)玩家)的為勝利者。在游戲過(guò)程中如果玩家突然有事無(wú)法繼續(xù)游戲,本游戲可以保存當(dāng)前游戲狀態(tài),當(dāng)玩家有時(shí)間時(shí)可以接下去游戲,而無(wú)需重新開(kāi)始,玩家也可以將自己的機(jī)器作為服務(wù)器,通過(guò)網(wǎng)絡(luò)與網(wǎng)絡(luò)上的其他玩家一起游戲。本游戲還具有統(tǒng)計(jì)的功能,在你游戲過(guò)程中或則游戲結(jié)束后你可以查看在本局游戲中各個(gè)玩家各個(gè)方面的戰(zhàn)績(jī)的統(tǒng)計(jì)

36、(例如每個(gè)玩家在游戲過(guò)程當(dāng)中所占領(lǐng)的國(guó)家數(shù)、軍隊(duì)數(shù)、摧毀數(shù)、傷亡數(shù)、受到進(jìn)攻的次數(shù)等等),游戲中還設(shè)置了控制臺(tái),玩家可以通過(guò)圖形顯示的按鈕進(jìn)行游戲,也可以通過(guò)命令來(lái)進(jìn)行游戲,在游戲菜單欄的幫助中,玩家可以選擇命令按扭來(lái)顯示出游戲中可用的命令菜單,玩家可以通過(guò)選擇其中的關(guān)于了解本游戲的一些信息。當(dāng)你贏的了游戲,游戲會(huì)告訴你,你勝利了!關(guān)于線程:對(duì)象技術(shù)提供了一種把程序劃分成若干獨(dú)立部分的方式。通常,還需要把程序轉(zhuǎn)換成彼此分離的、能獨(dú)立運(yùn)行的子任務(wù)。每一個(gè)這樣的獨(dú)立子任務(wù)都被稱(chēng)為一個(gè)“線程”。每個(gè)線程都好象是在獨(dú)立運(yùn)行并且有自己的cpu。cpu時(shí)間確實(shí)是通過(guò)某些底層機(jī)制進(jìn)行分配的,不過(guò)你一般不考慮

37、這些,這使得編寫(xiě)多線程程序的任務(wù)變得容易得多了。多線程有多種用途,不過(guò)通常用法是,程序中的某個(gè)部分與一個(gè)特定的事件或資源聯(lián)系在一起,而又不想讓這種聯(lián)系阻礙程序其余部分的運(yùn)行。這時(shí)候,可以創(chuàng)建一個(gè)與這個(gè)事件或者資源相關(guān)聯(lián)的線程,并且讓此線程獨(dú)立于主程序運(yùn)行。使用并發(fā)的最引人矚目的理由之一就是,產(chǎn)生一個(gè)可作出響應(yīng)的用戶(hù)界面??紤]一個(gè)程序,它要執(zhí)行某項(xiàng)強(qiáng)烈需用cpu的計(jì)算,這樣就會(huì)導(dǎo)致用戶(hù)的輸入被忽略,也就無(wú)法作出響應(yīng)。問(wèn)題的實(shí)質(zhì)是:程序需要一邊連續(xù)進(jìn)行計(jì)算,同時(shí)還要把控制權(quán)交給用戶(hù)界面,這樣程序才能響應(yīng)用戶(hù)的操作。并發(fā)還可以用來(lái)優(yōu)化吞吐量。比如,在等待數(shù)據(jù)到達(dá)輸入/輸出端口的同時(shí),可以進(jìn)行其他重要

38、的工作。要是不用線程的話,唯一可行的辦法就是不斷查詢(xún)輸入/輸出端口,這種方法不僅笨拙,而且很困難。線程模型為編程帶來(lái)了便利,它簡(jiǎn)化了在單一程序中同時(shí)交織在一起的多個(gè)操作的處理。在使用線程時(shí),cpu將輪流給每個(gè)線程分配其占用時(shí)間。每個(gè)線程都覺(jué)得自己在一直占用cpu ,但事實(shí)上cpu時(shí)間是劃分成片段分配給了所有線程。例外情況是程序運(yùn)行在具多個(gè)cpu的機(jī)器上,但線程的一大好處是可以使你從這個(gè)層次抽身出來(lái),即代碼不必知道它是運(yùn)行在具有一個(gè)還是多個(gè)cpu的機(jī)器上。所以線程是一種透明的、可擴(kuò)展的程序方法,如果程序運(yùn)行的太慢,為機(jī)器增添一個(gè)cpu就能很容易地加快程序的運(yùn)行速度。多任務(wù)和多線程往往是使用多處理

39、器系統(tǒng)的最合理方式。游戲中將在很多地方用到多線程,像在進(jìn)行網(wǎng)絡(luò)聯(lián)機(jī)時(shí)將會(huì)使用多線程來(lái)是兩個(gè)玩家可以同步進(jìn)行游戲,而圖形界面也通過(guò)多線程同時(shí)進(jìn)行多的程序的進(jìn)行。3.1.3 結(jié)構(gòu)設(shè)計(jì)階段1. 經(jīng)過(guò)系統(tǒng)設(shè)計(jì)階段的思考和實(shí)踐,需要對(duì)功能結(jié)構(gòu)進(jìn)行細(xì)致的劃分。一個(gè)程序的結(jié)構(gòu)設(shè)計(jì)的好壞也是決定其發(fā)展的重要指標(biāo)。對(duì)一個(gè)程序的模塊劃分往往也能使程序設(shè)計(jì)變得簡(jiǎn)單。本游戲的模塊大致分為游戲引擎和用戶(hù)界面兩大模塊而,游戲引擎模塊又分為核心包、ai包、網(wǎng)絡(luò)包、本地翻譯包、游戲控制類(lèi)等等,其功能模塊圖示如下:king游戲 游戲引擎用戶(hù)界面網(wǎng)絡(luò)模塊核心模塊游戲控制模塊ai模塊本地翻譯模塊圖3-1 系統(tǒng)功能模塊結(jié)構(gòu)圖功能模塊

40、介紹:king.engine.core包:其中包括了一些基本核心的類(lèi),例如像表示一個(gè)國(guó)家的country類(lèi),表示一個(gè)卡片的card類(lèi),表示一個(gè)版塊的continent類(lèi),表示一個(gè)玩家的player類(lèi)以及表示一個(gè)任務(wù)的mission類(lèi)等等。king.engine.ai包:其中包括了玩家可選擇的簡(jiǎn)單人工智能的電腦玩家和復(fù)雜人工智能的電腦玩家以及不同游戲類(lèi)型的不同玩家的人工智能。king.engine.translation包:其中包括了用于將游戲中的語(yǔ)言根據(jù)計(jì)算機(jī)所處的不同的國(guó)家翻譯成不同的語(yǔ)言的類(lèi)。包:其中包括了將游戲用于網(wǎng)絡(luò)聯(lián)機(jī)玩用到的類(lèi)。游戲控制模塊:主要包含一些我自己定義的一些接口和過(guò)濾器

41、類(lèi)等工具類(lèi)。系統(tǒng)用例圖見(jiàn)下頁(yè):圖3-2 系統(tǒng)用例圖游戲設(shè)置用例圖:圖3-3 游戲設(shè)置用例圖網(wǎng)絡(luò)聯(lián)機(jī)用例圖:圖3-4 網(wǎng)絡(luò)聯(lián)機(jī)游戲用例圖游戲用例圖:圖3-5 游戲用例圖2. 系統(tǒng)的主要uml圖見(jiàn)下頁(yè):圖3-2 risk類(lèi)的依賴(lài)關(guān)系圖圖3-3 swingguipanel類(lèi)的依賴(lài)關(guān)系圖圖3-4 rikgame類(lèi)的依賴(lài)關(guān)系圖4 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)階段的根本目標(biāo)是確定應(yīng)該怎樣具體地實(shí)現(xiàn)所要求的系統(tǒng),也就是說(shuō),經(jīng)過(guò)這個(gè)階段的設(shè)計(jì)工作,應(yīng)該得出對(duì)目標(biāo)系統(tǒng)的精確描述,從而在編碼階段可以把這個(gè)描述直接翻譯成用某種程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的程序。詳細(xì)設(shè)計(jì)的結(jié)果基本上決定了最終程序代碼的質(zhì)量。詳細(xì)設(shè)計(jì)的目標(biāo)不僅僅是邏輯上正確

42、地實(shí)現(xiàn)每個(gè)模塊的功能,更重要的是設(shè)計(jì)出的處理過(guò)程應(yīng)該盡可能簡(jiǎn)明易懂。結(jié)構(gòu)程序設(shè)計(jì)技術(shù)是實(shí)現(xiàn)上述目標(biāo)的關(guān)鍵技術(shù),因此是詳細(xì)設(shè)計(jì)的邏輯基礎(chǔ)。4.1 核心包的設(shè)計(jì)游戲中需要經(jīng)常用到的常有名詞有卡片、國(guó)家、任務(wù)、玩家、版塊、統(tǒng)計(jì)資料等等,所以我們由此可以確定這些基本的核心類(lèi):card、continent、country、mission、player、statistic;4.1.1 card類(lèi)的設(shè)計(jì)與實(shí)現(xiàn):在游戲過(guò)程中某一些國(guó)家中會(huì)有卡片,當(dāng)你沒(méi)占領(lǐng)了這樣的國(guó)家的時(shí)候,你就能獲得卡片,當(dāng)你獲得了幾張放在一起可以交易的卡片的時(shí)候你就可以用卡片換軍隊(duì)了,所以在該類(lèi)中有卡片的名字,所屬?lài)?guó)家等屬性,該類(lèi)的類(lèi)圖如

43、下所示:圖4-1 card類(lèi)的類(lèi)圖card類(lèi)的主要代碼如下:public class card implements serializable public card(string n, country t) name = n; country = t; public string getname() return name; public country getcountry() return country; 4.1.2 continent類(lèi)的設(shè)計(jì)與實(shí)現(xiàn):游戲中的圖片都是世界地圖,其中包括幾個(gè)洲,這些洲再分成一個(gè)一個(gè)國(guó)家,洲有自己的名字和顏色,并且每個(gè)洲都有它的對(duì)應(yīng)的價(jià)值的軍隊(duì)數(shù),當(dāng)你占領(lǐng)

44、了一個(gè)洲的時(shí)候,當(dāng)下一輪到你進(jìn)攻的時(shí)候,你可以獲得相應(yīng)數(shù)目的軍隊(duì),在其他對(duì)象訪問(wèn)該對(duì)象時(shí),可以獲得它的名字,顏色,價(jià)值軍隊(duì)數(shù)和所屬的玩家,其類(lèi)圖見(jiàn)圖4-2所示:圖4-2 continent類(lèi)的類(lèi)圖continent類(lèi)的主要代碼如下:public class continent implements serializable public boolean isowned(player p) int ownedbyplayer=0;for (int c=0; c territoriescontained.size() ; c+) if ( (country)territoriescontained

45、.elementat(c).getowner() = p ) ownedbyplayer+;if ( ownedbyplayer=territoriescontained.size() ) return true;else return false;if ( ownedbyplayer=territoriescontained.size() ) return true;else return false; 4.1.3 mission類(lèi)的設(shè)計(jì)與實(shí)現(xiàn):mission類(lèi)主要用來(lái)代表在不同模式的游戲當(dāng)中你的任務(wù),其類(lèi)圖如下所示:圖4-4 mission類(lèi)的類(lèi)圖4.1.4 country類(lèi)的設(shè)計(jì)與實(shí)現(xiàn):

46、在本游戲中就是以國(guó)家為基本單位的,所以它為最核心的類(lèi),大部分其他類(lèi)都需要訪問(wèn)它,其類(lèi)圖如下: 圖4-3 country類(lèi)的類(lèi)圖其中該類(lèi)通過(guò)其構(gòu)造函數(shù)構(gòu)造一個(gè)任務(wù)對(duì)象,傳遞的參數(shù)有:任務(wù)要消滅的敵人,需要占領(lǐng)的的國(guó)家數(shù),在一個(gè)版塊上需要的最少軍隊(duì)數(shù),第一個(gè)需要占領(lǐng)的國(guó)家,第二個(gè)需要占領(lǐng)的國(guó)家,第三個(gè)需要占領(lǐng)的國(guó)家以及任務(wù)的描述,其構(gòu)造函數(shù)代碼如下: public mission(player p, int noc, int noa, continent c1, continent c2, continent c3, string d) player = p;noofcountries = noc

47、;noofarmies = noa;con1 = c1;con2 = c2;con3 = c3;discription = d; 4.1.5 player類(lèi)的設(shè)計(jì)與實(shí)現(xiàn):玩家用來(lái)代表一個(gè)玩家對(duì)象,該類(lèi)也是游戲程序中所要用到的最基本的類(lèi),其中玩家的屬性有:名字,顏色,玩家任務(wù),玩家類(lèi)型等,為了后面的統(tǒng)計(jì)功能的實(shí)現(xiàn),還在其中增加了已經(jīng)消滅的敵人向量,所擁有的卡片,所擁有的版塊數(shù)等等,為了實(shí)現(xiàn)網(wǎng)絡(luò)聯(lián)機(jī)的功能,還增加了玩家的網(wǎng)絡(luò)地址等等。而玩家類(lèi)中有一些重要的方法,像在后面要實(shí)現(xiàn)卡片交易,必要能獲得玩家所擁有的卡片,還要判斷一下玩家多擁有的卡片是否可以進(jìn)行交易,以及為了實(shí)現(xiàn)網(wǎng)絡(luò)聯(lián)機(jī)要統(tǒng)計(jì)功能,必須要獲

48、得一些統(tǒng)計(jì)數(shù)據(jù)和玩家的網(wǎng)絡(luò)地址,具體代碼如下: public card takecard() card c=(card)cardsowned.firstelement();cardsowned.removeelementat(0); return c; public void tradeincards(card card1, card card2, card card3) int noaforcard = 2;/ 看看你是否可以從擁有的國(guó)家中獲得額外的軍隊(duì)if (territoriesowned.contains( card1.getcountry() ) ) (country)card1.g

49、etcountry().addarmies(noaforcard); currentstatistic.addreinforcements(noaforcard);else if (territoriesowned.contains( card2.getcountry() ) ) (country)card2.getcountry().addarmies(noaforcard); currentstatistic.addreinforcements(noaforcard);else if (territoriesowned.contains( card3.getcountry() ) ) (c

50、ountry)card3.getcountry().addarmies(noaforcard); currentstatistic.addreinforcements(noaforcard);cardsowned.remove(card1);cardsowned.remove(card2);cardsowned.remove(card3);cardsowned.trimtosize(); public void addplayerseliminated(player p) playerseliminated.add(p); public vector getplayerseliminated(

51、) return playerseliminated; 4.1.6 statistic類(lèi)的設(shè)計(jì)與實(shí)現(xiàn):統(tǒng)計(jì)類(lèi)主要是用來(lái)實(shí)現(xiàn)游戲的統(tǒng)計(jì)功能而設(shè)計(jì)的類(lèi),每個(gè)玩家擁有一個(gè)統(tǒng)計(jì)向量用來(lái)記錄一些數(shù)據(jù),給類(lèi)里面只要一個(gè)包含記錄各種數(shù)據(jù)的整形數(shù)組statistic屬性,統(tǒng)計(jì)數(shù)據(jù)有國(guó)家數(shù),軍隊(duì)數(shù),毀滅數(shù),傷亡數(shù),增強(qiáng)過(guò)程,大陸數(shù),國(guó)家數(shù),進(jìn)攻次數(shù),撤退次數(shù),勝利次數(shù)等等,該類(lèi)的類(lèi)圖如下所示:圖4-5 statistic類(lèi)的類(lèi)圖其中的重要方法有結(jié)束一輪進(jìn)攻進(jìn)行統(tǒng)計(jì)endgostatistics(int a, int b, int c, int d),向量中其他一些數(shù)據(jù)的計(jì)算方法,具體代碼如下:statistic

52、s向量中0位置記錄國(guó)家數(shù),1記錄軍隊(duì)數(shù),2記錄毀掉數(shù),3記錄傷亡數(shù),4記錄增強(qiáng)數(shù),5記錄大陸數(shù),6記錄帝國(guó)數(shù),7記錄進(jìn)攻次數(shù),8記錄撤退次數(shù),9記錄勝利的次數(shù),10記錄戰(zhàn)勝次數(shù),11記錄受到進(jìn)攻的次數(shù): public void endgostatistics(int a, int b, int c, int d) statistics0 = a;statistics1 = b;statistics5 = c;statistics6 = d; public void addreinforcements(int a) statistics4 = statistics4 + a; public vo

53、id addkill() statistics2+; public void addcasualty() statistics3+; public void addattack() statistics7+; public void addattacked() statistics11+; public void addretreat() statistics8+; public void addcountrieswon() statistics9+; public void addcountrieslost() statistics10+; 4.2 本地翻譯包的設(shè)計(jì)本包的設(shè)計(jì)是為了本游戲的國(guó)

54、際化,在游戲過(guò)程中可以通過(guò)本包中的類(lèi)實(shí)現(xiàn)語(yǔ)言的本地化,本包中包括兩個(gè)類(lèi):translationbundle和maptranslator。4.2.1 translationboudle類(lèi)的設(shè)計(jì)與實(shí)現(xiàn)該類(lèi)主要是用來(lái)獲得編寫(xiě)的資源包(這指語(yǔ)言包),然后該類(lèi)可以通過(guò)java api中的一些方法獲得該游戲所處系統(tǒng)的語(yǔ)言環(huán)境,然后將游戲中的語(yǔ)言變換成本地語(yǔ)言;該類(lèi)中主要用到了java.util.resourcebundle類(lèi),資源包包含特定于語(yǔ)言環(huán)境的對(duì)象。當(dāng)程序需要一個(gè)特定于語(yǔ)言環(huán)境的資源時(shí)(如 string),程序可以從適合當(dāng)前用戶(hù)語(yǔ)言環(huán)境的資源包中裝入它。以這種方式可以編寫(xiě)很大程度上獨(dú)立于用戶(hù)語(yǔ)言環(huán)境的程序代碼,它將資源包中大部分(如果不是全部)特定于語(yǔ)言環(huán)境的信息隔離開(kāi)來(lái)。 這就使您所編寫(xiě)的程序可以: 輕松地本地化或翻譯成不同的語(yǔ)言 一次處理多個(gè)語(yǔ)言環(huán)境 以后可以輕松地進(jìn)行修改,支持更多的語(yǔ)言環(huán)境 資源包屬于這樣的系列,其成員共享一個(gè)公共的基本名稱(chēng),但是名稱(chēng)中還有標(biāo)識(shí)其語(yǔ)言環(huán)境的其他組件

溫馨提示

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

評(píng)論

0/150

提交評(píng)論