已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
JIANGXINORMALUNIVERSITY學(xué)士學(xué)位論文THESISOFBACHELOR(20062010年)基于ANDROID操作系統(tǒng)的中國象棋手機(jī)游戲CHINESECHESSAPPLICATIONBASEDONANDROIDMOBILEOS指導(dǎo)老師曹中_華姓名劉盛_旗學(xué)號0667110121學(xué)院軟件學(xué)院專業(yè)軟件工程摘要CNCHESS是運(yùn)行在ANDROID平臺上的一款支持雙人聯(lián)網(wǎng)對局、即時聊天、對弈記錄的休閑棋牌類手機(jī)游戲。系統(tǒng)采用面向?qū)ο蟮木幊趟枷脒M(jìn)行構(gòu)思與分析設(shè)計;使用UML構(gòu)建軟件模型;使用MVC架構(gòu)模式實現(xiàn)系統(tǒng)的整體架構(gòu)及各模塊之間的接口設(shè)計;在系統(tǒng)的實踐過程中還采用了部分GOF的設(shè)計模式進(jìn)行編碼與開發(fā)。本文詳細(xì)系統(tǒng)地闡述了在ANDROID平臺上,應(yīng)用MVC分層架構(gòu)模式及面向?qū)ο蟮能浖_發(fā)思想對CNCHESS游戲系統(tǒng)的分析、設(shè)計及實現(xiàn)過程。在項目的實踐過程中,主要用到了以下技術(shù)手機(jī)布局主要使用了XML設(shè)計,程序及其子模塊的生命周期管理用到了ACTIVITY流程控制,數(shù)據(jù)儲存方面使用的是輕量級數(shù)據(jù)庫SQLITE、網(wǎng)絡(luò)通訊部分使用的是XMPP即時通訊協(xié)議進(jìn)行數(shù)據(jù)的傳輸、對弈的畫面更新使用的是手機(jī)的2D圖形編程。本論文的前半部分將簡要介紹系統(tǒng)相關(guān)的行業(yè)信息及基礎(chǔ)的技術(shù)知識,后半部分將對本人在系統(tǒng)各模塊中所使用的關(guān)鍵技術(shù)的實現(xiàn)進(jìn)行了全面的介紹。關(guān)鍵詞聯(lián)網(wǎng)對弈;中國象棋;手機(jī)游戲;ANDROID平臺ABSTRACTCNCHESSISACHINESECHESSGAMETHATRUNNINGONTHEANDROIDPLATFORMITSUPPORTMANYOFTHEFEATURESSUCHASPLAYINGGAMESTHROUGHTHENETWORK,REALTIMECHAT,ANDPLAYCHESSRECORDSOFCASUALMOBILEGAMESTHECNCHESSGAMEISOBJECTORIENTEDPROGRAMMINGDESIGNANDANALYSISOFTHEIDEAOFTHINKINGBUILDSOFTWAREMODELSUSINGUMLUSEOFMVCARCHITECTUREPATTERNSTOACHIEVETHEOVERALLSYSTEMANDTHEINTERFACEBETWEENTHEMODULEDESIGNSINPRACTICETHESYSTEMALSOUSESSOMEOFTHEGOFSDESIGNPATTERNSTOCODINGANDDEVELOPMENTTHISPAPERSYSTEMATICALLYEXPOUNDEDINTHEANDROIDPLATFORM,THEAPPLICATIONOFMVCPATTERNANDHIERARCHICALSTRUCTUREOFOBJECTORIENTEDSOFTWAREDEVELOPMENTTHOUGHTSCNCHESSGAMESYSTEMANALYSIS,DESIGNANDIMPLEMENTATIONPROCESSPRACTICEINTHECOURSEOFTHEPROJECT,MAINLYUSEDINTHEFOLLOWINGTECHNOLOGIESCELLPHONESPRIMARILYUSEXMLLAYOUTDESIGN,PROCESSANDLIFECYCLEMANAGEMENTSUBMODULEUSESTHEACTIVITYPROCESSCONTROL,DATASTORAGEAREASUSINGALIGHTWEIGHTDATABASESQLITE,NETWROKCOMMUNICATIONSOMEUSETHEXMPPINSTANTMESSAGINGPROTOCOLFORDATATRANSMISSION,PUBLICDEBATEOFTHEFRAMEUSINGAMOBILEPHONE2DGRAPHICSPROGRAMMINGTHEFIRSTPARTOFTHISPAPERWILLBRIEFLYINTRODUCETHESYSTEMBASEDONRELEVANTINDUSTRYINFORMATIONANDTECHNICALKNOWLEDGE,THELATTERPARTOFEACHMODULEINTHESYSTEMIWILLBEINTHEKEYTECHNOLOGYUSEDINTHEREALIZATIONOFACOMPREHENSIVEINTRODUCTIONKEYWORDSNETWORKOFGAMESCHINESECHESSMOBILEGAMESANDROIDPLATFORM目錄第1章緒論111問題的提出112相關(guān)研究綜述1121ANDROID手機(jī)操作系統(tǒng)的發(fā)展歷程1122國內(nèi)外關(guān)于ANDROID手機(jī)應(yīng)用程序的研究及開發(fā)現(xiàn)狀213研究目標(biāo)與內(nèi)容2131研究目標(biāo)2132研究主要內(nèi)容2第2章ANDROID程序設(shè)計相關(guān)技術(shù)概述421XUL界面布局422ANDROID的ACTIVITY組件423SQLITE數(shù)據(jù)庫524XMPP協(xié)議525ANDROID2D圖形編程526MVC模式簡介5第3章系統(tǒng)的分析與實現(xiàn)731系統(tǒng)分析7311系統(tǒng)功能分析7312系統(tǒng)流程分析8313系統(tǒng)數(shù)據(jù)流分析932系統(tǒng)數(shù)據(jù)庫設(shè)計9321系統(tǒng)ER圖9322數(shù)據(jù)庫表設(shè)計1033面向?qū)ο蟮南到y(tǒng)設(shè)計10331系統(tǒng)文件組織結(jié)構(gòu)10331用例的設(shè)計11332類的設(shè)計12333系統(tǒng)交互模式的設(shè)計12第4章模塊的實現(xiàn)1541MVC分層結(jié)構(gòu)1642總體控制模塊1743數(shù)據(jù)存儲模塊1844數(shù)據(jù)傳輸模塊2045對局模塊2246XML界面布局模塊2447系統(tǒng)中關(guān)鍵技術(shù)的應(yīng)用及實現(xiàn)24471SQLITE3的應(yīng)用24472XML界面設(shè)計25473CNCHESS的2D圖像編程25474對弈過程中雙方棋盤上棋子的同步27475XMPP數(shù)據(jù)傳輸27476走棋規(guī)則的判斷28第5章結(jié)束語3051后續(xù)研究展望30參考文獻(xiàn)31致謝32第1章緒論11問題的提出隨著3G移動網(wǎng)絡(luò)應(yīng)用的推廣,手機(jī)游戲的規(guī)模、復(fù)雜程度日益增強(qiáng);其技術(shù)手段、設(shè)計思想、系統(tǒng)體系結(jié)構(gòu)都發(fā)生了深刻的變化。手機(jī)操作系統(tǒng)正朝著高處理能力、多功能、智能化的方向發(fā)展。近年來,網(wǎng)絡(luò)文化市場發(fā)展很快,隨著互聯(lián)網(wǎng)的迅速普及、寬帶的接入社區(qū)和家庭,我國網(wǎng)絡(luò)游戲市場發(fā)展迅速并進(jìn)入了一個高速增長期,并已經(jīng)創(chuàng)造了較大的產(chǎn)值,帶動了相關(guān)產(chǎn)業(yè)的發(fā)展。如今網(wǎng)絡(luò)上的提供免費(fèi)中國象棋游戲,大多數(shù)是單機(jī)版的,界面單一,功能單一。本系統(tǒng)將實現(xiàn)在網(wǎng)絡(luò)上對戰(zhàn)的中國象棋功能;還對在下棋界面美化,以及下棋中可能出現(xiàn)的意外進(jìn)行了處理。這樣中國象棋休閑游戲?qū)⒉辉谑且粋€功能單一界面枯燥的游戲,而是一個較完善的休閑游戲。在國內(nèi)外ANDROID手機(jī)應(yīng)用開發(fā)如火如荼、日益盛行的大背景下,本人決定開發(fā)一款界面友好、操作簡單,支持雙人聯(lián)網(wǎng)對局、數(shù)據(jù)記錄、智能規(guī)則判斷的手機(jī)休閑游戲。12相關(guān)研究綜述近年來,國內(nèi)外的專家學(xué)者以及一線的開發(fā)人員從理論、方法、技術(shù)等不同的角度對ANDROID手機(jī)操作系統(tǒng)進(jìn)行了一定的研究。本小節(jié)將從ANDROID手機(jī)操作系統(tǒng)的發(fā)展歷程、研究現(xiàn)狀、程序開發(fā)設(shè)計簡介四個方面分析總結(jié)國內(nèi)外的相關(guān)研究結(jié)果。121ANDROID手機(jī)操作系統(tǒng)的發(fā)展歷程ANDROID是GOOGLE于2007年11月5日宣布的基于LINUX平臺開源手機(jī)操作系統(tǒng)名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。表11ANDROID手機(jī)操作系統(tǒng)的發(fā)展階段發(fā)展階段階段特征2007115ANDROID平臺發(fā)布2008922TMOBILE2009年1季度G1銷售100萬臺20093MWC華為發(fā)布ANDROID手機(jī),MOTO,三星,LG計劃2009年下半年推出ANDROID手機(jī)2009獲得ORANGE,VODAFONE,O2,TELEFONICA支持2009進(jìn)軍上網(wǎng)本122國內(nèi)外關(guān)于ANDROID手機(jī)應(yīng)用程序的研究及開發(fā)現(xiàn)狀A(yù)NDROID是基于LINUX內(nèi)核的軟件平臺和操作系統(tǒng),早期由GOOGLE開發(fā),后由開放手機(jī)聯(lián)盟OPENHANDSETALLIANCE)開發(fā)。它采用了軟件堆層(SOFTWARESTACK,又名以軟件疊層)的架構(gòu),主要分為三部分。低層以LINUX內(nèi)核工作為基礎(chǔ),只提供基本功能;其他的應(yīng)用軟件則由各公司自行開發(fā),以JAVA作為編寫程序的一部分。另外,為了推廣此技術(shù),GOOGLE和其它幾十個手機(jī)公司建立了開放手機(jī)聯(lián)盟。ANDROID在未公開之前常被傳聞為GOOGLE電話或GPHONE。大多傳聞?wù)J為GOOGLE開發(fā)的是自己的手機(jī)電話產(chǎn)品,而不是一套軟件平臺。2010年1月,GOOGLE開始發(fā)表自家品牌手機(jī)電話的NEXUSONE,目前最好的是ANDROID21。13研究目標(biāo)與內(nèi)容131研究目標(biāo)本項目主要研究的目標(biāo)分為程序設(shè)計思想實踐改進(jìn)目標(biāo)、ANDROID平臺手機(jī)開發(fā)技術(shù)的研究目標(biāo)以及對XMPP網(wǎng)絡(luò)傳輸協(xié)議的使用與研究目標(biāo)。(1)運(yùn)用面向?qū)ο蟮木幊趟枷爰癛UP統(tǒng)一過程,對CNCHESS中國象棋手機(jī)游戲的系統(tǒng)結(jié)構(gòu)、過程、功能等要素進(jìn)行可視化的描述,為ANDROID程序設(shè)計的可視化提供方法、技術(shù)上的支持,為系統(tǒng)的理論模型和軟件建模提供參照。(2)本系統(tǒng)中使用了多種基于ANDROID平臺的軟件開發(fā)技術(shù),根據(jù)要實現(xiàn)的系統(tǒng)功能,系統(tǒng)需要使用到的技術(shù)及技術(shù)研究的目標(biāo)主要有手機(jī)游戲用戶界面的人性化、個性化界面布局,給用戶以良好的游戲體驗;移動設(shè)備上的圖形編程,提供流暢靚麗的游戲過程界面;使用文件、SQLITE等數(shù)據(jù)存儲方式,提供游戲配置保存,游戲過程保存、游戲過程回放、游戲結(jié)果記錄等功能,方便用戶查看;(3)使用XMPP即時通訊協(xié)議傳輸數(shù)據(jù),提供即時聊天的以及在線探測的功能,實現(xiàn)游戲的實時性。132研究主要內(nèi)容項目研究的內(nèi)容主要有以下四大塊第一部分是手機(jī)游戲的界面設(shè)計和背景音效的設(shè)計。和PC上的游戲開發(fā)有些許不同,手機(jī)游戲更加的注重用戶體驗,一個人性化的、時尚靚麗的游戲界面和優(yōu)美個性化的音效設(shè)計是一個成功的手機(jī)游戲要達(dá)到的基本要求。第二部分是手機(jī)之間的通信模塊設(shè)計。3G時代,手機(jī)通信受流量的限制很大,所以必須盡可能的使用簡潔的通信協(xié)議,減少數(shù)據(jù)的流量,減少用戶的通訊資費(fèi);再者,雙人對局這樣的在線游戲,必須體現(xiàn)其即時性,在一方因為電話打入或其他原因?qū)е掠螒驋炱鸹虻艟€時,另一方能及時得知道對方的狀態(tài),以便做出處理。另外,為了增加游戲的互動性,項目提供了即時聊天的功能。第三部分是對局智能程序的設(shè)計。在沒有朋友在線的情況下,可以和設(shè)計好的AI(ARTIFICIALINTELLIGENCE)算法進(jìn)行游戲。人工智能程序設(shè)計是一項對算法要求很高的程序設(shè)計,特別是在手機(jī)這種硬件資源緊缺的環(huán)境中,更是需要一個高效的算法來提供強(qiáng)大的AI對局支持。第四部分是邏輯控制模塊的設(shè)計。當(dāng)有緊急事件(如電話打入,電池沒電等)發(fā)生時,需全局模塊對當(dāng)前的游戲狀態(tài)進(jìn)行保存或退出等處理,并發(fā)送相關(guān)信息給對局的伙伴;用戶通過觸摸屏進(jìn)行走棋,棋子的走動規(guī)則由軟件進(jìn)行智能規(guī)則判斷;對局結(jié)束,軟件將對對局的過程及結(jié)果使用與國際接軌的棋譜記錄格式(PGN,F(xiàn)EN)進(jìn)行記錄,在對局結(jié)束后,用戶可用軟件讀入PGN格式的對局過程文件,進(jìn)行戰(zhàn)局的回放。軟件采用面向?qū)ο蟮木幊趟枷脒M(jìn)行構(gòu)思設(shè)計,使用UML設(shè)計軟件的模型,采用了部分GOF的設(shè)計模式進(jìn)行編碼與開發(fā)。第2章ANDROID程序設(shè)計相關(guān)技術(shù)概述ANDROID作為一個移動設(shè)備的平臺,其軟件層次結(jié)構(gòu)包括了一個操作系統(tǒng)(OS),中間件(MIDDLEWARE)和應(yīng)用程序(APPLICATION)。根據(jù)ANDROID的軟件框圖,其軟件層次結(jié)構(gòu)自下而上分為以下幾個層次圖21ANDROID系統(tǒng)架構(gòu)21XUL界面布局XUL是一種基于XML的語言,因此需要對XML(特別是XML名稱空間)很熟悉。XUL是英文“XMLUSERINTERFACELANGUAGE”的首字母縮寫。顧名思義,它是一種應(yīng)用XML來描述使用者界面的標(biāo)示語言。22ANDROID的ACTIVITY組件ACTIVITY,一般代表手機(jī)屏幕的一屏,相當(dāng)于瀏覽器的一個頁面。在ACTIVITY中添加VIEW,實現(xiàn)應(yīng)用界面和用戶交互。一個應(yīng)用程序一般由多個ACTIVITY構(gòu)成,這些ACTIVITY之間可互相跳轉(zhuǎn),可進(jìn)行頁面間的數(shù)據(jù)傳遞。每個ACTIVITY都有自己的生命周期。23SQLITE數(shù)據(jù)庫在ANDROID平臺上,集成了一個嵌入式關(guān)系型數(shù)據(jù)庫SQLITE。SQLITE是支持結(jié)構(gòu)化查詢的輕量級數(shù)據(jù)庫,能很好得適應(yīng)于移動設(shè)備的應(yīng)用。ANDROID提供了一個名為SQLITEDATABASE的類,該類封裝了一些操作數(shù)據(jù)庫的API,使用該類可以完成對數(shù)據(jù)進(jìn)行添加CREATE、查詢RETRIEVE、更新UPDATE和刪除DELETE操作這些操作簡稱為CRUD。24XMPP協(xié)議1什么是XMPPXMPP(可擴(kuò)展消息處理現(xiàn)場協(xié)議)的前身是JABBER,一個開源形式組織產(chǎn)生的網(wǎng)絡(luò)即時通信協(xié)議。具有即時信息傳輸以及在線現(xiàn)場探測的功能。2XMPP的基本網(wǎng)絡(luò)結(jié)構(gòu)XMPP中定義了三個角色,客戶端,服務(wù)器,網(wǎng)關(guān)。通信能夠在這三者的任意兩個之間雙向發(fā)生。服務(wù)器同時承擔(dān)了客戶端信息記錄,連接管理和信息的路由功能。網(wǎng)關(guān)承擔(dān)著與異構(gòu)即時通信系統(tǒng)的互聯(lián)互通,異構(gòu)系統(tǒng)可以包括SMS(短信),MSN,ICQ等?;镜木W(wǎng)絡(luò)形式是單客戶端通過TCP/IP連接到單服務(wù)器,然后在之上傳輸XML。3XMPP通過TCP傳輸?shù)臄?shù)據(jù)XMPP傳輸?shù)募磿r通訊指令的邏輯與以往相仿,只是協(xié)議的形式變成了XML格式的純文本。XMPP的核心部分就是一個在網(wǎng)絡(luò)上分片斷發(fā)送XML的流協(xié)議,這個流協(xié)議是XMPP的即時通訊指令的傳遞基礎(chǔ)。25ANDROID2D圖形編程1、SIMPLEGRAPHICSINVIEW就是直接使用ANDROID已經(jīng)實現(xiàn)的一些畫圖操作,比如說IMAGES,SHAPES,COLORS,PREDEFINEDANIMATION等等。這種方式只能畫靜態(tài)或者極為簡單的2D圖畫,對于實時性很強(qiáng)的動畫,高品質(zhì)的游戲都是沒法實現(xiàn)的。2、CANVAS首先我們要明白這個CANVAS是一個2D的概念,是在SKIA中定義的。也就是說在這個方式下還是說的畫2D圖形。26MVC模式簡介整個系統(tǒng)采用了MVC模式進(jìn)行設(shè)計。MVC模式是一種流行的軟件設(shè)計模式,它把系統(tǒng)分為3個模塊模型(MODEL)、視圖(VIEW)和控制器(CONTROLLER)。各個模塊的功能說明參見表21表21MVC的三個模塊MVC模塊描述模型代表應(yīng)用程序狀態(tài)和業(yè)務(wù)邏輯視圖提供可交互界面,向客戶顯示模型數(shù)據(jù)控制器響應(yīng)客戶的請求,根據(jù)客戶的請求來操縱模型,并把模型的響應(yīng)結(jié)果經(jīng)由視圖展現(xiàn)給客戶各個模塊之間的相互作用如圖22所示。采用MVC模式有很多好處一是能將顯示、邏輯和數(shù)據(jù)分開,某一方面的改變不會影響另一方面;其次是可以在不更改視圖顯示的情況下,更改控制器,以達(dá)到更改視圖與用戶交互的響應(yīng)模式的目的。圖22MVC模型圖第3章系統(tǒng)的分析與實現(xiàn)游戲?qū)τ脩艚缑娴囊筝^高,需達(dá)到人性化美觀大方、便于操作,個性化游戲界面時尚靚麗、別具一格,最好能做到自定義皮膚之類的。本游戲是使用即時通訊協(xié)議進(jìn)行通信的,所以,實時的游戲效果、即時聊天以及在線探測是必須做到用戶體驗良好的。數(shù)據(jù)存儲方面,需存儲游戲的配置信息、對局的勝負(fù)信息、對局的過程信息。31系統(tǒng)分析本系統(tǒng)的定位是CNCHESS中國象棋手機(jī)游戲是運(yùn)行在ANDROID開源手機(jī)操作系統(tǒng)平臺上的支持雙人聯(lián)網(wǎng)對戰(zhàn)的一款手機(jī)游戲。由于對國際國內(nèi)3G移動應(yīng)用的前景看好,另外也對游戲開發(fā)有很大的興趣,決定開發(fā)一款基于ANDROID手機(jī)操作系統(tǒng)的中國象棋手機(jī)游戲。結(jié)合當(dāng)前移動開發(fā)的形式,初步構(gòu)想之后,定下“基于ANDROID手機(jī)操作系統(tǒng)的中國象棋游戲應(yīng)用”應(yīng)該是這樣一款休閑游戲以3G方式連入互聯(lián)網(wǎng);支持雙人之間的游戲互動;支持即使聊天以及在線探測;支持游戲過程記錄及回放;支持人機(jī)對戰(zhàn);游戲界面布局人性化、個性化;支持緊急事件處理(如電話打入、電池沒電等)??赡艿脑?,進(jìn)行WIFI編程,實現(xiàn)“局域網(wǎng)”對局。311系統(tǒng)功能分析本系統(tǒng)的基本功能主要有三大塊即時聊天方便玩家的交流學(xué)習(xí);象棋對弈游戲的聯(lián)網(wǎng)互動以及即時性,是本程序與一般的象棋游戲的不同;戰(zhàn)績統(tǒng)計用于統(tǒng)計玩家的對弈勝負(fù)情況。詳細(xì)的系統(tǒng)功能分析圖如圖31所示。圖31CNCHESS系統(tǒng)功能結(jié)構(gòu)圖本系統(tǒng)的執(zhí)行流程較簡單,進(jìn)入系統(tǒng)后有五個選項聯(lián)網(wǎng)對局;XMPP設(shè)置;查看勝負(fù)情況;查看開發(fā)者信息及用戶幫助信息;退出游戲。在聯(lián)網(wǎng)對局前,XMPP連接設(shè)置必須是已經(jīng)配置好的,否則無法連接JABBER服務(wù)器,不能進(jìn)入對局界面。系統(tǒng)主要的輸入輸出及模塊間的調(diào)用情況用IPO圖表示如圖32圖32CNCHESSIPO圖(輸入一處理一輸出圖)312系統(tǒng)流程分析系統(tǒng)流程分析是軟件工程圖表(例如流程圖、判定表等)輔以必要的說明來表示本程序的邏輯流程。本系統(tǒng)采用XMPP協(xié)議進(jìn)行網(wǎng)絡(luò)的連接、數(shù)據(jù)的交換。站在用戶的角度來看,用戶之間的信息交流是端對端的;但是站在程序設(shè)計開發(fā)者的角度來看,數(shù)據(jù)其實是要經(jīng)過JABBER服務(wù)器的。從設(shè)計開發(fā)者的角度描述系統(tǒng)的數(shù)據(jù)交互模式,如圖33。用戶系統(tǒng)JABBER服務(wù)器輸入信息顯示信息發(fā)送信息接收信息互聯(lián)網(wǎng)圖33系統(tǒng)交互模式圖313系統(tǒng)數(shù)據(jù)流分析CNCHESS手機(jī)游戲系統(tǒng)需要儲存的主要數(shù)據(jù)有XMPP網(wǎng)絡(luò)連接的配置信息以及走棋的勝負(fù)信息。系統(tǒng)的數(shù)據(jù)流圖如圖34所示。啟動游戲開始游戲游戲設(shè)置查看戰(zhàn)績系統(tǒng)開發(fā)信息及幫助文件退出游戲用戶輸入網(wǎng)絡(luò)連接配置表配置信息對局勝負(fù)信息對局產(chǎn)生的勝負(fù)信息查詢到的勝負(fù)信息XMPP連接配置信息退出系統(tǒng)確認(rèn)退出信息需要保存的信息退出指令圖34系統(tǒng)數(shù)據(jù)流圖32系統(tǒng)數(shù)據(jù)庫設(shè)計321系統(tǒng)ER圖系統(tǒng)使用SQLITE輕量級數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的儲存和管理。用戶可根據(jù)自己的需要進(jìn)行XMPP網(wǎng)絡(luò)連接的配置以及勝負(fù)情況的查看和清空。系統(tǒng)的ER圖如圖35所示。圖35系統(tǒng)ER圖322數(shù)據(jù)庫表設(shè)計本程序采用輕量級數(shù)據(jù)庫SQLITE存儲管理數(shù)據(jù),數(shù)據(jù)庫名稱為DATASDB。DATASDB數(shù)據(jù)庫含有兩張表,兩張表的名稱以及字段屬性等定義如下SCORETABLE(ID,WINNING,FALLING,PEACE),對局得分表主要用來儲存對局的勝負(fù)信息;SETTINGSTABLE(ID,HOST,PORT,SERVICE,PARTNERED,USERID,USERPWD),網(wǎng)絡(luò)連接配置表主要用來儲存XMPP網(wǎng)絡(luò)連接配置。33面向?qū)ο蟮南到y(tǒng)設(shè)計本系統(tǒng)使用面向?qū)ο蟮拈_發(fā)思想、UML建模方法、MVC三層架構(gòu)、GOF的部分設(shè)計模式編碼設(shè)計開發(fā),便于后續(xù)的軟件擴(kuò)展。下面將從系統(tǒng)文件組織結(jié)構(gòu),系統(tǒng)用例圖,系統(tǒng)類圖以及系統(tǒng)三個角度對系統(tǒng)進(jìn)行設(shè)計方面的說明。331系統(tǒng)文件組織結(jié)構(gòu)一個ANDROID程序由ANDROIDLIBRARY、SRC、REFERENCEDLIBRARIES、RES、ANDROIDMANIFESTXML組成。其中ANDROIDLIBRARY為ANDROID系統(tǒng)類庫,SRC內(nèi)為程序員的代碼包,RESERENCEDLIBRARIES為第三方開發(fā)包,RES為程序所要用到的資源(如圖片,音視頻文檔,界面布局XML文檔等)存放的文件夾,ANDROIDMANIFESTXML為程序的主配置聲明及版本說明文件。本系統(tǒng)的簡要文件組織結(jié)構(gòu)如圖36所示。圖36項目文件組織結(jié)構(gòu)331用例的設(shè)計系統(tǒng)的用例主要有三大類游戲邏輯及流程控制類,走棋及聊天類,網(wǎng)絡(luò)連接類。以下為系統(tǒng)的詳細(xì)用例圖,各用例作用范圍及相互間的關(guān)系如圖37所示。圖37系統(tǒng)用例圖332類的設(shè)計根據(jù)系統(tǒng)用例圖,站在類的功能角度進(jìn)行分析設(shè)計,CNCHESS程序的類主要分以下五種界面顯示類、邏輯及流程控制類、數(shù)據(jù)管理類、網(wǎng)絡(luò)連接類、對弈控制類。各種類的JAVA類主要功能說明如下界面顯示類主要用來實現(xiàn)游戲的UI界面布局以及屏幕的刷新等功能,如SETTINGSDIALOG、VIEWSCORE、CHATDIALOG等類;數(shù)據(jù)管理類為保持?jǐn)?shù)據(jù)的安全性、完整性及一致性,所有的類必須通過數(shù)據(jù)管理類進(jìn)行數(shù)據(jù)的存取,如SETTINGSMANAGER、DATAMANAGER等類;邏輯及流程控制類主要負(fù)責(zé)協(xié)調(diào)各模塊之間的調(diào)用及流程的跳轉(zhuǎn),傳遞模塊之間的信息等功能,如CNCHESS、STARTGAME等類;網(wǎng)絡(luò)連接類用于連接網(wǎng)絡(luò),對需要發(fā)送的數(shù)據(jù)進(jìn)行加密解密,發(fā)送數(shù)據(jù),狀態(tài)監(jiān)聽,數(shù)據(jù)接收等功能,如CONNECTDIAL、OGXMPPCLIENT等類;對弈控制類主要為對弈過程中各面向?qū)ο蟮某橄竽P停策M(jìn)行必要的數(shù)據(jù)處理,如BOARDVIEW、UMPIRE等類。333系統(tǒng)交互模式的設(shè)計序列圖主要用于按照交互發(fā)生的一系列順序,顯示對象之間的這些交互。序列圖的主要用途之一,是把用例表達(dá)的需求,轉(zhuǎn)化為進(jìn)一步、更加正式層次的精細(xì)表達(dá)10。用例常常被細(xì)化為一個或者更多的序列圖。序列圖除了在設(shè)計新系統(tǒng)方面的用途外,它們還能用來記錄一個存在系統(tǒng)(稱它為“遺產(chǎn)”)的對象現(xiàn)在如何交互。當(dāng)把這個系統(tǒng)移交給另一個人或組織時,這個文檔很有用。用例VIEWSCORE的順序圖簡要的說明了用戶是如何與SQLITE數(shù)據(jù)庫進(jìn)行交互,看到自己的戰(zhàn)績這一事件的一、用戶按下查看戰(zhàn)績的按鈕(VIEWSCORE),系統(tǒng)得知這一指令,發(fā)出數(shù)據(jù)請求給SQLITE管理類,數(shù)據(jù)庫管理類查詢到數(shù)據(jù)后,將數(shù)據(jù)返回給系統(tǒng)查看類,系統(tǒng)查看類將戰(zhàn)績數(shù)據(jù)顯示在手機(jī)屏幕上;二、用戶發(fā)出清除戰(zhàn)績請求,邏輯控制類將這一請求信息發(fā)送給SQLITE管理類,管理類清除數(shù)據(jù)后,將結(jié)構(gòu)返回給邏輯控制類,邏輯控制類發(fā)送屏幕更新指令,用戶看到屏幕顯示數(shù)據(jù)已更新。USERVIEWSCOREWINDOWSSQLITEDATBASEVIEWSCOREQUERYSCOREDATSCOREDATCLEARSCORERESETHESCOREDAT圖38VIEWSCORE用例的順序圖網(wǎng)絡(luò)連接設(shè)置用例SETTING的順序圖一、用戶發(fā)出查看連接配置請求,SETTINGSDIALOG顯示類請求數(shù)據(jù)庫管理類去數(shù)據(jù)庫讀取數(shù)據(jù),數(shù)據(jù)庫管理類讀取到數(shù)據(jù)后,將數(shù)據(jù)返回給顯示類,顯示類顯示用戶請求的配置信息;二、用戶輸入新的XMPP網(wǎng)絡(luò)連接配置信息,SETTINGSDIALOG顯示類請求添加或者更新網(wǎng)絡(luò)配置信息,SQLITE管理類獲知更新請求后更新數(shù)據(jù)庫。USERSETINGSDIALOGWINDOWSSQLITEDATBASEVIEWSETINGSQUERYSETINGSDATSETINGSDATINPUTSETINGSUPDATESETINGSDAT圖39SETTING用例的順序圖游戲?qū)钟美齋TARTGAME涉及到相關(guān)的類較多,如圖310所示一、用戶按下開始游戲鍵,系統(tǒng)提示是否要聯(lián)網(wǎng)游戲,用戶確認(rèn)“是”后,系統(tǒng)讀取XMPP配置信息建立手機(jī)到服務(wù)器端的網(wǎng)絡(luò)連接;若用戶確認(rèn)“否”,則系統(tǒng)退回到游戲主界面(此時系統(tǒng)未連上互聯(lián)網(wǎng));二、用戶選擇聊天菜單,STARTGAME進(jìn)行相應(yīng)的邏輯處理,啟動聊天對話框;用戶輸入聊天信息,按下發(fā)送按鈕,消息發(fā)送到對方的服務(wù)器帳號,與此同時,在用戶自己的聊天記錄單里面顯示;三、用戶進(jìn)行走動棋子或者悔棋等請求信息,STARTGAME接收到按鍵事件或者觸摸屏事件后,將相應(yīng)的信息轉(zhuǎn)交XMPPCLIENT進(jìn)行信息的發(fā)送;XMPPCLIENT還負(fù)責(zé)客戶端監(jiān)聽,當(dāng)有對方有走棋等信息發(fā)送過來時,XMPPCLIENT將分辨是否為CNCHESS程序格式的信息并進(jìn)行解碼解包之后將信息轉(zhuǎn)交給STARTGAME,STARTGAME對轉(zhuǎn)交過來的信息進(jìn)行處理。USERCONECTOSERVERWINDOWSTARTGAMEWINDOWSQLITEDATBASECHATDIALOGWINDOWPRESSTARTGAMEBUTONCONFIRMTOSTARTYES,TARTREADSETINGSINFORMATIONSETINGSINFOSETINGSINFOENTERCHATMESAGECHATMESAGEXMPCLIENTCHATMESAGERECIVEDMESAGERECIVEDMESAGEMOVECHESCHESMOVEINFORMATIONCHESMOVEINFORMATIONREQUESTREQUESTINFORMATIONANSWERINFORMATION圖310STARTGAME用例的順序圖第4章模塊的實現(xiàn)需求分析階段回答了目標(biāo)軟件系統(tǒng)“要做什么”的問題,而軟件設(shè)計階段則需要回答目標(biāo)軟件系統(tǒng)“要怎么做”以實現(xiàn)用戶需求的問題12。在CNCHESS手機(jī)游戲系統(tǒng)的軟件設(shè)計建模階段,主要是以需求分析階段的成果(需求分析模型)作為輸入,進(jìn)行系統(tǒng)的體系結(jié)構(gòu)設(shè)計、類的詳細(xì)設(shè)計和用例實現(xiàn)設(shè)計??傮w來說,CNCHESS系統(tǒng)的軟件設(shè)計建模階段是對分析建模結(jié)果的進(jìn)一步精化和調(diào)整。圖41CNCHESS的項目開發(fā)流程項目要實現(xiàn)的模塊主要有四部分。第一部分是手機(jī)游戲的界面設(shè)計和背景音效的設(shè)計。和PC上的游戲開發(fā)有些許不同,手機(jī)游戲更加的注重用戶體驗,一個人性化的、時尚靚麗的游戲界面和優(yōu)美個性化的音效設(shè)計是一個成功的手機(jī)游戲要達(dá)到的基本要求。第二部分是手機(jī)之間的通信模塊設(shè)計。3G時代,手機(jī)通信受流量的限制很大,所以必須盡可能的使用簡潔的通信協(xié)議,減少數(shù)據(jù)的流量,減少用戶的通訊資費(fèi);再者,雙人對局這樣的在線游戲,必須體現(xiàn)其即時性,在一方因為電話打入或其他原因?qū)е掠螒驋炱鸹虻艟€時,另一方能及時得知道對方的狀態(tài),以便做出處理。另外,為了增加游戲的互動性,項目提供了即時聊天的功能。第三部分是對局智能程序的設(shè)計。在沒有朋友在線的情況下,可以和設(shè)計好的AI(ARTIFICIALINTELLIGENCE)算法進(jìn)行游戲。人工智能程序設(shè)計是一項對算法要求很高的程序設(shè)計,特別是在手機(jī)這種硬件資源緊缺的環(huán)境中,更是需要一個高效的算法來提供強(qiáng)大的AI對局支持。第四部分是邏輯控制模塊的設(shè)計。當(dāng)有緊急事件(如電話打入,電池沒電等)發(fā)生時,需全局模塊對當(dāng)前的游戲狀態(tài)進(jìn)行保存或退出等處理,并發(fā)送相關(guān)信息給對局的伙伴;用戶通過觸摸屏進(jìn)行走棋,棋子的走動規(guī)則由軟件進(jìn)行智能規(guī)則判斷;對局結(jié)束,軟件將對對局的過程及結(jié)果使用與國際接軌的棋譜記錄格式(PGN,F(xiàn)EN)進(jìn)行記錄,在對局結(jié)束后,用戶可用軟件讀入PGN格式的對局過程文件,進(jìn)行戰(zhàn)局的回放。軟件采用面向?qū)ο蟮木幊趟枷脒M(jìn)行構(gòu)思設(shè)計,使用UML設(shè)計軟件的模型,采用了部分GOF的設(shè)計模式進(jìn)行編碼與開發(fā)。41MVC分層結(jié)構(gòu)在CNCHESS系統(tǒng)的設(shè)計建模階段,是回答如何實現(xiàn)系統(tǒng)功能的問題,主要完成軟件體系結(jié)構(gòu)設(shè)計和詳細(xì)設(shè)計兩個方面的工作。軟件體系結(jié)構(gòu)設(shè)計是高級設(shè)計,主要包括以下步驟(1)體系結(jié)構(gòu)的層次劃分。(2)體系結(jié)構(gòu)的子系統(tǒng)劃分。(3)建立三層體系結(jié)構(gòu)與類之間的映射關(guān)系。詳細(xì)設(shè)計中首先要詳細(xì)描述每一個類,包括類的屬性、操作、類之間的關(guān)系,同時對系統(tǒng)用例進(jìn)行設(shè)計。詳細(xì)設(shè)計包括如下內(nèi)容(1)設(shè)計實體類的屬性和操作。(2)設(shè)計邊界類的功能組成和操作。(3)設(shè)計類之間的關(guān)系。(4)構(gòu)造設(shè)計類圖模型。(5)借助交互圖實現(xiàn)用例設(shè)計。(6)數(shù)據(jù)模型的設(shè)計。(7)實現(xiàn)模型的設(shè)計。(8)設(shè)計建模的評審。本系統(tǒng)使用MVC設(shè)計模式13進(jìn)行體系的基礎(chǔ)架構(gòu),如圖42所示模型(M)XMPPCLIENT、UMPIRE、MANAGER類視圖(V)DIALOG、VIEW類控制器(C)CNCHESS、STARTGAME類客戶根據(jù)客戶的請求來操縱模型數(shù)據(jù)查詢通知數(shù)據(jù)變化客戶請求控制視圖顯示客戶請求數(shù)據(jù)請求響應(yīng)圖42CNCHESS的MVC三層架構(gòu)ANDROID應(yīng)用程序的一般架構(gòu)為VIEWSCONTENTPROVIDERSRESOURCEMANAGERNOTIFICATIONMANAGERACTIVITYMANAGER,你可以選擇其中的若干項作為你應(yīng)用的架構(gòu)元素。系統(tǒng)的項目文件組織結(jié)構(gòu)如圖43所示,其中源代碼包中的VIEW類和DIALOG類以及RES資源文件夾中的所有XML文件,充當(dāng)視圖的角色,負(fù)責(zé)手機(jī)界面的顯示和與用戶的交互;CNCHESS,STARTGAME兩個類充當(dāng)“”的角色,重要控制程序界面的切換和信息的分發(fā);BOARDVIEW,UMPIRE,XMPPCLIENT分別是棋盤類、裁判類、信息收發(fā)類,充當(dāng)模型的角色,分別負(fù)責(zé)棋盤模型的顯示與更新、裁判對象模型的建立、即時信息通信模型的建立;DATAMANAGER,SETTINGSMANAGER兩個類負(fù)責(zé)與SQLITE數(shù)據(jù)庫的溝通,分別負(fù)責(zé)戰(zhàn)績勝負(fù)次數(shù)、XMPP聯(lián)接設(shè)置的數(shù)據(jù)存取。圖43CNCHESS的文件組織結(jié)構(gòu)42總體控制模塊軟件體系結(jié)構(gòu)是軟件在設(shè)計構(gòu)成上基本的、可供設(shè)計選擇的形態(tài)和總體結(jié)構(gòu),本質(zhì)上,它是對軟件需求的一種抽象解決方案。在引入了體系結(jié)構(gòu)的軟件開發(fā)之后,CNCHESS中國象棋手機(jī)游戲系統(tǒng)的構(gòu)造過程變?yōu)椤皢栴}定義軟件需求軟件體系結(jié)構(gòu)設(shè)計軟件詳細(xì)設(shè)計軟件實現(xiàn)”。本系統(tǒng)的總體控制模塊主要有CNCHESS以及STARTGAME。CNCHESS用于控制各子模塊(ACTIVITY)的啟動、休眠以及消亡;例如,當(dāng)用戶按下“開始游戲”按鈕時,STARTGAME內(nèi)置的監(jiān)聽器STARTGAMESETONCLICKLISTENER將獲取ONCLICK事件并調(diào)用SHOWSTARTGAME函數(shù),啟動對弈相關(guān)的模塊。STARTGAME屬于對局子模塊,用于協(xié)調(diào)對局過程中對各中系統(tǒng)信息進(jìn)行邏輯判斷、消息分發(fā),控制、調(diào)用、協(xié)調(diào)各二級子模塊的運(yùn)行。依據(jù)上一階段中UML設(shè)計出來的模型及相關(guān)的文檔,對系統(tǒng)的各類進(jìn)行細(xì)化后,得出系統(tǒng)各模塊的類以及各類之間的相互關(guān)聯(lián)關(guān)系。下面將詳細(xì)介紹各類模塊作用以及類之間的相互關(guān)聯(lián)性。關(guān)于總體流程控制類CNCHESS,如圖44所示,各類相關(guān)作用簡介如下負(fù)責(zé)啟動游戲,控制協(xié)調(diào)各模塊的運(yùn)行;STARTGAME負(fù)責(zé)啟動對局模塊以及對局時候各對局子模塊的相互協(xié)調(diào);SETTINGSDIALOG負(fù)責(zé)游戲網(wǎng)絡(luò)配置的UI顯示以及數(shù)據(jù)獲取、數(shù)據(jù)儲存等;VIEWSCORE負(fù)責(zé)游戲勝負(fù)戰(zhàn)績的UI顯示以及管理功能;COMPANYINFO負(fù)責(zé)游戲開發(fā)商信息的顯示以及用戶幫助文檔的UI顯示;EXITGAMEDIALOG負(fù)責(zé)結(jié)束游戲相關(guān)進(jìn)程、線程,保存相關(guān)游戲數(shù)據(jù),安全退出游戲。圖44總體控制類及相關(guān)類的聯(lián)系圖圖45對弈流程控制模塊與網(wǎng)絡(luò)通信模塊聯(lián)系圖關(guān)于對弈流程控制類STARTGAME與通信模塊的組織聯(lián)系圖,如圖45所示。對弈流程控制主要作用為協(xié)調(diào)各對弈子模塊的通信與調(diào)用。與對弈流程控制有關(guān)的模塊有網(wǎng)絡(luò)連接部分中建立連接以及數(shù)據(jù)發(fā)送接收的類,負(fù)責(zé)數(shù)據(jù)存取的MANAGER類,用于聊天的CHATDIALOG窗體類,走棋、棋盤同步更新模塊的類、請求回復(fù)窗體類等。43數(shù)據(jù)存儲模塊數(shù)據(jù)存儲模塊有四個類,分為儲存控制類和界面信息顯示兩種,說明如下類SETTINGSDIALOG、VIEWSCORE用來做用戶UI界面輸入設(shè)置等信息的獲取和查看、清除對局勝負(fù)情況;類DATAMANAGER與SETTINGSMANAGER是數(shù)據(jù)管理類。下面就DATAMANAGER函數(shù)簡要介紹一個數(shù)據(jù)管理類是怎樣實現(xiàn)的1變量設(shè)置管理類中有屬性為PRIVATE的變量,存取都必須通過函數(shù)內(nèi)置的GET、SET函數(shù)進(jìn)行;2判斷表是否存在管理數(shù)據(jù),必須先是有你需要管理的表,ISSCORETABLE函數(shù)通過系統(tǒng)API中的QUERY函數(shù)對系統(tǒng)表SYSOBJECT進(jìn)行查詢,若系統(tǒng)表中沒有所要查找的對象,則需建立SCORETABLE表;3表的創(chuàng)建與刪除、記錄的添刪修數(shù)據(jù)的存取都是通過系統(tǒng)API接口中的EXECSQL函數(shù)來完成的,例如當(dāng)需要刪除SCORETABLE這張表,語句為DBEXECSQLSQL,DB為所要操作的數(shù)據(jù)庫的句柄,SQL為所要執(zhí)行的語句。MANAGER的這兩個類有些類似JAVABEAN,是為了保證數(shù)據(jù)的安全、完整、一致,其他類必須通過數(shù)據(jù)庫MANAGER類才能與SQLITE數(shù)據(jù)庫進(jìn)行溝通,完成對數(shù)據(jù)的操作。實踐編程難點(diǎn)在類UMPIRE、MANAGER,由分析設(shè)計的結(jié)果生成各模塊的詳細(xì)編碼單元以及各類的模型。UMPIRE是裁判員類,主要用于判斷棋子走動是否規(guī)則、對弈的勝負(fù)結(jié)果。系統(tǒng)源碼包中,帶MANAGER后綴的都是屬于數(shù)據(jù)管理相關(guān)類。MANAGER類主要調(diào)用系統(tǒng)API如ANDROIDDATABASE或者ANDROIDDATABASESQLITE進(jìn)行數(shù)據(jù)的存取。如圖46所示,各類作用相關(guān)作用如下圖46查看戰(zhàn)績、連接設(shè)置以及走棋模塊的類圖本程序采用輕量級數(shù)據(jù)庫SQLITE3存儲管理數(shù)據(jù),數(shù)據(jù)庫名稱為DATASDB。DATASDB數(shù)據(jù)庫含有兩張表,SCORETABLE表用來儲存對局的勝負(fù)信息,SETTINGSTABLE用來儲存XMPP網(wǎng)絡(luò)連接配置。表41SCORETABLE存儲對局的勝負(fù)信息字段含義數(shù)據(jù)類型是否為空初始值ID記錄的編號INT否0WINNING獲勝次數(shù)INT否0FALLING失敗次數(shù)INT否0PEACE平局次數(shù)INT否0表42SETTINGSTABLE存儲XMPP的連接設(shè)置字段含義數(shù)據(jù)類型是否為空初始值ID(PK)記錄的編號INT否0HOST服務(wù)器地址STRING否TALKGOOGLECOMPORT服務(wù)器端口INT否5222SERVICEJABBER服務(wù)提供商STRING否GMAILCOMPARTNERID對手GMAIL帳號STRING否EXAMPLEGMAILCOMUSERID用戶GMAIL帳號STRING否EXAMPLE2GMAILCOMUSERPWD用戶密碼STRING是12345644數(shù)據(jù)傳輸模塊數(shù)據(jù)傳輸模塊有兩個類,很多算法及技術(shù)難點(diǎn)都需要用到第三方開發(fā)包SMACKJAR中的XMPP組件及其API完成9,模塊說明如下CONNECTDIALOG用來連接或者斷開XMPP網(wǎng)絡(luò)連接,當(dāng)連接上服務(wù)器后,啟動對局模塊,進(jìn)行游戲;XMPPCLITE接受STARTGAME模塊轉(zhuǎn)交過來的數(shù)據(jù),在信息分類、格式化、加密后,發(fā)送給網(wǎng)絡(luò)中的JABBER服務(wù)器;同時,監(jiān)聽服務(wù)器發(fā)送過來的CNCHESS格式化數(shù)據(jù),解密、解包分類后轉(zhuǎn)交給STARTGAME模塊;另外,也監(jiān)聽對手的在線狀態(tài)等信息,以便在發(fā)生突發(fā)情況時進(jìn)行相應(yīng)的處理,從而真正的達(dá)到即時游戲的效果。系統(tǒng)在進(jìn)行聯(lián)網(wǎng)對局前,必須對網(wǎng)絡(luò)連接進(jìn)行有效的配置。游戲的網(wǎng)絡(luò)連接配置UI界面以及各配置項的說明如圖47及表43所示,配置信息的數(shù)據(jù)存儲流程圖如圖47所示。圖47SETTINGSDIALOG對話框輸入項游戲連接配置對話框各輸入項的詳細(xì)定義如表43所列。表43XMPP設(shè)置界面各項目詳細(xì)定義標(biāo)識名稱數(shù)據(jù)類型數(shù)據(jù)值有效范圍輸入媒體安全保密條件USERID用戶GMAIL帳號STRINGGMAILCOMSETTINGSDIALOGSQLITE限制訪問PASSWORD用戶密碼STRINGSETTINGSDIALOGSQLITE限制訪問、MD5加密PARTNERID對方GMAIL帳號STRINGGMAILCOMSETTINGSDIALOGSQLITE限制訪問HOST提供IM服務(wù)的主機(jī)STRINGTALKGOOGLECOMSETTINGSDIALOGSQLITE限制訪問PORT提供IM服務(wù)主機(jī)的端口號INT5222SETTINGSDIALOGSQLITE限制訪問SERVICE所用的服務(wù)類型STRINGGMAILCOMSETTINGSDIALOGSQLITE限制訪問系統(tǒng)使用SQLITE數(shù)據(jù)庫,若無游戲配置信息或者配置信息無效,系統(tǒng)將提示進(jìn)行正確的網(wǎng)絡(luò)連接配置,并對正確的配置進(jìn)行存儲。配置信息的存儲數(shù)據(jù)流程圖如圖48所示。用戶XMPP設(shè)置處理SQLITE數(shù)據(jù)庫輸入數(shù)據(jù)存入數(shù)據(jù)查看數(shù)據(jù)讀取數(shù)據(jù)圖48XMPP網(wǎng)絡(luò)連接設(shè)置數(shù)據(jù)流程圖為保證用戶手機(jī)之間數(shù)據(jù)傳輸中各類數(shù)據(jù)的區(qū)分,系統(tǒng)在數(shù)據(jù)發(fā)送前需對各類數(shù)據(jù)信息進(jìn)行一定的格式化,待數(shù)據(jù)信息到達(dá)對方的手機(jī)后,系統(tǒng)再進(jìn)行相應(yīng)的解包。另外,為保證數(shù)據(jù)在網(wǎng)絡(luò)間傳輸?shù)陌踩裕谑謾C(jī)發(fā)送信息至互聯(lián)網(wǎng)這一段使用了SMACKJAR類庫中的加密函數(shù)。用戶聊天對話框聊天信息的輸入與顯示處理XMPP客戶端聊天信息的發(fā)送與接收處理格式化數(shù)據(jù)格式化數(shù)據(jù)互聯(lián)網(wǎng)輸入信息未格式化聊天信息解包后的聊天信息顯示信息圖49CHAT聊天模塊數(shù)據(jù)流程圖45對局模塊對局模塊是本系統(tǒng)設(shè)計編碼中較復(fù)雜,內(nèi)容比較多的一個模塊。主要有以下子模塊1STARTGAME用來啟動對局、網(wǎng)絡(luò)連接以及對各局子模塊進(jìn)行協(xié)調(diào);2UMPIRE裁判類,定義走棋規(guī)則,用來控制走棋的順序以及對弈雙方的同步,判定對局的勝負(fù);3ANSWERDIALOG回話類,回答對方的對局請求等信息;4CHATDIALOG對話聊天類,走棋的過程中,用來啟動對話框以和對方進(jìn)行即時聊天;5RESTOREPOINT用來記錄游戲過程中的一定走棋記錄,創(chuàng)建還原點(diǎn),以方便悔棋時,棋盤上棋子的回滾;6COMPANYINFO用來顯示開發(fā)商信息以及用戶幫助信息的UI類;7ERRORDIALOG用來顯示游戲過程中出現(xiàn)的錯誤信息;8EXITGAMEDIALOG用來結(jié)束游戲進(jìn)程,包括游戲相關(guān)的各線程;9SMACKJAR第三方開發(fā)包,提供XMPP服務(wù)接口,數(shù)據(jù)加密等功能。對局模塊主要處理的是用戶之間對弈的過程同步、規(guī)則控制等信息。用戶走棋,產(chǎn)生走棋信息,系統(tǒng)捕獲到按鍵事件或者觸摸屏事件后,會進(jìn)行數(shù)據(jù)的分類以及格式化,然后加密發(fā)送到對手的手機(jī)中。在接收到對手發(fā)來的走棋信息時,系統(tǒng)則先通過SMACKJAR類庫進(jìn)行解密,然后解包,進(jìn)行走棋信息的邏輯處理,最后通過界面顯示類呈現(xiàn)于用戶的手機(jī)屏幕。用戶對局界面顯示處理XMPP客戶端聊天信息的發(fā)送與接收處理格式化數(shù)據(jù)格式化數(shù)據(jù)互聯(lián)網(wǎng)走棋信息走棋數(shù)據(jù)對方棋子移動數(shù)據(jù)棋子移動信息對局?jǐn)?shù)據(jù)邏輯處理走棋數(shù)據(jù)對方棋子移動數(shù)據(jù)圖410走棋模塊數(shù)據(jù)流程圖對弈過程中,可打開聊天框與對手進(jìn)行即時聊天。聊天框如圖411所示。對局的棋盤界面以及菜單的設(shè)置顯示如圖412所示。圖411CHATDIALOG對話框輸入項圖412STARTGAME對弈界面46XML界面布局模塊CNCHESS系統(tǒng)使用XML進(jìn)行游戲界面的基礎(chǔ)布局1,主要有以下布局界面,各界面的布局內(nèi)容以及與各JAVA類的映射關(guān)系為1ANSWERDIALOGBOXXML回復(fù)對話框的界面布局;2CHATDIALOGBOXXML聊天對話框的界面布局;3COMPANYINFOXML顯示開發(fā)商信息以及用戶幫助文件;4ERRORDIALOGXML錯誤信息提示框布局;5EXITGAMEXML退出游戲提示框;6MAINXML游戲主界面布局;7SETTINGSXML游戲XMPP連接配置界面布局;8STARTGAMEXML游戲?qū)纸缑娌季郑?SURE_CONNECTXML確認(rèn)進(jìn)行網(wǎng)絡(luò)連接對話框布局;10TOCONFIRMXML確認(rèn)回復(fù)對方請求的對話框布局;11VIEWSCOREXML查看戰(zhàn)績界面布局。圖413為RES文件夾下LAYOUT(界面布局資源)的文件組織結(jié)構(gòu)。圖413XML界面布局文件47系統(tǒng)中關(guān)鍵技術(shù)的應(yīng)用及實現(xiàn)471SQLITE3的應(yīng)用SQLITE是集成在ANDROID平臺上的嵌入式關(guān)系型數(shù)據(jù)庫。它是一個支持結(jié)構(gòu)化存儲、查詢輕量級開源數(shù)據(jù)庫。SQLITE3支持的數(shù)據(jù)類型有NULL、INTEGER、REAL浮點(diǎn)數(shù)字、TEXT字符串文本和BLOB二進(jìn)制對象數(shù)據(jù)類型,雖然它支持的類型雖然只有五種,但實際上SQLITE3也接受VARCHARN、CHARN、DECIMALP,S等數(shù)據(jù)類型,只不過在運(yùn)算或保存時會轉(zhuǎn)成對應(yīng)的五種數(shù)據(jù)類型。在ANDROID系統(tǒng),為我們提供了一個名為SQLITEOPENHELPER的類,該類用于對數(shù)據(jù)庫版本進(jìn)行管理,該類是一個抽象類,必須繼承它才能使用。為了實現(xiàn)對數(shù)據(jù)庫版本進(jìn)行管理,SQLITEOPENHELPER類有兩種重要的方法,分別是ONCREATESQLITEDATABASEDB和ONUPGRADESQLITEDATABASEDB,INTOLDVERSION,INTNEWVERSION。在項目的實現(xiàn)過程中DATAMANAGERJAVA和SETTINGSMANAGERJAVA兩個類都是通過調(diào)用ANDROID的SQLITEOPENHELPER類對SQLITE數(shù)據(jù)庫進(jìn)行數(shù)據(jù)庫以及其中的數(shù)據(jù)進(jìn)行創(chuàng)建、修改和刪除。472XML界面設(shè)計在本系統(tǒng)的軟件設(shè)計開發(fā)過程中,XML的布局是最先開始的。ANDROID的界面1,需要寫在RES/LAYOUT的XML里面,一般情況下一個XML對應(yīng)一個界面。做ANDROID的界面有點(diǎn)像寫HTML連注釋代碼的方式都一樣,要先給ANDROID定框架,然后再在框架里面放控件,ANDROID提供了幾種框架,ABSOLUTELAYOUT,LINEARLAYOUT,RELATIVELAYOUT,TABLELAYOUT,FRAMELAYOUT,FRAMELAYOUT里面只可以有一個控件,并且不能設(shè)計這個控件的位置,控件會放到左上角LINEARLAYOUT里面可以放多個控件,但是一行只能放一個控件TABLELAYOUT這個要和TABLEROW配合使用,很像HTML里面的TABLEABSOLUTELAYOUT里面可以放多個控件,并且可以自己定義控件的X,Y的位置RELATIVELAYOUT里面可以放多個控件,不過控件的位置都是相對位置界面的布局好像還可以直接引用一些VIEW,如SCROLLVIEW等框架的XML如下ANDROIDID“ID/WIDGET36“ANDROIDLAYOUT_WIDTH“FILL_PARENT“ANDROIDLAYOUT_HEIGHT“FILL_PARENT“上面代碼中以ANDROID開頭,表示控件的屬性,F(xiàn)ILL_PARENT是系統(tǒng)自帶參數(shù),表示最大的寬或高,還有一個WRAP_CONTENT,表示剛好合適的寬或高。除了上面的三個屬性外,還有一些其他的屬性,如ANDROIDBACKGROUND“FF0000FF”,設(shè)置框架的背景色,ANDROIDRIENTATION“VERTICAL”用來設(shè)置這個框架里面的走向?qū)傩浴?蚣芘茫涂梢栽诶锩嫣砑涌丶?,控件的基本寫法也和框架一樣,后面用到的時候?qū)⒕唧w研究各個控件的細(xì)節(jié)。473CNCHESS的2D圖像編程本系統(tǒng)的2D圖像編程主要用于對局模塊中棋盤、棋子、選擇框、提示信息等圖像元素的更新。SGL編程是本系統(tǒng)設(shè)計中的難點(diǎn),在系統(tǒng)的開發(fā)過程中主要使用了ANDROID系統(tǒng)類庫中的2D圖形庫接口2,達(dá)到了預(yù)期的效果,實現(xiàn)了項目的目標(biāo)。通過使用ANDROID提供的2D畫圖API,程序員能一筆一劃或者使用GRAPHIC來畫所需要的東西了,要畫什么要顯示什么都完全可控。這種方式根據(jù)環(huán)境還分為兩種一種就是使用普通VIEW的CANVAS畫圖,還有一種就是使用專門的SURFACEVIEW的CANVAS來畫圖。兩種的主要是區(qū)別就是可以在SURFACEVIEW中定義一個專門的線程來完成畫圖工作,應(yīng)用程序不需要等待VIEW的刷圖,提高性能。前面一種適合處理量比較小,幀率比較小的動畫,比如說象棋游戲之類的;而后一種主要用在游戲,高品質(zhì)動畫方面的畫圖。本系統(tǒng)使用的是前一種圖像處理方式,系統(tǒng)棋盤棋子以及對局信息的繪制、棋盤的顯示更新等圖像處理部分主要使用了系統(tǒng)API中的ANDROIDGRAPHICS類庫進(jìn)行處理。在本項目中,BOARDVIEW類主要是做棋盤模型的構(gòu)建、更行以及圖像方面的處理工作。下面簡要介紹下在本項目的開發(fā)中,是如何構(gòu)建棋盤模型以及如何實現(xiàn)棋盤圖形的重繪。1模型構(gòu)建棋盤的模型
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 手機(jī)淘寶協(xié)議書
- 煤礦定量合同范本
- 苗木保護(hù)協(xié)議書
- 苗木轉(zhuǎn)租協(xié)議書
- 蔬菜供貨協(xié)議書
- 融資回購協(xié)議書
- 認(rèn)購定房協(xié)議書
- 設(shè)備發(fā)放協(xié)議書
- 設(shè)備監(jiān)管協(xié)議書
- 設(shè)計作品協(xié)議書
- 2025四川航天川南火工技術(shù)有限公司招聘考試題庫及答案1套
- 廣東廣電網(wǎng)絡(luò)2026屆秋季校園招聘185人備考題庫完整答案詳解
- 2025年度皮膚科工作總結(jié)及2026年工作計劃
- (一診)成都市2023級高三高中畢業(yè)班第一次診斷性檢測物理試卷(含官方答案)
- 四川省2025年高職單招職業(yè)技能綜合測試(中職類)汽車類試卷(含答案解析)
- 2024江蘇無錫江陰高新區(qū)招聘社區(qū)專職網(wǎng)格員9人備考題庫附答案解析
- 2025西部機(jī)場集團(tuán)航空物流有限公司招聘筆試考試備考試題及答案解析
- 植入類器械規(guī)范化培訓(xùn)
- 水泥罐安全操作規(guī)程標(biāo)準(zhǔn)
- 腰椎間盤突出癥中醫(yī)分級診療指南(2025版版)
- 空分考試試題及答案
評論
0/150
提交評論