基于Android的推箱子游戲設(shè)計論文_第1頁
基于Android的推箱子游戲設(shè)計論文_第2頁
基于Android的推箱子游戲設(shè)計論文_第3頁
基于Android的推箱子游戲設(shè)計論文_第4頁
基于Android的推箱子游戲設(shè)計論文_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、. . . . 畢業(yè)設(shè)計(論文)說明書題目: 基于Android的推箱子游戲設(shè)計摘 要推箱子游戲是一款古老的游戲,其設(shè)計目的是訓(xùn)練人的邏輯思維能力。隨著計算機游戲的發(fā)展,很多編程愛好者基于該游戲的思想開發(fā)出了各種版本、各種類型的推箱子游戲,這其中也包括很多手機版本的實現(xiàn)。隨著Android手機的迅猛發(fā)展,Android應(yīng)用程序產(chǎn)生的手機增值服務(wù)逐漸體現(xiàn)出其影響力,對豐富人們的生活容、提供快捷的資訊起著不可忽視的作用。本論文著眼于Android平臺的應(yīng)用,開發(fā)一款可用的手機游戲程序推箱子。 本文首先介紹基于Android平臺應(yīng)用軟件開發(fā)的背景,闡述了Android系統(tǒng)的現(xiàn)狀與發(fā)展情況;接著介紹A

2、ndroid平臺的搭建;然后通過一個較完整的軟件開發(fā)周期,采用Java語言與Eclipse開發(fā)工具,從需求分析到游戲設(shè)計、實現(xiàn)、調(diào)試,最終實現(xiàn)了推箱子游戲。并經(jīng)過嚴(yán)格的測試,可以在模擬器上正常使用。關(guān)鍵詞:Android;Java;推箱子游戲ABSTRACTPush Box Game is one of the ancient games,the design objective of the game is to train peoples logical thinking ability.Along with the development of computer games, a lot

3、 of programming enthusiasts based on the idea of the game developed a variety of versions,all types of Push Box Game,which also include many mobile phone versions realization. With the implementation of Android technology on mobile equipment, increment of capital on communication service exhibits it

4、s force on peoples everyday life, providing them ever fast information just in hand. This dissertation focuses on implementation of Android and has developed a game suite run on mobile phonesPush Box Game.At first, This paper will introduce background of application development which base on Android

5、 platform, and describe the status and development of Android system; then introduce the way how to set up the environment of Android, and then via a more complete software development cycle, using the language of Java and the eclipse development tools,from demand analysis to the game design, implem

6、entation, commissioning, eventually achieve a Push Box Game. The game has been tested rigorously, so it can be used safely.Keywords:Android;Java;Push Box Game9 / 37目 錄第一章 緒論11.1 課題研究背景11.2 課題來源與意義11.3 國外發(fā)展現(xiàn)狀11.4 本文研究主要容21.5 本文章節(jié)安排2第二章 Android平臺搭建32.1 工具介紹32.1.1 Android簡介32.1.2 Java簡介42.2 開發(fā)環(huán)境52.3 開發(fā)

7、環(huán)境變量配置52.3.1 JDK配置52.3.2 SDK配置72.3.3 Eclipse配置82.4 應(yīng)用環(huán)境8第三章 游戲設(shè)計93.1 游戲需求分析93.2 游戲設(shè)計93.2.1 系統(tǒng)設(shè)計思想93.2.2 游戲總體設(shè)計93.2.3 系統(tǒng)功能模塊設(shè)計103.2.4 游戲的類框架設(shè)計103.2.5 算法的設(shè)計10第四章 游戲的實現(xiàn)124.1 歡迎界面的實現(xiàn)124.2 菜單界面的實現(xiàn)134.2.1 開始游戲134.2.2 聲音控制144.2.3 游戲說明144.2.4 退出游戲154.3 游戲界面的實現(xiàn)154.3.1 地圖類的實現(xiàn)164.3.2 角色類的實現(xiàn)174.3.3 鍵盤監(jiān)聽線程的實現(xiàn)184

8、.3.4 角色移動線程的實現(xiàn)18第五章 軟件測試195.1 測試方案與其執(zhí)行195.2 測試步驟195.3 本章小結(jié)20第六章 總結(jié)21參考文獻22外文資料 中文譯文 致第一章 緒論1.1 課題研究背景在我們的生活中有許多的游戲,但是游戲不同,它也會給玩家?guī)聿煌母惺芎蜕罾砟?。游戲是我們?nèi)粘I畹囊粋€必不可少的娛樂項目,也帶動了游戲相關(guān)產(chǎn)業(yè)市場的發(fā)展。游戲平臺經(jīng)過從游戲機到電視游戲,然后又到pc游戲,手機游戲,中間經(jīng)歷了很多的技術(shù)更新和變革。但隨著新技術(shù)的發(fā)展和我們生活水平的提高,手機開始逐漸普與,因為手機是非常小巧便捷,所以它成為我們?nèi)粘I钪斜貍渫ㄓ嵐ぞ??;谑謾C平臺的游戲也就擁有了巨

9、大的市場空間,隨著3G的開通和應(yīng)用,手機游戲必然會迎來新的一輪游戲熱潮1!1.2 課題來源與意義推箱子游戲是一款古老的游戲,其設(shè)計目的是訓(xùn)練人的邏輯思維能力。游戲場景一般是設(shè)定在空間狹小的倉庫中,要求把箱子擺放到指定位置,稍不小心就會出現(xiàn)箱子無法移動或者通道被堵住的情況,所以需要巧妙的利用有限的空間和通道,合理安排移動的次序和位置,才能順利的完成任務(wù)。隨著計算機游戲的發(fā)展,很多編程愛好者基于該游戲的思想開發(fā)出了各種版本、各種類型的推箱子游戲。這其中也包括很多手機版本的實現(xiàn),隨著Android手機終端的逐漸熱銷,Android也引起眾多手機應(yīng)用程序開發(fā)商的關(guān)注,由于Android基于Linux核

10、且具有開源、免費的特性,它迅速得到廣大愛好者以與許多廠商的支持,基于Android所開發(fā)的手機游戲擁有巨大的潛力已成為行業(yè)共識。本文主要研究在Android手機上開發(fā)一款推箱子游戲2。1.3 國外發(fā)展現(xiàn)狀A(yù)ndroid是由Google為首的OHA(Open Handset Alliance)推出的一款開放的嵌入式操作系統(tǒng)平臺。從2008年推出到現(xiàn)在Android正以前所未有的速度聚集著來自世界各地的開發(fā)者,越來越多的創(chuàng)意被應(yīng)用到Android應(yīng)用程序的開發(fā)中,大有席卷整個手機產(chǎn)業(yè)的趨勢。Android系統(tǒng),是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng)名稱,該平

11、臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。Android 的核心系統(tǒng)服務(wù)依賴于 Linux核,如安全性,存管理,進程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型。由于Android帶有相當(dāng)濃郁的Linux血統(tǒng)這也就意味著他擁有開源Linux的眾多優(yōu)點:安全、運算速度快、易于開發(fā)等等3。正因為Android具有上述的優(yōu)點,所以它在國具有相當(dāng)強勁的競爭優(yōu)勢。青年網(wǎng)絡(luò)的主要負(fù)責(zé)人長華先生說到:Android作為一款十分優(yōu)秀的移動開發(fā)平臺十分適合國的開發(fā)環(huán)境。尤其是中小企業(yè)開發(fā)團隊低成本以與源代碼的分享可以為企業(yè)節(jié)省大量資金,這對于中小企業(yè)來說無疑是最大的誘惑。同

12、時一個資深的Android開發(fā)愛好者曾說過:如果你是個人開發(fā)愛好者,那么Android就是Google為你量身打造的,開源才是王道,Android才是未來的主宰4。伴隨著Google Android操作系統(tǒng)的盛行,國外的開發(fā)團隊也逐漸的壯大起來了,基于Android SDK的系統(tǒng)開發(fā),基于Android應(yīng)用的開發(fā)等已逐漸倍受大家關(guān)注,而手機游戲開發(fā)歷來是移動開發(fā)中分量最重的部分,面對如此火爆的Android市場自然也不甘示弱,由于Android的應(yīng)用層開發(fā)是基于Java的開發(fā),所以必有其可以快速移植J2ME開發(fā)的游戲的優(yōu)勢,但是移植的游戲必定也不能發(fā)揮Android操作系統(tǒng)獨特的特性。所以目前

13、基于Android游戲開發(fā)的市場還是不夠成熟的,面對這種情況,在了解Android SDK基礎(chǔ)上,本課題開發(fā)的就是一款完全適應(yīng)于Android操作系統(tǒng)的推箱子益智游戲。1.4 本文研究主要容本游戲分三個模塊設(shè)計與實現(xiàn):歡迎動畫界面的設(shè)計與實現(xiàn),菜單界面的設(shè)計與實現(xiàn),游戲界面的設(shè)計與實現(xiàn)。游戲運行后首先進入歡迎動畫界面,動畫結(jié)束后,進入菜單界面,在菜單界面上有四種菜單供用戶選擇。游戲的過程中需要在適當(dāng)?shù)牡胤教砑由弦粜?,并且可以對音效進行開與關(guān)的設(shè)置。還需要為游戲添加說明界面,簡單介紹游戲的基本功能與玩法。游戲需要設(shè)計適當(dāng)?shù)碾y度,使玩家能夠經(jīng)過努力完成游戲。1.5 本文章節(jié)安排 第一章是緒論,闡述

14、了本論文的選題背景、來源和意義,以與國外發(fā)展現(xiàn)狀,并對本文研究的主要容進行簡述。 第二章介紹Android平臺的搭建。第三章介紹開發(fā)此項目所做的需求分析和游戲設(shè)計。第四章介紹游戲?qū)崿F(xiàn)的功能。第五章介紹游戲的測試。第六章對本次畢業(yè)設(shè)計的總結(jié)。第二章 Android平臺搭建本章主要介紹項目需要的開發(fā)工具,與如何構(gòu)建Android開發(fā)環(huán)境,包括JDK、Android SDK、Eclipse的配置。2.1 工具介紹2.1.1 Android簡介Android是基于Linux核的操作系統(tǒng),Android系統(tǒng)具有開放性、應(yīng)用程序無界限、應(yīng)用程序是在平等的條件創(chuàng)建的、應(yīng)用程序可以輕松地嵌入網(wǎng)絡(luò)和應(yīng)用程序可以

15、并行運行等特點。Android的系統(tǒng)架構(gòu)共分為4層,由高到低分別是應(yīng)用層、應(yīng)用框架層、系統(tǒng)運行庫層和linux核層。Android應(yīng)用程序是由四個模塊構(gòu)造:Activity,Intent,Content Provider,Service5。當(dāng)然也不是每個Android應(yīng)用程序都必須由這四部分組成,可以根據(jù)開發(fā)者的需求進行組合。但任何一個應(yīng)用程序模塊都必須在AndroidMainfest.xml文件中聲明使用到的這些模塊。Activity是最基本的模塊。我們稱之為“活動”。簡單理解,Activity代表一個用戶所能看到的屏幕,主要用于處理應(yīng)用程序的整體性工作,例如,監(jiān)聽系統(tǒng)事件(按鍵事件、觸摸屏

16、事件等),為用戶顯示指定的View,啟動其他Activity等。所有應(yīng)用的Activity都繼承于Android.app.Activity類,該類是Android提供的基層類,其他的Activity繼承該父類后,通過父類的方法來實現(xiàn)各種功能,這種設(shè)計在其他領(lǐng)域也較為常見。Android用Intent這個特殊類實現(xiàn)在Activity與Activity之間的切換。Intent類用于描述應(yīng)用的功能。在Intent的描述結(jié)構(gòu)中,有兩個最重要的部分:動作和動作對應(yīng)的數(shù)據(jù)。典型的動作類型有:MAIN、VIEW、PICK、EDIT等,而動作對應(yīng)的數(shù)據(jù)則以URI的形式表示6。數(shù)據(jù)是應(yīng)用的核心。在Android

17、中,默認(rèn)使用SQLite作為系統(tǒng)數(shù)據(jù)庫。但是在Android中,使用方法有點小小的不一樣。在Android中,每一個應(yīng)用都運行在各自的進程中,當(dāng)一個應(yīng)用需要訪問其他應(yīng)用的數(shù)據(jù)時,也就是數(shù)據(jù)需要在不同的虛擬機之間傳遞,這樣的情況操作起來可能有些困難(正常情況下,你不能讀取其他應(yīng)用的db文件),ContentProvider正是用來解決在不同的應(yīng)用包之間共享數(shù)據(jù)的工具7。Service即“服務(wù)”的意思,既然是服務(wù),那么Service將是一個生命周期長而且沒有用戶界面的程序。如一個正在從播放列表中播放歌曲的媒體播放器,在這個媒體播放器應(yīng)用中,應(yīng)該會有多個activity,讓使用者可以選擇歌曲并播放歌

18、曲。然而,音樂重放這個功能并沒有對應(yīng)的activity,因為使用者會認(rèn)為在導(dǎo)航到其他屏幕時音樂應(yīng)該還在播放。在這個例子中,媒體播放器這個activity會使用Context.startService()來啟動一個service,從而可以在后臺保持音樂的播放。同時,系統(tǒng)也將保持這個service一直執(zhí)行,直到這個service運行結(jié)束。另外,我們還可以通過使用Context.bindService()方法連接到一個service上(如果這個service當(dāng)前還沒有處于啟動狀態(tài),則將啟動它)。當(dāng)連接到一個service之后,還可用service提供的接口與它進行通訊。以媒體播放器為例,我們還可以執(zhí)

19、行暫停、重播等操作8。2.1.2 Java簡介Java是一種簡單的、面向?qū)ο蟮?、分布式的、安全的、可移植的、性能?yōu)異的多線程語言。它以其強安全性、平臺無關(guān)性、硬件結(jié)構(gòu)無關(guān)性、語言簡潔、面向?qū)ο蟮奶攸c,在網(wǎng)絡(luò)編程語言中占據(jù)了無可比擬的優(yōu)勢,成為實現(xiàn)電子商務(wù)系統(tǒng)的首選語言9。Java具有如下特點:l 簡單性Java語言是一種面向?qū)ο蟮恼Z言,它通過提供最基本的方法來完成指定的任務(wù),開發(fā)者只需知道一些概念就能夠編出一些應(yīng)用程序。Java程序相對較小,其代碼能夠在小機器,例如手機上運行,這應(yīng)該是大家經(jīng)??梢钥吹降摹 面向?qū)ο笳Z言Java的設(shè)計集中于對象與其接口,它提供了簡單的類機制以與動態(tài)的接口模型。

20、對象中封裝了它的狀態(tài)變量和相應(yīng)的方法,實現(xiàn)了模塊化和信息的隱藏;而類則是提供了對象的原型,并且通過繼承的機制,子類可以使用父類所提供的方法,以實現(xiàn)代碼的復(fù)用。l 健壯性Java語言被病毒感染和破壞得最少。大部分病毒程序常用的方法就是通過巧妙地運用地址變量如指針來獲取計算機的資源,而Java正好放棄了難學(xué)和危險的指針功能,從而使Java更安全。l 多線程設(shè)計Java的目標(biāo)之一,就是為了滿足人們對創(chuàng)建交互式網(wǎng)上程序的需要。多線程就是為實現(xiàn)這個目標(biāo)而設(shè)計出來的,它使用Java編寫出來的應(yīng)用程序可以同時執(zhí)行多個任務(wù)。多線程機制使應(yīng)用程序能夠并行執(zhí)行,而且同步機制保證了對共享數(shù)據(jù)的正確操作。l 自動存管

21、理可以說自動存管理是Java健壯性的體現(xiàn),存管理是很多種應(yīng)用程序的關(guān)鍵因素。在網(wǎng)絡(luò)上的其他地方讀取大量的數(shù)據(jù),之后把該數(shù)據(jù)寫入硬盤上的數(shù)據(jù)庫,一般的設(shè)計就是把數(shù)據(jù)讀入存中的某種集合,對這些數(shù)據(jù)執(zhí)行某些操作,之后把數(shù)據(jù)寫入數(shù)據(jù)庫。在數(shù)據(jù)寫入數(shù)據(jù)庫后,在下一批處理之前,臨時存儲數(shù)據(jù)的集合必須清空舊數(shù)據(jù),或者被刪除后再建。這種操作可能執(zhí)行很多次,在像C+這些不提供自動垃圾搜集的語言中,手工清空或刪除集合數(shù)據(jù)結(jié)構(gòu)邏輯上的一點點缺陷就可能導(dǎo)致大量的存被錯誤地收回或丟失。Java的自動存管理正好解決這一點,它使程序員不用再為存管理寫大量的代碼10。2.2 開發(fā)環(huán)境JDK1.6Eclipse3.5Andro

22、idSDK10.0Eclipse插件ADT10.02.3 開發(fā)環(huán)境變量配置2.3.1 JDK配置右鍵點擊計算機-屬性-高級系統(tǒng)設(shè)置,點擊下面的環(huán)境變量,在下面的“系統(tǒng)變量”處選擇新建在變量名處輸入JAVA_HOME,并將JDK所在地址填入變量值中,確定即可,如圖2-1所示。圖2-1 JDK配置1確定后就會返回環(huán)境變量界面,再新建一個系統(tǒng)變量名為classpath,變量值為%JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar,確定即可,如圖2-2所示。圖2-2 JDK配置2確定后仍會返回環(huán)境變量界面,然后再找到Path的變量,雙擊或者點擊編輯,在變量名

23、最前面加上%JAVA_HOME%/bin,確定即可,如圖2-3所示。 圖2-3 JDK配置3然后開始運行cmd,輸入java或者javac看看有沒有效果,如果出現(xiàn)一大堆其它的東西,那就好了,如果出現(xiàn)類似xxx不是部或者外部命令之類的,那就說明你的設(shè)置有問題,看看哪里出現(xiàn)問題然后加以改正。2.3.2 SDK配置新建一個系統(tǒng)變量Android,并將SDK文件夾中的platform-tools和tools的地址填入變量值中,以分號來隔開,確定即可,如圖2-4所示。圖2-4 SDK配置1然后找到Path,在Path最后加上;%Android%,如圖2-5所示。 圖2-5 SDK配置2然后測試環(huán)境變量是

24、否配置成功,在cmd中輸入adb出現(xiàn)一堆東西,說明環(huán)境變量配置成功。2.3.3 Eclipse配置首先需要添加Eclipse插件ADT,在打開Eclipse后,點擊菜單欄的HelpInstall New Software.然后點擊Add會出來一個Add Site的窗口,這里Name輸入ADT,Location中輸入ADT在電腦中的地址,然后就等待連接了,連接上將Developer Tools全都選中accept,finish就可以了,完成后會提示重啟Eclipse來加載插件,重啟,就可以用了。 還需要將Android SDK插入到Eclipse中,打開Eclipse后,點擊菜單欄的Window

25、Preferences然后點擊Android,在SDK Location輸入SDK存放的位置,點擊Apply則會顯示現(xiàn)有的Android的模擬器版本,如圖2-6所示。圖2-6 Eclipse配置2.4 應(yīng)用環(huán)境基于Android的推箱子游戲適用于Android2.1與以上版本。第三章 游戲設(shè)計3.1 游戲需求分析玩家是通過對小人的移動操作來控制推動箱子的,并且玩家需要避過障礙物以與死角,才能將其推放到指定位置從而達到過關(guān)的目的。如果玩家將箱子推入死角導(dǎo)致箱子無法移動或不能移動到指定位置則闖關(guān)失敗,可以通過退出操作進入菜單界面來重新挑戰(zhàn)游戲。游戲功能需求如下所示:游戲界面需求:簡潔美觀的用戶界面

26、,可以帶給用戶自然清晰的畫面。游戲情節(jié)需求:本游戲為輕量級的益智游戲,因此不存在很復(fù)雜的情節(jié)。這方面主要要做的工作是設(shè)計游戲各關(guān)倉庫的形狀、大小、可通過區(qū)域,以與各關(guān)中箱子的初始位置與目的地,移動中的箱子與終點上的箱子要所有區(qū)別,因此需要兩不同的圖片以示區(qū)別。鍵盤處理事件:控制小人與箱子的移動,通過鍵盤方向鍵(上、下、左、右鍵)對小人進行上、下、左、右的移動,并且能夠推動箱子。顯示需求:當(dāng)所有箱子都到達指定位置后即可過關(guān),若進入死角則無法通過過關(guān)卡,需要進行退出操作從菜單界面來重新挑戰(zhàn)游戲。3.2 游戲設(shè)計3.2.1 系統(tǒng)設(shè)計思想本次設(shè)計主要是設(shè)計一個能夠在Android手機上運行的推箱子游戲

27、。根據(jù)一般玩手機游戲的流程,玩家一般是先進入一個歡迎動畫界面,等待動畫結(jié)束或者直接點擊畫面后進入游戲的菜單界面,在菜單界面,玩家可以進行開始游戲、聲音開關(guān)、游戲說明、退出游戲操作,從菜單界面點擊開始游戲進入游戲界面開始游戲,在游戲界面里,玩家還可以退到菜單界面,本游戲軟件也將遵循該流程。3.2.2 游戲總體設(shè)計游戲界面游戲開始界面菜單界面歡迎動畫界面退出退出游戲游戲說明聲音控制開始游戲圖3-1 游戲總體設(shè)計3.2.3 系統(tǒng)功能模塊設(shè)計本程序包括5個模塊,分別是初始化模塊、畫圖模塊、移動箱子模塊、移動小人模塊和音樂模塊,各個模塊的功能描述如下:l 初始化模塊。該模塊包括屏幕初始化和游戲第一關(guān)的初

28、始化。屏幕初始化用于顯示歡迎動畫,游戲第一關(guān)的初始化是構(gòu)建每一關(guān)的關(guān)卡。l 畫圖模塊。該模塊主要是被其他模塊調(diào)用,用于畫墻、在空地畫箱子、在目的地畫箱子、畫小人和畫目的地。l 移動箱子模塊。該模塊用于移動箱子,包括目的地之間、空地之間和目的地與空地之間的箱子移動。l 移動小人模塊。該模塊用于控制小人的移動,從而推動箱子到達目的地。l 音樂模塊。該模塊為游戲提供背景音樂、小人推箱子的聲音和游戲勝利的聲音。3.2.4 游戲的類框架設(shè)計表3-1 游戲的類框架公共類歡迎界面相關(guān)類菜單界面相關(guān)類游戲界面相關(guān)類PushBoxActivityWelcomeViewMenuViewGameViewMySpri

29、teWelcomeViewGoThreadMenuViewGoThreadMapListBoxThreadKeyThreadWelcomeViewDrawThreadMenuViewDrawThreadSpriteThreadSpriteMoveThreadGameViewDrawThread3.2.5 算法的設(shè)計該游戲沒有涉與到復(fù)雜的算法設(shè)計,關(guān)鍵在于對地圖矩陣的操作。游戲中用一個MapList類操作地圖,其中有兩個三維數(shù)組記錄游戲地圖信息,一個三維數(shù)組表示第一層地圖即地板層,另一個三維數(shù)組表示第二層地圖即建筑層,三維矩陣便于管理,如果要加入新關(guān)卡,只需要在三維矩陣中加入二維矩陣就可以了11

30、。游戲過程中,最為主要的地方在于對地圖矩陣,以與小人狀態(tài)信息(包括位置、行走狀態(tài)等)的維護,小人每行走一步,就更新一次地圖信息和小人狀態(tài)信息。另外一個比較重要的地方是游戲狀態(tài)的保存方面12。為保存小人信息,特別開設(shè)了一個MySprite類,該類主要作用就是保存玩家每一步的游戲狀態(tài),便于撤銷。邏輯判斷過程中,需要對地圖進行維護,主要是通過小人的移動位置進行更新的。l 小人每次移動時,四周的物體如下圖:小人地面移動到合適位置的箱子未在合適位置的箱子子墻壁箱子應(yīng)擺放到的位置圖3-2 主角四周物體l 當(dāng)小人是在移動箱子時,箱子四周有以下幾種物體:箱子箱子應(yīng)該擺放到的位置箱子、墻壁地面1、已擺放到合適位

31、置的箱子2、未擺放到合適位置的箱子圖3-3 箱子四周物體第四章 游戲的實現(xiàn)4.1 歡迎界面的實現(xiàn) 當(dāng)玩家運行游戲時,首先看到歡迎界面,歡迎界面是整個游戲的門面。本游戲的歡迎動畫首先是木門打開如圖4-1,接著是鐵門打開如圖4-2,最后是墻打開如圖4-3,所有門打開后就會顯示一個有山有水的圖片如圖4-4。歡迎動畫界面是通過改變動畫線程中圖片的變量值來改變圖片的位置。 圖4-1 木門 圖4-2 鐵門 圖4-3 墻 圖4-4 山水圖4.2 菜單界面的實現(xiàn)玩家在歡迎動畫界面需等待30秒方能進入菜單界面,也可直接點擊屏幕進入菜單界面。菜單界面是由滾動的背景圖片、不動的背景圖片,和開始游戲、聲音開、聲音關(guān)、

32、游戲說明、退出游戲圖片組成,如圖4-5所示。圖4-5 菜單界面4.2.1 開始游戲當(dāng)玩家點擊開始游戲圖片即可進入游戲界面開始游戲,如圖4-6所示。圖4-6 開始游戲4.2.2 聲音控制玩家進入菜單界面時背景聲音是開即顯示的是聲音開圖片,菜單界面的背景音樂會滾動播放,如果玩家想要關(guān)閉聲音,只需點擊聲音開圖片就會關(guān)閉聲音同時顯示聲音關(guān)圖片,如圖4-7所示。聲音狀態(tài)圖片是根據(jù)PushBoxActivity中的聲音狀態(tài)值進行繪制。圖4-7 聲音控制4.2.3 游戲說明當(dāng)玩家點擊游戲說明按鈕時玩家會進入游戲說明界面,如圖4-8所示,游戲說明界面是由一說明圖片組成,背景設(shè)置為白色,玩家如果想要離開此界面只

33、需點擊屏幕即可回到菜單界面。圖4-8 游戲說明4.2.4 退出游戲當(dāng)玩家點擊退出圖片時,會直接離開游戲到模擬器的主界面,如圖4-9所示。圖4-9 退出游戲4.3 游戲界面的實現(xiàn)游戲界面實現(xiàn)包括地圖類的實現(xiàn),角色類的實現(xiàn),鍵盤監(jiān)聽線程的實現(xiàn),角色移動線程的實現(xiàn)。當(dāng)玩家將箱子都推到指定的位置后本關(guān)游戲勝利,出現(xiàn)恭喜過關(guān)的圖片,點擊圖片進入下一關(guān)卡,如圖4-10所示。圖4-10 勝利進行下一關(guān)4.3.1 地圖類的實現(xiàn)該類中包含了兩個三維數(shù)組,一個三維數(shù)組表示第一層地圖即地板層,另一個三維數(shù)組表示第二層地圖即建筑層。三維數(shù)組中存儲著每個關(guān)卡的地圖,三維矩陣便于管理,如果要加入新關(guān)卡,只需要在三維矩陣中

34、加入一個二維矩陣就可以了。本游戲設(shè)計了兩個關(guān)卡。主要代碼是:public static intmap1 = /第一層地圖,即地板層-1,-1,-1,1, 0, 1, 0, 1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1,1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1,1, 0, 1, 0, 1, 0, 1, 0, 1, 0,

35、1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0, 1,1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 2, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,-1,-1,-1,1,

36、 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,-1,-1,-1,-1,-1,-1,1, 0, 1, 0, 1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1, 0, 1,1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 2, 3, 0, 1, 0, 1, 2, 1, 0, 1, 0, 1,1, 0, 1, 2, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0,0, 1, 0, 1, 0,

37、1, 0, 1, 0, 1, 0, 1, 0, 1,1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,1, 0, 1, 0, 1, 0, 1, 2, 1, 0, 1, 0, 1, 0,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,-1,-1,-1,1, 0, 1, 0, 1, 0, 1, 0, 1, 0

38、, 1,-1,-1,-1;public static intmap2 = /第二層地圖-1,-1,-1,2, 2, 2, 2, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2,2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2,2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2,2, 0, 0, 0, 1, 0, 2, 0, 0, 2, 0, 0, 0, 2,2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2,2, 0, 2, 2,

39、 0, 0, 0, 0, 0, 2, 0, 1, 0, 2,2, 0, 0, 0, 1, 2, 2, 0, 0, 0, 1, 0, 0, 2,2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 0, 2,2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2,2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2,2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2,2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2,-1,-1,-1,2, 2, 2, 2, 2, 2, 2, 2,

40、2, 2, 2,-1,-1,-1,-1,-1,-1,2, 2, 2, 2, 2,-1,-1,-1,-1,-1,-1,-1,-1,-1,2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2,2, 2, 2, 2, 0, 2, 0, 1, 0, 0, 0, 0, 0, 2,2, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 0, 2,2, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 2, 0, 2,2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 2,2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0

41、, 2,2, 0, 0, 0, 1, 2, 2, 2, 0, 0, 0, 0, 0, 2,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2,2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2,2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2,2, 0, 1, 0, 0, 1, 2, 0, 0, 0, 2, 2, 2, 2,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,-1,-1,-1,2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,-1,-1,-1;4.3.2 角色類

42、的實現(xiàn)角色類對小人進行了封裝,記錄小人當(dāng)前的位置、圖片和坐標(biāo)以與狀態(tài)。將小人向上走路、向下走路、向左走路、向右走路、向上推箱子、向下推箱子、向左推箱子、向右推箱子的圖片ID放到數(shù)組中進行管理在構(gòu)造器中根據(jù)小人當(dāng)前的位置換算出當(dāng)前實際坐標(biāo),設(shè)置自己封裝的繪制方法,根據(jù)小人的狀態(tài)進行繪制,若小人正在移動,直接繪制圖片,若小人靜止時,需要進行坐標(biāo)修正然后再繪制圖片13。主要代碼是:public void drawMySelf(Canvas canvas, Paint paint)/繪制方法if(this.isRun)canvas.drawBitmap(man, X, Y, paint);else X

43、 = pushBoxActivity.gameView.initX+36*j-15*i + 2; Y = pushBoxActivity.gameView.initY+10*j+25*i - 25; canvas.drawBitmap(man, X, Y, paint);4.3.3 鍵盤監(jiān)聽線程的實現(xiàn) 鍵盤監(jiān)聽線程會定時檢測鍵盤的狀態(tài),然后根據(jù)狀態(tài)調(diào)用相應(yīng)的處理。每次循環(huán)需要休眠時間為150毫秒,當(dāng)需要鍵盤監(jiān)聽時,判斷是推箱子還是走路,然后得到當(dāng)前鍵盤狀態(tài)碼賦到action中,再對action進行處理判斷上、下、左、右鍵是否被按下。當(dāng)上鍵被按下時,需要先判斷是否到界面的最上方,若到最上方將不會

44、再往上,若沒到最上方時,會檢測上方是否有箱子,當(dāng)箱子上方為空地時才可以移動箱子,再判斷是否為目的地,如果是目的地需要把箱子設(shè)為綠色,如果不是目的地直接移動即可14。在箱子移動時需要啟動箱子的移動線程,進行箱子的移動,同時在移動過程中將鍵盤的監(jiān)聽標(biāo)志位設(shè)為false,此時失去屏幕監(jiān)聽。下鍵、左鍵、右鍵同理。4.3.4 角色移動線程的實現(xiàn)角色移動線程給定初始位置和結(jié)束位置的行列,自動計算成實際坐標(biāo),然后分兩步移動,當(dāng)距邊界較近時自動滾屏。當(dāng)向上移動時需要先判斷是否可以向上走,如果可以移動小人,需要循環(huán)移動實際坐標(biāo),之后將是否移動標(biāo)志位設(shè)置為false,表示已經(jīng)移動完成15。向下移動、向左移動、向右

45、移動同理。第五章 軟件測試軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。軟件測試是軟件開發(fā)過程的重要組成部分,是用來確認(rèn)一個程序的品質(zhì)或性能是否符合開發(fā)之前所提出的一些要求。軟件測試就是在軟件投入運行前,對軟件需求分析、設(shè)計規(guī)格說明和編碼的最終復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。在開發(fā)軟件系統(tǒng)的過程中,需要面對錯綜復(fù)雜的問題,因此,在軟件生存周期的每個階段都不可避免地會產(chǎn)生錯誤。本系統(tǒng)的測試階段信息流程圖如圖5-1所示。圖5-1 測試階段流程圖5.1 測試方案與其執(zhí)行l(wèi) 黑盒測試不是基于部設(shè)計和代碼的任何知識,而是基于需求和功能性的測試,黑盒測試又叫“功能測試”,它是已經(jīng)知道產(chǎn)品應(yīng)該具有的功能,通過測試

46、來檢驗是否每個功能都能正常使用。l 白盒測試是指基于一個應(yīng)用代碼的部邏輯知識,即基于覆蓋全部代碼、分支、路徑、條件的測試,又叫“結(jié)構(gòu)測試”,它知道產(chǎn)品的部工作過程,可以通過來檢驗產(chǎn)品部動作是否按照說明書的規(guī)定正常進行。l 本設(shè)計中,為了測試系統(tǒng)的功能是否都按要現(xiàn)了,采用黑盒測試方法。5.2 測試步驟集成測試過程按4個步驟進行,即單元測試、集成測試、確認(rèn)測試和系統(tǒng)測試。l 單元測試:開始是單元測試,集中對源代碼中實現(xiàn)的每一個程序單元進行測試,檢查各個程序模塊是否正確地實現(xiàn)了規(guī)定的功能。l 集成測試:集成測試把已測試過的模塊組裝起來,主要對與設(shè)計相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進行測試。l 確認(rèn)測試:確認(rèn)

47、測試則是要檢查已實現(xiàn)的軟件是否滿足了需求規(guī)格說明中確定了的各種需求,以與軟件配置是否完全、正確。l 系統(tǒng)測試:系統(tǒng)測試是把已經(jīng)經(jīng)過確認(rèn)的軟件納入實際運行環(huán)境中,與其它系統(tǒng)成份組合在一起進行測試。表5-1 系統(tǒng)測試記錄操作名稱操作流程操作結(jié)果和輸出歡迎動畫界面進入歡迎動畫界面進行測試。從模擬器應(yīng)用程序列表中點擊推箱子游戲的圖標(biāo)可以進入歡迎動畫界面,并能夠?qū)崿F(xiàn)動畫效果,點擊圖片可以直接進入菜單界面。菜單界面對開始游戲,聲音控制、游戲說明和退出游戲進行測試。點擊開始游戲能夠進入游戲界面,聲音開關(guān)可以控制背景聲音的開關(guān),游戲說明可以看到游戲的玩法,點擊退出游戲可以退到主界面。游戲界面進入游戲界面,對小

48、人的移動、能否顯示勝利界面進入下一關(guān)卡、能否退出游戲界面回到菜單界面進行測試。進入游戲界面后,可以成功使小人和箱子移動,將箱子都推到指定位置后會顯示恭喜過關(guān)畫面,點擊此畫面順利進入下一關(guān)卡,點擊退出也可以回到菜單界面。5.3 本章小結(jié)本章主要介紹了軟件測試的知識和對系統(tǒng)進行測試的信息。隨著系統(tǒng)的開發(fā),分別系統(tǒng)進行了單元測試、集成測試、確認(rèn)測試和系統(tǒng)測試。通過表格展示了系統(tǒng)的測試過程和實現(xiàn)的功能。還對測試過程中出現(xiàn)的問題進行了分析解決。第六章 總結(jié)通過編寫本次畢業(yè)設(shè)計程序,我完成了基于Android的推箱子游戲的軟件開發(fā)任務(wù)。在些其間,我遇到了許多問題,如地圖文件的制作與讀取、游戲界面過大或者過

49、小、游戲圖形的大小問題、小人與箱子的移動等等。不過,最終我都一一解決了相關(guān)問題,對其中比較主要的幾點體會總結(jié)如下:第一,為了熟悉推箱子游戲的相關(guān)運作,我經(jīng)常在電腦游戲上運用推箱子游戲,一步步地發(fā)現(xiàn)它擁有的功能,然后再思考與查閱資料進行分析,最后經(jīng)過逐步的設(shè)計與反復(fù)的修改論證,才完成了整個游戲的開發(fā)。第二,完成了從“小到全”,從“全到精”的轉(zhuǎn)變。在設(shè)計的過程中,我經(jīng)常會遇到一些困難,我也借此機會學(xué)會如何通過反復(fù)思考和測試找出自己的錯誤并加以改正,再進行下一個步驟的設(shè)計。本程序就是這樣一點一點的完成的,在這之后再來優(yōu)化整個程序。第三,本次設(shè)計也讓我得到一個不斷學(xué)習(xí)新鮮事物的機會,從設(shè)計初的諸多不懂

50、到最后能夠順利完成,期間我體會到在實踐中學(xué)習(xí)的重要性,這對于將來我走上工作崗位具有重要意義。 第四,通過畢業(yè)設(shè)計使我對Android加深了解,也對我今后的就業(yè)之路奠定了一定的基礎(chǔ)。經(jīng)過這些日子的不斷努力,本次的畢業(yè)設(shè)計程序基本上完成了?;仡櫿麄€設(shè)計過程,我學(xué)到了許多書本上沒有學(xué)到的知識。通過這次自己制作的軟件,豐富了自己的實踐技能,擴展了本專業(yè)的知識面,不僅使我受益匪淺,同時也體驗到了開發(fā)軟件開發(fā)的難度與不斷更新自己的重要性。由于我是初次涉與這類開發(fā)軟件,因此這其中或許還有很多的不足之處,在游戲界面不可以控制聲音開關(guān),也不能重新開始游戲,玩家不能選擇關(guān)卡保存游戲等等。這也是我今后所要充實之處,

51、在這里也懇請各位老師能夠?qū)ξ业淖髌分该鞑蛔悴⒓右愿恼?。總體來說,這次畢業(yè)設(shè)計收獲是頗豐的,這也是我在大學(xué)四年來完成的一個比較全面的實際例子。在這次設(shè)計的過程,我也查閱了大量的資料,對Android有了更加全面的認(rèn)識,對于軟件工程這些輔助性的教材也鞏固了不少,也為我這次的畢業(yè)設(shè)計提供了很大的幫助,同時鍛煉并且增強了我這方面的能力。在今后的生活和工作中我會更好的發(fā)揮自己的優(yōu)勢,學(xué)好自己選擇的這項專業(yè)技術(shù),讓自己在這條路上的明天會更好。參考文獻1黨成基于Google Android智能手機平臺的研究與應(yīng)用D:大學(xué),20112熊剛基于Android的智能手機的設(shè)計與實現(xiàn)D:理工大學(xué),20103豐盛An

52、droid應(yīng)用開發(fā)解密M:機械工業(yè),2010,21094馬越Android的架構(gòu)與應(yīng)用D:中國地質(zhì)大學(xué),20085靳巖,尚朗Android開發(fā)入門與實戰(zhàn)M:人民郵電,2009,2002306Lauren Darcey,Schane ConderAndroid移動開發(fā)一本就夠Z:人民郵電, 20117E2ECloud工作室深入淺出Google AndroidZ:人民郵電,20098百度百科Ophone百科EB/OLbaike.baidu./view/2410021.htm,2011-12-299寶林Java程序設(shè)計與案例M:高等教育,2004,2020010冀振燕,程虎Java編譯程序技術(shù)與Ja

53、va性能J軟件學(xué)報,2000,25(17):121511畢廣吉Java程序設(shè)計實例教程M:水利水電,2007,19221612郭宏志Android應(yīng)用開發(fā)詳解M:電子工業(yè),2010,40542513艷麗Android時間處理過程剖析J理工大學(xué)學(xué)報,2010,33(3):455214利國,代聞,龔海平Android移動開放案例詳解Z:人民郵電,201015余志龍,名杰,小鳳等Google Android SDK開發(fā)案例大全M:人民郵電,2010,180240中文譯文面向Android手機的嵌入式代理模型摘 要本文提出了一種“專門”為新的谷歌AndroidSDK設(shè)計的代理模型,在此模型下Andro

54、id手機可以視為一種軟件代理。由于使用了能在不同系統(tǒng)上實施的抽象概念,這種代理模型具有比理論更實用的方法。Android是一個基于Linux的開放式系統(tǒng),它的出現(xiàn)已經(jīng)為代理的實現(xiàn)創(chuàng)建了新的期望。這是一種在普適計算環(huán)境中實現(xiàn)嵌入式智能代理的有效方法,這種方法使代理可能運行在不同的硬件平臺上。這一設(shè)想可以被認(rèn)為是一個真正的智能環(huán)境。關(guān)鍵詞:代理模型;嵌入式代理;谷歌Android1 引言技術(shù)在我們的生活環(huán)境中幾乎是無形的,因為它已經(jīng)被安插在環(huán)境與提高人民生活質(zhì)量的目標(biāo)之間,用以創(chuàng)造一個智能環(huán)境,普適計算或者普與計算9就是這樣的例5。在普適計算中,感知已成為我們社會的習(xí)慣性特征,通過網(wǎng)絡(luò)使所有的固定或移動對象的類(嵌入式系統(tǒng))相互連接從而出現(xiàn)的電子設(shè)備。計算機技術(shù)已成為幾乎看不見的一個典,它作為一個嵌入式計算機偽影的結(jié)果進入我們的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論