沈旭



摘 要: 開發2048手機游戲App的目的,在于它是一款休閑益智小游戲,可以通過游戲減輕精神壓力,鍛煉思維能力。介紹了游戲App的設計開發過程,對游戲的邏輯算法、觸控交互、卡片設計、統計計分等作了詳細剖析。最后對該App做了Android手機實際測試,結果表明,游戲App達到了設計要求,可以滿足人們休閑益智的需要,同時對設計開發流程作了總結。
關鍵詞: Android; App; 2048; 游戲
中圖分類號:TP311.1 文獻標志碼:A 文章編號: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 引言
隨著信息技術的快速發展,以智能終端為平臺的應用在人們生活中占據了越來越重要的位置。物質生活條件的提高,使人們產生更多精神方面的需求,如手機應用App就成了提高精神生活需求的新平臺[1]。近年來,手機游戲成為游戲產業中最重要的一部分,涌現出了諸如憤怒的小鳥,水果忍者,flappy bird等諸多優秀的手機游戲App。一款手機游戲App能夠流行,主要依靠其操作簡單性和益智趣味性[2-3]。2048游戲App是一款休閑益智小游戲,可以調節精神、釋放壓力,鍛煉人們的思維能力。
1 游戲規則與步驟
1.1 游戲規則
2048游戲規則簡單易懂:①開始時棋盤內隨機出現兩個數字,2或4;②用戶可以選擇上下左右四個方向移動合并數字,若棋盤內的數字出現移位或合并,視為有效移動;③用戶選擇的方向上若有相同的數字則合并,每次有效移動可以同時合并,但不可以連續合并;④合并所生成的數字之和,就是有效得分;⑤用戶選擇的方向行或列前方有空格則出現移位;⑥有效移動一步,棋盤無數字的空格就隨機出現數字2或4;⑦棋盤被數字填滿,無法進行有效移動,游戲失敗;⑧棋盤上出現2048,游戲勝利。游戲App系統結構圖如圖1所示。
1.2 游戲步驟
游戲步驟如下:①點擊2048游戲App圖標將會出現開機動畫,之后進入游戲主界面;②在主界面單擊“關于游戲”菜單進入“關于”界面,介紹游戲版本、版權等基本信息;③在主界面單擊“游戲幫助”菜單進入幫助界面,介紹游戲基本規則;④在主界面單擊“開始游戲”菜單進入游戲界面;⑤用戶點擊重新開始按鈕重玩游戲,通過合并相同數字,最后達到2048的時候獲勝,如果游戲區域沒有空格,同時沒有能夠合并的相同數字則失敗;⑥用戶點擊手機的返回鍵返回游戲主界面;⑦點擊“退出游戲”,游戲結束退出。
2 游戲設計
2048手機游戲App設計需要解決三個關鍵技術:實現原理、卡片設計和觸控交互設計。
2.1 實現原理
⑴ 初始化游戲:調用函數initGameView()設置方格布局朝向和背景顏色,完成游戲初始化,游戲即將開始[4]。
⑵ 開始游戲:調用startGame()函數開始游戲,使用addRandomNum()函數向游戲區域隨機加入兩個方塊。首先搜索游戲區域所有空位置,然后隨機生成兩個數字2或4,并產生動畫效果。
⑶ 卡片移動:2048游戲通過游戲中所有的方格朝某個方向移動,合并相同數字的方塊[5]。有四個函數負責移動,分別是上、下、左、右,這里以往左移動為例作分析。對游戲區域所有方塊向左移動。在以下兩種情況下合并數字:當前位置為空,右側為非空,合并后,當前位置卡片的數字為其右側卡片的數字,右側卡片數字清零;當前位置為非空卡片,右側卡片數值和它相等,合并后,當前位置卡片數字取合并后的和,右側卡片清零。只要卡片產生有效移動,就調用addRandomNum()隨機生成一個新卡片。
⑷ 游戲計分:卡片移動時,判斷是否有兩個相同數字進行合并,有合并就計分,如果是最高分就保存[6]。
2.2 卡片設計
在2048游戲App界面設計完成后,主要工作就是卡片移動和卡片設置。
⑴ 創建卡片
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; } } } ⑵ 類Card繼承FrameLayout,作為游戲卡片。使用addScaleAnimation()函數設置卡片數字、樣式及動畫效果。 ⑶ 判斷在觸屏操作下同一方向上的卡片是否可以合并,可以合并的卡片做加法運算。 2.3 觸控交互設計 2048手機游戲App控制卡片能夠根據觸屏操作在上、下、左、右四個方向上移動,因此,需要添加4個相應的事件監聽。使用View.OnTouchListener來偵聽觸屏事件,計算觸屏按下和抬起來時offsetX和offsetY的值,從而預測手勢移動的方向[7]。 3 游戲架構 3.1 主要功能類 ⑴ Open類:開機動畫實現類,主要負責開機動畫的生成,通過漸變實現動畫效果。 ⑵ IndexActivity類:主界面實現類,主要負責主界面的生成。 ⑶ AboutActivity類:關于游戲實現類,主要負責關于界面的生成。 ⑷ GameHelp類:游戲幫助實現類,主要負責幫助界面的生成。 ⑸ GameView類:游戲中最主要的類,游戲中的操控以及相應的事件都包含在該類當中。 ⑹ Card類:游戲卡片實現類,主要負責游戲卡片,卡片數字和樣式的實現。 3.2 主要程序結構 2048手機游戲App主要程序結構如圖2所示。 通過游戲的運行過程介紹程序結構圖中各個類在游戲中的作用,具體如下:①點擊圖標啟動游戲后,首先看到開機動畫(Open.java);②開機動畫結束后將會出現主界面(IndeActivity.java);③用戶點擊游戲幫助時,會顯示幫助界面(GameHelp.java);④用戶點擊關于游戲時,會顯示關于界面(AboutActivity.java);⑤用戶點擊開始游戲時,會進入游戲界面(GameView.java),同時會啟動卡片類(Card.java)負責游戲中卡片數字和樣式的實現。 4 游戲運行效果與測試 4.1 歡迎界面 歡迎界面主要實現的是開機動畫以及菜單項的功能。開機動畫利用圖片漸變效果實現。在主界面實現游戲的功能選擇,主界面有四個按鈕,點擊相應按鈕實現相應功能。歡迎界面效果圖如圖3所示。 4.2 運行界面 運行界面實現游戲運行、分數界面展示的功能。運行界面主要包含游戲區域、分數區域、功能區域三個部分。游戲區域實現游戲功能,分數區域顯示當前分數和最高分數,功能區域只有一個按鍵,就是重新開始,在游戲進行中,可以隨時點擊該按鍵重新開始游戲。 4.3 游戲測試 把開發好的2048手機游戲App的APK安裝包下載到Android手機,并安裝、運行,實際運行效果如圖4、圖5和圖6所示。 5 結束語 2048手機游戲App采用Java作為開發語言、Android Studio作為開發平臺,以面向對象的編程思想[8]進行設計開發。App在Android手機上的測試運行結果表明,2048游戲App達到了設計要求,可以滿足人們在休閑放松的同時達到鍛煉思維能力的目的。該App可以放到軟件應用商店或市場,向人們提供免費下載,滿足人們的游戲需求。未來,需要改進的地方在于,開發兩人對戰版或多人對戰版的2048游戲App,進一步提高游戲的趣味性。 參考文獻(References): [1] 鄧文淵.Android開發基礎教程[M].人民郵電出版社,2014. [2] 張玉清,王凱,楊歡等.Android安全綜述[J].計算機研究與發展,2014.51(7):1385-1396 [3] 徐誠等.零點起飛學Android開發[M].清華大學出版社,2013. [4] 劉劍卓.Android手機游戲開發從入門到精通[M].中國鐵道出版社,2012. [5] 倪紅軍.基于Android平臺的消息推送研究與實現[J].實驗室研究與探索,2014.33(5):96-100 [6] 張思陽,黃同成.基于Android的自助游APP的設計與實現[J].電腦知識與技術,2017.1:95-97 [7] 李華明.Android游戲編程之從零開始[M].清華大學出版社,2011. [8] 倪紅軍,張學成.基于Android的移動學習評價系統的設計與實現[J].計算機技術與發展,2016.26(8):109-112