版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢業(yè)設(shè)計(jì)(論文)說明書題 目: 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ī)游戲也越來越成為人們生活中不可或缺的一部分??梢杂糜谟螒蜷_發(fā)的計(jì)算機(jī)語言多種多樣,而java語言只是其中一種。然而java是現(xiàn)在全球最時(shí)髦的開發(fā)工具之一,它擁有一套龐大且完善的類庫(kù),內(nèi)置了其他語言需要靠庫(kù)甚至是操作系統(tǒng)才能支持的功能。java語言的大部分是為因特網(wǎng)設(shè)計(jì)的,所以,程序員可以很容易的用java編寫并運(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í)用的用戶要求為出發(fā)點(diǎn)。本文從游戲的背景研究和發(fā)展現(xiàn)狀開始,詳細(xì)描述了整個(gè)游戲的制作過程。對(duì)實(shí)現(xiàn)的主要功能以及操作過程進(jìn)行了重點(diǎn)討論,開發(fā)用到了java類庫(kù)中的很多的包以及其中的類,例如java.io包、java.util包、包、javax.swing包、java.awt包等等,文中會(huì)對(duì)這些包和類的用法進(jìn)行講解。關(guān)鍵詞:游戲 java語言 類庫(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語言的特點(diǎn)和及其與游戲的結(jié)合11.2.1java語言的特點(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 用戶需求分析42.1.2 功能需求分析52.1.3 系統(tǒng)的可靠性和可用性需求分析52.2 數(shù)據(jù)流分析63總體設(shè)計(jì)73.1 系統(tǒng)開發(fā)73.1.1系統(tǒng)開發(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類的設(shè)計(jì)與實(shí)現(xiàn):134.1.2continent類的設(shè)計(jì)與實(shí)現(xiàn):144.1.3country類的設(shè)計(jì)與實(shí)現(xiàn):164.1.4mission類的設(shè)計(jì)與實(shí)現(xiàn):174.1.5player類的設(shè)計(jì)與實(shí)現(xiàn):174.1.6statistic類的設(shè)計(jì)與實(shí)
10、現(xiàn):184.2本地翻譯包的設(shè)計(jì)204.2.1translationboudle類的設(shè)計(jì)與實(shí)現(xiàn)204.2.2maptranslator類的設(shè)計(jì)與實(shí)現(xiàn)214.3網(wǎng)絡(luò)包的設(shè)計(jì)234.4人工智能包的設(shè)計(jì)274.5其他工具類的設(shè)計(jì)304.6游戲界面的設(shè)計(jì)335 用戶使用手冊(cè)405.1 系統(tǒng)環(huán)境說明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ī)游戲也越來越成為人們生活中不可或缺的元素。游戲可以簡(jiǎn)單地理解為調(diào)節(jié)人
11、們生活節(jié)奏和緩解人們生活壓力的一種手段?,F(xiàn)在理解的游戲基本意義都是娛樂性質(zhì)較濃,要有特定的行為模式,遵循一定規(guī)則以達(dá)到游戲者目的的行動(dòng)。游戲的最初目的就是讓游戲者(玩家)在游戲中得到放松。游戲一直存在于人類活動(dòng)中,如今定義的游戲從早期的猜謎游戲,發(fā)展到如今的單機(jī)rpg游戲,網(wǎng)絡(luò)游戲等,已經(jīng)升華為更高級(jí)別意義上的娛樂活動(dòng),對(duì)人們的感官刺激也越發(fā)強(qiáng)烈,得到的樂趣也更多。而對(duì)于編寫游戲而言,java終于變得足夠成熟了(java的語言特性和其與游戲的結(jié)合請(qǐng)見下一小節(jié))。它現(xiàn)在是一種開發(fā)能夠在多種平臺(tái)上運(yùn)行的中小型游戲的很好的方式。此外,java支持和其他的庫(kù)一起工作,而且它的速度變得越來越快。java
12、并不是以游戲編程為目的而被開發(fā)的,事實(shí)上,游戲編程可能是java創(chuàng)造者心中的最后一個(gè)目標(biāo)。在過去,妨礙java發(fā)展的是它的運(yùn)行環(huán)境;瀏覽器和java類庫(kù)一起從本質(zhì)上決定了java應(yīng)該用來寫哪種類型的應(yīng)用程序,而高速的游戲和圖象則不在其中。這給java帶來了不好的影響,因?yàn)槿藗冏⒁獾牟皇钦Z言,而是它的運(yùn)行環(huán)境?,F(xiàn)在,瀏覽器已經(jīng)不能控制一切了,java作為游戲編程語言的另一個(gè)機(jī)會(huì)到來了。java在過去有一點(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ì)超過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ó)外的受理措施。科技部制定科技發(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稱為“網(wǎng)絡(luò)編程語言”,且由于java游戲一般來說簡(jiǎn)單有趣,并且對(duì)用戶硬件要求極小,
14、所以java游戲通常對(duì)85%的計(jì)算機(jī)用戶都有吸引力。1.2 java語言的特點(diǎn)和及其與游戲的結(jié)合1.2.1 java語言的特點(diǎn)java能夠取得如此的成功,是因?yàn)樗谠O(shè)計(jì)時(shí)的目標(biāo)就定位在要解決當(dāng)今程序員們所面臨的眾多問題。java的基本目標(biāo)之一就是要提高生產(chǎn)率。生產(chǎn)率來源于許多方面,但是java希望在語言方面相對(duì)于它的前輩有明顯的提高,從而為程序員提供更大的便利。1.系統(tǒng)易于表達(dá)、易于理解被設(shè)計(jì)用來適應(yīng)問題的“類”,在表達(dá)問題的能力上顯得更強(qiáng)。這意味著當(dāng)你編寫代碼時(shí),你是在用問題空間的術(shù)語,而不是計(jì)算機(jī)也就是解空間的術(shù)語,來描述解決方案??梢杂酶邔拥母拍顏硖幚韱栴},并且只用一行代碼就可以做更多
15、的事。易于表達(dá)所帶來的另一個(gè)好處就是易于維護(hù),維護(hù)在程序生命周期中所占的成本比例極大。如果程序易于理解,那么他必定易于維護(hù)。同時(shí),這也降低了創(chuàng)建和維護(hù)文檔的費(fèi)用。2.類庫(kù)的巨大影響力創(chuàng)建程序最快捷的方式就是使用已經(jīng)編寫好的代碼:類庫(kù)。java的主要目標(biāo)之一就是要使類庫(kù)更易于使用。這是通過將類庫(kù)轉(zhuǎn)型為新的數(shù)據(jù)類型來實(shí)現(xiàn)的,因此,引入類庫(kù)意味著在語言中添加了新的數(shù)據(jù)類型。因?yàn)閖ava編譯器會(huì)照管類庫(kù)的使用方式確保正確地初始化和回收垃圾,并保證其他方法被正確地調(diào)用,因此,你只需專注于你想讓類庫(kù)做些什么,而不必關(guān)心應(yīng)如何去做。3.錯(cuò)誤處理在c語言中,錯(cuò)誤處理一直是一個(gè)聲名狼籍的問題,而且經(jīng)常被忽視經(jīng)常
16、只能靠上帝保佑了。如果你在構(gòu)建一個(gè)大型的、復(fù)雜的程序,那么沒有什么比在程序某處暗藏了一個(gè)錯(cuò)誤,而你卻沒有任何能夠暗示它在何處的線索更糟糕的事情了。java異常處理便是一種能夠確保錯(cuò)誤必須被報(bào)告,而且對(duì)此必須有所響應(yīng)的機(jī)制。4.大型程序設(shè)計(jì)許多傳統(tǒng)語言在程序大小和復(fù)雜度方面都有內(nèi)置的限制。例如,basic可能對(duì)某類問題的解決能力非常強(qiáng),可以快速地創(chuàng)建解決方案,但是如果程序長(zhǎng)度超過數(shù)頁,或者超出該語言正常的題域之外,它就會(huì)像“在非常粘稠的液體中游泳”。它沒有明確的界線來表示何時(shí)你所使用的語言會(huì)導(dǎo)致最終的失敗,即使有這樣的界線,你也會(huì)忽視它。你總不能說:“我的basic程序太大了,我不得不用c來重寫
17、它!”相反,你會(huì)試著將幾行代碼硬塞進(jìn)去,以便在程序中增加新功能。因此,不知不覺中,你就付出了額外的開銷。java具備編寫大型程序的能力也就是說,它消除了小型程序和大型程序之間的復(fù)雜度界線。在編寫“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ó)際化的編程語言,而且它還在不斷地被擴(kuò)展,以提供更多的 語言功能和類庫(kù),能夠優(yōu)雅地處理在傳統(tǒng)編程語言中很難解決的問題,例如線程、數(shù)據(jù)庫(kù)訪問
18、、網(wǎng)絡(luò)編程和分部式計(jì)算。java是通過applet以及使用java web start來進(jìn)行客戶端編程的。applet是只在web瀏覽中器運(yùn)行的小程序,它是作為網(wǎng)頁的一部分而自動(dòng)下載的。當(dāng)applet被激活時(shí),它便開始執(zhí)行一個(gè)程序,這正是它優(yōu)雅之處:它提供一種分發(fā)軟件的方法,一旦用戶需要客戶端軟件時(shí),就自動(dòng)從服務(wù)器把客戶端軟件分發(fā)給用戶。用戶獲取最新版本的客戶端軟件時(shí)不會(huì)產(chǎn)生錯(cuò)誤,而且也不需要很麻煩的重新安裝過程。java的這種設(shè)計(jì)方式,使得程序員只需創(chuàng)建單一的程序,而只要一臺(tái)計(jì)算機(jī)有瀏覽器,且瀏覽器具有內(nèi)置的java解釋器,那么這個(gè)程序就可以自動(dòng)在這臺(tái)計(jì)算機(jī)上運(yùn)行。由于java是一種成熟的編
19、程語言,所以在提出對(duì)服務(wù)器的請(qǐng)求之前和之后,可以在客戶端盡可能多地多做些事情。例如,不必跨網(wǎng)絡(luò)地發(fā)送一張請(qǐng)求表單來檢查自己是否填寫了錯(cuò)誤的日期或其他參數(shù),客戶端計(jì)算機(jī)就可以快速地標(biāo)出錯(cuò)誤數(shù)據(jù),而不用等待服務(wù)器作出標(biāo)記并給你傳回圖片。這不僅立即就獲得了高速度和快速的響應(yīng)能力,而且也降低了網(wǎng)絡(luò)流量和服務(wù)器負(fù)載,從而不會(huì)使整個(gè)internet的速度都慢下來。java applet勝過腳本語言程序的優(yōu)勢(shì)之一就是,它是以被編譯過的形式存在的,因此其源代碼對(duì)客戶端來說是不可見的。另一方面,雖然反編譯java applet并不需要花費(fèi)多少力氣,但是隱藏你的代碼通常并不是一個(gè)重要的話題。有另外兩個(gè)因素很重要。
20、如果編譯過的applet很大的話,那么就需要額外的時(shí)間去下載它。腳本語言程序只是被作為web頁面的一部分文本而集成到了web頁面中。這對(duì)web網(wǎng)站的響應(yīng)能力來說很重要。另一個(gè)因素是非常重要的“學(xué)習(xí)曲線”問題。如果你是一個(gè)visual basic程序員,那么轉(zhuǎn)而學(xué)習(xí)vbscript可能是最快的解決方案,而且由于它或許能夠解決大多數(shù)典型的客戶/服務(wù)器問題,所以你可能很難對(duì)學(xué)習(xí)java報(bào)以公正的態(tài)度。如果你已經(jīng)對(duì)腳本語言很有經(jīng)驗(yàn)了,那么你在考慮使用java之前,應(yīng)該先看看javascript是否滿足你的要求,這樣對(duì)你會(huì)很有好處,因?yàn)樗鼈兡軌蚋奖愕貪M足你的要求,而且使你更具生產(chǎn)力。java引起人們的
21、注意很大程度上始于applet。java確實(shí)是一種通用的編程語言,至少在理論上可以解決各種其他語言能夠解決的問題。正像前面指出的那樣,可能存在其他更有效的方式去解決客戶/服務(wù)器問題。當(dāng)你離開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之前的任何編程語言都更少。不過,這是好壞參半的事。為java帶來的改進(jìn),所付出的代價(jià)是降低了執(zhí)行速度。像任何語言一樣,java也具有不適合解決某類問題的天生
22、的限制。然而,java是快速進(jìn)化的語言,而且每當(dāng)發(fā)布一個(gè)新版本時(shí),它都會(huì)因?yàn)槟軌蚪鉀Q更多的問題而變得越來越具有吸引力。1.3 可行性的分析可行性研究的目的,就是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。要達(dá)到這個(gè)目的,必須分析幾種主要的可能解法的利弊,從而判斷原定的系統(tǒng)規(guī)模和目標(biāo)是否現(xiàn)實(shí),系統(tǒng)完成后所能帶來的效益是否大到值得投資開發(fā)這個(gè)系統(tǒng)的程度。因此,可行性研究實(shí)質(zhì)上是要進(jìn)行一次大大壓縮簡(jiǎn)化了的系統(tǒng)分析和設(shè)計(jì)的過程,也就是在較高層次上以較抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計(jì)的過程。1.3.1 技術(shù)可行性本游戲是在windows xp環(huán)境下開發(fā)的,一般的機(jī)器配置就可以了,對(duì)機(jī)器本身沒有太高
23、的要求,一般當(dāng)前學(xué)?;騻€(gè)人電腦完全可滿足要求,環(huán)境只需裝上jdk 1.4或以上版本就行了,java是現(xiàn)在全球最時(shí)髦的開發(fā)工具之一,它擁有一套龐大且完善的類庫(kù),內(nèi)置了其他語言需要靠庫(kù)甚至是操作系統(tǒng)才能支持的功能,擁有一個(gè)虛擬機(jī)。neatbeans ide 5.5是sun公司開發(fā)的java可視化集成開發(fā)工具,是目前最優(yōu)秀的java集成開發(fā)工具之一。1.3.2 經(jīng)濟(jì)可行性由于本系統(tǒng)使用到的工具一般機(jī)器都具備,使用環(huán)境也很簡(jiǎn)單,開發(fā)成本低,本課題研究的內(nèi)容是涉及網(wǎng)絡(luò)的游戲?qū)?zhàn)。當(dāng)今形式下網(wǎng)絡(luò)游戲儼然已經(jīng)成為年輕人最時(shí)興的消費(fèi)方式之一,java一直以來由于其可以“跨平臺(tái)”以及“一次編譯,到處運(yùn)行”等特點(diǎn)
24、,許多人直接它為網(wǎng)絡(luò)編程語言,且由于java游戲一般來說簡(jiǎn)單有趣,并且對(duì)用戶硬件要求極小,所以java游戲通常對(duì)85%的計(jì)算機(jī)用戶都有吸引力。且政府態(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)的開發(fā)過程中從操作簡(jiǎn)便、界面美觀、靈活實(shí)用的用戶要求為出發(fā)點(diǎn),界面設(shè)計(jì)時(shí)充分考慮玩家的感受,界面比較直觀,交互性很好,所以操作起來簡(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)開發(fā)工程中,解決“做什么”的問題,把要解決哪些問題,滿足用戶哪些具體的信息需求調(diào)查分析清楚,從邏輯上或是說從信息處
26、理的功能需求上提出系統(tǒng)的方案,即邏輯模型,為下一階段進(jìn)行物理方案設(shè)計(jì),解決怎么辦提供依據(jù)。2.1 系統(tǒng)初步分析2.1.1 用戶需求分析隨著internet的發(fā)展,進(jìn)入信息時(shí)代后快速獲得網(wǎng)絡(luò)共享資源成為很簡(jiǎn)單的事情,人們對(duì)互聯(lián)網(wǎng)也有了很大的依賴性。網(wǎng)絡(luò)的普及化使得原本單人的游戲已經(jīng)不能適應(yīng)人們的需要,廣大的游戲者迫切需要能夠和身在異地的朋友一起享受游戲的樂趣。在這種環(huán)境下,網(wǎng)絡(luò)游戲應(yīng)運(yùn)而生,越來越多的游戲者投身到網(wǎng)絡(luò)游戲中。這樣帶來的問題自然成為越來越多的游戲研究者將研究方向轉(zhuǎn)為網(wǎng)絡(luò)游戲的研究。據(jù)目前的網(wǎng)絡(luò)游戲的調(diào)研來看,以運(yùn)動(dòng)休閑為主的運(yùn)動(dòng)類游戲正在受到越來越多玩家的支持和愛戴。但是此類網(wǎng)絡(luò)游
27、戲中,由java開發(fā)的網(wǎng)絡(luò)游戲仍然是一個(gè)空白頁,但是它卻是一個(gè)迫切需要填補(bǔ)的空白頁。而java由于其天生的語言特性(請(qǐng)見1.2節(jié)),很適合用于開發(fā)網(wǎng)絡(luò)游戲,但由于系統(tǒng)環(huán)境的問題使得它一直以來未能用于游戲開發(fā),而近來由于java的發(fā)展,它已經(jīng)擺脫了束縛,浮出了游戲開發(fā)的水面,若能在網(wǎng)絡(luò)上出現(xiàn)高要求多人互動(dòng)的java游戲,它將是一項(xiàng)極為偉大的發(fā)展。這也正是現(xiàn)在許多玩家迫切要求的。2.1.2 功能需求分析系統(tǒng)功能的需求指定系統(tǒng)必須提供的服務(wù)。通過需求分析應(yīng)該劃分出系統(tǒng)必須完成的所有功能。本作的功能模塊主要包括游戲的引擎設(shè)計(jì),游戲的界面設(shè)計(jì)。1.游戲的引擎設(shè)計(jì)的需求分析:游戲引擎是游戲的靈魂,也就是這
28、個(gè)游戲的框架,它的好壞直接決定著游戲的質(zhì)量。它是控制所有游戲功能的主程序,包括畫面的處理,人工智能的實(shí)現(xiàn),接受玩家的設(shè)置,以及網(wǎng)絡(luò)聯(lián)機(jī)的實(shí)現(xiàn)等等。所以鑒定一個(gè)游戲的好壞,從內(nèi)部設(shè)計(jì)的原因上說來,是從游戲的引擎設(shè)計(jì)體現(xiàn)出來的。一個(gè)游戲的引擎設(shè)計(jì),直接關(guān)系到游戲設(shè)計(jì)的其他方面,諸如游戲的圖形系統(tǒng)、聲音系統(tǒng)及設(shè)計(jì)的物理模塊等等各個(gè)方面。就如一臺(tái)電腦需要cpu一樣,游戲的引擎也是直接牽制著整個(gè)游戲的設(shè)計(jì)。它的主要作用就是處理游戲中的事件,運(yùn)行游戲中的圖象,輸出聲音及畫面,調(diào)整游戲的節(jié)奏,響應(yīng)玩家的游戲監(jiān)聽事件等等。所以,游戲的引擎設(shè)計(jì)是必要的功能模塊,而且游戲的引擎設(shè)計(jì)必須做好,以使得游戲更具有可玩性
29、。游戲程序是一項(xiàng)精度要求很高的程序系統(tǒng),因?yàn)槠浯a利用率很高。一個(gè)實(shí)時(shí)運(yùn)行的最終作品,每秒都會(huì)運(yù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)畫的設(shè)計(jì)是非常必要的。本作將采用模擬動(dòng)畫的方式將戰(zhàn)爭(zhēng)展現(xiàn)在玩家眼前。設(shè)計(jì)出豐富的戰(zhàn)爭(zhēng)環(huán)境,游戲中為了美觀,適用性強(qiáng),需要采用外部文件引入的圖片貼圖,而java中提供了用于處理圖片的功能包,使得解決靜態(tài)或動(dòng)態(tài)、畫
30、面背景、屏幕刷新的雙緩沖等都有較好的解決方案。2.1.3 系統(tǒng)的可靠性和可用性需求分析可靠性需求定量地指定系統(tǒng)的可靠性。例如,游戲在運(yùn)行過程中不能頻繁發(fā)生錯(cuò)誤而不得不終止游戲。可用性則與可靠性密切相關(guān),它量化了用戶可以使用系統(tǒng)的程度。例如,游戲的運(yùn)行必須保證隨時(shí)可以,不能在一段不使用的時(shí)間內(nèi),游戲產(chǎn)生不可預(yù)見的錯(cuò)誤而致無法運(yùn)行等等。2.2 數(shù)據(jù)流分析數(shù)據(jù)流程分析主要包括對(duì)信息的流動(dòng)、傳遞、處理、存儲(chǔ)等的分析。數(shù)據(jù)流程分析的目的就是要發(fā)現(xiàn)和解決數(shù)據(jù)流通中的問題。通過對(duì)本系統(tǒng)的需求分析,確定了系統(tǒng)的基本功能。整個(gè)系統(tǒng)的數(shù)據(jù)流圖如圖2-1所示: 圖2-1 系統(tǒng)數(shù)據(jù)流程圖3總體設(shè)計(jì)總體設(shè)計(jì)過程通常由兩
31、個(gè)主要階段組成:系統(tǒng)設(shè)計(jì)階段,確定系統(tǒng)的具體實(shí)現(xiàn)方案;結(jié)構(gòu)設(shè)計(jì)階段,確定軟件結(jié)構(gòu)和功能模塊。3.1 系統(tǒng)開發(fā)3.1.1系統(tǒng)開發(fā)的原則經(jīng)過需求分析階段的工作,系統(tǒng)必須“做什么”已經(jīng)清楚了,現(xiàn)在是決定“怎么做”的時(shí)候了??傮w設(shè)計(jì)的基本目的就是回答“概括地說,系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?”這個(gè)問題,因此,總體設(shè)計(jì)又稱為概要設(shè)計(jì)或初步設(shè)計(jì)。通過這個(gè)階段的工作將劃分出組成系統(tǒng)的物理元素程序、文件、數(shù)據(jù)庫(kù)、人工過程和文檔等等,但是每個(gè)物理元素仍然處于黑盒子級(jí),這些黑盒子里的具體內(nèi)容將在以后仔細(xì)設(shè)計(jì)??傮w設(shè)計(jì)階段的另一項(xiàng)重要任務(wù)是設(shè)計(jì)軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個(gè)程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。
32、總體設(shè)計(jì)過程首先尋找實(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),從而用較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。3.1
33、.2 系統(tǒng)設(shè)計(jì)階段系統(tǒng)設(shè)計(jì)階段的主要目的就是確定軟件如何做的問題。主要任務(wù)就是確定系統(tǒng)中的大模塊和設(shè)計(jì)方法,確定軟件的功能模塊和模塊的作用,組成,關(guān)系等等。本系統(tǒng)是一款希望可以基于網(wǎng)絡(luò)的多人對(duì)戰(zhàn)游戲,當(dāng)游戲者打開游戲,游戲界面打開,然后玩家可以選擇是進(jìn)行一輪新的游戲,還是選擇接著玩上次沒玩結(jié)束的游戲(如果先前已經(jīng)玩過該游戲,但沒有玩結(jié)束,有事了,并且保存了),只需要選擇載入游戲就可以;玩家還可以選擇是進(jìn)行單機(jī)游戲或是聯(lián)機(jī)游戲,如果選擇網(wǎng)絡(luò)聯(lián)機(jī)玩的話只需要啟動(dòng)服務(wù)器等待其他玩家加入就可以了;如果選擇了單機(jī)游戲,并選擇了進(jìn)行一輪新的游戲,則游戲會(huì)出現(xiàn)游戲設(shè)置界面,通過該界面玩家可以設(shè)置游戲的玩家數(shù)
34、量(2-6個(gè))以及游戲的難度,電腦玩家有簡(jiǎn)單智力的和高智力的,然后玩家可以選擇不同的卡片模式和不同的游戲模式(分為統(tǒng)治型、首都型和任務(wù)型),并且玩家可以選擇不同的游戲地圖,游戲的目標(biāo)是統(tǒng)治全世界,當(dāng)玩家設(shè)置好一切后,可以點(diǎn)擊開始游戲,則游戲開始。游戲開始,游戲畫面是一張被分割成多個(gè)國(guó)家的地圖,每個(gè)玩家可以輪流在地圖上選擇自己的地盤和軍隊(duì)的布置,而電腦玩家也會(huì)自動(dòng)放置軍隊(duì),當(dāng)每個(gè)國(guó)家都被放上軍隊(duì)后,才可以重復(fù)在一個(gè)國(guó)家放置多余的軍隊(duì),當(dāng)默認(rèn)的所有軍隊(duì)全都放置好,然后玩家就可以開始統(tǒng)一全球的戰(zhàn)爭(zhēng)游戲了,而當(dāng)一方的軍隊(duì)侵略另一邊時(shí),游戲程序通過一定的人工智能算法讓戰(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)土來決定你可以增加多少軍隊(duì),以及你可以獲得的卡片,獲得的卡片可以用來交換軍隊(duì),最后占領(lǐng)全世界(消滅了其他兩個(gè)玩家)的為勝利者。在游戲過程中如果玩家突然有事無法繼續(xù)游戲,本游戲可以保存當(dāng)前游戲狀態(tài),當(dāng)玩家有時(shí)間時(shí)可以接下去游戲,而無需重新開始,玩家也可以將自己的機(jī)器作為服務(wù)器,通過網(wǎng)絡(luò)與網(wǎng)絡(luò)上的其他玩家一起游戲。本游戲還具有統(tǒng)計(jì)的功能,在你游戲過程中或則游戲結(jié)束后你可以查看在本局游戲中各個(gè)玩家各個(gè)方面的戰(zhàn)績(jī)的統(tǒng)計(jì)
36、(例如每個(gè)玩家在游戲過程當(dāng)中所占領(lǐng)的國(guó)家數(shù)、軍隊(duì)數(shù)、摧毀數(shù)、傷亡數(shù)、受到進(jìn)攻的次數(shù)等等),游戲中還設(shè)置了控制臺(tái),玩家可以通過圖形顯示的按鈕進(jìn)行游戲,也可以通過命令來進(jìn)行游戲,在游戲菜單欄的幫助中,玩家可以選擇命令按扭來顯示出游戲中可用的命令菜單,玩家可以通過選擇其中的關(guān)于了解本游戲的一些信息。當(dāng)你贏的了游戲,游戲會(huì)告訴你,你勝利了!關(guān)于線程:對(duì)象技術(shù)提供了一種把程序劃分成若干獨(dú)立部分的方式。通常,還需要把程序轉(zhuǎn)換成彼此分離的、能獨(dú)立運(yùn)行的子任務(wù)。每一個(gè)這樣的獨(dú)立子任務(wù)都被稱為一個(gè)“線程”。每個(gè)線程都好象是在獨(dú)立運(yùn)行并且有自己的cpu。cpu時(shí)間確實(shí)是通過某些底層機(jī)制進(jìn)行分配的,不過你一般不考慮
37、這些,這使得編寫多線程程序的任務(wù)變得容易得多了。多線程有多種用途,不過通常用法是,程序中的某個(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)的用戶界面。考慮一個(gè)程序,它要執(zhí)行某項(xiàng)強(qiáng)烈需用cpu的計(jì)算,這樣就會(huì)導(dǎo)致用戶的輸入被忽略,也就無法作出響應(yīng)。問題的實(shí)質(zhì)是:程序需要一邊連續(xù)進(jìn)行計(jì)算,同時(shí)還要把控制權(quán)交給用戶界面,這樣程序才能響應(yīng)用戶的操作。并發(fā)還可以用來優(yōu)化吞吐量。比如,在等待數(shù)據(jù)到達(dá)輸入/輸出端口的同時(shí),可以進(jìn)行其他重要
38、的工作。要是不用線程的話,唯一可行的辦法就是不斷查詢輸入/輸出端口,這種方法不僅笨拙,而且很困難。線程模型為編程帶來了便利,它簡(jiǎn)化了在單一程序中同時(shí)交織在一起的多個(gè)操作的處理。在使用線程時(shí),cpu將輪流給每個(gè)線程分配其占用時(shí)間。每個(gè)線程都覺得自己在一直占用cpu ,但事實(shí)上cpu時(shí)間是劃分成片段分配給了所有線程。例外情況是程序運(yùn)行在具多個(gè)cpu的機(jī)器上,但線程的一大好處是可以使你從這個(gè)層次抽身出來,即代碼不必知道它是運(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ì)使用多線程來是兩個(gè)玩家可以同步進(jìn)行游戲,而圖形界面也通過多線程同時(shí)進(jìn)行多的程序的進(jìn)行。3.1.3 結(jié)構(gòu)設(shè)計(jì)階段1. 經(jīng)過系統(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)單。本游戲的模塊大致分為游戲引擎和用戶界面兩大模塊而,游戲引擎模塊又分為核心包、ai包、網(wǎng)絡(luò)包、本地翻譯包、游戲控制類等等,其功能模塊圖示如下:king游戲 游戲引擎用戶界面網(wǎng)絡(luò)模塊核心模塊游戲控制模塊ai模塊本地翻譯模塊圖3-1 系統(tǒng)功能模塊結(jié)構(gòu)圖功能模塊
40、介紹:king.engine.core包:其中包括了一些基本核心的類,例如像表示一個(gè)國(guó)家的country類,表示一個(gè)卡片的card類,表示一個(gè)版塊的continent類,表示一個(gè)玩家的player類以及表示一個(gè)任務(wù)的mission類等等。king.engine.ai包:其中包括了玩家可選擇的簡(jiǎn)單人工智能的電腦玩家和復(fù)雜人工智能的電腦玩家以及不同游戲類型的不同玩家的人工智能。king.engine.translation包:其中包括了用于將游戲中的語言根據(jù)計(jì)算機(jī)所處的不同的國(guó)家翻譯成不同的語言的類。包:其中包括了將游戲用于網(wǎng)絡(luò)聯(lián)機(jī)玩用到的類。游戲控制模塊:主要包含一些我自己定義的一些接口和過濾器
41、類等工具類。系統(tǒng)用例圖見下頁:圖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圖見下頁:圖3-2 risk類的依賴關(guān)系圖圖3-3 swingguipanel類的依賴關(guān)系圖圖3-4 rikgame類的依賴關(guān)系圖4 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)階段的根本目標(biāo)是確定應(yīng)該怎樣具體地實(shí)現(xiàn)所要求的系統(tǒng),也就是說,經(jīng)過這個(gè)階段的設(shè)計(jì)工作,應(yīng)該得出對(duì)目標(biāo)系統(tǒng)的精確描述,從而在編碼階段可以把這個(gè)描述直接翻譯成用某種程序設(shè)計(jì)語言書寫的程序。詳細(xì)設(shè)計(jì)的結(jié)果基本上決定了最終程序代碼的質(zhì)量。詳細(xì)設(shè)計(jì)的目標(biāo)不僅僅是邏輯上正確
42、地實(shí)現(xiàn)每個(gè)模塊的功能,更重要的是設(shè)計(jì)出的處理過程應(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ì)資料等等,所以我們由此可以確定這些基本的核心類:card、continent、country、mission、player、statistic;4.1.1 card類的設(shè)計(jì)與實(shí)現(xiàn):在游戲過程中某一些國(guó)家中會(huì)有卡片,當(dāng)你沒占領(lǐng)了這樣的國(guó)家的時(shí)候,你就能獲得卡片,當(dāng)你獲得了幾張放在一起可以交易的卡片的時(shí)候你就可以用卡片換軍隊(duì)了,所以在該類中有卡片的名字,所屬國(guó)家等屬性,該類的類圖如
43、下所示:圖4-1 card類的類圖card類的主要代碼如下: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類的設(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ì)象訪問該對(duì)象時(shí),可以獲得它的名字,顏色,價(jià)值軍隊(duì)數(shù)和所屬的玩家,其類圖見圖4-2所示:圖4-2 continent類的類圖continent類的主要代碼如下: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類的設(shè)計(jì)與實(shí)現(xiàn):mission類主要用來代表在不同模式的游戲當(dāng)中你的任務(wù),其類圖如下所示:圖4-4 mission類的類圖4.1.4 country類的設(shè)計(jì)與實(shí)現(xiàn):
46、在本游戲中就是以國(guó)家為基本單位的,所以它為最核心的類,大部分其他類都需要訪問它,其類圖如下: 圖4-3 country類的類圖其中該類通過其構(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類的設(shè)計(jì)與實(shí)現(xiàn):玩家用來代表一個(gè)玩家對(duì)象,該類也是游戲程序中所要用到的最基本的類,其中玩家的屬性有:名字,顏色,玩家任務(wù),玩家類型等,為了后面的統(tǒng)計(jì)功能的實(shí)現(xiàn),還在其中增加了已經(jīng)消滅的敵人向量,所擁有的卡片,所擁有的版塊數(shù)等等,為了實(shí)現(xiàn)網(wǎng)絡(luò)聯(lián)機(jī)的功能,還增加了玩家的網(wǎng)絡(luò)地址等等。而玩家類中有一些重要的方法,像在后面要實(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類的設(shè)計(jì)與實(shí)現(xiàn):統(tǒng)計(jì)類主要是用來實(shí)現(xiàn)游戲的統(tǒng)計(jì)功能而設(shè)計(jì)的類,每個(gè)玩家擁有一個(gè)統(tǒng)計(jì)向量用來記錄一些數(shù)據(jù),給類里面只要一個(gè)包含記錄各種數(shù)據(jù)的整形數(shù)組statistic屬性,統(tǒng)計(jì)數(shù)據(jù)有國(guó)家數(shù),軍隊(duì)數(shù),毀滅數(shù),傷亡數(shù),增強(qiáng)過程,大陸數(shù),國(guó)家數(shù),進(jìn)攻次數(shù),撤退次數(shù),勝利次數(shù)等等,該類的類圖如下所示:圖4-5 statistic類的類圖其中的重要方法有結(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、際化,在游戲過程中可以通過本包中的類實(shí)現(xiàn)語言的本地化,本包中包括兩個(gè)類:translationbundle和maptranslator。4.2.1 translationboudle類的設(shè)計(jì)與實(shí)現(xiàn)該類主要是用來獲得編寫的資源包(這指語言包),然后該類可以通過java api中的一些方法獲得該游戲所處系統(tǒng)的語言環(huán)境,然后將游戲中的語言變換成本地語言;該類中主要用到了java.util.resourcebundle類,資源包包含特定于語言環(huán)境的對(duì)象。當(dāng)程序需要一個(gè)特定于語言環(huán)境的資源時(shí)(如 string),程序可以從適合當(dāng)前用戶語言環(huán)境的資源包中裝入它。以這種方式可以編寫很大程度上獨(dú)立于用戶語言環(huán)境的程序代碼,它將資源包中大部分(如果不是全部)特定于語言環(huán)境的信息隔離開來。 這就使您所編寫的程序可以: 輕松地本地化或翻譯成不同的語言 一次處理多個(gè)語言環(huán)境 以后可以輕松地進(jìn)行修改,支持更多的語言環(huán)境 資源包屬于這樣的系列,其成員共享一個(gè)公共的基本名稱,但是名稱中還有標(biāo)識(shí)其語言環(huán)境的其他組件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)路由與交換配置
- 二零二五年度苗木研發(fā)與銷售合作合同范本4篇
- 2024年學(xué)校人事管理制度
- 二零二五年度新能源儲(chǔ)能設(shè)施建設(shè)合同范本一4篇
- 2025年版校企共建創(chuàng)新創(chuàng)業(yè)教育合作協(xié)議書范本3篇
- 2024年一年級(jí)語文上冊(cè)單元測(cè)試題全冊(cè)
- 2024瑜伽文化傳播與交流活動(dòng)合作協(xié)議書3篇
- 年度智能兒童成長(zhǎng)儀戰(zhàn)略市場(chǎng)規(guī)劃報(bào)告
- 二零二五年度城市公共交通汽車租賃運(yùn)營(yíng)合同4篇
- 銷售柴油課程設(shè)計(jì)
- 高二物理競(jìng)賽霍爾效應(yīng) 課件
- 金融數(shù)學(xué)-(南京大學(xué))
- 基于核心素養(yǎng)下的英語寫作能力的培養(yǎng)策略
- 現(xiàn)場(chǎng)安全文明施工考核評(píng)分表
- 亞什蘭版膠衣操作指南
- 四年級(jí)上冊(cè)數(shù)學(xué)教案 6.1口算除法 人教版
- DB32-T 3129-2016適合機(jī)械化作業(yè)的單體鋼架塑料大棚 技術(shù)規(guī)范-(高清現(xiàn)行)
- 6.農(nóng)業(yè)產(chǎn)值與增加值核算統(tǒng)計(jì)報(bào)表制度(2020年)
- 人工挖孔樁施工監(jiān)測(cè)監(jiān)控措施
- 供應(yīng)商物料質(zhì)量問題賠償協(xié)議(終端)
- 物理人教版(2019)必修第二冊(cè)5.2運(yùn)動(dòng)的合成與分解(共19張ppt)
評(píng)論
0/150
提交評(píng)論