freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java桌面游戲爭(zhēng)霸的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(編輯修改稿)

2025-07-25 08:01 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 d。 } 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ì)功能,必須要獲得一些統(tǒng)計(jì)數(shù)據(jù)和玩家的網(wǎng)絡(luò)地址,具體代碼如下: public Card takeCard() { Card c=(Card)()。 (0)。 return c。 } public void tradeInCards(Card card1, Card card2, Card card3) { int noaFORcard = 2。 // 看看你是否可以從擁有的國(guó)家中獲得額外的軍隊(duì) if (( () ) ) { ((Country)()).addArmies(noaFORcard)。 (noaFORcard)。 } else if (( () ) ) { ((Country)()).addArmies(noaFORcard)。 (noaFORcard)。 } else if (( () ) ) { ((Country)()).addArmies(noaFORcard)。 (noaFORcard)。 } (card1)。 (card2)。 (card3)。 ()。 } public void addPlayersEliminated(Player p) { (p)。 } public Vector getPlayersEliminated() { return playersEliminated。 } 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ù)等等,該類的類圖如下所示:圖45 Statistic類的類圖 其中的重要方法有結(jié)束一輪進(jìn)攻進(jìn)行統(tǒng)計(jì)endGoStatistics(int a, int b, int c, int d),向量中其他一些數(shù)據(jù)的計(jì)算方法,具體代碼如下:statistics向量中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) { statistics[0] = a。 statistics[1] = b。 statistics[5] = c。 statistics[6] = d。 } public void addReinforcements(int a) { statistics[4] = statistics[4] + a。 } public void addKill() { statistics[2]++。 } public void addCasualty() { statistics[3]++。 } public void addAttack() { statistics[7]++。 } public void addAttacked() { statistics[11]++。 } public void addRetreat() { statistics[8]++。 } public void addCountriesWon() { statistics[9]++。 } public void addCountriesLost() { statistics[10]++。 } 本地翻譯包的設(shè)計(jì)本包的設(shè)計(jì)是為了本游戲的國(guó)際化,在游戲過程中可以通過本包中的類實(shí)現(xiàn)語言的本地化,本包中包括兩個(gè)類:TranslationBundle和MapTranslator。 TranslationBoudle類的設(shè)計(jì)與實(shí)現(xiàn)該類主要是用來獲得編寫的資源包(這指語言包),然后該類可以通過Java API中的一些方法獲得該游戲所處系統(tǒng)的語言環(huán)境,然后將游戲中的語言變換成本地語言;,資源包包含特定于語言環(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)境的其他組件。例如,某個(gè)資源包系列的基本名稱可能是 MyResources。該系列應(yīng)該有一個(gè)默認(rèn)資源包,其名稱與其系列名相同( MyResources),并且如果不支持指定的語言環(huán)境,則此資源包應(yīng)該用作最后的手段。然后,此系列可根據(jù)需要提供特定于語言環(huán)境的成員,例如一個(gè)名為 MyResources_de 的德語資源包。 某個(gè)系列中的每個(gè)資源包都包含相同的項(xiàng),但是已經(jīng)針對(duì)該資源包所代表的語言環(huán)境翻譯了各項(xiàng)。例如,MyResources 和 MyResources_de 可能有用在取消操作按鈕上的 String。在 MyResources 中,String 可能含有 Cancel,而在 MyResources_de 中則可能含有 Abbrechen。 如果不同的國(guó)家/地區(qū)有不同的資源,則可以進(jìn)行限定:例如,MyResources_de_CH 是瑞士 (CH) 中包含德語 (de) 的對(duì)象。 Translation類中主要的方法有獲得資源包和載入資源包,具體實(shí)現(xiàn)代碼如下:public class TranslationBundle{ …… static public ResourceBundle getBundle() { if ( == null) { ()。 } return 。 } static private void loadBundle() { if ( == null) { loc = ()。 } else { loc = new Locale()。 }try { = (, loc)。 } catch( e) { ( Error: Can39。t find a translation file. Exiting. )。 ( 2)。 } } static private void setLanguage(String strLanguage) { = strLanguage。 }} MapTranslator類的設(shè)計(jì)與實(shí)現(xiàn)該類主要是用來將游戲中圖片顯示中的語言變換成本地語言;具體實(shí)現(xiàn)代碼如下:public class MapTranslator{ private static ResourceBundle MapResb = null。 private static ResourceBundle CardsResb = null。 public static void setMap(String strFile) { String strName = ( 0, ( 39。.39。))。 strFile = strName + _ + ().getLocale().getLanguage() + .properties。 try { MapResb = new PropertyResourceBundle( (new URL(,strFile)).openStream() )。 } catch( IOException ioe ) { try { …… } catch( MissingResourceException e) { MapResb = null。 } } } public static String getTranslatedMapName(String strOriginal) { if (MapResb == null) { return strOriginal。 } String strReturn。 try { strReturn = ( strOriginal)。 } catch(MissingResourceException e) { strReturn = strOriginal。 } return strReturn。 } public static void setCards(String INstrFile) { String strName = ( 0, ( 39。.39。))。 String strFile = strName + _ + ().getLocale().getLanguage() + .properties。 try { CardsResb = new PropertyResourceBundle( (new URL(,strFile)).openStream() )。 } catch( IOException ioe ) { if((/)|| (\\) ) { try {CardsResb=(, ().getLocale())。 } catch( MissingResourceException e) { CardsResb = null。 } } } } public static String getTranslatedMissionName(String strOriginal) { if (CardsResb == null) { return null。 } String strReturn。 try { strReturn = ( strOriginal)。 } catch(MissingResourceException e) { strReturn = null。 } return strReturn。 }} 網(wǎng)絡(luò)包的設(shè)計(jì)游戲中該包的設(shè)計(jì)主要是用來實(shí)現(xiàn)游戲的網(wǎng)絡(luò)聯(lián)機(jī)游戲的功能的包,其中主要是一組實(shí)現(xiàn)兩臺(tái)機(jī)子相互連接的類:ChatArea類,ChatDisplayThread類,ChatReader類以及ChatServerThread類。實(shí)現(xiàn)網(wǎng)絡(luò)連接主要是要用到兩個(gè)類:。讓我們先了解一下什么是套接字的概念,網(wǎng)絡(luò)套接字非常像電器的插座。網(wǎng)絡(luò)上各種不同的插頭用一個(gè)標(biāo)準(zhǔn)形式的方式來傳遞他們的負(fù)載,任何能夠理解標(biāo)準(zhǔn)協(xié)議的東西都可以“插入”套接字來進(jìn)行通信。對(duì)于電源插座,他并不在乎你插入的是一個(gè)電燈還是一個(gè)烤面包機(jī),只要他們需要的是60赫茲,115伏電壓,他們就將正常的工作。想一想你的電費(fèi)帳單是怎么產(chǎn)生的:在你的房子和其余的網(wǎng)絡(luò)之間的某個(gè)地方有一個(gè)計(jì)量表,對(duì)于通過那個(gè)計(jì)量表的每一千瓦能量,你都要付費(fèi)。所以,即使電能在能量網(wǎng)絡(luò)中自由的流動(dòng),但你的房子里的所有的插座都有一個(gè)特定的地址。網(wǎng)絡(luò)套接字使用了同樣的思想,只不過我們討論的是TCP/IP數(shù)據(jù)包和IP地址,而不是電器和街道的地址。IP協(xié)議是一個(gè)低級(jí)路由協(xié)議,他把數(shù)據(jù)分成小的數(shù)據(jù)包并通過網(wǎng)絡(luò)把他們發(fā)送到一個(gè)地址,但是他并不保證發(fā)送者上述的包能否到達(dá)目的地。傳輸控制協(xié)議是一個(gè)高級(jí)協(xié)議,用于把這些包串起來,如果需要,排列后重新發(fā)送他們以傳送數(shù)據(jù)。第三個(gè)協(xié)議,擁護(hù)數(shù)據(jù)報(bào)協(xié)議和TCP協(xié)議很相似,可以直接用來支持快速、無連接的、不可靠的數(shù)據(jù)抱傳輸。Socket類是實(shí)現(xiàn)客戶端套接字(也可以就叫“套接字”)。套接字是兩臺(tái)機(jī)器之間的通信端點(diǎn)。套接字的實(shí)際工作由 SocketImpl 類的實(shí)例執(zhí)行。應(yīng)用程序通過更改創(chuàng)建套接字實(shí)現(xiàn)的套接字工廠可以配置它自身,以創(chuàng)建適合本地防火墻的套接字。ServerSocket類此類實(shí)現(xiàn)服務(wù)器套接字。服務(wù)器套接字等待請(qǐng)求通過網(wǎng)絡(luò)傳入。它基于該請(qǐng)求執(zhí)行某些操作,然后可能向請(qǐng)求者返回結(jié)果。服務(wù)器套接字的實(shí)際工作由 SocketImpl 類的實(shí)例執(zhí)行。應(yīng)用程序可以更改創(chuàng)建套接字實(shí)現(xiàn)的套接字工廠來配置它自身,從而創(chuàng)建適合本地防火墻的套接字。網(wǎng)絡(luò)包的實(shí)現(xiàn)結(jié)構(gòu)圖如圖46(見下頁)所示:圖46 網(wǎng)絡(luò)包的實(shí)現(xiàn)具體的實(shí)現(xiàn)代碼如下:ChatArea類:public class ChatArea extends Thread { …… public ChatArea(RiskController g) t
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1