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

正文內(nèi)容

畢業(yè)論文-基于android系統(tǒng)的中國(guó)象棋手機(jī)游戲設(shè)計(jì)-資料下載頁

2025-06-03 21:12本頁面
  

【正文】 對(duì)局模塊主要處理的是用戶之間對(duì)弈的過程同步、規(guī)則控制等信息。 用戶走棋,產(chǎn)生走棋信息,系統(tǒng)捕獲到按鍵事件或者觸摸屏事件后,會(huì)進(jìn)行數(shù)據(jù)的分類以及格式化,然后加密發(fā)送到對(duì)手的手機(jī)中。 在接收到對(duì)手發(fā)來的走棋信息時(shí),系統(tǒng)則先通過 類庫進(jìn)行解密,然后解包,進(jìn)行走棋信息的邏輯處理,最后通過界面顯示類呈現(xiàn)于用戶的手機(jī)屏幕。 用 戶對(duì) 局 界 面 顯 示 處理X M P P 客 戶 端 :聊 天 信 息 的 發(fā) 送與 接 收 處 理格 式 化 數(shù) 據(jù)格 式 化 數(shù) 據(jù)互 聯(lián) 網(wǎng)走 棋 信 息走 棋 數(shù) 據(jù)對(duì) 方 棋 子 移 動(dòng) 數(shù) 據(jù)棋 子 移 動(dòng) 信 息對(duì) 局 數(shù) 據(jù) 邏 輯 處理走 棋 數(shù) 據(jù)對(duì) 方 棋 子 移 動(dòng) 數(shù) 據(jù) 圖 410 走棋模塊數(shù)據(jù)流程圖 對(duì)弈過程中,可打開聊天框與對(duì)手進(jìn)行即時(shí)聊天。 聊天框如圖 411 所示。 對(duì)局的棋盤界面以及菜單的設(shè)置顯示如圖 412 所示 。 圖 411 chatDialog 對(duì)話框輸入項(xiàng) 圖 412 startGame 對(duì)弈界面 第 4 章 模塊的實(shí)現(xiàn) 24 XML 界面布局模塊 Chess 系統(tǒng)使用 XML 進(jìn)行游戲界面的基礎(chǔ)布局 [1],主要有以下布局界面 ,各界面的布局內(nèi)容以及與各 Java 類的映射關(guān)系為: 1) : 回復(fù)對(duì)話框 的界面布局 ; 2) :聊天對(duì)話框的界面布局; 3) :顯示開發(fā) 商信息以及用戶幫助文件; 4) :錯(cuò)誤信息提示框布局; 5) :退出游戲提示框; 6) :游戲主界面布局; 7) :游戲 XMPP 連接配置界面布局; 8) :游戲?qū)纸缑娌季郑? 9) :確認(rèn)進(jìn)行網(wǎng)絡(luò)連接對(duì)話框布局; 10) :確認(rèn)回復(fù)對(duì)方請(qǐng)求的對(duì)話框布局; 11) :查看戰(zhàn)績(jī)界面布局。 圖 413 為 res 文件夾下 layout(界面布局資源)的文件組織結(jié)構(gòu)。 圖 413 XML 界面布局文件 系統(tǒng)中關(guān)鍵技術(shù)的 應(yīng)用及 實(shí)現(xiàn) SQLite3 的應(yīng)用 SQLite 是集成在 Android 平臺(tái)上的嵌入式關(guān)系型數(shù)據(jù)庫。它是一個(gè)支持結(jié)構(gòu)化存儲(chǔ)、查詢輕量級(jí)開源數(shù)據(jù)庫。 SQLite3 支持的數(shù)據(jù)類型有 NULL、 INTEGER、第 4 章 模塊的實(shí)現(xiàn) 25 REAL(浮點(diǎn)數(shù)字 )、 TEXT(字符串文本 )和 BLOB(二進(jìn)制對(duì)象 )數(shù)據(jù)類型,雖然它支持的類型雖然只有五種,但實(shí)際上 sqlite3 也接受 varchar(n)、 char(n)、 decimal(p,s)等數(shù)據(jù)類型,只不過在運(yùn)算或保存時(shí)會(huì)轉(zhuǎn)成對(duì)應(yīng)的五 種數(shù)據(jù)類型。 在 Android 系統(tǒng),為我們提供了一個(gè)名為 SQLiteOpenHelper 的類,該類用于對(duì)數(shù)據(jù)庫版本進(jìn)行管理,該類是一個(gè)抽象類,必須繼承它才能使用。 為了實(shí)現(xiàn)對(duì)數(shù)據(jù)庫版本進(jìn)行管理, SQLiteOpenHelper 類有兩種重要的方法,分別是 onCreate(SQLiteDatabasedb)和 onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)。 在項(xiàng)目的實(shí)現(xiàn)過程中: 和 兩個(gè)類都是通過調(diào)用 Android的 SQLiteOpenHelper 類對(duì) SQLite數(shù)據(jù)庫進(jìn)行數(shù)據(jù)庫以及其中的數(shù)據(jù)進(jìn)行創(chuàng)建、修改和刪除。 XML 界面設(shè)計(jì) 在本系統(tǒng) 的 軟件設(shè)計(jì)開發(fā)過程中, xml 的布局是最先開始的。 Android 的界面 [1], 需要寫在 res/layout 的 xml 里面,一般情況下一個(gè) xml 對(duì)應(yīng)一個(gè)界面。做 Android 的界面有點(diǎn)像寫 html(連注釋代碼的方式都一樣 ),要先給 Android 定框架,然后再在框架里面放控件, Android 提供了幾種框架 ,AbsoluteLayout,LinearLayout,RelativeLayout,TableLayout,FrameLayout,FrameLayout:里面只可以有一個(gè)控件,并且不能設(shè)計(jì)這個(gè)控件的位置,控件會(huì)放到左上角 LinearLayout:里面可以放多個(gè)控件,但是一行只能放一個(gè)控件 TableLayout:這個(gè)要和 TableRow 配合使用,很像 html 里面的 table AbsoluteLayout:里面可以放多個(gè)控件,并且可以自己定義控件的 x,y 的位置 RelativeLayout:里面可以放多個(gè)控件,不過控件的位置都是 相對(duì)位置 (界面的布局好像還可以直接引用一些 view,如 ScrollView 等 )框架的 xml 如下: Android:id=@+id/widget36 Android:layout_width=fill_parent Android:layout_height=fill_parent 上面代碼中以 Android:開頭,表示控件的屬性, fill_parent 是系統(tǒng)自帶參數(shù),表示最大的寬或高,還有一個(gè) wrap_content,表示剛好合適的寬或高。除了上面的三個(gè)屬性外,還有一些其他的屬性,如 Android:background=“ FF0000FF” ,設(shè)置框架的背景色, Androidrientation=“ vertical”用來設(shè)置這個(gè)框架里面的走向?qū)傩浴? 框架弄好,就可以 在 里面添加 控件了,控件的基本寫法也和框架一樣,后面用到的時(shí)候?qū)?具體研究各個(gè)控件的細(xì)節(jié)。 Chess 的 2D 圖像編程 本系統(tǒng)的 2D 圖像編程主要用于對(duì)局模塊中 棋盤、棋子、選擇框、提示信息等圖像元素的更新 。 SGL 編程是本系統(tǒng)設(shè)計(jì)中的難點(diǎn),在系統(tǒng)的開發(fā)過程中主要使用了 Android第 4 章 模塊的實(shí)現(xiàn) 26 系統(tǒng)類庫中的 2D 圖形庫接口 [2],達(dá)到了預(yù)期的 效果,實(shí)現(xiàn)了項(xiàng)目的目標(biāo)。 通過使用 Android 提供的 2D 畫圖 API,程序員能一筆一劃或者使用 Graphic來畫所需要的東西了,要畫什么要顯示什么都完全可控。這種方式根據(jù)環(huán)境還分為兩種:一種就是使用普通 View 的 canvas 畫圖,還有一種就是使用專門的SurfaceView 的 canvas 來畫圖。兩種的主要是區(qū)別就是可以在 SurfaceView 中定義一個(gè)專門的線程來完成畫圖工作,應(yīng)用程序不需要等待 View 的刷圖,提高性能。前面一種適合處理量比較小,幀率比較小的動(dòng)畫,比如說象棋游戲之類的;而后一種主要用在游戲, 高品質(zhì)動(dòng)畫方面的畫圖。 本系統(tǒng)使用的是前一種圖像處理方式,系統(tǒng)棋盤棋子以及對(duì)局信息的繪制、棋盤的顯示更新等圖像處理部分主要使用了系統(tǒng) API 中的 .* 類庫 進(jìn)行處理 。 在本項(xiàng)目中, BoardView 類主要是做 棋盤模型的構(gòu)建、更行以及 圖像方面的處理 工作 。 下面簡(jiǎn)要介紹下 在本項(xiàng)目的開發(fā)中, 是如何構(gòu)建棋盤模型以及如何實(shí)現(xiàn)棋盤圖形的重繪。 1) 模型構(gòu)建: 棋盤的模型實(shí)際上是一個(gè) int[10][9]的二維數(shù)組, 二維數(shù)組中每一個(gè)數(shù)值代表棋盤上相應(yīng)十行九列交叉點(diǎn)上的棋子代碼 。象棋一共 32個(gè)棋子,每個(gè)棋 子的代碼從 1 至 32 不等,棋盤網(wǎng)格線上沒有棋子的交叉點(diǎn)代碼為 0。 對(duì)弈模塊初次啟動(dòng)或者對(duì)弈完一局后,將進(jìn)行棋盤的數(shù)學(xué)模型以及手機(jī)屏幕上棋盤、棋子的初始化,初始化后的棋盤數(shù)學(xué)模型如圖414 所示。 圖 414 棋盤數(shù)學(xué)模型 當(dāng)棋子走動(dòng)時(shí),棋盤的數(shù)學(xué)模型里的各項(xiàng)數(shù)據(jù)隨之更新,模型里面的數(shù)據(jù)每一次的更新,都將使函數(shù)調(diào)用系統(tǒng) 2D 函數(shù)庫中的 invalidate()方法,此方法通知系統(tǒng)屏幕已過期無效,需重新取數(shù)據(jù)繪制屏幕。系統(tǒng)取更新后的棋盤模型中的數(shù)據(jù),并調(diào)用相關(guān)方法把棋盤重新繪制出來。 2) 棋盤、棋子的重繪: 本游戲 使用到 的 Android 平臺(tái)的 系統(tǒng) 2D 函數(shù)庫中的drawLine()、 drawCircle()、 drawText()三種線條繪制 、填充 方法。 第 4 章 模塊的實(shí)現(xiàn) 27 一個(gè)棋盤數(shù)學(xué)模型的圖像繪制過程是這樣的:設(shè)置桌布底色、在桌布上繪制黑色 十行九列的橫線和縱線 以及棋盤邊框 、 在四個(gè)炮的初始點(diǎn) 繪制 十字架 以及“楚河漢界”字樣、 根據(jù)棋盤數(shù)學(xué)模型在棋盤上相應(yīng)位置 繪制棋子 圓圈 并填充 黑色或者紅色 、 根據(jù)棋盤數(shù)學(xué)模型中棋子的代碼繪制出棋子上相應(yīng)的中文文字 、根據(jù)觸摸屏返回的擇點(diǎn)所屬區(qū)域繪制棋子選擇框 。至此,完成了一次重繪過程。每一次數(shù)學(xué)模型的改動(dòng),都將使系統(tǒng)進(jìn) 行一次棋盤、棋子的重繪。 圖 415 BoardView 中的畫面繪制函數(shù) 對(duì)弈過程中雙方棋盤上棋子的同步 當(dāng)是輪到己方走棋時(shí) :己方進(jìn)行一步合法的走棋后,將由 startGame 對(duì)局控制類將所走棋子的源位置和目標(biāo)位置通過信息收發(fā)類 XMPPClient 類把 m,n,sx,sy 發(fā)送給對(duì)方,對(duì)方收到這四個(gè)參數(shù)后,將改變棋盤模型數(shù)組中棋子編號(hào)的位置,并調(diào)用 boardView 類中的棋盤更新函數(shù) updateChessBoard()進(jìn)行棋盤畫面的重繪; 對(duì)方根據(jù)更新后棋盤模型數(shù)組由裁判函數(shù)判別他自己是否死棋; 若未分勝負(fù),則交換己方和對(duì)方的角色,繼續(xù)上面兩步的循環(huán),直到一方由裁判判負(fù)或選擇菜單中的“認(rèn)輸”、“求和”選項(xiàng)。 XMPP 數(shù)據(jù)傳輸 XMPP(可擴(kuò)展消息處理現(xiàn)場(chǎng)協(xié)議)是基于可擴(kuò)展標(biāo)記語言( XML)的協(xié)議,它用于即時(shí)消息( IM)以及在線現(xiàn)場(chǎng)探測(cè), 最終要實(shí)現(xiàn)不同即時(shí)通信系統(tǒng)間的互通 [5]。 本系統(tǒng)采用開源的 XMPP 開源即時(shí)通信協(xié)議進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)的傳輸。 Google Talk 是基于 XMPP 協(xié)議,而且它還允許其它 IM 自由使用 XMPP 協(xié)議。如此一來,任何 IM 供應(yīng)商在遵循 XMPP 協(xié)議的前提下,都可以隨時(shí)與 Google Talk 實(shí)現(xiàn)免費(fèi)第 4 章 模塊的實(shí)現(xiàn) 28 連接 [15]。 XMPP 中定義了三個(gè)角色,客戶端,服務(wù)器,網(wǎng)關(guān)。通信能夠在這三者的任意兩個(gè)之間雙向發(fā)生。服務(wù)器同時(shí)承擔(dān)了客戶端信息記錄,連接管理和信息的路由功能。網(wǎng)關(guān)承擔(dān)著與異構(gòu)即時(shí)通信系統(tǒng)的互聯(lián)互通,異構(gòu)系統(tǒng)可以包括 SMS(短信), MSN, ICQ 等?;镜木W(wǎng)絡(luò)形式是單客戶端通過 TCP/IP 連接到單服務(wù)器,然后在之上傳輸 XML。 Chess 的網(wǎng)絡(luò)通信模塊使用第三方開源開發(fā)包 提供的 XMPP 接口進(jìn)行網(wǎng)絡(luò)部分的開發(fā),較好的實(shí)現(xiàn)了 XMPP 連接 的建立 , 狀態(tài)的改變控制 , 消 息的即時(shí)傳遞等 網(wǎng)絡(luò)數(shù)據(jù)的傳送。 走棋規(guī)則的 判斷 “棋子選擇框”(或稱選擇域)是以棋盤上每條橫線和豎線的交點(diǎn)為中心,并以棋子的直徑為邊長(zhǎng)的正方形,一般情況下,棋子選擇框顏色為綠色,當(dāng)選定己方棋子時(shí),棋子選擇框變?yōu)樗{(lán)色; 選定每個(gè)選擇域的時(shí)候, startGame 里的 onTouch()函數(shù)將返回選擇域的中心點(diǎn)作為域的代表點(diǎn); 根據(jù)返回的代表點(diǎn)和棋盤基點(diǎn)(棋盤最左上角點(diǎn),可確定棋盤在手機(jī)屏幕上的位置),可以算出該代表點(diǎn)是棋盤模型數(shù)組 int[10][9]中的哪個(gè)元素(十行九列的整形數(shù)組記錄了棋盤上每個(gè)橫豎 交叉點(diǎn)是否有棋子,有的話,記錄棋子編號(hào),沒有記錄為 0); 走一步棋,需有選定棋子的源位置和目標(biāo)位置,分別記錄為 m,n,sx,sy; 根據(jù)選定的棋子的源 m,n 可在棋盤模型數(shù)組中查處其為哪類哪個(gè)棋子,根據(jù)棋子的類別,由 Umpire 裁判類判斷走棋是否合法,合法則允許走棋; 例如,如果選定了“車”,并且選擇了目標(biāo)位置,則系統(tǒng)將調(diào)用裁判函數(shù)中車的走棋規(guī)則函數(shù),進(jìn)行走棋合法性的判別,走棋合法時(shí),將執(zhí)行走棋函數(shù),改變?cè)撈遄泳幪?hào)在棋盤模型數(shù)組中的位置; 對(duì)方每走一步,裁判對(duì)象根據(jù)對(duì)方傳過來的參數(shù) m,n,sx,sy 會(huì)對(duì)對(duì)局的 勝負(fù)進(jìn)行判斷,當(dāng)某方將或帥被吃,或無路可走的時(shí)候,即判定該方為負(fù)。 第 4 章 模塊的實(shí)現(xiàn) 29 圖 416 車的規(guī)則控制代碼 舉例說明下“車”的規(guī)則控制代碼,如圖 416 所示。 走一步棋,需要有一個(gè)原點(diǎn) (X, Y)和目標(biāo)點(diǎn) (tgtX, tgtY)。 首先,判斷車是走縱線還是走橫線 ,以此確定需要 檢測(cè) 的是哪條走棋線路 ; 其次, 判斷車走的方向 ,以此確定 檢測(cè)的方向是從哪邊開始的 ; 然后, 在原點(diǎn) Y 和目標(biāo)點(diǎn) tgtY 之間共有 Y – tgtY 各交叉點(diǎn),檢查在這些交叉點(diǎn)上有沒有棋子,若有,則記錄棋子個(gè)數(shù) g; 最后根據(jù) 原點(diǎn)和目 標(biāo)點(diǎn)之間 棋子個(gè)數(shù) g 是否為 0 判斷車在原點(diǎn)和目標(biāo)點(diǎn)之間是否有棋子間隔 。 若有棋子間隔,則 theRuleOfChe()函數(shù)返回 fault,系統(tǒng)判定這步棋不能走;若間隔數(shù) g 為 0,則規(guī)則函數(shù)返回 true。 系統(tǒng)進(jìn)行棋盤數(shù)據(jù)模型的更新以及棋盤界面的重繪。 至此,完成了“車”這個(gè)對(duì)象的一步走棋。 第 5章 結(jié)束語 30 第 5 章 結(jié)束語 后續(xù)研究展望 論文提出了 Android 平臺(tái)上中國(guó)象棋手機(jī)游戲 系統(tǒng)的軟件建模方法,并以模型為指導(dǎo)開發(fā)了 Chess 手機(jī)有機(jī)游戲 系統(tǒng),一定程度上驗(yàn)證了建模方法的正確性和構(gòu)建模型的有效性。根據(jù)目前的研究進(jìn)展,未來 的研究工作將從以下幾個(gè)方面進(jìn)一步加強(qiáng): ( 1) 手機(jī)游戲 系統(tǒng)模型的進(jìn)一步改進(jìn),包括 RUP 在 對(duì)局控制模塊、網(wǎng)絡(luò)信息傳輸模塊 上的應(yīng)用及模型的進(jìn)一步細(xì)化和完善,使模型在迭代、循環(huán)、重復(fù)的過程中不斷改進(jìn)。
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1