【正文】
corner1, amp。A與C可以一線連通, B與D可以一線連通;c. C與D可以一線連通。return ONE_LINE_CONNECT。 //同行,根據(jù)兩節(jié)點(diǎn)的左右關(guān)系計算從firstsecond的步長。 連通算法本次設(shè)計的“連連看”中的連通,分為一線連通、二線連通和三線連通:1) 一線連通其充分必要條件是:a兩節(jié)點(diǎn)同行或同列;typedef struct _CELL_LIST{還需要更新剩余時間,剩余時間的計算方法remainTime=totalTime((()startTime)/1000);剩余時間的計算方法,得除以1000才是秒計時。這個變量上面提到的自定義的視圖,用它來呈現(xiàn)游戲界面。OnItem ClickListener是個接口。因?yàn)檫吔绮恍枰@么寬,需要將圖片橫坐標(biāo)向左移的距離為兩者之差。所以當(dāng)我們點(diǎn)擊再玩一遍時,游戲又重新加載一次圖標(biāo)資源,重新進(jìn)入了初始化布局界面。 連連看在游戲中點(diǎn)擊圖標(biāo)后的界面上圖為單擊動物頭像的游戲界面,可以明顯地看到圖片四周出現(xiàn)紅色準(zhǔn)心。將這些變量定義為靜態(tài)變量,只要程序進(jìn)程不退出,每次用戶進(jìn)入程序時都可重復(fù)使用這些變量資源,這樣程序的狀態(tài)可以記錄下來,圖標(biāo)資源也只需要加載一次。WRAP_CONTENT意味著當(dāng)前View的大小只需要包裹住View里邊的內(nèi)容即可[20]。將解壓縮后的Android SDK檔案夾命名為Android_sdk。下載完同樣先解壓縮到適當(dāng)目錄下。根據(jù)連連看規(guī)則,其可以連接必須符合兩個圖片的畫面一樣,而且兩個圖片所在位置之間連線的轉(zhuǎn)折點(diǎn)不能超過兩個也就是連線不能超過三條線。本次系統(tǒng)設(shè)計總共分為四個模塊:菜單設(shè)計、界面設(shè)計、算法設(shè)計和消息響應(yīng)設(shè)計:菜單設(shè)計。玩家在游戲過程中,可以點(diǎn)擊菜單按鈕,選擇重新開始游戲、重新排列圖片和退出游戲。如果玩家臨時有事需要暫停游戲。這個環(huán)節(jié)保障了該游戲的可玩性和人性化設(shè)計。它完全符合面向?qū)ο缶幊痰囊?,大大的提升了程序編寫的能力。JavaME(Java Platform,Micro Edition)這個版本以前叫做J2ME。另外現(xiàn)在熱炒的RIA富客戶端的概念下的技術(shù)除了AJAX外還有Adobe的Flash/Flex,微軟的Silver Light,SUN的JavaFX等,個人更看好Flash/Flex,原因是Flash插件在瀏覽器端占用率很高[10]。游戲制作的目的是滿足了人們休閑的需要,在緊張工作之余休閑類的小游戲能夠給人帶來最大程度的放松,也可以增進(jìn)人們之間的交流、溝通,通過游戲還可以認(rèn)識更多的朋友。Android平臺上的游戲相比應(yīng)用軟件,不需要進(jìn)行嚴(yán)格的市場細(xì)分,不需要針對目標(biāo)用戶量身定制。隨著EDGE、HSDPA這些2G至3G移動網(wǎng)絡(luò)的逐步過渡和提升,手機(jī)隨意接入網(wǎng)絡(luò)已不再是運(yùn)營商口中的笑談。每個Android應(yīng)用程序都存在于它自己的世界之中:默認(rèn)情況下,每個應(yīng)用程序均運(yùn)行于它自己的Linux進(jìn)程中。Intent最重要的作用還是加載activity,它是不同activity間的橋梁。Linux內(nèi)核。Android作為Google企業(yè)戰(zhàn)略的重要組成部分,將進(jìn)一步推進(jìn)“隨時隨地為每個人提供信息”這一企業(yè)目標(biāo)的實(shí)現(xiàn),Google的目標(biāo)是讓移動通信不依賴于設(shè)備甚至是平臺。包括課題的背景資料簡介、國內(nèi)外研究現(xiàn)狀、深入地介紹了課題研究的價值以及對未來的影響。經(jīng)過多年的發(fā)展,第三代數(shù)字通信(3G)技術(shù)獲得了廣泛的接受,它為移動終端用戶帶來了更快的數(shù)據(jù)傳輸速率。當(dāng)用戶想換一臺手機(jī)時,就可以在同樣使用Android作業(yè)系統(tǒng)平臺的不同廠牌手機(jī)之間選擇,并且很容易地將聯(lián)絡(luò)簿等個人資料轉(zhuǎn)換到新手機(jī)上。s menu interface, screen drawing, time control, layout algorithm, connectivity algorithm, level set, sound and animation have been detail designed. In the detailed design stage of the game. At first, we have to build the necessary environment for the development of a good game, including download and install Eclipse development environment downloading and intall ADT Extensions. After we have built the development environment, then we have to achieve single function of the game. These functions including eliminating after connected, game countdowned to start the game, pausing the game and selecting game modes. And then customize the game view that can display pictures according to the layout of the data provided by the controller, and provide functions includeing selected highlights, connections and elimination. Then, we would design the game controller which implements the main control logic. Finally, there is the most critical part that is the algorithm design, in this thesis we describe the algorithms involved in the game including Game layout algorithm, connectivity algorithms and deadlock decision algorithm. After pleting these steps, a userfriendly, efficient and stable and entertaining puzzle game called lianliankan has been realized. Key words: Android;Java;Game;Algorithms;Puzzle IV 第一章 緒 論第一章主要是對課題的總體介紹,包括課題的背景資料簡介、國內(nèi)外一些研究的現(xiàn)狀成果外,還深入地介紹了課題研究的價值以及對未來的影響,為本系統(tǒng)的編寫調(diào)試提供了強(qiáng)大的理論依據(jù)。最后,就是最關(guān)鍵的算法設(shè)計部分了,論文詳細(xì)介紹該游戲涉及到的算法:游戲布局算法、連通算法和僵局判定算法。Android平臺支援各種先進(jìn)的網(wǎng)路,具備繪圖、3D 處理等能力,可以給使用者提供更好的體驗(yàn)。而在中國,根據(jù)易觀智庫產(chǎn)業(yè)數(shù)據(jù)庫最新發(fā)布的《2010 年第4季度中國手機(jī)游戲市場季度監(jiān)測》數(shù)據(jù)顯示, 億元,繼續(xù)保持了較快的發(fā)展。通過完成一個比較完善的安卓游戲,我對圖像編輯、程序設(shè)計等各方面的知識有了更深的理解,也為以后的工作和學(xué)習(xí)打下了很好的鋪墊。 Android技術(shù)簡介 Android基本知識Android是Google開發(fā)的基于Linux平臺的開源手機(jī)操作系統(tǒng)。這些函數(shù)庫包括::標(biāo)準(zhǔn)C函數(shù)庫、媒體功能庫、瀏覽器引擎、2D和3D圖形庫等[2]。View也包含一些子類,如:TextView(布局文件中的文本顯示)、EditText(布局文件中的文本編輯)、Button(按鈕)、ListView(顯示列表)。應(yīng)用程序可以輕松地嵌入HTML、JavaScript和樣式表,還可以通過WebView顯示網(wǎng)絡(luò)內(nèi)容;5) 應(yīng)用程序可以并行運(yùn)行。開放的平臺也會帶來更大競爭,如此一來,消費(fèi)者將可以用更低的價位購得心儀的手機(jī)。為此已經(jīng)有越來越多的研發(fā)機(jī)構(gòu)或部門著手研究開發(fā)手機(jī)應(yīng)用軟件。游戲速度節(jié)奏快,畫面清晰可愛。有了這兩點(diǎn),Java語言成為程序員首選的程序設(shè)計開發(fā)工具就在情理之中了。JavaEE(Java Platform,Enterprise Edition)這個版本以前叫做J2EE,也就是大家可能聽得比較多的,也是Java比較流行的領(lǐng)域,Java的企業(yè)級版本。Eclipse是一款非常優(yōu)秀的開源IDE,Google官方也提供了基于Eclipse的Android開發(fā)插件ADT,Android平臺為開發(fā)者提供了源碼開放的軟件開發(fā)包(SDK),它包含了使用Java語言開發(fā)Android平臺應(yīng)用的必要工具和組件(API)。首先要有排除死鎖的能力,所謂的死鎖就是游戲初始化完成后,新生成的消除圖案列表中不存在一對可消除圖案。游戲開始由函數(shù)調(diào)用來完成游戲圖片的加載,程序會載入圖片,隨機(jī)產(chǎn)生圖片的任意排列。本游戲是一款基于Android的手機(jī)連連看游戲,玩家進(jìn)入游戲后,進(jìn)入主界面,顯示開始游戲、游戲設(shè)置、游戲介紹、游戲幫助和退出游戲。配對的圖案被消除后,將從游戲界面消失。形成新的布局。各平臺的JDK可至。這時我們要從(Software Development Kit,SDK)。開始游戲按鈕在不同情景文字不同,但功能一樣,都是開始一個新的游戲[12]。public static Bitmap[]icons=new Bitmap[iconsCount]。所以初始布局的方法generateMap()中要先調(diào)用die()來判斷布局是否有解,如果無解的話再調(diào)用shuffle進(jìn)行重新布局,然后再判斷,直到布局有解為止[14]。(游戲勝利!重新開始)。rightleft為視圖的寬度(一般為320個像素),乘以圖片的寬度為圖片在橫向占的總像素數(shù)。后面這次刷新有個延時,以達(dá)到動畫效果,這由控制器來控制,視圖中不予考慮。private Main app。游戲視圖延時刷新后,需要判斷是否已經(jīng)完全消除,即map數(shù)組元素全為0,如果是這樣,則通過將activity狀態(tài)置為STATE_WIN回到菜單。int boundary_flag表示邊界標(biāo)記,在路徑搜索中用到。+ 1;上節(jié)點(diǎn): dst_cell = src_cellint step。corner1)。 NO_CONNECT。 三線連通,我們需要找的C和D一定是在以A和B為中心的兩個十字線上, 。 , A與B是兩個待定節(jié)點(diǎn),而C和D就是他們的拐角節(jié)點(diǎn),顯然C、D的坐標(biāo)可以從A,B的坐標(biāo)推導(dǎo)出來。}else return MAYBE_CONNECT。 實(shí)現(xiàn)函數(shù)如下:int check_1_line_connect(CELL_NODE *first, CELL_NODE *second){int column1 = firstcolumn。public void startGame(Main m){generateMap()。前面視圖中的map數(shù)組只是對這個數(shù)組的一個引用,我們在控制器為它分配空間,生成初始化布局。這是通過下面的onTouchEvent方法實(shí)現(xiàn)的。}private Point index2screen(int x,int y){ return new Point(x*iconWidthoffsetX,y*iconHeightoffsetY)。這個類中的成員變量包括:圖片坐標(biāo)、圖片寬度、連線的折點(diǎn)、圖片點(diǎn)擊事件的監(jiān)聽者、游戲布局?jǐn)?shù)據(jù)、圖片在橫向上的偏移值、圖片在縱向上的偏移值和圖片資源。如果用戶過關(guān)或者游戲時間到,游戲控制器需要設(shè)置游戲狀態(tài),在這里提供了setState方法,并根據(jù)狀態(tài)加載菜單[15]。因此定義了loadMenu方法,并在onStart方法中調(diào)用:首先。public static final int STATE_WIN=2。這個連連看小游戲?qū)崿F(xiàn)了連連看的連線消除功能、游戲倒計時、開始游戲、游戲模式選擇和暫停功能。第一次啟動Eclipse時會彈出視窗讓你決定預(yù)設(shè)的工作目錄。從而產(chǎn)生死鎖。總共分為三個模塊:框架設(shè)計、地圖設(shè)計和計時器。當(dāng)玩家點(diǎn)擊主界面的退出游戲,即退出連連看游戲程序。 游戲背景音樂和計時功能。其中有全布局模式:在該模式中整個游戲界面都可被消除圖案隨機(jī)填充。因此在技術(shù)上是可行的。Eclispe比較流行,各種插件也多,當(dāng)然用起來也不錯;NetBeans現(xiàn)在也是越做越好了,介紹這兩個IDE主要是開源的,當(dāng)然還有其它工具如JBuilder、IntelliJ、JCreator。編譯只進(jìn)行一次,而解釋在每次運(yùn)行程序時都會進(jìn)行。Android平臺上的游戲相比應(yīng)用軟件,不需要進(jìn)行嚴(yán)格的市場細(xì)分,不需要針對目標(biāo)用戶量身定制。由此可知,幾乎每一個Android手機(jī)用戶都是游戲的需求者,都是潛在的顧客,現(xiàn)今的1000多萬Android用戶不過是冰山一角,隨著Android手機(jī)市場進(jìn)一步壯大,游戲的市場容量將具備更大的增長空間。功能上的差異和特色,卻不會影響到數(shù)據(jù)同步、甚至軟件的兼容。所以應(yīng)用程序代碼實(shí)際上與其它應(yīng)用程序的代碼是隔絕的。數(shù)據(jù)存取與共享機(jī)制ContentProvider:ContentProvider為應(yīng)用程序提供一些訪問方法,包括:Query(Uri,String [ ],String,String[ ],String,String,String)(數(shù)據(jù)信息的查詢) ,insert (Uri,Contentvalues) (在Content provider中加新數(shù)據(jù)),update(Uri,