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

?

基于Android的2048手機(jī)游戲App設(shè)計(jì)與實(shí)現(xiàn)

2017-08-24 15:02:06沈旭
計(jì)算機(jī)時(shí)代 2017年8期
關(guān)鍵詞:手機(jī)游戲卡片動(dòng)畫(huà)

沈旭

摘 要: 開(kāi)發(fā)2048手機(jī)游戲App的目的,在于它是一款休閑益智小游戲,可以通過(guò)游戲減輕精神壓力,鍛煉思維能力。介紹了游戲App的設(shè)計(jì)開(kāi)發(fā)過(guò)程,對(duì)游戲的邏輯算法、觸控交互、卡片設(shè)計(jì)、統(tǒng)計(jì)計(jì)分等作了詳細(xì)剖析。最后對(duì)該App做了Android手機(jī)實(shí)際測(cè)試,結(jié)果表明,游戲App達(dá)到了設(shè)計(jì)要求,可以滿(mǎn)足人們休閑益智的需要,同時(shí)對(duì)設(shè)計(jì)開(kāi)發(fā)流程作了總結(jié)。

關(guān)鍵詞: Android; App; 2048; 游戲

中圖分類(lèi)號(hào):TP311.1 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2017)08-29-04

Abstract: The purpose of developing 2048 number puzzle game App is that it is a casual puzzle game, which can relieve mental pressure and exercise thinking ability through games. This paper introduces the design and development process of game App, and analyzes the logic algorithm, touch interaction, card design and statistical scoring etc. the App is tested on the Android mobile phone, and the results show that the game App meets the design requirements, and can meet the needs of people's leisure enjoying and intelligence benefiting. At the same time, the design and development process is summarized.

Key words: Android; App; 2048; game

0 引言

隨著信息技術(shù)的快速發(fā)展,以智能終端為平臺(tái)的應(yīng)用在人們生活中占據(jù)了越來(lái)越重要的位置。物質(zhì)生活條件的提高,使人們產(chǎn)生更多精神方面的需求,如手機(jī)應(yīng)用App就成了提高精神生活需求的新平臺(tái)[1]。近年來(lái),手機(jī)游戲成為游戲產(chǎn)業(yè)中最重要的一部分,涌現(xiàn)出了諸如憤怒的小鳥(niǎo),水果忍者,flappy bird等諸多優(yōu)秀的手機(jī)游戲App。一款手機(jī)游戲App能夠流行,主要依靠其操作簡(jiǎn)單性和益智趣味性[2-3]。2048游戲App是一款休閑益智小游戲,可以調(diào)節(jié)精神、釋放壓力,鍛煉人們的思維能力。

1 游戲規(guī)則與步驟

1.1 游戲規(guī)則

2048游戲規(guī)則簡(jiǎn)單易懂:①開(kāi)始時(shí)棋盤(pán)內(nèi)隨機(jī)出現(xiàn)兩個(gè)數(shù)字,2或4;②用戶(hù)可以選擇上下左右四個(gè)方向移動(dòng)合并數(shù)字,若棋盤(pán)內(nèi)的數(shù)字出現(xiàn)移位或合并,視為有效移動(dòng);③用戶(hù)選擇的方向上若有相同的數(shù)字則合并,每次有效移動(dòng)可以同時(shí)合并,但不可以連續(xù)合并;④合并所生成的數(shù)字之和,就是有效得分;⑤用戶(hù)選擇的方向行或列前方有空格則出現(xiàn)移位;⑥有效移動(dòng)一步,棋盤(pán)無(wú)數(shù)字的空格就隨機(jī)出現(xiàn)數(shù)字2或4;⑦棋盤(pán)被數(shù)字填滿(mǎn),無(wú)法進(jìn)行有效移動(dòng),游戲失敗;⑧棋盤(pán)上出現(xiàn)2048,游戲勝利。游戲App系統(tǒng)結(jié)構(gòu)圖如圖1所示。

1.2 游戲步驟

游戲步驟如下:①點(diǎn)擊2048游戲App圖標(biāo)將會(huì)出現(xiàn)開(kāi)機(jī)動(dòng)畫(huà),之后進(jìn)入游戲主界面;②在主界面單擊“關(guān)于游戲”菜單進(jìn)入“關(guān)于”界面,介紹游戲版本、版權(quán)等基本信息;③在主界面單擊“游戲幫助”菜單進(jìn)入幫助界面,介紹游戲基本規(guī)則;④在主界面單擊“開(kāi)始游戲”菜單進(jìn)入游戲界面;⑤用戶(hù)點(diǎn)擊重新開(kāi)始按鈕重玩游戲,通過(guò)合并相同數(shù)字,最后達(dá)到2048的時(shí)候獲勝,如果游戲區(qū)域沒(méi)有空格,同時(shí)沒(méi)有能夠合并的相同數(shù)字則失敗;⑥用戶(hù)點(diǎn)擊手機(jī)的返回鍵返回游戲主界面;⑦點(diǎn)擊“退出游戲”,游戲結(jié)束退出。

2 游戲設(shè)計(jì)

2048手機(jī)游戲App設(shè)計(jì)需要解決三個(gè)關(guān)鍵技術(shù):實(shí)現(xiàn)原理、卡片設(shè)計(jì)和觸控交互設(shè)計(jì)。

2.1 實(shí)現(xiàn)原理

⑴ 初始化游戲:調(diào)用函數(shù)initGameView()設(shè)置方格布局朝向和背景顏色,完成游戲初始化,游戲即將開(kāi)始[4]。

⑵ 開(kāi)始游戲:調(diào)用startGame()函數(shù)開(kāi)始游戲,使用addRandomNum()函數(shù)向游戲區(qū)域隨機(jī)加入兩個(gè)方塊。首先搜索游戲區(qū)域所有空位置,然后隨機(jī)生成兩個(gè)數(shù)字2或4,并產(chǎn)生動(dòng)畫(huà)效果。

⑶ 卡片移動(dòng):2048游戲通過(guò)游戲中所有的方格朝某個(gè)方向移動(dòng),合并相同數(shù)字的方塊[5]。有四個(gè)函數(shù)負(fù)責(zé)移動(dòng),分別是上、下、左、右,這里以往左移動(dòng)為例作分析。對(duì)游戲區(qū)域所有方塊向左移動(dòng)。在以下兩種情況下合并數(shù)字:當(dāng)前位置為空,右側(cè)為非空,合并后,當(dāng)前位置卡片的數(shù)字為其右側(cè)卡片的數(shù)字,右側(cè)卡片數(shù)字清零;當(dāng)前位置為非空卡片,右側(cè)卡片數(shù)值和它相等,合并后,當(dāng)前位置卡片數(shù)字取合并后的和,右側(cè)卡片清零。只要卡片產(chǎn)生有效移動(dòng),就調(diào)用addRandomNum()隨機(jī)生成一個(gè)新卡片。

⑷ 游戲計(jì)分:卡片移動(dòng)時(shí),判斷是否有兩個(gè)相同數(shù)字進(jìn)行合并,有合并就計(jì)分,如果是最高分就保存[6]。

2.2 卡片設(shè)計(jì)

在2048游戲App界面設(shè)計(jì)完成后,主要工作就是卡片移動(dòng)和卡片設(shè)置。

⑴ 創(chuàng)建卡片

private void addCards() { //添加卡片樣式的方法

Card c;

LinearLayout line;

LinearLayout.LayoutParams lineLp;

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

line=new LinearLayout(getContext());

lineLp=new LinearLayout.LayoutParams(-1, Card.width);

addView(line, lineLp);

for (int x=0; x

c=new Card(getContext());

line.addView(c, Card.width, Card.width);

cardsMap[x][y]=c;

}

}

}

⑵ 類(lèi)Card繼承FrameLayout,作為游戲卡片。使用addScaleAnimation()函數(shù)設(shè)置卡片數(shù)字、樣式及動(dòng)畫(huà)效果。

⑶ 判斷在觸屏操作下同一方向上的卡片是否可以合并,可以合并的卡片做加法運(yùn)算。

2.3 觸控交互設(shè)計(jì)

2048手機(jī)游戲App控制卡片能夠根據(jù)觸屏操作在上、下、左、右四個(gè)方向上移動(dòng),因此,需要添加4個(gè)相應(yīng)的事件監(jiān)聽(tīng)。使用View.OnTouchListener來(lái)偵聽(tīng)觸屏事件,計(jì)算觸屏按下和抬起來(lái)時(shí)offsetX和offsetY的值,從而預(yù)測(cè)手勢(shì)移動(dòng)的方向[7]。

3 游戲架構(gòu)

3.1 主要功能類(lèi)

⑴ Open類(lèi):開(kāi)機(jī)動(dòng)畫(huà)實(shí)現(xiàn)類(lèi),主要負(fù)責(zé)開(kāi)機(jī)動(dòng)畫(huà)的生成,通過(guò)漸變實(shí)現(xiàn)動(dòng)畫(huà)效果。

⑵ IndexActivity類(lèi):主界面實(shí)現(xiàn)類(lèi),主要負(fù)責(zé)主界面的生成。

⑶ AboutActivity類(lèi):關(guān)于游戲?qū)崿F(xiàn)類(lèi),主要負(fù)責(zé)關(guān)于界面的生成。

⑷ GameHelp類(lèi):游戲幫助實(shí)現(xiàn)類(lèi),主要負(fù)責(zé)幫助界面的生成。

⑸ GameView類(lèi):游戲中最主要的類(lèi),游戲中的操控以及相應(yīng)的事件都包含在該類(lèi)當(dāng)中。

⑹ Card類(lèi):游戲卡片實(shí)現(xiàn)類(lèi),主要負(fù)責(zé)游戲卡片,卡片數(shù)字和樣式的實(shí)現(xiàn)。

3.2 主要程序結(jié)構(gòu)

2048手機(jī)游戲App主要程序結(jié)構(gòu)如圖2所示。

通過(guò)游戲的運(yùn)行過(guò)程介紹程序結(jié)構(gòu)圖中各個(gè)類(lèi)在游戲中的作用,具體如下:①點(diǎn)擊圖標(biāo)啟動(dòng)游戲后,首先看到開(kāi)機(jī)動(dòng)畫(huà)(Open.java);②開(kāi)機(jī)動(dòng)畫(huà)結(jié)束后將會(huì)出現(xiàn)主界面(IndeActivity.java);③用戶(hù)點(diǎn)擊游戲幫助時(shí),會(huì)顯示幫助界面(GameHelp.java);④用戶(hù)點(diǎn)擊關(guān)于游戲時(shí),會(huì)顯示關(guān)于界面(AboutActivity.java);⑤用戶(hù)點(diǎn)擊開(kāi)始游戲時(shí),會(huì)進(jìn)入游戲界面(GameView.java),同時(shí)會(huì)啟動(dòng)卡片類(lèi)(Card.java)負(fù)責(zé)游戲中卡片數(shù)字和樣式的實(shí)現(xiàn)。

4 游戲運(yùn)行效果與測(cè)試

4.1 歡迎界面

歡迎界面主要實(shí)現(xiàn)的是開(kāi)機(jī)動(dòng)畫(huà)以及菜單項(xiàng)的功能。開(kāi)機(jī)動(dòng)畫(huà)利用圖片漸變效果實(shí)現(xiàn)。在主界面實(shí)現(xiàn)游戲的功能選擇,主界面有四個(gè)按鈕,點(diǎn)擊相應(yīng)按鈕實(shí)現(xiàn)相應(yīng)功能。歡迎界面效果圖如圖3所示。

4.2 運(yùn)行界面

運(yùn)行界面實(shí)現(xiàn)游戲運(yùn)行、分?jǐn)?shù)界面展示的功能。運(yùn)行界面主要包含游戲區(qū)域、分?jǐn)?shù)區(qū)域、功能區(qū)域三個(gè)部分。游戲區(qū)域?qū)崿F(xiàn)游戲功能,分?jǐn)?shù)區(qū)域顯示當(dāng)前分?jǐn)?shù)和最高分?jǐn)?shù),功能區(qū)域只有一個(gè)按鍵,就是重新開(kāi)始,在游戲進(jìn)行中,可以隨時(shí)點(diǎn)擊該按鍵重新開(kāi)始游戲。

4.3 游戲測(cè)試

把開(kāi)發(fā)好的2048手機(jī)游戲App的APK安裝包下載到Android手機(jī),并安裝、運(yùn)行,實(shí)際運(yùn)行效果如圖4、圖5和圖6所示。

5 結(jié)束語(yǔ)

2048手機(jī)游戲App采用Java作為開(kāi)發(fā)語(yǔ)言、Android Studio作為開(kāi)發(fā)平臺(tái),以面向?qū)ο蟮木幊趟枷隱8]進(jìn)行設(shè)計(jì)開(kāi)發(fā)。App在Android手機(jī)上的測(cè)試運(yùn)行結(jié)果表明,2048游戲App達(dá)到了設(shè)計(jì)要求,可以滿(mǎn)足人們?cè)谛蓍e放松的同時(shí)達(dá)到鍛煉思維能力的目的。該App可以放到軟件應(yīng)用商店或市場(chǎng),向人們提供免費(fèi)下載,滿(mǎn)足人們的游戲需求。未來(lái),需要改進(jìn)的地方在于,開(kāi)發(fā)兩人對(duì)戰(zhàn)版或多人對(duì)戰(zhàn)版的2048游戲App,進(jìn)一步提高游戲的趣味性。

參考文獻(xiàn)(References):

[1] 鄧文淵.Android開(kāi)發(fā)基礎(chǔ)教程[M].人民郵電出版社,2014.

[2] 張玉清,王凱,楊歡等.Android安全綜述[J].計(jì)算機(jī)研究與發(fā)展,2014.51(7):1385-1396

[3] 徐誠(chéng)等.零點(diǎn)起飛學(xué)Android開(kāi)發(fā)[M].清華大學(xué)出版社,2013.

[4] 劉劍卓.Android手機(jī)游戲開(kāi)發(fā)從入門(mén)到精通[M].中國(guó)鐵道出版社,2012.

[5] 倪紅軍.基于Android平臺(tái)的消息推送研究與實(shí)現(xiàn)[J].實(shí)驗(yàn)室研究與探索,2014.33(5):96-100

[6] 張思陽(yáng),黃同成.基于Android的自助游APP的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2017.1:95-97

[7] 李華明.Android游戲編程之從零開(kāi)始[M].清華大學(xué)出版社,2011.

[8] 倪紅軍,張學(xué)成.基于Android的移動(dòng)學(xué)習(xí)評(píng)價(jià)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016.26(8):109-112

猜你喜歡
手機(jī)游戲卡片動(dòng)畫(huà)
擺卡片
倒過(guò)來(lái)的卡片
做個(gè)動(dòng)畫(huà)給你看
動(dòng)畫(huà)發(fā)展史
我的動(dòng)畫(huà)夢(mèng)
文苑(2019年22期)2019-12-07 05:28:56
一張卡片
讓手機(jī)游戲成為傳統(tǒng)文化的傳播新渠道
手機(jī)游戲?qū)Υ髮W(xué)生的負(fù)面影響及對(duì)策分析
卡片
我是動(dòng)畫(huà)迷
万山特区| 盱眙县| 紫云| 祥云县| 松桃| 阿克陶县| 靖远县| 碌曲县| 云浮市| 聊城市| 利辛县| 疏附县| 金坛市| 黄山市| 汨罗市| 开江县| 南和县| 宁乡县| 姚安县| 民勤县| 乐都县| 贵德县| 庄河市| 松江区| 布尔津县| 中江县| 阜阳市| 莫力| 宁远县| 襄汾县| 商南县| 桐庐县| 满城县| 河池市| 台北市| 灵丘县| 柘荣县| 玉林市| 康定县| 宁德市| 时尚|