




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
[15]。成功打開后,如圖2-4所示:圖2-4模擬器界面圖
第3章系統的需求分析和概要設計3.1系統需求分析3.1.1系統功能需求分析系統主要有以下功能模塊:用戶登陸、關卡選擇、呈現游戲界面、重新開始游戲、當前分數和最高分數、游戲幫助、排行榜等。用戶登陸是游戲的初始界面,玩家首先需要輸入用戶名和密碼注冊屬于個人的專屬帳號,進入游戲主界面前需要輸入用戶名和密碼,驗證正確后方可進入游戲主界面。等級選擇,玩家單擊這個按鈕,游戲就會從主界面切換到等級選擇界面。如果玩家選擇了對應的等級,首先要判斷等級是否打開。等級沒有打開的情況下,顯示對話框,通知玩家等級沒有打開。等級已經打開的情況下,游戲進入主界面,開始等級。所謂重新開始游戲,是指在玩家不能應對現在的問題的情況下重新開始游戲。如果玩家處于不同級別,保持當前關卡并重新啟動游戲。當新手在玩游戲時不知道游戲玩法時,游戲幫助是一個提醒。游戲界面是在主界面正中生成一個4×4矩陣,并在矩陣中隨機生成兩張“2”或“4”牌。現在的分數和最高的分數表示在這個回合中玩家取得的分數和歷史最高的分數。現在的分數超過最高分數的情況下,最高分數表示現在的分數。綜上需求可做出系統功能圖,如圖3-1所示。圖3-1系統功能圖3.1.2游戲基本規則游戲開始后,通過使畫面滑動來控制卡片的移動方向。卡片在滑動時使用相同的兩張卡片,如果中間沒有不同的卡,兩張卡在滑動過程中結合,顯示為兩張卡片的合計。相同的卡片有3張的情況下,只合并滑動方向的2張卡。如果在滑動方向上有兩張相同數值的卡片與之相鄰的是一張其數值為其兩倍的卡片,則只合成兩張相同且相鄰的兩張卡片。3.2系統概要設計3.2.1系統流程的設計點擊游戲圖標進入登陸頁面。一旦玩家注冊了一個帳戶,輸入用戶名和密碼,進入主游戲界面,開始正常啟動。從主界面開始,玩家可以重新啟動游戲,顯示幫助,顯示排名,顯示關卡選擇界面。當玩家單擊重新啟動開始按鈕時,會彈出玩家可以選擇的對話框。當玩家選擇確定時將游戲繼續。當玩家選擇取消時,返回游戲界面。按鈕時會彈出等級選擇界面,當玩家點擊對應的等級時,最高分會決定等級是否打開。如果沒打開,對話框就會顯示出來,顯示“在此級別未打開”,如果打開了會顯示與等級界面相關聯的所有卡片。當您按下啟動界面上的返回按鈕時,您將退出游戲。游戲的流程圖如圖3-2所示:圖3-2(a)系統流程圖圖3-2(b)系統流程圖3.2.2系統模塊設計從總體上看,該系統分為三個模塊:“菜單設計”,“界面設計”和“算法設計”。(1)菜單設計菜單顯示在游戲主界面下方,有“重新開始”,“選擇關卡”,“排行榜”,“游戲幫助”四個模塊,如圖3-3所示:圖3-3菜單設計(2)界面設計界面設計有“登陸界面設計”,“游戲界面設計”,“關卡界面設計”,“排行榜界面設計”四個部分,如圖3-4所示:登陸界面(b)游戲界面(c)關卡選擇界面(d)排行榜界面圖3-4界面設計(3)算法設計1.當滑動方向上兩張卡片數值相等時,滑動后卡片將移動到邊緣,合成一張為合成前數值兩倍的卡片,并隨機在空白格生成一張“2”或“4”卡片,如圖3-5所示:圖3-5簡單卡片合成2.當滑動屏幕向可以碰撞的方向上有兩張卡片相同且有一張卡片是它們的總和并在同一方向時,相同一張卡片將移動到不能移動的位置,并生成一張為數字2倍的卡片,但合成卡片不會與數字2倍的卡片合并號碼,并且生成一個“2”或“4”的卡片,如圖3-6所示:圖3-6復雜卡片合成3.當界面上沒有空位并且兩兩相鄰的卡片不相同時游戲結束。如圖3-7所示:圖3-7游戲結束
第4章系統實現4.1游戲框架搭建(1)AnimLayer類:游戲動畫類。主要負責創建動畫和游戲移動動畫。(2)Card類:游戲卡片實現類。主要負責游戲卡片,卡片數字和樣式的實現。(3)Config類:游戲關卡配置類。主要負責儲存游戲關卡等級信息。(4)GameView類:游戲中最主要的類。游戲中的操控以及相應的事件都包含在該類中。(5)LoginActivity類:游戲登陸實現類。主要負責實現用戶登錄注冊功能。(6)MainActivity類:游戲主要功能實現類。主要負責實現重新開始、選擇關卡、排行榜、游戲幫助、當前分數、最高分數功能。4.2登陸界面的實現游戲的登錄界面存儲在login_main.xml中,其主要邏輯存儲在LoginActivity中。用戶信息使用了安卓4大存儲中的SharedPreferences,在鍵值對中存儲私有原始數據。數據的鍵為SP_KEY_USERINFO,并存儲json格式的用戶數據。當玩家輸入用戶名和密碼與存儲的數據相等時會讓頁面跳轉到游戲界面開始游戲,如圖4-1所示:圖4-1開始界面4.3游戲界面的實現4.3.1游戲布局的實現(1)游戲的主布局存放在activity_main.xml中。(2)在GameView類中,通過自行設計實現了一個繼承于GridLayout網格布局的布局實現。其三個構造方法都要實現初始化界面的操作,其中定義了一個二維數組用來記錄GameView初始化的16個卡片類。使用了一個安卓內部的point對象用來構建空點的數組。(3)Card類中其繼承自FrameLayout禎布局,其中通過構造方法生成了一個Label,卡片的背景為label的背景,卡片顯示的文字為label顯示設置的文字。默認的卡片數值為0。并通過卡片的數值設置卡片的背景顏色。(4)游戲的主主布局是一個4×4的網格布局,其中游戲初始化時就已經有了16張卡片,并且每張卡片的數值均為0。4.3.2游戲的初始化(1)游戲在MainActivity類中進行初始化,其中oncreate方法中分別初始了下方4個選擇按鈕和游戲主要布局,包括最高分以及分數計數的布局。布局初始化時,執行GameView中的構造方法。(2)在GameView中,游戲初始化時執行InItgameview方法,其主要調用了圖4-2中的幾個方法,其中添加卡片方法,通過在x和y方向向上分別遍歷,通過newcard對象生成卡片,并將卡片的初始值設置為0,將卡片添加到卡片的二維數組中。其中開始游戲方法,主要執行圖4-3中四個過程。主界面實現效果圖如4-4所示。圖4-2初始化主要方法圖4-3開始游戲方法步驟圖4-4主界面4.4游戲滑屏卡片移動的實現當玩家移動屏幕時,玩家的指頭滑行方向主要由initGameView方法來監控。先知道起始坐標和結束坐標,然后比較結束坐標和起始坐標之間的差值,以確定屏幕的滑動方向。在評估了玩家的滑軌之后,通過調用swipeLeft、swipeRight、swipeUp、swipeDown方法來移動卡片。下面以向左回滑動為例進行講解,首先通過兩個for循環從行到列進行遍歷,當遍歷到第1行第1個格子的時候,以第1個格子為起點,從第2個格子進行遍歷,如果其后的格子的數字大于0,在此條件下,如果第1個格子的數字小于等于0。則需要移動第2個格子。并且將第1個格子的值設置為第2個格子的值,第2個格子的值清零。此時繼續固定這個格子。并進行下次檢查。如果第1個格子與第2個格子的值相等,則設置第1個格子的值為原來的兩倍。并且設置第2個格子的值為0。并且在此處調用添加成績的方法,添加的數值為當前第1個格子的數值。后續循環以此類推。其他向上,向下向右滑動操作依次類推。其中設置了一個參數flag:merge合并,如果一旦發生了數值合并,就要隨機添加一個新的格子數,并且在此時檢查游戲是否成功或者是結束(調用check方法)。代碼如圖4-5所示,實現效果如圖4-6所示。圖4-5swipeLeft方法代碼圖4-6卡片移動4.5計分與關卡的實現4.5.1游戲計數的實現(1)在GameView內中可以調用主活動Mainactivity中的添加成績方法。(2)在MainActivity類中設置了添加成績,存儲成績和顯示成績的幾個方法。并且添加了存儲最高成績,顯示最高成績,獲得最高成績的方法。最高成績的存儲使用了安卓4大存儲中的SharedPreferences,在鍵值對中存儲私有原始數據。4.5.2游戲關卡的實現不同的游戲關卡有不同的起始卡片界面,解鎖相應的關卡等級需要達到與之要求的最高分數。其實現步驟如下:(1)通過在config中存儲數組常量,來存放游戲的等級信息。通過創建一個二維數組,按照行和列的方式,分別存儲每一個位置的數字數值。如圖4-7所示。圖4-7數組常量(2)游戲關卡等級通過創建一個buttongroup,在里面存儲所有的button,通關判斷最高分的數值開通相應的關卡。如圖4-8所示。圖4-8游戲關卡代碼關卡實現效果如圖4-9所示:圖4-9關卡功能4.6游戲排行榜的實現游戲的排行榜數據也使用了安卓4大存儲中的SharedPreferences,在鍵值對中存儲私有原始數據。數據的鍵為SP_KEY_SORT,并存儲json格式的排行榜數據。排行榜數據在每次退出游戲時,通過調用MainActivity其中的ondestroy方法。在其中進行存儲,先通過獲得游戲排行榜數據方法,獲得一個Jsonarr數組,通過創建一個jsonobject,在object中分別存儲當前游戲者的用戶名,成績。并將其存放到原來的數組中,轉化為json格式的字符串,按照數據的鍵進行存儲。每次獲取排行榜數據,點擊排行榜時獲取新的排行榜數據,取得原來的節省格式字符串,并且將其轉化為節省object格式,通過創建一個map數組獲取所有的排行榜數據。排行榜的界面顯示,布局存儲在listview中。通過創建一個listview的數據適配器,向其中填放數據,并彈窗顯示最終的排行榜數據。實現效果如圖4-10所示。圖4-10游戲排行榜
第5章系統測試5.1測試目的和意義系統測試用于檢測錯誤的程序執行。一個成功的測試是檢測出沒有搜尋到的錯誤。測試的目的是用最小的精力發現各種潛在的錯誤和缺陷。系統測試是保證系統質量和可靠性以及系統分析、設計和開發的最終檢查的重要環節。根據測試的概念和目的,提出了測試系統應遵循的基本原則。測試需要盡快實行并繼續進行。一旦開發完成,應用系統就不會被測試。由于原始問題的復雜性、發展階段的多樣性以及參與者之間的協調性,所有發展階段都可能出現錯誤。因此,為了盡快糾正錯誤,需要在整個開發階段進行測試。5.2測試方法此次測試方法采用安卓模擬器測試,在Androidstudio中創建名為Nexus5X、Android9.0系統、x86CPU的安卓模擬器,并運行2048游戲的APK。運行成功后對系統主要模塊進行測試。測試結果如下:1.用戶的登陸和注冊:測試要求:在登錄注冊界面中輸入用戶名和密碼,并且要求密碼以密文形式顯示,注冊后并登陸能進至游戲主界面。測試結果如圖5-1所示。圖5-1登錄注冊測試2.劃屏卡片移動:測試要求:分別向上下左右四個方向滑動屏幕,每次劃屏都能生成新卡片,合成兩張數字相同卡片時能生成一個兩倍數字卡片并在分數框中加分。測試結果如圖5-2所示。圖5-2劃屏卡片移動測試3.游戲關卡:測試要求:點擊選擇關卡按鈕出現關卡列表,通過判斷最高分開啟相應的關卡,并能加載相應關卡的卡片。測試結果如圖5-3所示。圖5-3游戲關卡測試4.排行榜:測試要求:點擊排行榜顯示每個用戶結束游戲時的分數并做排序,最高分為第一名分數。測試結果如圖5-4所示。圖5-4排行榜測試5.3測試用例通過以下的測試用例進行對游戲其他各個功能模塊進行測試并加以修改。登錄模塊測試用例如表5-1所示:表5-1登錄測試用例測試編號測試輸入期望結果實際結果001測試用戶名輸入“abc”,密碼輸入“123”,點擊注冊按鈕彈出提示框顯示“注冊成功,請登陸!”用戶名輸入“abc”,密碼輸入“123”,點擊注冊按鈕后,彈出提示框顯示“注冊成功,請登陸!”。002測試用戶名輸入“abc”,密碼輸入“123”,點擊登陸按鈕跳轉到游戲主界面并彈出提示框顯示“歡迎您,abc!”用戶名輸入“abc”,密碼輸入“123”,點擊登陸按鈕后跳轉到游戲主界面并彈出提示框顯示“歡迎您,abc!”。主界面功能模塊測試用例如表5-2所示:表5-2界面功能測試用例測試編號測試輸入期望結果實際結果001測試點擊重新開始按鈕游戲重新開始當前游戲關卡點擊重新開始游戲按鈕后游戲重新開始當前游戲關卡。002測試點擊游戲幫助按鈕彈出信息框顯示游戲規則與操作說明點擊游戲幫助按鈕后彈出信息框顯示游戲規則與操作說明。003測試點擊排行榜按鈕彈出信息框顯示等級、用戶名、分數,并按分數排序點擊排行榜按鈕后彈出文本信息框顯示等級、用戶名、分數,并按分數排序。004測試點擊選擇關卡按鈕彈出列表框有多個關卡可供選擇并按難度排序,只有最高分達到要求方可解鎖相應關卡點擊選擇關卡按鈕后彈出列表框有多個關卡可供選擇并按難度排序,只有最高分達到要求方可解鎖相應關卡。檢測游戲結束/通過測試用例如表5-3所示:表5-3游戲結束測試用例測試編號測試輸入期望結果實際結果001測試當格子全滿且相鄰的格子沒有相同數字彈出提示框提示游戲結束并可選擇重新開始游戲當格子全滿且相鄰的格子沒有相同數字時彈出提示框提示游戲結束并可選擇重新開始游戲。002測試在關卡模式下任意一個格子數值達到10倍開局最大數值彈出提示框提示“你贏了”并可選擇重新開始游戲在關卡模式下任意一個格子數值達到10倍開局最大數值時彈出提示框提示“你贏了”并可選擇重新開始游戲。
第6章總結與展望6.1論文總結本文介紹了Android平臺上開發2048小游戲的設計與實現。先是對安卓開發平臺優點與特點進行分析,然后對整個系統框架進行精密設計和對其功能逐步實現,最后在安卓模擬器上成功測試整個系統。本次畢業設計至此接近尾聲,通過此次畢業設計令我收獲良多,初期起步階段對安卓開發一籌莫展,令我十分困惑,通過花費大量的時間精力進行閱讀文獻資料,對安卓開發語言有疑點的地方積極請教老師與同學,并在他們的幫助下搭建了好開發平臺并設計游戲框架,對此我懂得了如何設計好一個良好的界面,也明白了如何設計好一個精簡的游戲算法,在實現游戲功能的過程中遇到很多意料之外的困難,對此唯有不斷的思考、反復的測試、與他人交流找出自己的錯誤并加以改正,明白了實事求是的重要性和紙上得來終覺淺得知此事要躬行的大道理,通過畢業設計后,我對安卓開發有了更加深入的了解,這對我今后從事計算機開發行業奠定了良好的基礎。6.2展望該系統的開發為用戶提供了一個優秀的娛樂交流平臺,但仍有許多領域需要進一步改進和研究。(1)新模式選擇這個游戲只有數字。當玩家經常面對數字時,他們會感到疲勞。由于顯示的卡片可以填充中文字符、圖像等,玩家的選擇范圍更廣。當他們感到疲勞的時候,有很多方法可以改變他們的情緒。(2)難度游戲設計這個游戲里玩家可以有很多時間來思考。在以后的階段,可以設想一個時間有限的說明。當倒計時結束玩家將不能移動,此時游戲結束,增加游戲難度。
參考文獻黃彬華.Android手機/平板電腦程序開發教練[M].北京:水利水電出版社,2012:58-65.李嘉誠.Android應用程序開發研究與應用[J].軟件導刊,2014,13(11):65-67.崔浩然.基于Android平臺的手機游戲的設計與實現[D].西安科技大學,2011.王亮.基于Android平臺冒險類手機游戲的設計與實現[D].北京工業大學,2013.孫宏明.Android手機程序設計入門、應用到精通[M].北京:中國水
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖南靖州苗族侗族自治縣自來水公司招聘筆試參考題庫含答案解析
- 2025年寧夏德潤農業發展投資集團有限公司招聘筆試參考題庫含答案解析
- 2025年安徽明光躍龍投資控股集團有限公司招聘筆試參考題庫含答案解析
- 2025年一建《機電工程管理與實務》施工組織設備知識點題庫
- 2025保密協議合同書范文
- 2025混凝土澆筑工程合同(最終版)
- 2025年哈密貨運考試題目
- 監獄警示案例教育
- 寒假日記200字左右全集
- 含羞草的描述
- 墻紙墻布施工工藝標準化流程
- 水泥混凝土路面翻修施工方案詳解
- 《射雕英雄傳》好書讀后感
- DB51T 2049-2015 建筑消防設施檢測規范
- 【MOOC】風景背后的地貌學-華中師范大學 中國大學慕課MOOC答案
- 護理感動案例
- 2024版《安全生產法》考試題庫附答案(共90題)
- 企業天然氣轉讓協議書范文范本
- 帶式運輸機傳動裝置的設計
- 玩具照相機細分市場深度研究報告
- 人工智能算法與實踐-第16章 LSTM神經網絡
評論
0/150
提交評論