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

基于Android的2048小游戲的簡單實現

2017-07-05 20:02:50翟亞靜成麗君
電子技術與軟件工程 2017年12期
關鍵詞:實現游戲

翟亞靜++成麗君

摘 要2048是目前比較流行的一款適用于各類人群的益智小游戲,在原來設計基礎上市場上推出了它的各種新玩法,比如與俄羅斯方塊、消消樂、連連看等游戲的結合令2048小游戲在一定程度上增添了更多趣味性。本文采用Java語言和Android平臺實現了 2048經典模式的運行,描寫了游戲的簡單實現。

【關鍵詞】游戲 益智 實現

1 引言

Android 智能手機目前擁有最多的用戶使用群體,隨著它的不斷更新與進步,基于Android的手機游戲也正在經歷從簡單到復雜的進化過程。通過與俄羅斯方塊、消消樂、連連看等游戲思想的結合,使2048小游戲在經典模式的玩法上推出了形式和趣味更強大的眾多新玩法。本文采用Java語言,通過Android平臺實現了 2048經典模式的運行,描寫了游戲的簡單實現,以方便實現2048小游戲的后續升級開發。

2 設計

2.1 算法設計

(1)2048游戲界面為一個4*4的方形格子,在格子上方顯示當前分數,其下方為最高分。右上角可選擇模式,分小裙裙和經典模式。開始時隨機出現兩個數字,出現的數字僅可能為2或4,設置出現2的概率大于4。

(2)用戶可以上下左右四個方向用手指滑動方塊,若方塊移動方向上有相同的數字則合并,支持同時合并但不支持連續合并,合并消去的格子之和即為所得分數。

(3)每次移動一步,空格上隨機出現一個數字(可能為2或者4)。

(4)若格子被數字填滿,則游戲結束,用戶可以選擇重新開始或者退出游戲。

2.2 程序流程圖

如圖1所示。

2.3 界面實現

如圖2所示。

3 核心代碼及相關算法解釋

setOnTouchListener(new View.OnTouchListener() {

//設置位置起始點和偏移點

//算法邏輯:由于手指在滑動方向會有偏差,一般不會精準的向四個方向滑動,//所以判斷是水平方向還是垂直方向的意圖,當水平方向偏移量大于垂直方向時表明用戶是水//平滑動意圖。同時我們只需要知道兩點,即:用戶手指按下的坐標點和手指離開時的坐標點,

//通過進行比對,從而識別出用戶的意圖。

private float startX, startY, offsetX, offsetY;

@Override

public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {

//手指按下

case MotionEvent.ACTION_DOWN:

//按下時的x,y坐標

startX = event.getX();

startY = event.getY();

break;

//手指離開

case MotionEvent.ACTION_UP:

//計算手指離開時的偏移量(離開時坐標點-按下時坐標點),從而判斷方塊是往哪個方向移動

offsetX = event.getX() - startX;

offsetY = event.getY() - startY;

//識別移動方向,若offsetX的絕對值大于offsetY的,則水平移動

if(Math.abs(offsetX) > Math.abs(offsetY)){

//為避免誤差,將范圍設置為<-5

if(offsetX < -5){

toLeft();

}

else if(offsetX > 5){

toRight();

}

}

else {

if(offsetY < -5){

toUp();

}

else if(offsetY > 5){

toDown();

}

}

break;

default:

break;

}

return true;

}

});

}

//隨機數

private void addRandomNum(){

//新建一個list存放空的方塊,操作之前清空

Points.clear();

//對所有位置進行遍歷

for (int i = 0; i < 4; i++) {

for (int j = 0; j < 4; j++) {

//空方塊此時才可以添加值,有值時不進行添加

if (cardsMap[j][i].getNum() <= 0){

Points.add(new Point(j, i));

}

}

}

//取方塊。用Math.random()返回一個0-1的數,當大于0.3時,值是2否則為4

Point p = Points.remove((int)(Math.random() * Points.size()));

cardsMap[p.x][p.y].setNum(Math.random()> 0.3 ? 2 : 4);

}

//給出方塊向左移動時的三種情況,其余三個移動方向同理

// 1)左邊為空

//2)左邊碰到的第一個數值相等,則相加

//3)左邊碰到的第一個數值不相等,則將其靠左

private void toLeft(){

boolean addFlag = false;

for (int y = 0; y < 4; y++) {

for (int x = 0; x < 4; x++) {

for (int x1 = x + 1; x1 < 4; x1++){

if (cardsMap[x1][y].getNum() > 0){

//如果當前位置上為0,就放在該位置上

if(cardsMap[x][y].getNum() <= 0){

cardsMap[x][y].setNum(cardsMap[x1][y].getNum());

//將原來位置上的值清除

cardsMap[x1][y].setNum(0);

//繼續遍歷

x--;

addFlag = true;

}

//有值且相同時,合并

else if (cardsMap[x][y].getNum() == cardsMap[x1][y].getNum()){

cardsMap[x][y].setNum(cardsMap[x][y].getNum()*2);

//將原來位置上的值清除

cardsMap[x1][y].setNum(0);

MainActivity.getMainActivity().addScore(cardsMap[x][y].getNum());

addFlag = true;

}

break;

}

}

}

}

if(addFlag == true){

addRandomNum();

endCheck();

}

}

4 結語

本文描述了2048小游戲采用Java語言+Eclipse+ADT+JDK開發的關鍵算法,不僅游戲玩法簡單易操作,實現也相對簡單,程序開發僅需要平常使用的安卓操作系統手機進行測試,適合我們初學者提高對Android知識及算法的掌握與應用。

參考文獻

[1]Android實訓案例(四).https://wenku.baidu.com/view/5e77b1c8ac51f01dc281e53a580216fc700a5373.html.2016-10-17/2017-05-06.

[2]郭霖.第一行代碼[Android(第2版)[M].人民郵電出版社,2012.

作者簡介

翟亞靜(1995-),女,山西省長治市人。山西農業大學軟件學院2014級在讀本科生。主要研究方向為軟件工程。

作者單位

山西農業大學軟件學院 山西省晉中市 030801

猜你喜歡
實現游戲
游戲
數獨游戲
信息系統安全評價系統設計及實現
高校聲像檔案數字化管理的實現路徑
辦公室業務(2016年9期)2016-11-23 10:44:30
辦公室人員尚需制定個人發展規劃
辦公室業務(2016年9期)2016-11-23 09:15:57
蘇州信息學院教務管理系統的設計與實現
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
如何實現人企合一
淺析鐵路通信傳輸的構成及實現方法
爆笑游戲
主站蜘蛛池模板: 8090成人午夜精品| 亚洲高清中文字幕| 亚洲国产欧美国产综合久久 | 视频在线观看一区二区| 亚洲国产亚综合在线区| 久草国产在线观看| 亚洲中文字幕在线一区播放| 99ri精品视频在线观看播放| 在线精品视频成人网| 尤物精品视频一区二区三区| 日韩123欧美字幕| 日本免费福利视频| 亚洲男人天堂网址| 国产精品一区二区国产主播| WWW丫丫国产成人精品| 亚洲精品无码抽插日韩| 国产国产人在线成免费视频狼人色| 小蝌蚪亚洲精品国产| 亚洲国产欧美自拍| 国产黑丝视频在线观看| 亚洲制服中文字幕一区二区 | 亚洲人成网站18禁动漫无码| 亚洲V日韩V无码一区二区| 亚洲精品中文字幕无乱码| 久久国产亚洲偷自| 亚洲中文字幕国产av| 国产黄色片在线看| 国产主播福利在线观看| 99久久国产综合精品2020| 日本a级免费| 国产一级裸网站| 黄色污网站在线观看| 九九热精品视频在线| 国产一区三区二区中文在线| 国产精品流白浆在线观看| 制服丝袜在线视频香蕉| 国产福利微拍精品一区二区| 综合五月天网| 超碰91免费人妻| 欧美福利在线观看| 九九这里只有精品视频| 天天综合亚洲| www.精品国产| 奇米影视狠狠精品7777| 99久久人妻精品免费二区| 国模视频一区二区| 日本亚洲欧美在线| 亚洲成人一区二区| 亚洲91精品视频| 精品福利视频导航| 日本一区二区三区精品视频| 97人人模人人爽人人喊小说| 一级一级一片免费| 国产特一级毛片| 亚洲国产精品日韩av专区| 色爽网免费视频| 色香蕉网站| 色偷偷综合网| av一区二区三区在线观看| 欧美精品在线免费| 97免费在线观看视频| 无码日韩视频| 亚洲视频四区| 亚洲欧洲免费视频| 激情在线网| 亚洲侵犯无码网址在线观看| 久草性视频| 精久久久久无码区中文字幕| jijzzizz老师出水喷水喷出| 成人免费视频一区| 国产成人高清精品免费软件| 国产日韩欧美成人| 自拍欧美亚洲| 91精品久久久无码中文字幕vr| 亚洲国产AV无码综合原创| 国产午夜在线观看视频| V一区无码内射国产| 老司机精品久久| 国内精品久久久久久久久久影视| 国产成人无码综合亚洲日韩不卡| a级毛片毛片免费观看久潮| 一本大道香蕉久中文在线播放|