国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一款基于Android 平臺(tái)益智游戲的設(shè)計(jì)與實(shí)現(xiàn)

2016-03-07 12:54趙宏
電腦知識(shí)與技術(shù) 2015年34期
關(guān)鍵詞:手勢(shì)卡片界面

趙宏

摘要:近幾年,隨著Android手機(jī)及其相關(guān)設(shè)備的迅速普及,針對(duì)Android平臺(tái)游戲的開發(fā)需求日益增多?!?048游戲”是一款益智類游戲,老少皆宜。該文設(shè)計(jì)并實(shí)現(xiàn)了基于Android平臺(tái)的2048游戲,最后在手機(jī)上測(cè)試運(yùn)行,結(jié)果十分流暢。

關(guān)鍵詞:Android平臺(tái);益智類游戲;2048游戲

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)34-0102-02

隨著移動(dòng)通信技術(shù)的迅速發(fā)展,人們對(duì)移動(dòng)設(shè)備需求的不斷變化,移動(dòng)設(shè)備的智能化程度也在不斷提高。Android平臺(tái)作為三大移動(dòng)平臺(tái)之一,用戶數(shù)量也在不斷增長(zhǎng)。同時(shí),人們不再滿足于傳統(tǒng)的桌面游戲,移動(dòng)游戲具有隨時(shí)、隨地和隨身等特點(diǎn),不斷受到用戶的青睞。因此,移動(dòng)游戲相對(duì)于傳統(tǒng)游戲所占的市場(chǎng)份額也在日益擴(kuò)大。本文設(shè)計(jì)和實(shí)現(xiàn)了一種基于Android平臺(tái)的2048益智游戲。

1 研究?jī)?nèi)容

數(shù)字游戲2048,初始數(shù)字則是由2+2組成的基數(shù)4。在操作方面,與其他一些數(shù)字游戲相比有所不同,表現(xiàn)為由一步一格的移動(dòng),變成更為爽快的一次到底。相同數(shù)字的卡片在靠攏、相撞時(shí)會(huì)相加。系統(tǒng)給予的數(shù)字方塊不是2就是4,用戶要想辦法在這16格范圍中湊出“2048”這個(gè)數(shù)字方塊就算成功。

本游戲是在Android應(yīng)用平臺(tái)上開發(fā)的,使用的開發(fā)語(yǔ)言為:Java語(yǔ)言,開發(fā)工具為Eclipse,并包含ADT等插件。

2 系統(tǒng)設(shè)計(jì)

在對(duì)游戲進(jìn)行詳細(xì)需求分析的基礎(chǔ)上,確定了系統(tǒng)的功能和性能要求,對(duì)游戲的主界面、屏幕繪制、布局設(shè)計(jì)、合并算法、游戲分?jǐn)?shù)及最高分的統(tǒng)計(jì)進(jìn)行了詳細(xì)設(shè)計(jì)。游戲單項(xiàng)功能的實(shí)現(xiàn):開始游戲、屏幕繪制、滑動(dòng)合并、重新開始游戲、統(tǒng)計(jì)得分和最高分等功能。然后自定義游戲視圖,且能夠根據(jù)控制器提供的布局?jǐn)?shù)據(jù)來(lái)顯示數(shù)字卡片方格,并提供選中合并、疊加和統(tǒng)計(jì)分?jǐn)?shù)等功能。

當(dāng)用戶點(diǎn)擊開始游戲后,用戶可以上下左右滑動(dòng)卡片,與此同時(shí)游戲也開始統(tǒng)計(jì)得分,隨著游戲得分越來(lái)越高,界面中空格卡片的剩余量也越來(lái)越少,用戶也可以退出游戲或重新開始游戲。系統(tǒng)流程圖如圖1。

在游戲的過(guò)程中,當(dāng)用戶滑動(dòng)卡片2,與卡片2相碰疊加,就會(huì)成為卡片4,與此類推,當(dāng)卡片1024與卡片1024疊加成卡片2048,則證明游戲闖關(guān)成功。

3 算法設(shè)計(jì)

當(dāng)用戶進(jìn)入游戲界面,開始游戲時(shí),首先系統(tǒng)會(huì)默認(rèn)自動(dòng)生成兩張數(shù)字卡片,可以任意滑動(dòng)。整個(gè)游戲涉及到核心算法主要有:手勢(shì)判斷,移動(dòng)卡片,判斷游戲結(jié)束。

3.1 手勢(shì)判斷

手勢(shì)的判斷與識(shí)別,是手機(jī)游戲的關(guān)鍵所在,也是手機(jī)游戲體驗(yàn)好壞的重要因素之一。在本游戲中,手勢(shì)判斷方法,記錄手勢(shì)在x軸上的距離,與y軸的距離大小,并做出相應(yīng)的判斷。比如手勢(shì)在x軸距離大于+5單位,則向表示右移;小于-5單位,則向左移。以此類推,判斷手勢(shì)在y軸的移動(dòng)。

private float startX, startY, offsetX, offsetY;

@Override

public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

startX = event.getX();

startY = event.getY();

break;

case MotionEvent.ACTION_UP:

offsetX = event.getX() - startX;

offsetY = event.getY() - startY;

//記錄手勢(shì)在x軸與y軸的距離大小

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

if (offsetX < -5) {

//手勢(shì)在x軸距離小于-5則向左移swipeLeft();

} else if (offsetX > 5) { //手勢(shì)在x軸距離大于+5則向右移 swipeRight(); }

} else {

if (offsetY < -5) {

//手勢(shì)在y軸距離小于-5則向上移swipeUp();

} else if (offsetY > 5) {

//手勢(shì)在y軸距離大于+5則向下移swipeDown(); } }

break; }

return true; }

3.2 移動(dòng)卡片

關(guān)于卡片移動(dòng)的方法,分成兩種情況來(lái)處理,一種是沒有能合并但有能夠移動(dòng)的,就移動(dòng)到相應(yīng)的位置。第二種,能夠合并的,合并到相應(yīng)的位置再移動(dòng)。

private void swipeLeft() {

boolean merge = false;

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

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

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

// 移動(dòng)不能合并的卡片位置

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

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

x--;

merge = true; }

// 判斷是否還有能夠合并的卡片

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

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

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

score.addScore(cardsMap[x][y].getNum());

merge = true; }

break; } } }

}

if (merge) {

addRandomNum();

checkComplete();

}

3.3 判斷游戲結(jié)束

怎么判斷游戲是否結(jié)束呢?我們要看是否所有磚塊填滿,還要看相鄰卡片的數(shù)字是否相同,是否還有能夠合并的了。

4 功能實(shí)現(xiàn)

為了實(shí)現(xiàn)游戲的具體功能,思路如下:用戶進(jìn)入歡迎界面后,提示點(diǎn)擊屏幕,進(jìn)入游戲頁(yè)面,然后實(shí)現(xiàn)游戲的全部功能,如圖2和圖3。具體描述如下:

1)游戲的基本功能。首先,要游戲能夠正常啟動(dòng)運(yùn)行。在游戲開始階段,用戶應(yīng)該對(duì)卡片的方向有一個(gè)基本判斷(如上、下、左、右),因?yàn)橛脩暨x擇不同的方向,最后得分是不同的。另外,在游戲過(guò)程中可以使用道具,也可以選擇重新開始游戲。

2)游戲模式選擇。所謂游戲模式選擇,也就是當(dāng)用戶在游戲過(guò)程中遇到困難,不能再進(jìn)行下一步的時(shí)候,可以選擇使用道具,使其可以繼續(xù)進(jìn)行游戲。模式有兩種,間隔行和間隔列:所謂間隔行和間隔列,也就是在游戲的主畫面中,可以將間隔的行和列中的數(shù)字卡片合并且數(shù)字疊加,組成新的數(shù)字卡片。

3)游戲得分統(tǒng)計(jì)。當(dāng)用戶進(jìn)入游戲界面,開始游戲的時(shí)候,系統(tǒng)便開始進(jìn)行得分的統(tǒng)計(jì),用戶也可以通過(guò)得分,以此來(lái)激發(fā)用戶的玩游戲的欲望,使其自己的得分變得更高。最后還有一個(gè)最高分統(tǒng)計(jì),這個(gè)將會(huì)存儲(chǔ)在用戶的手機(jī)文件里,用作歷史記錄最高得分,增加用戶的挑戰(zhàn)性,同時(shí)也增加了游戲本身的趣味性。

5 結(jié)束與展望

本游戲的設(shè)計(jì)經(jīng)過(guò)Android平臺(tái)的模擬器測(cè)試,成功運(yùn)行。同時(shí),也經(jīng)過(guò)幾臺(tái)手機(jī)的測(cè)試,運(yùn)行十分流暢。今后,將繼續(xù)優(yōu)化游戲界面,增加功能,使游戲的趣味性和可玩性進(jìn)一步得到提高。

參考文獻(xiàn):

[1] 代亮, 林峰. 基于Android移動(dòng)平臺(tái)數(shù)獨(dú)游戲的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電腦知識(shí)與技術(shù), 2013(5).

[2] 俞琳琳. 基于Starling的捕魚游戲的設(shè)計(jì)與開發(fā)[J]. 軟件工程師, 2014(12).

[3] 李剛. 瘋狂Android講義[M]. 北京:電子工業(yè)出版社, 2013.

[4] 郭少豪. Android 3D游戲開發(fā)與應(yīng)用案例詳解[M]. 北京: 中國(guó)鐵道出版社, 2012.

[5] 楊長(zhǎng)剛. 深入剖析Android系統(tǒng)[M]. 北京: 電子工業(yè)出版社, 2013.

猜你喜歡
手勢(shì)卡片界面
擺卡片
倒過(guò)來(lái)的卡片
國(guó)企黨委前置研究的“四個(gè)界面”
挑戰(zhàn)!神秘手勢(shì)
V字手勢(shì)的由來(lái)
一張卡片
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
勝利的手勢(shì)
人機(jī)交互界面發(fā)展趨勢(shì)研究
手機(jī)界面中圖形符號(hào)的發(fā)展趨向
三原县| 三都| 东宁县| 永嘉县| 乐陵市| 喀什市| 陵水| 汶川县| 长岛县| 简阳市| 藁城市| 长宁县| 容城县| 孝感市| 乃东县| 循化| 贺兰县| 都昌县| 金山区| 阿尔山市| 青田县| 依兰县| 阜城县| 墨江| 乌鲁木齐市| 宁化县| 磐石市| 吉木萨尔县| 晋中市| 文山县| 邵阳县| 湖北省| 拜城县| 竹溪县| 吴堡县| 鄂托克前旗| 山阴县| 亳州市| 玉山县| 潞城市| 无极县|