基于android的推箱子游戲設(shè)計(jì)畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩37頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  畢業(yè)設(shè)計(jì)(論文)說(shuō)明書(shū)</p><p>  題目: 基于Android的推箱子游戲設(shè)計(jì)</p><p><b>  摘 要</b></p><p>  推箱子游戲是一款古老的游戲,其設(shè)計(jì)目的是訓(xùn)練人的邏輯思維能力。隨著計(jì)算機(jī)游戲的發(fā)展,很多編程愛(ài)好者基于該游戲的思想開(kāi)發(fā)出了各種版本、各種類(lèi)型的推箱子游戲,這其中也包括

2、很多手機(jī)版本的實(shí)現(xiàn)。隨著Android手機(jī)的迅猛發(fā)展,Android應(yīng)用程序產(chǎn)生的手機(jī)增值服務(wù)逐漸體現(xiàn)出其影響力,對(duì)豐富人們的生活內(nèi)容、提供快捷的資訊起著不可忽視的作用。本論文著眼于Android平臺(tái)的應(yīng)用,開(kāi)發(fā)一款可用的手機(jī)游戲程序——推箱子。</p><p>  本文首先介紹基于Android平臺(tái)應(yīng)用軟件開(kāi)發(fā)的背景,闡述了Android系統(tǒng)的現(xiàn)狀與發(fā)展情況;接著介紹Android平臺(tái)的搭建;然后通過(guò)一個(gè)較完整

3、的軟件開(kāi)發(fā)周期,采用Java語(yǔ)言及Eclipse開(kāi)發(fā)工具,從需求分析到游戲設(shè)計(jì)、實(shí)現(xiàn)、調(diào)試,最終實(shí)現(xiàn)了推箱子游戲。并經(jīng)過(guò)嚴(yán)格的測(cè)試,可以在模擬器上正常使用。</p><p>  關(guān)鍵詞:Android;Java;推箱子游戲</p><p><b>  ABSTRACT</b></p><p>  Push Box Game is one of

4、the ancient games, the design objective of the game is to train people's logical thinking ability. Along with the development of computer games, a lot of programming enthusiasts based on the idea of the game develope

5、d a variety of versions, all types of Push Box Game, which also include many mobile phone version's realization. With the implementation of Android technology on mobile equipment, increment of capital on communicatio

6、n service exhibits its force on people’s eve</p><p>  At first, This paper will introduce background of application development which base on Android platform, and describe the status and development of Andr

7、oid 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

8、the game design, implementation, commissioning, eventually achieve a Push Box Game. The game has been tested rigorously, so it </p><p>  Key words:Android;Java;Push Box Game</p><p><b>  目

9、 錄</b></p><p><b>  第一章 緒論1</b></p><p>  1.1 課題研究背景1</p><p>  1.2 課題來(lái)源及意義1</p><p>  1.3 國(guó)內(nèi)外發(fā)展現(xiàn)狀1</p><p>  1.4 本文研究主要內(nèi)容2</p>

10、<p>  1.5 本文章節(jié)安排2</p><p>  第二章 Android平臺(tái)搭建3</p><p>  2.1 工具介紹3</p><p>  2.1.1 Android簡(jiǎn)介3</p><p>  2.1.2 Java簡(jiǎn)介4</p><p>  2.2 開(kāi)發(fā)環(huán)境5</p>

11、<p>  2.3 開(kāi)發(fā)環(huán)境變量配置5</p><p>  2.3.1 JDK配置5</p><p>  2.3.2 SDK配置7</p><p>  2.3.3 Eclipse配置8</p><p>  2.4 應(yīng)用環(huán)境8</p><p>  第三章 游戲設(shè)計(jì)9</p><

12、p>  3.1 游戲需求分析9</p><p>  3.2 游戲設(shè)計(jì)9</p><p>  3.2.1 系統(tǒng)設(shè)計(jì)思想9</p><p>  3.2.2 游戲總體設(shè)計(jì)9</p><p>  3.2.3 系統(tǒng)功能模塊設(shè)計(jì)10</p><p>  3.2.4 游戲的類(lèi)框架設(shè)計(jì)10</p>&l

13、t;p>  3.2.5 算法的設(shè)計(jì)10</p><p>  第四章 游戲的實(shí)現(xiàn)12</p><p>  4.1 歡迎界面的實(shí)現(xiàn)12</p><p>  4.2 菜單界面的實(shí)現(xiàn)13</p><p>  4.2.1 開(kāi)始游戲13</p><p>  4.2.2 聲音控制14</p><

14、;p>  4.2.3 游戲說(shuō)明14</p><p>  4.2.4 退出游戲15</p><p>  4.3 游戲界面的實(shí)現(xiàn)15</p><p>  4.3.1 地圖類(lèi)的實(shí)現(xiàn)16</p><p>  4.3.2 角色類(lèi)的實(shí)現(xiàn)17</p><p>  4.3.3 鍵盤(pán)監(jiān)聽(tīng)線(xiàn)程的實(shí)現(xiàn)18</p>

15、;<p>  4.3.4 角色移動(dòng)線(xiàn)程的實(shí)現(xiàn)18</p><p>  第五章 軟件測(cè)試19</p><p>  5.1 測(cè)試方案及其執(zhí)行19</p><p>  5.2 測(cè)試步驟19</p><p>  5.3 本章小結(jié)20</p><p>  第六章 總結(jié)21</p>&l

16、t;p><b>  參考文獻(xiàn)22</b></p><p><b>  外文資料</b></p><p><b>  中文譯文</b></p><p><b>  致謝</b></p><p><b>  第一章 緒論</b&g

17、t;</p><p>  1.1 課題研究背景</p><p>  在我們的生活中有許多的游戲,但是游戲不同,它也會(huì)給玩家?guī)?lái)不同的感受和生活理念。游戲是我們?nèi)粘I畹囊粋€(gè)必不可少的娛樂(lè)項(xiàng)目,也帶動(dòng)了游戲相關(guān)產(chǎn)業(yè)市場(chǎng)的發(fā)展。游戲平臺(tái)經(jīng)過(guò)從游戲機(jī)到電視游戲,然后又到pc游戲,手機(jī)游戲,中間經(jīng)歷了很多的技術(shù)更新和變革。但隨著新技術(shù)的發(fā)展和我們生活水平的提高,手機(jī)開(kāi)始逐漸普及,因?yàn)槭謾C(jī)是非常小

18、巧便捷,所以它成為我們?nèi)粘I钪斜貍渫ㄓ嵐ぞ摺;谑謾C(jī)平臺(tái)的游戲也就擁有了巨大的市場(chǎng)空間,隨著3G的開(kāi)通和應(yīng)用,手機(jī)游戲必然會(huì)迎來(lái)新的一輪游戲熱潮[1]!</p><p>  1.2 課題來(lái)源及意義</p><p>  推箱子游戲是一款古老的游戲,其設(shè)計(jì)目的是訓(xùn)練人的邏輯思維能力。游戲場(chǎng)景一般是設(shè)定在空間狹小的倉(cāng)庫(kù)中,要求把箱子擺放到指定位置,稍不小心就會(huì)出現(xiàn)箱子無(wú)法移動(dòng)或者通道被堵住的

19、情況,所以需要巧妙的利用有限的空間和通道,合理安排移動(dòng)的次序和位置,才能順利的完成任務(wù)。隨著計(jì)算機(jī)游戲的發(fā)展,很多編程愛(ài)好者基于該游戲的思想開(kāi)發(fā)出了各種版本、各種類(lèi)型的推箱子游戲。這其中也包括很多手機(jī)版本的實(shí)現(xiàn),隨著Android手機(jī)終端的逐漸熱銷(xiāo),Android也引起眾多手機(jī)應(yīng)用程序開(kāi)發(fā)商的關(guān)注,由于Android基于Linux內(nèi)核且具有開(kāi)源、免費(fèi)的特性,它迅速得到廣大愛(ài)好者以及許多廠商的支持,基于Android所開(kāi)發(fā)的手機(jī)游戲擁有巨

20、大的潛力已成為行業(yè)共識(shí)。本文主要研究在Android手機(jī)上開(kāi)發(fā)一款推箱子游戲[2]。</p><p>  1.3 國(guó)內(nèi)外發(fā)展現(xiàn)狀</p><p>  Android是由Google為首的OHA(Open Handset Alliance)推出的一款開(kāi)放的嵌入式操作系統(tǒng)平臺(tái)。從2008年推出到現(xiàn)在Android正以前所未有的速度聚集著來(lái)自世界各地的開(kāi)發(fā)者,越來(lái)越多的創(chuàng)意被應(yīng)用到Androi

21、d應(yīng)用程序的開(kāi)發(fā)中,大有席卷整個(gè)手機(jī)產(chǎn)業(yè)的趨勢(shì)。</p><p>  Android系統(tǒng),是Google于2007年11月5日宣布的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)名稱(chēng),該平臺(tái)由操作系統(tǒng)、中間件、用戶(hù)界面和應(yīng)用軟件組成,號(hào)稱(chēng)是首個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整的移動(dòng)軟件。</p><p>  Android 的核心系統(tǒng)服務(wù)依賴(lài)于 Linux內(nèi)核,如安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧

22、和驅(qū)動(dòng)模型。由于Android帶有相當(dāng)濃郁的Linux血統(tǒng)這也就意味著他擁有開(kāi)源Linux的眾多優(yōu)點(diǎn):安全、運(yùn)算速度快、易于開(kāi)發(fā)等等[3]。正因?yàn)锳ndroid具有上述的優(yōu)點(diǎn),所以它在國(guó)內(nèi)具有相當(dāng)強(qiáng)勁的競(jìng)爭(zhēng)優(yōu)勢(shì)。青年網(wǎng)絡(luò)的主要負(fù)責(zé)人潘長(zhǎng)華先生說(shuō)到:Android作為一款十分優(yōu)秀的移動(dòng)開(kāi)發(fā)平臺(tái)十分適合國(guó)內(nèi)的開(kāi)發(fā)環(huán)境。尤其是中小企業(yè)開(kāi)發(fā)團(tuán)隊(duì)低成本以及源代碼的分享可以為企業(yè)節(jié)省大量資金,這對(duì)于中小企業(yè)來(lái)說(shuō)無(wú)疑是最大的誘惑。</p>

23、<p>  同時(shí)一個(gè)資深的Android開(kāi)發(fā)愛(ài)好者曾說(shuō)過(guò):如果你是個(gè)人開(kāi)發(fā)愛(ài)好者,那么Android就是Google為你量身打造的,開(kāi)源才是王道,Android才是未來(lái)的主宰[4]。</p><p>  伴隨著Google Android操作系統(tǒng)的盛行,國(guó)內(nèi)外的開(kāi)發(fā)團(tuán)隊(duì)也逐漸的壯大起來(lái)了,基于Android SDK的系統(tǒng)開(kāi)發(fā),基于Android應(yīng)用的開(kāi)發(fā)等已逐漸倍受大家關(guān)注,而手機(jī)游戲開(kāi)發(fā)歷來(lái)是移動(dòng)

24、開(kāi)發(fā)中分量最重的部分,面對(duì)如此火爆的Android市場(chǎng)自然也不甘示弱,由于Android的應(yīng)用層開(kāi)發(fā)是基于Java的開(kāi)發(fā),所以必有其可以快速移植J2ME開(kāi)發(fā)的游戲的優(yōu)勢(shì),但是移植的游戲必定也不能發(fā)揮Android操作系統(tǒng)獨(dú)特的特性。所以目前基于Android游戲開(kāi)發(fā)的市場(chǎng)還是不夠成熟的,面對(duì)這種情況,在了解Android SDK基礎(chǔ)上,本課題開(kāi)發(fā)的就是一款完全適應(yīng)于Android操作系統(tǒng)的推箱子益智游戲。</p><

25、p>  1.4 本文研究主要內(nèi)容</p><p>  本游戲分三個(gè)模塊設(shè)計(jì)與實(shí)現(xiàn):歡迎動(dòng)畫(huà)界面的設(shè)計(jì)與實(shí)現(xiàn),菜單界面的設(shè)計(jì)與實(shí)現(xiàn),游戲界面的設(shè)計(jì)與實(shí)現(xiàn)。游戲運(yùn)行后首先進(jìn)入歡迎動(dòng)畫(huà)界面,動(dòng)畫(huà)結(jié)束后,進(jìn)入菜單界面,在菜單界面上有四種菜單供用戶(hù)選擇。游戲的過(guò)程中需要在適當(dāng)?shù)牡胤教砑由弦粜?,并且可以?duì)音效進(jìn)行開(kāi)與關(guān)的設(shè)置。還需要為游戲添加說(shuō)明界面,簡(jiǎn)單介紹游戲的基本功能及玩法。游戲需要設(shè)計(jì)適當(dāng)?shù)碾y度,使玩家能夠經(jīng)

26、過(guò)努力完成游戲。</p><p>  1.5 本文章節(jié)安排</p><p>  第一章是緒論,闡述了本論文的選題背景、來(lái)源和意義,以及國(guó)內(nèi)外發(fā)展現(xiàn)狀,并對(duì)本文研究的主要內(nèi)容進(jìn)行簡(jiǎn)述。</p><p>  第二章介紹Android平臺(tái)的搭建。</p><p>  第三章介紹開(kāi)發(fā)此項(xiàng)目所做的需求分析和游戲設(shè)計(jì)。</p><p

27、>  第四章介紹游戲?qū)崿F(xiàn)的功能。</p><p>  第五章介紹游戲的測(cè)試。</p><p>  第六章對(duì)本次畢業(yè)設(shè)計(jì)的總結(jié)。</p><p>  第二章 Android平臺(tái)搭建</p><p>  本章主要介紹項(xiàng)目需要的開(kāi)發(fā)工具,及如何構(gòu)建Android開(kāi)發(fā)環(huán)境,包括JDK、Android SDK、Eclipse的配置。<

28、/p><p><b>  2.1 工具介紹</b></p><p>  2.1.1 Android簡(jiǎn)介</p><p>  Android是基于Linux內(nèi)核的操作系統(tǒng),Android系統(tǒng)具有開(kāi)放性、應(yīng)用程序無(wú)界限、應(yīng)用程序是在平等的條件創(chuàng)建的、應(yīng)用程序可以輕松地嵌入網(wǎng)絡(luò)和應(yīng)用程序可以并行運(yùn)行等特點(diǎn)。Android的系統(tǒng)架構(gòu)共分為4層,由高到低

29、分別是應(yīng)用層、應(yīng)用框架層、系統(tǒng)運(yùn)行庫(kù)層和linux內(nèi)核層。</p><p>  Android應(yīng)用程序是由四個(gè)模塊構(gòu)造:Activity,Intent,Content Provider,Service[5]。當(dāng)然也不是每個(gè)Android應(yīng)用程序都必須由這四部分組成,可以根據(jù)開(kāi)發(fā)者的需求進(jìn)行組合。但任何一個(gè)應(yīng)用程序模塊都必須在AndroidMainfest.xml文件中聲明使用到的這些模塊。</p>

30、<p>  Activity是最基本的模塊。我們稱(chēng)之為“活動(dòng)”。簡(jiǎn)單理解,Activity代表一個(gè)用戶(hù)所能看到的屏幕,主要用于處理應(yīng)用程序的整體性工作,例如,監(jiān)聽(tīng)系統(tǒng)事件(按鍵事件、觸摸屏事件等),為用戶(hù)顯示指定的View,啟動(dòng)其他Activity等。所有應(yīng)用的Activity都繼承于Android.app.Activity類(lèi),該類(lèi)是Android提供的基層類(lèi),其他的Activity繼承該父類(lèi)后,通過(guò)父類(lèi)的方法來(lái)實(shí)現(xiàn)各種功能,

31、這種設(shè)計(jì)在其他領(lǐng)域也較為常見(jiàn)。</p><p>  Android用Intent這個(gè)特殊類(lèi)實(shí)現(xiàn)在Activity與Activity之間的切換。Intent類(lèi)用于描述應(yīng)用的功能。在Intent的描述結(jié)構(gòu)中,有兩個(gè)最重要的部分:動(dòng)作和動(dòng)作對(duì)應(yīng)的數(shù)據(jù)。典型的動(dòng)作類(lèi)型有:MAIN、VIEW、PICK、EDIT等,而動(dòng)作對(duì)應(yīng)的數(shù)據(jù)則以URI的形式表示[6]。</p><p>  數(shù)據(jù)是應(yīng)用的核心。在

32、Android中,默認(rèn)使用SQLite作為系統(tǒng)數(shù)據(jù)庫(kù)。但是在Android中,使用方法有點(diǎn)小小的不一樣。在Android中,每一個(gè)應(yīng)用都運(yùn)行在各自的進(jìn)程中,當(dāng)一個(gè)應(yīng)用需要訪(fǎng)問(wèn)其他應(yīng)用的數(shù)據(jù)時(shí),也就是數(shù)據(jù)需要在不同的虛擬機(jī)之間傳遞,這樣的情況操作起來(lái)可能有些困難(正常情況下,你不能讀取其他應(yīng)用的db文件),ContentProvider正是用來(lái)解決在不同的應(yīng)用包之間共享數(shù)據(jù)的工具[7]。</p><p>  Ser

33、vice即“服務(wù)”的意思,既然是服務(wù),那么Service將是一個(gè)生命周期長(zhǎng)而且沒(méi)有用戶(hù)界面的程序。如一個(gè)正在從播放列表中播放歌曲的媒體播放器,在這個(gè)媒體播放器應(yīng)用中,應(yīng)該會(huì)有多個(gè)activity,讓使用者可以選擇歌曲并播放歌曲。然而,音樂(lè)重放這個(gè)功能并沒(méi)有對(duì)應(yīng)的activity,因?yàn)槭褂谜邥?huì)認(rèn)為在導(dǎo)航到其他屏幕時(shí)音樂(lè)應(yīng)該還在播放。在這個(gè)例子中,媒體播放器這個(gè)activity會(huì)使用Context.startService( )來(lái)啟動(dòng)一個(gè)s

34、ervice,從而可以在后臺(tái)保持音樂(lè)的播放。同時(shí),系統(tǒng)也將保持這個(gè)service一直執(zhí)行,直到這個(gè)service運(yùn)行結(jié)束。另外,我們還可以通過(guò)使用Context.bindService( )方法連接到一個(gè)service上(如果這個(gè)service當(dāng)前還沒(méi)有處于啟動(dòng)狀態(tài),則將啟動(dòng)它)。當(dāng)連接到一個(gè)service之后,還可用service提供的接口與它進(jìn)行通訊。以媒體播放器為例,我們還可以執(zhí)行暫停、重播等操作[8]。</p>&

35、lt;p>  2.1.2 Java簡(jiǎn)介</p><p>  Java是一種簡(jiǎn)單的、面向?qū)ο蟮?、分布式的、安全的、可移植的、性能?yōu)異的多線(xiàn)程語(yǔ)言。它以其強(qiáng)安全性、平臺(tái)無(wú)關(guān)性、硬件結(jié)構(gòu)無(wú)關(guān)性、語(yǔ)言簡(jiǎn)潔、面向?qū)ο蟮奶攸c(diǎn),在網(wǎng)絡(luò)編程語(yǔ)言中占據(jù)了無(wú)可比擬的優(yōu)勢(shì),成為實(shí)現(xiàn)電子商務(wù)系統(tǒng)的首選語(yǔ)言[9]。</p><p>  Java具有如下特點(diǎn):</p><p><

36、b>  簡(jiǎn)單性</b></p><p>  Java語(yǔ)言是一種面向?qū)ο蟮恼Z(yǔ)言,它通過(guò)提供最基本的方法來(lái)完成指定的任務(wù),開(kāi)發(fā)者只需知道一些概念就能夠編出一些應(yīng)用程序。Java程序相對(duì)較小,其代碼能夠在小機(jī)器,例如手機(jī)上運(yùn)行,這應(yīng)該是大家經(jīng)??梢钥吹降?。</p><p><b>  面向?qū)ο笳Z(yǔ)言</b></p><p>  Jav

37、a的設(shè)計(jì)集中于對(duì)象及其接口,它提供了簡(jiǎn)單的類(lèi)機(jī)制以及動(dòng)態(tài)的接口模型。對(duì)象中封裝了它的狀態(tài)變量和相應(yīng)的方法,實(shí)現(xiàn)了模塊化和信息的隱藏;而類(lèi)則是提供了對(duì)象的原型,并且通過(guò)繼承的機(jī)制,子類(lèi)可以使用父類(lèi)所提供的方法,以實(shí)現(xiàn)代碼的復(fù)用。</p><p><b>  健壯性</b></p><p>  Java語(yǔ)言被病毒感染和破壞得最少。大部分病毒程序常用的方法就是通過(guò)巧妙地運(yùn)用

38、地址變量如指針來(lái)獲取計(jì)算機(jī)的資源,而Java正好放棄了難學(xué)和危險(xiǎn)的指針功能,從而使Java更安全。</p><p><b>  多線(xiàn)程</b></p><p>  設(shè)計(jì)Java的目標(biāo)之一,就是為了滿(mǎn)足人們對(duì)創(chuàng)建交互式網(wǎng)上程序的需要。多線(xiàn)程就是為實(shí)現(xiàn)這個(gè)目標(biāo)而設(shè)計(jì)出來(lái)的,它使用Java編寫(xiě)出來(lái)的應(yīng)用程序可以同時(shí)執(zhí)行多個(gè)任務(wù)。多線(xiàn)程機(jī)制使應(yīng)用程序能夠并行執(zhí)行,而且同步機(jī)制

39、保證了對(duì)共享數(shù)據(jù)的正確操作。</p><p><b>  自動(dòng)內(nèi)存管理</b></p><p>  可以說(shuō)自動(dòng)內(nèi)存管理是Java健壯性的體現(xiàn),內(nèi)存管理是很多種應(yīng)用程序內(nèi)的關(guān)鍵因素。在網(wǎng)絡(luò)上的其他地方讀取大量的數(shù)據(jù),之后把該數(shù)據(jù)寫(xiě)入硬盤(pán)上的數(shù)據(jù)庫(kù)內(nèi),一般的設(shè)計(jì)就是把數(shù)據(jù)讀入內(nèi)存中的某種集合內(nèi),對(duì)這些數(shù)據(jù)執(zhí)行某些操作,之后把數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)。在數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)后,在下一批處理

40、之前,臨時(shí)存儲(chǔ)數(shù)據(jù)的集合必須清空舊數(shù)據(jù),或者被刪除后再建。這種操作可能執(zhí)行很多次,在像C++這些不提供自動(dòng)垃圾搜集的語(yǔ)言中,手工清空或刪除集合數(shù)據(jù)結(jié)構(gòu)邏輯上的一點(diǎn)點(diǎn)缺陷就可能導(dǎo)致大量的內(nèi)存被錯(cuò)誤地收回或丟失。Java的自動(dòng)內(nèi)存管理正好解決這一點(diǎn),它使程序員不用再為內(nèi)存管理寫(xiě)大量的代碼[10]。</p><p><b>  2.2 開(kāi)發(fā)環(huán)境</b></p><p>&

41、lt;b>  JDK1.6</b></p><p>  Eclipse3.5</p><p>  AndroidSDK10.0</p><p>  Eclipse插件ADT10.0</p><p>  2.3 開(kāi)發(fā)環(huán)境變量配置</p><p>  2.3.1 JDK配置</p>&l

42、t;p>  右鍵點(diǎn)擊計(jì)算機(jī)->屬性->高級(jí)系統(tǒng)設(shè)置,點(diǎn)擊下面的環(huán)境變量,在下面的“系統(tǒng)變量”處選擇新建在變量名處輸入JAVA_HOME,并將JDK所在地址填入變量值中,確定即可,如圖2-1所示。</p><p>  圖2-1 JDK配置1</p><p>  確定后就會(huì)返回環(huán)境變量界面,再新建一個(gè)系統(tǒng)變量名為classpath,變量值為%JAVA_HOME%/lib

43、/rt.jar;%JAVA_HOME%/lib/tools.jar,確定即可,如圖2-2所示。</p><p>  圖2-2 JDK配置2</p><p>  確定后仍會(huì)返回環(huán)境變量界面,然后再找到Path的變量,雙擊或者點(diǎn)擊編輯,在變量名最前面加上%JAVA_HOME%/bin,確定即可,如圖2-3所示。</p><p>  圖2-3 JDK配置3&l

44、t;/p><p>  然后開(kāi)始—運(yùn)行cmd,輸入java或者javac看看有沒(méi)有效果,如果出現(xiàn)一大堆其它的東西,那就好了,如果出現(xiàn)類(lèi)似xxx不是內(nèi)部或者外部命令之類(lèi)的,那就說(shuō)明你的設(shè)置有問(wèn)題,看看哪里出現(xiàn)問(wèn)題然后加以改正。</p><p>  2.3.2 SDK配置</p><p>  新建一個(gè)系統(tǒng)變量Android,并將SDK文件夾中的platform-tools和

45、tools的地址填入變量值中,以分號(hào)來(lái)隔開(kāi),確定即可,如圖2-4所示。</p><p>  圖2-4 SDK配置1</p><p>  然后找到Path,在Path最后加上;%Android%,如圖2-5所示。</p><p>  圖2-5 SDK配置2</p><p>  然后測(cè)試環(huán)境變量是否配置成功,在cmd中輸入adb出現(xiàn)一

46、堆東西,說(shuō)明環(huán)境變量配置成功。</p><p>  2.3.3 Eclipse配置</p><p>  首先需要添加Eclipse插件ADT,在打開(kāi)Eclipse后,點(diǎn)擊菜單欄的Help—>Install New Software...然后點(diǎn)擊Add會(huì)出來(lái)一個(gè)Add Site的窗口,這里Name輸入ADT,Location中輸入ADT在電腦中的地址,然后就等待連接了,連接上將Dev

47、eloper Tools全都選中accept,finish就可以了,完成后會(huì)提示重啟Eclipse來(lái)加載插件,重啟,就可以用了。</p><p>  還需要將Android SDK插入到Eclipse中,打開(kāi)Eclipse后,點(diǎn)擊菜單欄的Window—>Preferences然后點(diǎn)擊Android,在SDK Location輸入SDK存放的位置,點(diǎn)擊Apply則會(huì)顯示現(xiàn)有的Android的模擬器版本,如圖2

48、-6所示。</p><p>  圖2-6 Eclipse配置</p><p><b>  2.4 應(yīng)用環(huán)境</b></p><p>  基于Android的推箱子游戲適用于Android2.1及以上版本。</p><p>  第三章 游戲設(shè)計(jì)</p><p>  3.1 游戲需求分

49、析</p><p>  玩家是通過(guò)對(duì)小人的移動(dòng)操作來(lái)控制推動(dòng)箱子的,并且玩家需要避過(guò)障礙物以及死角,才能將其推放到指定位置從而達(dá)到過(guò)關(guān)的目的。如果玩家將箱子推入死角導(dǎo)致箱子無(wú)法移動(dòng)或不能移動(dòng)到指定位置則闖關(guān)失敗,可以通過(guò)退出操作進(jìn)入菜單界面來(lái)重新挑戰(zhàn)游戲。</p><p>  游戲功能需求如下所示:</p><p>  游戲界面需求:簡(jiǎn)潔美觀的用戶(hù)界面,可以帶給用戶(hù)

50、自然清晰的畫(huà)面。</p><p>  游戲情節(jié)需求:本游戲?yàn)檩p量級(jí)的益智游戲,因此不存在很復(fù)雜的情節(jié)。這方面主要要做的工作是設(shè)計(jì)游戲各關(guān)倉(cāng)庫(kù)的形狀、大小、可通過(guò)區(qū)域,以及各關(guān)中箱子的初始位置與目的地,移動(dòng)中的箱子與終點(diǎn)上的箱子要所有區(qū)別,因此需要兩不同的圖片以示區(qū)別。</p><p>  鍵盤(pán)處理事件:控制小人與箱子的移動(dòng),通過(guò)鍵盤(pán)方向鍵(上、下、左、右鍵)對(duì)小人進(jìn)行上、下、左、右的移動(dòng),

51、并且能夠推動(dòng)箱子。</p><p>  顯示需求:當(dāng)所有箱子都到達(dá)指定位置后即可過(guò)關(guān),若進(jìn)入死角則無(wú)法通過(guò)過(guò)關(guān)卡,需要進(jìn)行退出操作從菜單界面來(lái)重新挑戰(zhàn)游戲。</p><p>  3.2 游戲設(shè)計(jì) </p><p>  3.2.1 系統(tǒng)設(shè)計(jì)思想</p><p>  本次設(shè)計(jì)主要是設(shè)計(jì)一個(gè)能夠在Android手機(jī)上運(yùn)行的推箱子游戲。根據(jù)一般玩

52、手機(jī)游戲的流程,玩家一般是先進(jìn)入一個(gè)歡迎動(dòng)畫(huà)界面,等待動(dòng)畫(huà)結(jié)束或者直接點(diǎn)擊畫(huà)面后進(jìn)入游戲的菜單界面,在菜單界面,玩家可以進(jìn)行開(kāi)始游戲、聲音開(kāi)關(guān)、游戲說(shuō)明、退出游戲操作,從菜單界面點(diǎn)擊開(kāi)始游戲進(jìn)入游戲界面開(kāi)始游戲,在游戲界面里,玩家還可以退到菜單界面,本游戲軟件也將遵循該流程。</p><p>  3.2.2 游戲總體設(shè)計(jì)</p><p>  圖3-1 游戲總體設(shè)計(jì)</p>

53、;<p>  3.2.3 系統(tǒng)功能模塊設(shè)計(jì)</p><p>  本程序包括5個(gè)模塊,分別是初始化模塊、畫(huà)圖模塊、移動(dòng)箱子模塊、移動(dòng)小人模塊和音樂(lè)模塊,各個(gè)模塊的功能描述如下:</p><p>  初始化模塊。該模塊包括屏幕初始化和游戲第一關(guān)的初始化。屏幕初始化用于顯示歡迎動(dòng)畫(huà),游戲第一關(guān)的初始化是構(gòu)建每一關(guān)的關(guān)卡。</p><p>  畫(huà)圖模塊。該模

54、塊主要是被其他模塊調(diào)用,用于畫(huà)墻、在空地畫(huà)箱子、在目的地畫(huà)箱子、畫(huà)小人和畫(huà)目的地。</p><p>  移動(dòng)箱子模塊。該模塊用于移動(dòng)箱子,包括目的地之間、空地之間和目的地與空地之間的箱子移動(dòng)。</p><p>  移動(dòng)小人模塊。該模塊用于控制小人的移動(dòng),從而推動(dòng)箱子到達(dá)目的地。</p><p>  音樂(lè)模塊。該模塊為游戲提供背景音樂(lè)、小人推箱子的聲音和游戲勝利的聲音

55、。</p><p>  3.2.4 游戲的類(lèi)框架設(shè)計(jì)</p><p>  表3-1 游戲的類(lèi)框架</p><p>  3.2.5 算法的設(shè)計(jì)</p><p>  該游戲沒(méi)有涉及到復(fù)雜的算法設(shè)計(jì),關(guān)鍵在于對(duì)地圖矩陣的操作。游戲中用一個(gè)MapList類(lèi)操作地圖,其中有兩個(gè)三維數(shù)組記錄游戲地圖信息,一個(gè)三維數(shù)組表示第一層地圖即地板層,另一

56、個(gè)三維數(shù)組表示第二層地圖即建筑層,三維矩陣便于管理,如果要加入新關(guān)卡,只需要在三維矩陣中加入二維矩陣就可以了[11]。</p><p>  游戲過(guò)程中,最為主要的地方在于對(duì)地圖矩陣,以及小人狀態(tài)信息(包括位置、行走狀態(tài)等)的維護(hù),小人每行走一步,就更新一次地圖信息和小人狀態(tài)信息。另外一個(gè)比較重要的地方是游戲狀態(tài)的保存方面[12]。為保存小人信息,特別開(kāi)設(shè)了一個(gè)MySprite類(lèi),該類(lèi)主要作用就是保存玩家每一步的游

57、戲狀態(tài),便于撤銷(xiāo)。</p><p>  邏輯判斷過(guò)程中,需要對(duì)地圖進(jìn)行維護(hù),主要是通過(guò)小人的移動(dòng)位置進(jìn)行更新的。</p><p>  小人每次移動(dòng)時(shí),四周的物體如下圖:</p><p>  圖3-2 主角四周物體</p><p>  當(dāng)小人是在移動(dòng)箱子時(shí),箱子四周有以下幾種物體:</p><p>  圖3-3

58、 箱子四周物體</p><p>  第四章 游戲的實(shí)現(xiàn)</p><p>  4.1 歡迎界面的實(shí)現(xiàn)</p><p>  當(dāng)玩家運(yùn)行游戲時(shí),首先看到歡迎界面,歡迎界面是整個(gè)游戲的門(mén)面。本游戲的歡迎動(dòng)畫(huà)首先是木門(mén)打開(kāi)如圖4-1,接著是鐵門(mén)打開(kāi)如圖4-2,最后是墻打開(kāi)如圖4-3,所有門(mén)打開(kāi)后就會(huì)顯示一個(gè)有山有水的圖片如圖4-4。歡迎動(dòng)畫(huà)界面是通過(guò)改變動(dòng)畫(huà)線(xiàn)程中圖

59、片的變量值來(lái)改變圖片的位置。</p><p>  圖4-1 木門(mén) 圖4-2 鐵門(mén)</p><p>  圖4-3 墻 圖4-4 山水圖</p><p>  4.2 菜單界面的實(shí)現(xiàn)</p><p>  玩家在歡迎動(dòng)畫(huà)界面需等待30秒方能進(jìn)

60、入菜單界面,也可直接點(diǎn)擊屏幕進(jìn)入菜單界面。菜單界面是由滾動(dòng)的背景圖片、不動(dòng)的背景圖片,和開(kāi)始游戲、聲音開(kāi)、聲音關(guān)、游戲說(shuō)明、退出游戲圖片組成,如圖4-5所示。</p><p>  圖4-5 菜單界面</p><p>  4.2.1 開(kāi)始游戲</p><p>  當(dāng)玩家點(diǎn)擊開(kāi)始游戲圖片即可進(jìn)入游戲界面開(kāi)始游戲,如圖4-6所示。</p><p

61、>  圖4-6 開(kāi)始游戲</p><p>  4.2.2 聲音控制</p><p>  玩家進(jìn)入菜單界面時(shí)背景聲音是開(kāi)即顯示的是聲音開(kāi)圖片,菜單界面的背景音樂(lè)會(huì)滾動(dòng)播放,如果玩家想要關(guān)閉聲音,只需點(diǎn)擊聲音開(kāi)圖片就會(huì)關(guān)閉聲音同時(shí)顯示聲音關(guān)圖片,如圖4-7所示。聲音狀態(tài)圖片是根據(jù)PushBoxActivity中的聲音狀態(tài)值進(jìn)行繪制。</p><p>  圖

62、4-7 聲音控制</p><p>  4.2.3 游戲說(shuō)明</p><p>  當(dāng)玩家點(diǎn)擊游戲說(shuō)明按鈕時(shí)玩家會(huì)進(jìn)入游戲說(shuō)明界面,如圖4-8所示,游戲說(shuō)明界面是由一張說(shuō)明圖片組成,背景設(shè)置為白色,玩家如果想要離開(kāi)此界面只需點(diǎn)擊屏幕即可回到菜單界面。</p><p>  圖4-8 游戲說(shuō)明</p><p>  4.2.4 退出游戲

63、</p><p>  當(dāng)玩家點(diǎn)擊退出圖片時(shí),會(huì)直接離開(kāi)游戲到模擬器的主界面,如圖4-9所示。</p><p>  圖4-9 退出游戲</p><p>  4.3 游戲界面的實(shí)現(xiàn)</p><p>  游戲界面實(shí)現(xiàn)包括地圖類(lèi)的實(shí)現(xiàn),角色類(lèi)的實(shí)現(xiàn),鍵盤(pán)監(jiān)聽(tīng)線(xiàn)程的實(shí)現(xiàn),角色移動(dòng)線(xiàn)程的實(shí)現(xiàn)。</p><p>  當(dāng)玩家將

64、箱子都推到指定的位置后本關(guān)游戲勝利,出現(xiàn)恭喜過(guò)關(guān)的圖片,點(diǎn)擊圖片進(jìn)入下一關(guān)卡,如圖4-10所示。</p><p>  圖4-10 勝利進(jìn)行下一關(guān)</p><p>  4.3.1 地圖類(lèi)的實(shí)現(xiàn)</p><p>  該類(lèi)中包含了兩個(gè)三維數(shù)組,一個(gè)三維數(shù)組表示第一層地圖即地板層,另一個(gè)三維數(shù)組表示第二層地圖即建筑層。三維數(shù)組中存儲(chǔ)著每個(gè)關(guān)卡的地圖,三維矩陣便于管理

65、,如果要加入新關(guān)卡,只需要在三維矩陣中加入一個(gè)二維矩陣就可以了。本游戲設(shè)計(jì)了兩個(gè)關(guān)卡。主要代碼是:</p><p>  public static int map1[ ][ ][ ] = </p><p>  {//第一層地圖,即地板層</p><p><b>  {</b></p><p>  {-1,-1,-1,1,

66、 0, 1, 0, 1,-1,-1,-1,-1,-1,-1},</p><p>  {-1,-1,-1,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0},</p><p>  {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1},</p><p>  {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,

67、0, 1, 0},</p><p>  {0, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1},</p><p>  {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0},</p><p>  {0, 1, 0, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0, 1},</p>&

68、lt;p>  {1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0},</p><p>  {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1},</p><p>  {1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 2, 1, 0},</p><p>  {0, 1, 0, 1,

69、 0, 1, 0, 1, 0, 1, 0, 1, 0, 1},</p><p>  {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0},</p><p>  {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,-1,-1,-1},</p><p>  {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,-

70、1,-1,-1}</p><p><b>  },</b></p><p><b>  {</b></p><p>  {-1,-1,-1,1, 0, 1, 0, 1,-1,-1,-1,-1,-1,-1},</p><p>  {-1,-1,-1,0, 1, 0, 1, 0, 1, 0, 1, 0,

71、 1, 0},</p><p>  {0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1, 0, 1},</p><p>  {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0},</p><p>  {0, 1, 2, 3, 0, 1, 0, 1, 2, 1, 0, 1, 0, 1},</p><

72、;p>  {1, 0, 1, 2, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0},</p><p>  {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1},</p><p>  {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0},</p><p>  {0, 1, 0, 1, 0

73、, 1, 0, 1, 0, 1, 0, 1, 0, 1},</p><p>  {1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 0},</p><p>  {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1},</p><p>  {1, 0, 1, 0, 1, 0, 1, 2, 1, 0, 1, 0,

74、 1, 0},</p><p>  {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,-1,-1,-1},</p><p>  {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,-1,-1,-1}</p><p><b>  }</b></p><p><b>  };<

75、;/b></p><p>  public static int map2[ ][ ][ ] = </p><p><b>  {//第二層地圖</b></p><p><b>  {</b></p><p>  {-1,-1,-1,2, 2, 2, 2, 2,-1,-1,-1,-1,-1

76、,-1},</p><p>  {-1,-1,-1,2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2},</p><p>  {2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2},</p><p>  {2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2},</p><p

77、>  {2, 0, 0, 0, 1, 0, 2, 0, 0, 2, 0, 0, 0, 2},</p><p>  {2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2},</p><p>  {2, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 1, 0, 2},</p><p>  {2, 0, 0, 0, 1,

78、2, 2, 0, 0, 0, 1, 0, 0, 2},</p><p>  {2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 0, 2},</p><p>  {2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2},</p><p>  {2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0

79、, 2},</p><p>  {2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2},</p><p>  {2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2,-1,-1,-1},</p><p>  {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,-1,-1,-1}</p><p&

80、gt;<b>  },</b></p><p><b>  {</b></p><p>  {-1,-1,-1,2, 2, 2, 2, 2,-1,-1,-1,-1,-1,-1},</p><p>  {-1,-1,-1,2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2},</p><p&g

81、t;  {2, 2, 2, 2, 0, 2, 0, 1, 0, 0, 0, 0, 0, 2},</p><p>  {2, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 0, 2},</p><p>  {2, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 2, 0, 2},</p><p>  {2, 0, 0, 0, 0, 0,

82、 0, 1, 0, 0, 0, 2, 1, 2},</p><p>  {2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2},</p><p>  {2, 0, 0, 0, 1, 2, 2, 2, 0, 0, 0, 0, 0, 2},</p><p>  {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0,

83、2},</p><p>  {2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2},</p><p>  {2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2},</p><p>  {2, 0, 1, 0, 0, 1, 2, 0, 0, 0, 2, 2, 2, 2},</p><p&g

84、t;  {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,-1,-1,-1},</p><p>  {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,-1,-1,-1}</p><p><b>  }</b></p><p><b>  };</b></p><p>

85、  4.3.2 角色類(lèi)的實(shí)現(xiàn)</p><p>  角色類(lèi)對(duì)小人進(jìn)行了封裝,記錄小人當(dāng)前的位置、圖片和坐標(biāo)以及狀態(tài)。將小人向上走路、向下走路、向左走路、向右走路、向上推箱子、向下推箱子、向左推箱子、向右推箱子的圖片ID放到數(shù)組中進(jìn)行管理在構(gòu)造器中根據(jù)小人當(dāng)前的位置換算出當(dāng)前實(shí)際坐標(biāo),設(shè)置自己封裝的繪制方法,根據(jù)小人的狀態(tài)進(jìn)行繪制,若小人正在移動(dòng),直接繪制圖片,若小人靜止時(shí),需要進(jìn)行坐標(biāo)修正然后再繪制圖片[13]。

86、主要代碼是:</p><p>  public void drawMySelf(Canvas canvas, Paint paint){//繪制方法</p><p>  if(this.isRun){</p><p>  canvas.drawBitmap(man, X, Y, paint);</p><p><b>  }<

87、/b></p><p><b>  else{</b></p><p>  X = pushBoxActivity.gameView.initX+36*j-15*i + 2;</p><p>  Y = pushBoxActivity.gameView.initY+10*j+25*i - 25;</p><p>

88、  canvas.drawBitmap(man, X, Y, paint);</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.3.3 鍵盤(pán)監(jiān)聽(tīng)線(xiàn)程的實(shí)現(xiàn)</p><p>  鍵盤(pán)監(jiān)聽(tīng)線(xiàn)程會(huì)定時(shí)檢測(cè)鍵盤(pán)的狀態(tài),然后根據(jù)狀態(tài)調(diào)用相應(yīng)的處理。每次循

89、環(huán)需要休眠時(shí)間為150毫秒,當(dāng)需要鍵盤(pán)監(jiān)聽(tīng)時(shí),判斷是推箱子還是走路,然后得到當(dāng)前鍵盤(pán)狀態(tài)碼賦到action中,再對(duì)action進(jìn)行處理判斷上、下、左、右鍵是否被按下。當(dāng)上鍵被按下時(shí),需要先判斷是否到界面的最上方,若到最上方將不會(huì)再往上,若沒(méi)到最上方時(shí),會(huì)檢測(cè)上方是否有箱子,當(dāng)箱子上方為空地時(shí)才可以移動(dòng)箱子,再判斷是否為目的地,如果是目的地需要把箱子設(shè)為綠色,如果不是目的地直接移動(dòng)即可[14]。在箱子移動(dòng)時(shí)需要啟動(dòng)箱子的移動(dòng)線(xiàn)程,進(jìn)行箱子

90、的移動(dòng),同時(shí)在移動(dòng)過(guò)程中將鍵盤(pán)的監(jiān)聽(tīng)標(biāo)志位設(shè)為false,此時(shí)失去屏幕監(jiān)聽(tīng)。下鍵、左鍵、右鍵同理。</p><p>  4.3.4 角色移動(dòng)線(xiàn)程的實(shí)現(xiàn)</p><p>  角色移動(dòng)線(xiàn)程給定初始位置和結(jié)束位置的行列,自動(dòng)計(jì)算成實(shí)際坐標(biāo),然后分兩步移動(dòng),當(dāng)距邊界較近時(shí)自動(dòng)滾屏。當(dāng)向上移動(dòng)時(shí)需要先判斷是否可以向上走,如果可以移動(dòng)小人,需要循環(huán)移動(dòng)實(shí)際坐標(biāo),之后將是否移動(dòng)標(biāo)志位設(shè)置為false,

91、表示已經(jīng)移動(dòng)完成[15]。向下移動(dòng)、向左移動(dòng)、向右移動(dòng)同理。</p><p>  第五章 軟件測(cè)試</p><p>  軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。軟件測(cè)試是軟件開(kāi)發(fā)過(guò)程的重要組成部分,是用來(lái)確認(rèn)一個(gè)程序的品質(zhì)或性能是否符合開(kāi)發(fā)之前所提出的一些要求。軟件測(cè)試就是在軟件投入運(yùn)行前,對(duì)軟件需求分析、設(shè)計(jì)規(guī)格說(shuō)明和編碼的最終復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。在開(kāi)發(fā)軟件系統(tǒng)的過(guò)程中

92、,需要面對(duì)錯(cuò)綜復(fù)雜的問(wèn)題,因此,在軟件生存周期的每個(gè)階段都不可避免地會(huì)產(chǎn)生錯(cuò)誤。</p><p>  本系統(tǒng)的測(cè)試階段信息流程圖如圖5-1所示。</p><p>  圖5-1 測(cè)試階段流程圖</p><p>  5.1 測(cè)試方案及其執(zhí)行</p><p>  黑盒測(cè)試不是基于內(nèi)部設(shè)計(jì)和代碼的任何知識(shí),而是基于需求和功能性的測(cè)試,黑盒測(cè)試

93、又叫“功能測(cè)試”,它是已經(jīng)知道產(chǎn)品應(yīng)該具有的功能,通過(guò)測(cè)試來(lái)檢驗(yàn)是否每個(gè)功能都能正常使用。</p><p>  白盒測(cè)試是指基于一個(gè)應(yīng)用代碼的內(nèi)部邏輯知識(shí),即基于覆蓋全部代碼、分支、路徑、條件的測(cè)試,又叫“結(jié)構(gòu)測(cè)試”,它知道產(chǎn)品的內(nèi)部工作過(guò)程,可以通過(guò)來(lái)檢驗(yàn)產(chǎn)品內(nèi)部動(dòng)作是否按照說(shuō)明書(shū)的規(guī)定正常進(jìn)行。</p><p>  本設(shè)計(jì)中,為了測(cè)試系統(tǒng)的功能是否都按要求實(shí)現(xiàn)了,采用黑盒測(cè)試方法。&l

94、t;/p><p><b>  5.2 測(cè)試步驟</b></p><p>  集成測(cè)試過(guò)程按4個(gè)步驟進(jìn)行,即單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試。</p><p>  單元測(cè)試:開(kāi)始是單元測(cè)試,集中對(duì)源代碼中實(shí)現(xiàn)的每一個(gè)程序單元進(jìn)行測(cè)試,檢查各個(gè)程序模塊是否正確地實(shí)現(xiàn)了規(guī)定的功能。</p><p>  集成測(cè)試:集成測(cè)試把

95、已測(cè)試過(guò)的模塊組裝起來(lái),主要對(duì)與設(shè)計(jì)相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進(jìn)行測(cè)試。</p><p>  確認(rèn)測(cè)試:確認(rèn)測(cè)試則是要檢查已實(shí)現(xiàn)的軟件是否滿(mǎn)足了需求規(guī)格說(shuō)明中確定了的各種需求,以及軟件配置是否完全、正確。</p><p>  系統(tǒng)測(cè)試:系統(tǒng)測(cè)試是把已經(jīng)經(jīng)過(guò)確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其它系統(tǒng)成份組合在一起進(jìn)行測(cè)試。 </p><p>  表5-1 系統(tǒng)測(cè)試記

96、錄</p><p><b>  5.3 本章小結(jié)</b></p><p>  本章主要介紹了軟件測(cè)試的知識(shí)和對(duì)系統(tǒng)進(jìn)行測(cè)試的信息。隨著系統(tǒng)的開(kāi)發(fā),分別系統(tǒng)進(jìn)行了單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試。通過(guò)表格展示了系統(tǒng)的測(cè)試過(guò)程和實(shí)現(xiàn)的功能。還對(duì)測(cè)試過(guò)程中出現(xiàn)的問(wèn)題進(jìn)行了分析解決。</p><p><b>  第六章 總結(jié)&l

97、t;/b></p><p>  通過(guò)編寫(xiě)本次畢業(yè)設(shè)計(jì)程序,我完成了基于Android的推箱子游戲的軟件開(kāi)發(fā)任務(wù)。在些其間,我遇到了許多問(wèn)題,如地圖文件的制作與讀取、游戲界面過(guò)大或者過(guò)小、游戲圖形的大小問(wèn)題、小人與箱子的移動(dòng)等等。不過(guò),最終我都一一解決了相關(guān)問(wèn)題,對(duì)其中比較主要的幾點(diǎn)體會(huì)總結(jié)如下:</p><p>  第一,為了熟悉推箱子游戲的相關(guān)運(yùn)作,我經(jīng)常在電腦游戲上運(yùn)用推箱子游戲

98、,一步步地發(fā)現(xiàn)它擁有的功能,然后再思考與查閱資料進(jìn)行分析,最后經(jīng)過(guò)逐步的設(shè)計(jì)與反復(fù)的修改論證,才完成了整個(gè)游戲的開(kāi)發(fā)。</p><p>  第二,完成了從“小到全”,從“全到精”的轉(zhuǎn)變。在設(shè)計(jì)的過(guò)程中,我經(jīng)常會(huì)遇到一些困難,我也借此機(jī)會(huì)學(xué)會(huì)如何通過(guò)反復(fù)思考和測(cè)試找出自己的錯(cuò)誤并加以改正,再進(jìn)行下一個(gè)步驟的設(shè)計(jì)。本程序就是這樣一點(diǎn)一點(diǎn)的完成的,在這之后再來(lái)優(yōu)化整個(gè)程序。</p><p>  

99、第三,本次設(shè)計(jì)也讓我得到一個(gè)不斷學(xué)習(xí)新鮮事物的機(jī)會(huì),從設(shè)計(jì)初的諸多不懂到最后能夠順利完成,期間我體會(huì)到在實(shí)踐中學(xué)習(xí)的重要性,這對(duì)于將來(lái)我走上工作崗位具有重要意義。</p><p>  第四,通過(guò)畢業(yè)設(shè)計(jì)使我對(duì)Android加深了解,也對(duì)我今后的就業(yè)之路奠定了一定的基礎(chǔ)。</p><p>  經(jīng)過(guò)這些日子的不斷努力,本次的畢業(yè)設(shè)計(jì)程序基本上完成了?;仡櫿麄€(gè)設(shè)計(jì)過(guò)程,我學(xué)到了許多書(shū)本上沒(méi)有學(xué)到

100、的知識(shí)。通過(guò)這次自己制作的軟件,豐富了自己的實(shí)踐技能,擴(kuò)展了本專(zhuān)業(yè)的知識(shí)面,不僅使我受益匪淺,同時(shí)也體驗(yàn)到了開(kāi)發(fā)軟件開(kāi)發(fā)的難度與不斷更新自己的重要性。由于我是初次涉及這類(lèi)開(kāi)發(fā)軟件,因此這其中或許還有很多的不足之處,在游戲界面不可以控制聲音開(kāi)關(guān),也不能重新開(kāi)始游戲,玩家不能選擇關(guān)卡保存游戲等等。這也是我今后所要充實(shí)之處,在這里也懇請(qǐng)各位老師能夠?qū)ξ业淖髌分该鞑蛔悴⒓右愿恼?lt;/p><p>  總體來(lái)說(shuō),這次畢業(yè)設(shè)

101、計(jì)收獲是頗豐的,這也是我在大學(xué)四年來(lái)完成的一個(gè)比較全面的實(shí)際例子。在這次設(shè)計(jì)的過(guò)程,我也查閱了大量的資料,對(duì)Android有了更加全面的認(rèn)識(shí),對(duì)于軟件工程這些輔助性的教材也鞏固了不少,也為我這次的畢業(yè)設(shè)計(jì)提供了很大的幫助,同時(shí)鍛煉并且增強(qiáng)了我這方面的能力。在今后的生活和工作中我會(huì)更好的發(fā)揮自己的優(yōu)勢(shì),學(xué)好自己選擇的這項(xiàng)專(zhuān)業(yè)技術(shù),讓自己在這條路上的明天會(huì)更好。</p><p><b>  參考文獻(xiàn)<

102、/b></p><p>  [1]黨李成.基于Google Android智能手機(jī)平臺(tái)的研究與應(yīng)用[D].安徽:安徽大學(xué),2011.</p><p>  [2]熊剛.基于Android的智能手機(jī)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:武漢理工大學(xué),2010.</p><p>  [3]楊豐盛.Android應(yīng)用開(kāi)發(fā)解密[M].北京:機(jī)械工業(yè)出版社,2010,2-109.&l

103、t;/p><p>  [4]馬越.Android的架構(gòu)與應(yīng)用[D].北京:中國(guó)地質(zhì)大學(xué),2008.</p><p>  [5]靳巖,姚尚朗.Android開(kāi)發(fā)入門(mén)與實(shí)戰(zhàn)[M].北京:人民郵電出版社,2009,200—230.</p><p>  [6]Lauren Darcey,Schane Conder.Android移動(dòng)開(kāi)發(fā)一本就夠[Z].北京:人民郵電出版社,

104、 2011.</p><p>  [7]E2ECloud工作室.深入淺出Google Android[Z].北京:人民郵電出版社,2009.</p><p>  [8]百度百科.Ophone百科[EB/OL].http://baike.baidu.com/view/2410021.htm,2011-12-29.</p><p>

105、  [9]劉寶林.Java程序設(shè)計(jì)與案例[M].北京:高等教育出版社,2004,20—200.</p><p>  [10]冀振燕,程虎.Java編譯程序技術(shù)與Java性能[J].軟件學(xué)報(bào),2000,25(17):12-15.</p><p>  [11]畢廣吉.Java程序設(shè)計(jì)實(shí)例教程[M].北京:水利水電出版社,2007,192—216.</p><p>  [

106、12]郭宏志.Android應(yīng)用開(kāi)發(fā)詳解[M].北京:電子工業(yè)出版社,2010,405—425.</p><p>  [13]李艷麗.Android時(shí)間處理過(guò)程剖析[J].長(zhǎng)春理工大學(xué)學(xué)報(bào),2010,33(3):45-52.</p><p>  [14]張利國(guó),代聞,龔海平.Android移動(dòng)開(kāi)放案例詳解[Z].北京:人民郵電出版社,2010.</p><p>  

107、[15]余志龍,鄭名杰,陳小鳳等.Google Android SDK開(kāi)發(fā)案例大全[M].北京:人民郵電出版社,2010,180-240.</p><p><b>  中文譯文</b></p><p>  面向Android手機(jī)的嵌入式代理模型</p><p><b>  摘 要</b></p><p

108、>  本文提出了一種“專(zhuān)門(mén)”為新的谷歌Android SDK設(shè)計(jì)的代理模型,在此模型下Android手機(jī)可以視為一種軟件代理。由于使用了能在不同系統(tǒng)上實(shí)施的抽象概念,這種代理模型具有比理論更實(shí)用的方法。Android是一個(gè)基于Linux的開(kāi)放式系統(tǒng),它的出現(xiàn)已經(jīng)為代理的實(shí)現(xiàn)創(chuàng)建了新的期望。這是一種在普適計(jì)算環(huán)境中實(shí)現(xiàn)嵌入式智能代理的有效方法,這種方法使代理可能運(yùn)行在不同的硬件平臺(tái)上。這一設(shè)想可以被認(rèn)為是一個(gè)真正的智能環(huán)境。<

109、/p><p>  關(guān)鍵詞:代理模型;嵌入式代理;谷歌Android</p><p><b>  引言</b></p><p>  技術(shù)在我們的生活環(huán)境中幾乎是無(wú)形的,因?yàn)樗呀?jīng)被安插在環(huán)境與提高人民生活質(zhì)量的目標(biāo)之間,用以創(chuàng)造一個(gè)智能環(huán)境,普適計(jì)算或者普及計(jì)算[9]就是這樣的范例[5]。在普適計(jì)算中,感知已成為我們社會(huì)的習(xí)慣性特征,通過(guò)網(wǎng)絡(luò)使所有的

110、固定或移動(dòng)對(duì)象的類(lèi)(嵌入式系統(tǒng))相互連接從而出現(xiàn)的電子設(shè)備。計(jì)算機(jī)技術(shù)已成為幾乎看不見(jiàn)的一個(gè)典范,它作為一個(gè)嵌入式計(jì)算機(jī)偽影的結(jié)果進(jìn)入我們的日常生活中[6]。</p><p>  實(shí)現(xiàn)普適計(jì)算的方法之一就是嵌入智能代理。一個(gè)智能代理是擁有以下屬性:自治性,社會(huì)性,反應(yīng)性和自發(fā)性的硬件或(更常見(jiàn))基于軟件的計(jì)算機(jī)系統(tǒng)[12]。嵌入式計(jì)算機(jī)含有的這些代理通常被稱(chēng)為嵌入式代理[11]。每個(gè)嵌入式代理是一個(gè)獨(dú)立的實(shí)體,這

111、樣的嵌入式代理通常允許他們作為多重嵌入代理系統(tǒng)的一部分通過(guò)網(wǎng)絡(luò)連接和其他的嵌入式代理溝通和合作。 然而,由于嵌入式計(jì)算硬件有限的處理能力和記憶能力,嵌入式應(yīng)用的發(fā)展缺乏工具和標(biāo)準(zhǔn)化,所以我們面臨的挑戰(zhàn)是如何管理和實(shí)施這種嵌入式代理所使用的智能機(jī)制。通過(guò)這些挑戰(zhàn)和發(fā)現(xiàn)的其他問(wèn)題[8],已檢測(cè)到在概念代理模式和實(shí)現(xiàn)或預(yù)期代理之間的顯著差異。</p><p>  今天,谷歌AndroidSDK的出現(xiàn)作為一個(gè)嵌入

112、式應(yīng)用的開(kāi)發(fā)平臺(tái)為手機(jī)創(chuàng)建了一個(gè)實(shí)施嵌入式智能代理的新方法。Android是一個(gè)開(kāi)源的平臺(tái),Android應(yīng)用程序的開(kāi)發(fā)是由一個(gè)新的Java庫(kù)(Java的Android庫(kù))制作的,這個(gè)庫(kù)與個(gè)人電腦的Java密切相關(guān)(J2SE)[1]。此外,還存在這樣的可能性,Android Linux內(nèi)核可以遷移到其他平臺(tái)或電子設(shè)備上,并允許這些代理在各種設(shè)備上執(zhí)行。</p><p>  總結(jié),其基本思路是提出一種由組件或抽象概

溫馨提示

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

評(píng)論

0/150

提交評(píng)論