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
如何實現人企合一
淺析鐵路通信傳輸的構成及實現方法
爆笑游戲
主站蜘蛛池模板: 伊人久久青草青青综合| 小13箩利洗澡无码视频免费网站| 狠狠五月天中文字幕| 91无码网站| 在线精品亚洲一区二区古装| 国产精品视频白浆免费视频| 91成人在线观看视频| 久久综合激情网| 亚洲狠狠婷婷综合久久久久| 成人免费黄色小视频| 久久国产拍爱| 天天激情综合| 国产真实二区一区在线亚洲| 啪啪免费视频一区二区| 欧美精品不卡| 亚洲第一天堂无码专区| 国产99精品视频| 免费观看欧美性一级| 国产精品无码翘臀在线看纯欲| 狠狠躁天天躁夜夜躁婷婷| 国产尤物jk自慰制服喷水| 九九免费观看全部免费视频| 91精品专区国产盗摄| 欧美a在线看| 国产va在线观看| 欧美成人午夜在线全部免费| 亚洲青涩在线| 欧美国产精品不卡在线观看| 国产第四页| 欧美精品不卡| 秘书高跟黑色丝袜国产91在线| 91无码人妻精品一区二区蜜桃| 国产麻豆精品久久一二三| 日本午夜网站| 久久黄色毛片| 亚洲性网站| 国产精品真实对白精彩久久| 五月婷婷精品| 亚洲欧美不卡视频| 久久亚洲天堂| 日韩成人在线网站| 国产在线91在线电影| 亚洲人网站| 久久综合结合久久狠狠狠97色| 国产精品性| 成人一级黄色毛片| 丁香五月婷婷激情基地| 亚洲人成人无码www| 国产亚洲欧美在线专区| 国产又大又粗又猛又爽的视频| 精品福利视频网| 91精品最新国内在线播放| 色综合五月婷婷| 美女毛片在线| 三上悠亚精品二区在线观看| 国产欧美日韩综合在线第一| 永久毛片在线播| 欧美一区二区三区不卡免费| 中文字幕无码av专区久久| 欧美精品H在线播放| 色欲色欲久久综合网| 人妻免费无码不卡视频| 亚洲精品无码抽插日韩| 国产成人精品在线1区| 国产在线91在线电影| 国产成人艳妇AA视频在线| 国产午夜福利片在线观看| 国产一级毛片yw| 亚洲国产成人精品无码区性色| 国产精品私拍在线爆乳| 欧美日韩一区二区在线播放 | 国产国语一级毛片| 91久久精品国产| 亚洲一区色| 综合色区亚洲熟妇在线| 91丝袜在线观看| A级毛片高清免费视频就| 无码人妻热线精品视频| 2021亚洲精品不卡a| 精品人妻无码区在线视频| 无码高潮喷水在线观看| 国产特级毛片|