亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android平臺的掃雷游戲設計與實現

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

        肖洪蘭

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

        【關鍵詞】掃雷 ?Android ?View

        一、Android平臺簡介

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

        二、掃雷游戲的簡介

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

        三、掃雷游戲的設計及實現

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

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

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

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

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

        (二)主要算法

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

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

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

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

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

        if(selectBT==14) //標記為雷

        {

        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)//顯示數值

        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;//下標越界返回

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

        map[i][j]+=40;//已經點開

        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;//已經點開

        return;}

        return; }

        四、結束語

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

        參考文獻:

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

        人妻少妇精品视频专区二区三区| 久久亚洲AV成人一二三区| 精品丝袜国产在线播放| 手机在线免费观看的av| 美国少妇性xxxx另类| 麻豆国产人妻欲求不满谁演的| 精品一区二区三区四区少妇| 亚洲精品中文字幕乱码三区99| 亚洲男人天堂黄色av| 亚洲av无码精品色午夜在线观看| 久久精品国产热| 午夜黄色一区二区不卡| 国产在线一区二区三区四区| 男人靠女人免费视频网站| 激情五月天伊人久久| 色婷婷一区二区三区77| 一区二区三区中文字幕p站| 毛多水多www偷窥小便| 久久九九青青国产精品| 在线观看免费视频发布白白色| 亚洲狠狠婷婷综合久久久久| 三级4级全黄60分钟| 无码av一区在线观看| 亚洲av熟女传媒国产一区二区| 国产精品538一区二区在线 | 久久久久亚洲av无码a片| 日韩人妻无码一区二区三区| 亚洲国产一区二区三区在线视频| 青青草视频视频在线观看| 亚洲av中文无码乱人伦下载| 国产农村妇女高潮大叫| 午夜av内射一区二区三区红桃视 | 国产美女露脸口爆吞精| 不卡无毒免费毛片视频观看| 91精品国产综合久久精品密臀| 欧美xxxx做受欧美| 俺也去色官网| 亚洲色图少妇熟女偷拍自拍| 蜜臀久久99精品久久久久久| 在线观看国产成人av片| 又色又爽又黄的视频网站|