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

正文內(nèi)容

基于android數(shù)獨游戲設(shè)計_畢業(yè)設(shè)計論文-資料下載頁

2024-08-27 15:39本頁面

【導(dǎo)讀】Android是開放性體系架構(gòu),不僅具有非常好的開發(fā)、調(diào)試環(huán)境,而且還支持各種可。擴展的用戶體驗,包括豐富的圖形組件、多媒體支持功能以及強大的瀏覽器。軟件從業(yè)人員來說,Android平臺具有無限的吸引力。通過對Android系統(tǒng)架構(gòu)和應(yīng)用開發(fā)進行初步研究,設(shè)計一款數(shù)獨游戲。在對系統(tǒng)進行詳細(xì)需求分析的基礎(chǔ)上,確定了系統(tǒng)的功能和性能要。求,對游戲的開機動畫,菜單界面、屏幕繪制、時間控制、布局算法等進行了設(shè)計。界面友好、操作簡單的手機益智游戲。手機游戲的發(fā)展以及特征·························································1

  

【正文】 iewDrawThread 類和 WeleViewGoThread 類的實現(xiàn) 為了實現(xiàn)歡迎界面的動畫效果,這里設(shè)計了 WeleViewDrawThread 類 ,這個類主要負(fù)責(zé)界面的定時刷新,而 WeleViewGoThread類負(fù)責(zé)動畫的生成。WeleViewDrawThread類和 WeleViewGoThread類的生成都繼 承自 Thread 類,重寫了 Thread 類里的 run()方法,都是通過 run()方法實現(xiàn)功能。 WeleViewDrawThread其 run()方法的代碼如下: public void run() {//重寫的 run方法 Canvas c。//聲明畫布 while () {//循環(huán) c = null。 try {//鎖定整個畫布 c = (null)。 synchronized () {//同步 (c)。//調(diào)用繪制方法 } } finally {//用 finally保證一定被執(zhí)行 if (c != null) {//更新屏幕顯示內(nèi)容 (c)。 } } try{ (sleepSpan)。//睡眠指定毫秒數(shù) }catch(Exception e){//捕獲異常 ()。//打印異常信息 } } } 分析其代碼,這里主要控制 c 值 的變化,當(dāng)其值為 null 時,結(jié)合 WeleView 第四章 基于 Android 平臺數(shù)獨游戲的實現(xiàn) 22 類里的 onDraw()方法,繪制背景圖片,繪制完成后, c 值不為 null,解鎖屏幕,將畫布置空, c值又為 null,釋放和更新屏幕顯示的內(nèi)容,從而實現(xiàn)刷幀作用。 WeleViewGoThread類中 run()方法代碼如下所示: public void run() {//重寫的 run方法法 while (flag) {//循環(huán) ++。//自加 if(){ = 。 } if(%5 == 0){ = !。 } try{ (sleepSpan)。//睡眠 }catch(Exception e){ ()。//打印異常信息 } } } 分析該類的 run() 方法,控制 drawIndex的值, 每次循環(huán)將歡迎界面的drawIndex 加 1,然后判斷是否到達(dá)數(shù)組的最后,當(dāng)?shù)竭_(dá)最后時,將其減 10,然后繼續(xù)進行循環(huán)。同時,判斷 drawIndex是否為 5,這樣每循環(huán) 5次改變 drawString的值,從而實現(xiàn)文字的閃動效果。 HelpView 類和 AboutView 類的實現(xiàn) 游戲中關(guān)于游戲幫助和游戲說明,我們分別通過 HelpView類和 AboutView類的實現(xiàn)。 HelpView類和 AboutView類都是通過 onDraw()方法來繪制界面。由于這兩個類在很大程度上是相似的,所以下面只分析 HelpView類,代碼如下所示: public HelpView(KLSDActivity activity) { super(activity)。 = activity。//得到 activity的引用 surfaceHolder = ()。//獲得 surfaceHolder getHolder().addCallback(this)。//添加 Callback接口的實現(xiàn) helpBitmap = (getResources(), )。 } public void onDraw(Canvas canvas) {//繪制方法 南京工業(yè)大學(xué)本科生畢業(yè)設(shè)計 (論文 ) 23 ()。//背景色 (helpBitmap, 0, 0, null)。//繪制圖片 } public boolean onTouchEvent(MotionEvent event) {//鍵盤監(jiān)聽方法 if(() == ){//屏幕被按下 double x = ()。 double y = ()。//得到坐標(biāo) if(x270 amp。amp。 x310 amp。amp。 y440 amp。amp。 y480){//點擊確定按鈕 (2)。 } } return (event)。 } public HelpView(KLSDActivity activity) 為“幫助”界面的構(gòu)造器,在構(gòu)造器中先得到 activity 以及 surfaceHolder的引用,然后添加 Callback 接口的實現(xiàn)并對圖片資源進行初始化。 onDraw() 為重寫的繪制方法,在該方法中,首先繪制白色背景,然后將幫助界面的背景圖片繪制到指定位置。 onTouchEvent() 為重寫的鍵盤監(jiān)聽方法,當(dāng)玩家點擊屏幕時,會調(diào)用該方法來處理玩家的屏幕事件,在“幫助”界面中該方法實現(xiàn)比較簡單,只是判斷玩家點擊的是否為返回按鈕即可。當(dāng)玩家點擊返回按鈕時,需要向 activity 發(fā)送Handler 消息通知控制器切換屏幕。 游戲界面相關(guān)類的實現(xiàn) 游戲界面實現(xiàn)游戲展示,計時界面展示,以及功能按鍵。流程圖如下圖所示: 第四章 基于 Android 平臺數(shù)獨游戲的實現(xiàn) 24 開 始生 成 數(shù) 獨填 數(shù) 區(qū) 域換 題提 示提 示 暫 停計 時暫 停填 數(shù)檢 測退 出結(jié) 束是否是否是否是否 圖 游戲界面流程圖 游戲界面 GameView 的實現(xiàn) 首先理解下 GameView的運行思路, GameView在初始化時候讀取相關(guān)圖片信息,包括背景圖片,數(shù)獨背景框圖片等等,在初始化同時,啟動GameViewDrawThread線程進行刷幀, TimeThread 線程來更新界面中的時間。當(dāng)玩家點擊背景框空白位置,需要繪制數(shù)字鍵盤時,會啟動 DrawKeyThread 線程繪制數(shù)字鍵盤。當(dāng)玩家點擊按鈕時候,相關(guān)方法會被調(diào)用。以上的過程都需要KLSDActivity的參與管理。 GameView 同樣繼承自 SurfaceView 類,其關(guān)鍵也是實現(xiàn) onDraw()方法。onDraw()方法分別繪制游戲界面背景圖片,數(shù)字背景框,選題提示等等按鈕,時間顯示區(qū)域等。 DrawKey()方法實現(xiàn)了數(shù)字鍵盤的繪制,保證在點擊空白框時候有圓盤數(shù)字選框出現(xiàn)。通過 surfaceCreated()和 surfaceDestroyed()兩個方法負(fù)責(zé)相關(guān)線程的啟動和調(diào)用工作。 南京工業(yè)大學(xué)本科生畢業(yè)設(shè)計 (論文 ) 25 時間線程 TimeThread 的實現(xiàn) TimeThread線程主要用來更新界面中的時間,作為數(shù)獨游戲玩家計時功能,代碼如下: public class TimeThread extends Thread{ GameView gameView。//聲明 GameView的引用 boolean flag=true。//循環(huán)標(biāo)志位 public TimeThread(GameView gameView){//構(gòu)造器 =gameView。//得到 GameView的引用 } public void run(){//重寫的 run方法 while(flag){ ++。//時間自加 try{ (1000)。//睡眠一秒種 }catch(Exception e){//捕獲異常 ()。//打印異常信息 } } } } TimeThread 類的實現(xiàn)比較簡單,只需每隔一秒鐘通過 更改一下 GameView 中表示時間的屬性即可。 public TimeThread(GameView gameView) 為時間線程的構(gòu)造器,在構(gòu)造器中先得到 GameView的引用。然后重寫 run()方法,通過時間的自加,實現(xiàn)一秒鐘功能。 數(shù)獨算法類的實現(xiàn) 數(shù)獨算法類主要 實現(xiàn)數(shù)獨的生成以及填入數(shù)字的檢測功能,流程圖如下: 第四章 基于 Android 平臺數(shù)獨游戲的實現(xiàn) 26 開 始生 成 數(shù) 獨填 入 數(shù) 字符 合 規(guī) 則游 戲 成 功結(jié) 束是否 圖 WeleView類功能流程圖 數(shù)獨算法基本邏輯 本節(jié)將對 數(shù)獨算法類 進行解釋,該類基本上是數(shù)學(xué)計算,通過一定的算法產(chǎn)生所需要的數(shù)獨數(shù)組,通過特定的接口供其他類使用。 該類的目的是創(chuàng)建一個二維數(shù)組來表示數(shù)獨矩陣。使矩陣的每行、每列、每塊都沒有重復(fù)的數(shù)字。算法的簡單思路是先隨機取出一個 0~9 的數(shù)字,然后檢查其所在的行、列、塊是否都符合要求。 當(dāng)符合要求時繼續(xù)填充下一個,而當(dāng)不符合要求時,再次隨機取出一個沒有取出過的數(shù)字,再判斷。當(dāng) 9 個數(shù)字都取出過后還沒有找到符合要求的數(shù)字時,進行回退處理,即將最后一個取出的符合要求的數(shù)字進行重新取值,直到所有數(shù)字全部填充完畢。 在求解數(shù)獨時候,運用到回溯法, 將所有的解(問題的解空間)按照一定結(jié)構(gòu)排列,再進行搜索。一般解空間構(gòu)造成為為樹狀結(jié)構(gòu),用深度優(yōu)先的策略搜索,一般有兩種方式: ,找到解即停止。 ,則需做“樹的遍歷”找到所有解。 回溯法的基本做法是搜索,或是一種組織得井 井有條的,能避免不必要搜索的窮舉式搜索法。這種方法適用于解一些組合數(shù)相當(dāng)大的問題。 南京工業(yè)大學(xué)本科生畢業(yè)設(shè)計 (論文 ) 27 回溯法在問題的解空間樹中,按深度優(yōu)先策略,從根結(jié)點出發(fā)搜索解空間樹。算法搜索至解空間樹的任意一點時,先判斷該結(jié)點是否包含問題的解。如果肯定不包含,則跳過對該結(jié)點為根的子樹的搜索,逐層向其祖先結(jié)點回溯;否則,進入該子樹,繼續(xù)按深度優(yōu)先策略搜索。 回溯法是一種搜索算法,其基本思路是:在一個問題中,根據(jù)題意給出的邊界條件劃定出所有可能解的范圍(稱為可能解),根據(jù)題意確定出約束條件。利用程序順次在所有可能解中搜索時按照深度搜索的方式 進行。即在第一層選定一個滿足約束條件的解,然后以該可能解為出發(fā)點,搜索第二層的一個可能解(試探)。如果搜索到第二層的一個可能解,則繼續(xù)搜索第三層得一個可能解。依次類推,直到所有層得可能解都被找到,則得到了該問題的一個完整解。如果第二層所有的肯可能解都不滿足約束條件,則返回第一層,放棄原有的可能解,使用第一層的下一個可能解(回溯)。一次類推,尋找第二層的一個可能解。 回溯法相對于其他窮舉的特點在于,不必把問題的每一層的所有可能解都遍歷一遍,只要當(dāng)前的可能解不滿足約束條件就拋棄該解,尋求下一個可能解,而不必求解 其余的下層解。當(dāng)當(dāng)前層得所有可能解都不滿足約束條件,則回溯到上一層,拋棄上一層的當(dāng)前可能解。 從以上分析中結(jié)合數(shù)獨問題的規(guī)則,得出數(shù)獨問題的約束條件為: 每一格的數(shù)值范圍僅限 19 每一格內(nèi)的數(shù)字在當(dāng)前行不允許重復(fù) 每一格內(nèi)的數(shù)字在當(dāng)前列不允許重復(fù) 每一格內(nèi)的數(shù)字在當(dāng)前小宮格內(nèi)不允許重復(fù) 由此,回溯法通過約束條件的篩選,在所有解中除掉不可能的解,從而獲得問題的一個或者全部解。 檢測填充結(jié)果 根據(jù)數(shù)獨游戲的規(guī)則,玩家填充 81個宮格之后,要滿足所有行,所有列和所有小九宮格內(nèi)不能出現(xiàn)重復(fù)的數(shù)字,并以 此為條件進行檢測。 列檢測 第四章 基于 Android 平臺數(shù)獨游戲的實現(xiàn) 28 首先對各列進行檢測,提供了檢測列內(nèi) 9個數(shù)字是否有重復(fù)數(shù)據(jù)的方法 checkLine (),該方法以此遍歷列中的 9個數(shù)字,當(dāng)遍歷到某個數(shù)字時,檢測該數(shù)字后面的數(shù)字是否出現(xiàn)重復(fù)。比如,當(dāng)檢測到第 3個數(shù)字是 7 時,則檢測第 49個數(shù)字是否出現(xiàn) 7,如果出現(xiàn)重復(fù)則停止檢測,只有既可以避免重復(fù)檢測,又可以避免遺漏。 public boolean checkLine(int col){// 檢查列是否符合要求 for(int j = 0。j 8。j++){ if(n[j][col] == 0){ continue。 } for(int k =j + 1。k 9。k++){ if(n[j][col] == n[k][col]){ return false。 } } } return true。 } 行檢測 類似于對列數(shù)據(jù)的檢測,還需要對每行進行檢測,因此程序提供了 對行數(shù)據(jù)的檢測方法 checkRow (),該方法代碼如下: public boolean checkRow(int row){//檢查行是否符合要求 for(int j = 0。j 8。j++){ if(n[row][j] == 0){ continue。 } for(int k =j + 1。k 9。k++){ if(n[row][j] == n[row][k]){ return false。 } } } return true。 } 小九宮格檢測 除了對行和列的重復(fù)數(shù)據(jù)檢測之外,還需要對小九宮格內(nèi)的所有數(shù)字進行檢南京工業(yè)大學(xué)本科生畢業(yè)設(shè)計 (論文 ) 29 測,避免出現(xiàn)重復(fù)現(xiàn)象。檢測原理與行,列檢測相同,但需要計算九宮格內(nèi)數(shù)字的位置。 Row 和 Col 指定了檢測九宮格的位置,數(shù)獨單元格中一共有 3 3 個九宮格, Row 和 Col 的范圍為 0 到 2。用以下程序完成九宮格內(nèi)重復(fù)數(shù)字的檢測。 public boolean checkNine(int row,int col){//檢查 3X3區(qū)域是否符合要求 int j = row/3*3。//獲得左上角的坐標(biāo) int k = col/3*3。 for(int i = 0。i 8。i++){//循環(huán)比較 if(n[j + i/3][k + i % 3] == 0){ continue。 } for(int m = i+ 1。m 9。m++){ if(n[j + i/3][k + i % 3] == n[j + m/3][k + m % 3]){ return false。 } } } return true。 } 游戲的測試和運行 游戲測試概述 當(dāng)游戲軟件制作完成之后,為了驗
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1