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

正文內(nèi)容

基于android平臺(tái)連連看游戲設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文-預(yù)覽頁(yè)

 

【正文】 第二章 基礎(chǔ)知識(shí)與開發(fā)技術(shù)這一章介紹了系統(tǒng)的開發(fā)環(huán)境和開發(fā)方法,并且詳細(xì)介紹了Android的基本知識(shí)、特點(diǎn)、Android平臺(tái)的優(yōu)勢(shì)和手機(jī)開發(fā)的市場(chǎng)價(jià)值以及Java技術(shù)簡(jiǎn)介、開發(fā)的詳細(xì)步驟和游戲使用的主要技術(shù)問(wèn)題。Android作為Google企業(yè)戰(zhàn)略的重要組成部分,將進(jìn)一步推進(jìn)“隨時(shí)隨地為每個(gè)人提供信息”這一企業(yè)目標(biāo)的實(shí)現(xiàn),Google的目標(biāo)是讓移動(dòng)通信不依賴于設(shè)備甚至是平臺(tái)。完全整合的全移動(dòng)功能性產(chǎn)品成為“開放手機(jī)聯(lián)盟”的最終目標(biāo)。應(yīng)用程序框架及組件。Android應(yīng)用程序框架之下是一套C/C ++函數(shù)庫(kù),它們服務(wù)于Android應(yīng)用程序組件,其功能通過(guò)組件間接提供給開發(fā)者。Linux內(nèi)核。Android 在Linux 核心的基礎(chǔ)上,提供了各種合用的函數(shù)庫(kù),和一個(gè)完整的應(yīng)用程式框架。Activity具有生命周期,它包含運(yùn)行、暫停、停止等幾個(gè)狀態(tài),狀態(tài)間的轉(zhuǎn)換可通過(guò)調(diào)用onCreate()、onStart()、onRestart()、onResume()、onFreeze()、onPause()、onStop()、onDestory()等方法來(lái)實(shí)現(xiàn)。常用的View方法有:inflate() (由XML 文件生成View)、onDraw (Canvas)(對(duì)View進(jìn)行填充) 、onMeasure (int,int)(測(cè)量View的高度和寬度)、onLayout()(完成View的布局)、onKeyDown(int, KeyEvent)(View中有按鍵操作時(shí)被調(diào)用)、onFocusChanged (boolean,int)(當(dāng)View得到或失去關(guān)注時(shí)被調(diào)用)、setOnClilckListener()(設(shè)置View點(diǎn)擊事件監(jiān)聽器)。Intent最重要的作用還是加載activity,它是不同activity間的橋梁。其中,Uri標(biāo)明了ContentProvider存儲(chǔ)的數(shù)據(jù)類型,在執(zhí)行訪問(wèn)方法時(shí)都需依據(jù)Uri作為路徑標(biāo)識(shí)來(lái)確定要訪問(wèn)哪個(gè)ContentProvider[5]。 Android系統(tǒng)特點(diǎn)Android系統(tǒng)具有如下5個(gè)特點(diǎn):1) 開放性。移動(dòng)設(shè)備上的應(yīng)用程序可以被替換或擴(kuò)展,即使是撥號(hào)程序或主屏幕這樣的核心組件;4) 應(yīng)用程序可以輕松地嵌入網(wǎng)絡(luò)。每個(gè)Android應(yīng)用程序都存在于它自己的世界之中:默認(rèn)情況下,每個(gè)應(yīng)用程序均運(yùn)行于它自己的Linux進(jìn)程中。默認(rèn)情況下,每個(gè)應(yīng)用程序均被賦予一個(gè)唯一的Linux用戶ID,并加以權(quán)限設(shè)置,使得應(yīng)用程序的文件僅對(duì)這個(gè)用戶、這個(gè)應(yīng)用程序可見。 Android手機(jī)平臺(tái)的優(yōu)勢(shì)現(xiàn)在常見的智能手機(jī)平臺(tái)有:Symbian、Windows Mobile、PALM、Blackberry、iOS等。開放性對(duì)于Android的發(fā)展而言,有利于積累人氣,這里的人氣包括消費(fèi)者和廠商,而對(duì)于消費(fèi)者來(lái)講,最大的受益正是豐富的軟件資源。隨著EDGE、HSDPA這些2G至3G移動(dòng)網(wǎng)絡(luò)的逐步過(guò)渡和提升,手機(jī)隨意接入網(wǎng)絡(luò)已不再是運(yùn)營(yíng)商口中的笑談。例如如果你從諾基亞Symbian風(fēng)格手機(jī)一下改用蘋果iPhone,那么你可將Symbian中優(yōu)秀的軟件帶到iPhone上使用,聯(lián)系人等個(gè)人資料更是可以方便地轉(zhuǎn)移。5) 無(wú)縫結(jié)合的Google應(yīng)用如今叱咤互聯(lián)網(wǎng)的Google已經(jīng)走過(guò)了10年度的歷史。而新的技術(shù)從某種程度上提高了手機(jī)設(shè)備處理數(shù)據(jù)的能力,因而可以在手機(jī)上添加許多新的功能,以滿足用戶多樣性需求。Android平臺(tái)上的游戲相比應(yīng)用軟件,不需要進(jìn)行嚴(yán)格的市場(chǎng)細(xì)分,不需要針對(duì)目標(biāo)用戶量身定制。綜上所述,Android平臺(tái)相比其他智能手機(jī)平臺(tái)有許多優(yōu)勢(shì),這些優(yōu)勢(shì)使Android發(fā)展迅速,而Android游戲作為Android手機(jī)最主要的應(yīng)用,其市場(chǎng)價(jià)值有目共睹。在這一前提下,手機(jī)終端游戲的開發(fā)成了熱門行業(yè)。游戲連連看只要將相同花色的兩張圖用三根以內(nèi)的直線連在一起就可以消除,規(guī)則簡(jiǎn)單容易上手。游戲制作的目的是滿足了人們休閑的需要,在緊張工作之余休閑類的小游戲能夠給人帶來(lái)最大程度的放松,也可以增進(jìn)人們之間的交流、溝通,通過(guò)游戲還可以認(rèn)識(shí)更多的朋友。連連看游戲是一個(gè)經(jīng)典的游戲,它因操作簡(jiǎn)單、娛樂(lè)性強(qiáng)而廣受歡迎。進(jìn)行開發(fā)前先要建立合適的開發(fā)環(huán)境,其中基于Java的整合型可擴(kuò)展平臺(tái)Eclipse是我們的首選。Java語(yǔ)言之所以這樣長(zhǎng)盛不衰,一是因?yàn)槠浔姸嗟募夹g(shù)特點(diǎn)與現(xiàn)今的應(yīng)用十分合拍,可以覆蓋大部分的需求;二是因?yàn)镾UN公司不斷推出新的版本,完善Java自身的功能。另外現(xiàn)在熱炒的RIA富客戶端的概念下的技術(shù)除了AJAX外還有Adobe的Flash/Flex,微軟的Silver Light,SUN的JavaFX等,個(gè)人更看好Flash/Flex,原因是Flash插件在瀏覽器端占用率很高[10]。編譯后的字節(jié)碼采用一種針對(duì)JVM 優(yōu)化過(guò)的機(jī)器碼形式;解釋器是JVM 的實(shí)現(xiàn)。當(dāng)然還有Java SE 。開發(fā)工具我了解的有:NetBeans(,做GUI有使用VB的感覺),Eclipse(SWT/JFace這個(gè)項(xiàng)目其實(shí)就是做Eclipse項(xiàng)目時(shí)擴(kuò)展出來(lái)的,所以對(duì)SWT/JFace支持的也不錯(cuò))。JavaME(Java Platform,Micro Edition)這個(gè)版本以前叫做J2ME。這些IDE各有優(yōu)勢(shì)劣勢(shì),根據(jù)個(gè)人開發(fā)的項(xiàng)目來(lái)選擇了。這一決定保證了游戲的正常完成,同時(shí)也是考慮到了制作時(shí)間的限制。進(jìn)行開發(fā)前先要建立合適的開發(fā)環(huán)境,其中基于Java的整合型可擴(kuò)展平臺(tái)Eclipse是我們的首選。它完全符合面向?qū)ο缶幊痰囊?,大大的提升了程序編寫的能力? 3) 經(jīng)濟(jì)可行性開發(fā)該系統(tǒng)所需的相關(guān)資料可以通過(guò)已存在的相關(guān)系統(tǒng)進(jìn)行調(diào)查采集,所需的其他應(yīng)用軟件、硬件系統(tǒng)也易于獲得。畢業(yè)設(shè)計(jì)是基于一般的連連看游戲規(guī)則與游戲模式完成的。在游戲的初始化階段。這個(gè)環(huán)節(jié)保障了該游戲的可玩性和人性化設(shè)計(jì)。這是最一般的游戲模式。游戲開始以及游戲暫停功能。玩家點(diǎn)擊后切換進(jìn)入游戲界面。如果玩家臨時(shí)有事需要暫停游戲。在一開始進(jìn)入游戲界面時(shí),會(huì)自動(dòng)播放音樂(lè)。游戲開始時(shí),時(shí)間顯示100秒。彈出對(duì)話框,提示“游戲勝利!重新開始”,點(diǎn)擊確定,開始新的一輪游戲。玩家在游戲過(guò)程中,可以點(diǎn)擊菜單按鈕,選擇重新開始游戲、重新排列圖片和退出游戲。如果產(chǎn)生死鎖,系統(tǒng)給予提示,玩家可以通過(guò)點(diǎn)擊按鈕重新生成游戲布局并繼續(xù)游戲。否則玩家重新選定消除圖片。本次系統(tǒng)設(shè)計(jì)總共分為四個(gè)模塊:菜單設(shè)計(jì)、界面設(shè)計(jì)、算法設(shè)計(jì)和消息響應(yīng)設(shè)計(jì):菜單設(shè)計(jì)。算法設(shè)計(jì)。本次設(shè)計(jì)的連連看游戲主要設(shè)計(jì)到一下三個(gè)核心算法:游戲布局、連通算法、僵局判定算法。隨著游戲的進(jìn)展,圖片的消除,圖案節(jié)點(diǎn)將被消除,成為路徑節(jié)點(diǎn)。根據(jù)連連看規(guī)則,其可以連接必須符合兩個(gè)圖片的畫面一樣,而且兩個(gè)圖片所在位置之間連線的轉(zhuǎn)折點(diǎn)不能超過(guò)兩個(gè)也就是連線不能超過(guò)三條線。僵局判定算法就是要及時(shí)的發(fā)現(xiàn)僵局,以便程序產(chǎn)生新的游戲布局,使游戲繼續(xù)下去。對(duì)游戲UI、核心算法進(jìn)行了詳細(xì)的解釋。所以開發(fā)前必須先安裝Java 開發(fā)套件(Java Development Kit,JDK)。下載完同樣先解壓縮到適當(dāng)目錄下。一般使用Eclipse預(yù)設(shè)的工作目錄即可。選擇HelpSoftware Updates選項(xiàng),這選項(xiàng)會(huì)帶出一個(gè)新視窗。4) 下載Android SDK。將解壓縮后的Android SDK檔案夾命名為Android_sdk。 連連看游戲開始界面顯示這部分的代碼全部都寫在布局組建(Layout)里面,LinearLayout可以進(jìn)行水平布局或豎直布局,如果將LinearLayout的布局方向設(shè)置為vertical,那么表明是豎直布局。本程序選擇的是豎直布局。繼續(xù)游戲按鈕在開始時(shí)不可用,用戶在游戲中暫停游戲回到菜單時(shí)才可見。WRAP_CONTENT意味著當(dāng)前View的大小只需要包裹住View里邊的內(nèi)容即可[20]。public static final int STATE_LOSE=3。state變量被初始化為STATE_MENU,這是程序最初始的菜單。并將下載到的10中圖片資源存放在drawable文件夾中。將這些變量定義為靜態(tài)變量,只要程序進(jìn)程不退出,每次用戶進(jìn)入程序時(shí)都可重復(fù)使用這些變量資源,這樣程序的狀態(tài)可以記錄下來(lái),圖標(biāo)資源也只需要加載一次。如果程序是第一次啟動(dòng),則新建游戲控制器對(duì)象并加載圖表資源。for(int i=0。還定義了一個(gè)shuffle方法,來(lái)對(duì)圖標(biāo)進(jìn)行隨機(jī)互換。 連連看在游戲中點(diǎn)擊圖標(biāo)后的界面上圖為單擊動(dòng)物頭像的游戲界面,可以明顯地看到圖片四周出現(xiàn)紅色準(zhǔn)心。如果用戶在游戲中按了home鍵退到Home界面或通過(guò)其他方式切換到其他activity,要暫停游戲。用戶在規(guī)定的時(shí)間內(nèi)沒有完成游戲,此時(shí)剩余時(shí)間remainTime=0,則STATE_LOSE賦給state,系統(tǒng)得知要顯示游戲失敗的界面,程序回到菜單,提示游戲失敗,并可以選擇開始新游戲或退出,同時(shí)播放music2這一段比較憂傷的背景音樂(lè)。 (sucess)。所以當(dāng)我們點(diǎn)擊再玩一遍時(shí),游戲又重新加載一次圖標(biāo)資源,重新進(jìn)入了初始化布局界面。每次可以有多個(gè)圖片被選中(其實(shí)最多應(yīng)該有兩個(gè),邏輯部分在我們的控制器中實(shí)現(xiàn),這里不需要管),所以被選中的圖片坐標(biāo)用一個(gè)list來(lái)存儲(chǔ)。Map數(shù)組是游戲的布局?jǐn)?shù)組,在前面的算法介紹中提到過(guò),是帶邊界的,而邊界如果在界面中與其他位置統(tǒng)一處理會(huì)浪費(fèi)很多屏幕空間,因此通過(guò)offsetX、offsetY變量來(lái)調(diào)整。}}這里說(shuō)明一個(gè)橫向偏移值的計(jì)算,縱向同理。因?yàn)檫吔绮恍枰@么寬,需要將圖片橫坐標(biāo)向左移的距離為兩者之差。}下面看一下GameView的核心部分,是onDraw方法的實(shí)現(xiàn):首先,在被選中的圖片四周畫一個(gè)與圖片大小一樣的紅色準(zhǔn)心,這樣被選中的圖片有了標(biāo)記。我們提供的index2screen方法轉(zhuǎn)換出來(lái)的是對(duì)應(yīng)位置的圖片的左上角坐標(biāo),需要取中間的坐標(biāo)。通過(guò)onDraw方法知道,這次刷新map數(shù)組對(duì)應(yīng)的位置已經(jīng)置0,消除效果將在下次刷新視圖時(shí)發(fā)生。OnItem ClickListener是個(gè)接口。視圖類的onTouchEvent方法里面的ACTION_DOWN事件。這個(gè)監(jiān)聽者是在控制器中實(shí)現(xiàn)的,后面將會(huì)看到。圖片大小設(shè)置成45。這個(gè)變量上面提到的自定義的視圖,用它來(lái)呈現(xiàn)游戲界面。private ListPointpath=new ArrayListPoint()。由于Timer會(huì)另起一個(gè)線程,而刷新界面需要在UI線程中執(zhí)行,所以程序用到了Handler。在handleMessage方法中對(duì)這兩種消息分別處理。還需要更新剩余時(shí)間,剩余時(shí)間的計(jì)算方法remainTime=totalTime((()startTime)/1000);剩余時(shí)間的計(jì)算方法,得除以1000才是秒計(jì)時(shí)。remainTime =totalTime。如果你想對(duì)游戲數(shù)據(jù)持久化,除了activity中的游戲狀態(tài)還需要保存控制其中的map以及remainTime變量。1) 先定義每個(gè)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu),用于記錄每個(gè)節(jié)點(diǎn)的信息:typedef struct _CELL_NODE{ int value。 char column。 struct _CELL_NODE *next。}CELL_NODE。如果是路徑節(jié)點(diǎn),則value為1;如果是圖案節(jié)點(diǎn),其范圍為[0,Enum],在本次設(shè)計(jì)的瘋狂連連看中 Enum的數(shù)值為所有配對(duì)的可消除圖案組數(shù)目。 int connect_flag 表示連通標(biāo)記,在路徑搜索中將被用到。typedef struct _CELL_LIST{int count。CELL_NODE *link。隨著游戲的進(jìn)展,節(jié)點(diǎn)將逐漸從列表中移除,從而成為“路徑”節(jié)點(diǎn);在某些游戲模式中,例如左移或右移模式,隨著游戲的進(jìn)展,有些節(jié)點(diǎn)會(huì)在列表之間移動(dòng);最終游戲結(jié)束時(shí)該鏈表為空;該鏈表的作用有三個(gè):一是初始化游戲布局時(shí);二是在需要判斷游戲是否“死鎖”時(shí);三是發(fā)生“死鎖”需要重新生成游戲布局時(shí)。左節(jié)點(diǎn): dst_cell = src_cell – 1;右節(jié)點(diǎn): dst_cell = src_cell 連通算法本次設(shè)計(jì)的“連連看”中的連通,分為一線連通、二線連通和三線連通:1) 一線連通其充分必要條件是:a兩節(jié)點(diǎn)同行或同列;int row1int column2 = secondcolumn。 = secondrow。 //同行,根據(jù)兩節(jié)點(diǎn)的左右關(guān)系計(jì)算從firstsecond的步長(zhǎng)。//在從first到second的遍歷過(guò)程中,如果遇到某個(gè)節(jié)點(diǎn)不是空白路徑,則肯定不是一線連通,則返回。return ONE_LINE_CONNECT。 說(shuō)明: ,從A遍歷到B, 其步長(zhǎng)為1, 反之為1;從C遍歷到D, 其步長(zhǎng)(WIDTH+2), 反之為 (WIDTH+2); 其充分必要條件是: b. 兩節(jié)點(diǎn)的拐角節(jié)點(diǎn)是路徑節(jié)點(diǎn); 二線連通圖具體實(shí)現(xiàn)函數(shù)如下:int check_2_line_connect(CELL_NODE *first, CELL_NODE *second, CELL_NODE **ret_corner){ return MAYBE_CONNECT。return MAYBE_CONNECT。{//判斷拐角節(jié)點(diǎn)與兩節(jié)點(diǎn)是否可以一線連通。return TWO_LINE_CONNECT。amp。} return MAYBE_CONNECT。A與C可以一線連通, B與D可以一線連通;c. C與D可以一線連通。 C和D的位置這些標(biāo)記了的節(jié)點(diǎn)就是C、D的候選點(diǎn)。ret = check_2_line_connect(first, second, amp。corner1, amp。CHECK_CONNECT_RETURN:produce_path(first, second, corner1, corner2, path, ret)
點(diǎn)擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1