999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Android平臺的掃雷游戲設(shè)計與實現(xiàn)

2020-08-20 07:48:50肖洪蘭
商情 2020年36期

肖洪蘭

【摘要】本文開發(fā)了益智類掃雷手機游戲,分析了該游戲所需用到的API,探討了游戲的數(shù)據(jù)結(jié)構(gòu)及每個方格不同狀態(tài)的不同編碼,最后給出核心算法。游戲基于Android2.2.3平臺開發(fā)實現(xiàn),可以運行于任意主流的Android手機中。

【關(guān)鍵詞】掃雷 ?Android ?View

一、Android平臺簡介

Android是一個開放的手機操作系統(tǒng)平臺,為移動設(shè)備提供了一個包含操作系統(tǒng)、中間件及應(yīng)用程序的軟件疊層架構(gòu)。Android SDK為開發(fā)人員使用Java語言編寫Android平臺下的應(yīng)用程序提供了必要的工具和API。Android和iPhone相比,其的優(yōu)點有:真正開放、應(yīng)用程序相互平等、應(yīng)用程序溝通無界限。

二、掃雷游戲的簡介

在掃雷游戲中,有N行M列個方格,每個方格包含三種狀態(tài):關(guān)閉、標(biāo)記為雷和打開,初始化時每個方格都是關(guān)閉的,你可以標(biāo)記某個方格是雷,預(yù)測該方格有雷(并不表示真的一定有雷);也可以打開某個方格,一個打開的方格也會包含兩種狀態(tài):一個數(shù)字和一個雷。如果你打開的是一個雷,那么就是失敗;否則就會打開一個數(shù)字,該數(shù)字是位于0到8之間的一個整數(shù),該數(shù)字表示其所有鄰居方格的所包含的雷數(shù)。一個已打開的方格不能再關(guān)閉,標(biāo)記為雷可以取消標(biāo)記,當(dāng)一個方格標(biāo)記為雷后該方格不能打開一個方格。所有標(biāo)記為雷的方格真的是雷則游戲勝利。

三、掃雷游戲的設(shè)計及實現(xiàn)

(一)主要的類及方法方法介紹

android.view.View為所有可視化控件的基類,主要提供繪制和事件處理的方法,boolean onTouchEvent(MotionEvent event)方法處理點擊屏幕的事件, onDraw(Canvas canvas) 方法處理繪制畫面,postInvalidate()方法會通知UI線程更新界面,UI線程會調(diào)用onDraw(Canvas canvas)重新繪制界面。

java.util.Random為偽隨機數(shù)產(chǎn)生器,int nextInt(int n)方法返回0到n之間的整數(shù)值。通過調(diào)用nextInt()方法實現(xiàn)雷的位置隨機分布。

android.graphics.Canvas能繪制各種圖形元素的類,drawBitmap()方法在指定位置繪制相應(yīng)的圖片。在該方法中繪制游戲中的所有界面。

Runnable該接口和Thread類一起使用run()方法,所有實現(xiàn)該接口的類都可以提供線程的主體部分;必須實現(xiàn)run()方法,在該方法中改變便時間計數(shù)器的值,以達(dá)到計時的效果。

(二)主要算法

1.定義一個N行M列的二維數(shù)組int [][]map;每個元素的值所表示的意義如下

(1)初始化時,數(shù)組中的值只有[0,8]代表數(shù)值0至8,10表示是雷。

(2)在顯示時14表示是標(biāo)記為雷的狀態(tài)圖片,15表示沒有打開是關(guān)閉狀態(tài)圖,12表示碰雷的圖片,11表示最后失敗時顯示標(biāo)記為雷是錯誤的圖片。

(3)在玩游戲的過程中可以對某個方格標(biāo)記為雷,也可以打開該方格,也可以取消標(biāo)記;也就是說一個方格有三種種狀態(tài),這里準(zhǔn)備用同一個數(shù)組采用不同的編碼來表示三種不同的狀態(tài),[0,10]代表是數(shù)組初始化時的狀態(tài),也就是雷德位置及周圍的數(shù)值;標(biāo)記map[i1][j1]為雷則在修改map[i1][j1]=map[i1][j1]+20,取消標(biāo)記map[i1][j1]=map[i1][j1]-20;點開時map[i1][j1]=map[i1][j1]+40;這樣在繪制游戲界面時做相反的變化就能正確表示當(dāng)前方格的狀態(tài),也能算出原來的初始化值。

2.點擊方格區(qū)域的核心算法如下

if(selectBT==14) //標(biāo)記為雷

{

if(map[i1][j1]<16)

{ map[i1][j1]+=20;minners--;}

else if(map[i1][j1]>20&&map[i1][j1]<36){

map[i1][j1]-=20;minners++;

}

}

if(selectBT==15){//點開

if(map[i1][j1]==0)//點開一片區(qū)域

findNull(map, i1, j1);//深度優(yōu)先搜索八個方向

else if(map[i1][j1]==10)//碰雷

{ map[i1][j1]+=42;

logic.findAllMinners(map);//顯示所有的雷

}

else if(map[i1][j1]<9)//顯示數(shù)值

map[i1][j1]+=40;

}

3.深度優(yōu)先搜索八個方向的核心代碼如下

int direct[][]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}}

public void findNull(int[][]map,int i,int j){

if((i<0||i>map.length-1)&&(j<0||j>map[i].length-1))return;//下標(biāo)越界返回

if(map[i][j]==0){

map[i][j]+=40;//已經(jīng)點開

for (int j2 = 0; j2 < direct.length; j2++) {//繼續(xù)展開八個方向

findNull(map, i+direct[j2][0], j+direct[j2][1]);

}

}

if(map[i][j]>0&&map[i][j]<9)

{ map[i][j]+=40;//已經(jīng)點開

return;}

return; }

四、結(jié)束語

掃雷游戲是一款比較經(jīng)典的Windows游戲,因為智能手機用戶有不同的體驗方式,如果能借助傳感器再加上適當(dāng)?shù)膭?chuàng)意,我相信掃雷游戲在手機上會有更多的用戶愿意去體驗。

參考文獻(xiàn):

[1]吳亞峰,索伊娜.Android核心技術(shù)與實例詳解[M].電子工業(yè)出版社,2012.

主站蜘蛛池模板: 国产香蕉在线| 国产午夜精品一区二区三区软件| 99无码中文字幕视频| 狠狠久久综合伊人不卡| 亚洲国产日韩欧美在线| 国产国模一区二区三区四区| 97无码免费人妻超级碰碰碰| 在线高清亚洲精品二区| 亚洲伊人电影| 中文字幕人妻av一区二区| 欧美视频在线第一页| 亚洲一区网站| 在线欧美日韩| 99视频只有精品| 视频一区视频二区日韩专区| 四虎成人在线视频| 国产香蕉97碰碰视频VA碰碰看| 无码有码中文字幕| 中文无码精品A∨在线观看不卡| 日韩 欧美 国产 精品 综合| 真实国产乱子伦视频| 日韩av在线直播| 亚洲成人一区二区| 亚洲无码A视频在线| 91免费国产在线观看尤物| 国产精品视频导航| 伊人网址在线| 中文字幕有乳无码| 青青草一区| 亚洲国产日韩欧美在线| 99久久亚洲精品影院| 无码中文字幕精品推荐| 人妻无码中文字幕第一区| 国产jizzjizz视频| 国产精品浪潮Av| 午夜电影在线观看国产1区| 日本一区二区三区精品AⅤ| 日本尹人综合香蕉在线观看| 国产精品视频系列专区| 亚洲狠狠婷婷综合久久久久| 本亚洲精品网站| 久久一日本道色综合久久| 亚洲无码37.| 国产小视频免费| 国产福利小视频在线播放观看| 国产乱子伦视频在线播放| 波多野结衣在线一区二区| 欧美日韩午夜| 国产美女91视频| 一级毛片免费不卡在线视频| 亚洲中文无码av永久伊人| 欧美精品1区| 亚洲AV人人澡人人双人| 有专无码视频| 毛片久久网站小视频| 亚洲妓女综合网995久久| 成人亚洲国产| 国产av无码日韩av无码网站| 国产高清在线观看91精品| 五月婷婷综合在线视频| 尤物亚洲最大AV无码网站| 狠狠做深爱婷婷综合一区| 在线亚洲小视频| 91麻豆国产在线| 国产亚洲欧美日本一二三本道| 欧美翘臀一区二区三区| 55夜色66夜色国产精品视频| 成人福利在线视频| 国产尹人香蕉综合在线电影| 亚洲swag精品自拍一区| 国产美女在线观看| 再看日本中文字幕在线观看| 国产精品亚洲综合久久小说| 亚洲国内精品自在自线官| 国产h视频免费观看| 亚洲国内精品自在自线官| 国产精品无码久久久久久| 666精品国产精品亚洲| 欧美高清国产| 精品国产成人高清在线| 亚洲最大福利视频网| 男女性色大片免费网站|