2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

3、的軟件開發(fā)周期,采用Java語言及Eclipse開發(fā)工具,從需求分析到游戲設(shè)計(jì)、實(shí)現(xiàn)、調(diào)試,最終實(shí)現(xiàn)了推箱子游戲。并經(jīng)過嚴(yán)格的測試,可以在模擬器上正常使用。</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 課題來源及意義1</p><p>  1.3 國內(nèi)外發(fā)展現(xiàn)狀1</p><p>  1.4 本文研究主要內(nèi)容2</p>

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

11、<p>  2.3 開發(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 游戲的類框架設(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 開始游戲13</p><p>  4.2.2 聲音控制14</p><

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

15、;<p>  4.3.4 角色移動線程的實(shí)現(xiàn)18</p><p>  第五章 軟件測試19</p><p>  5.1 測試方案及其執(zhí)行19</p><p>  5.2 測試步驟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>  在我們的生活中有許多的游戲,但是游戲不同,它也會給玩家?guī)聿煌母惺芎蜕罾砟?。游戲是我們?nèi)粘I畹囊粋€(gè)必不可少的娛樂項(xiàng)目,也帶動了游戲相關(guān)產(chǎn)業(yè)市場的發(fā)展。游戲平臺經(jīng)過從游戲機(jī)到電視游戲,然后又到pc游戲,手機(jī)游戲,中間經(jīng)歷了很多的技術(shù)更新和變革。但隨著新技術(shù)的發(fā)展和我們生活水平的提高,手機(jī)開始逐漸普及,因?yàn)槭謾C(jī)是非常小

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

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

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

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

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

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

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

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

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

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

28、/p><p><b>  2.1 工具介紹</b></p><p>  2.1.1 Android簡介</p><p>  Android是基于Linux內(nèi)核的操作系統(tǒng),Android系統(tǒng)具有開放性、應(yīng)用程序無界限、應(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)行庫層和linux內(nèi)核層。</p><p>  Android應(yīng)用程序是由四個(gè)模塊構(gòu)造:Activity,Intent,Content Provider,Service[5]。當(dāng)然也不是每個(gè)Android應(yīng)用程序都必須由這四部分組成,可以根據(jù)開發(fā)者的需求進(jìn)行組合。但任何一個(gè)應(yīng)用程序模塊都必須在AndroidMainfest.xml文件中聲明使用到的這些模塊。</p>

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

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

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

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

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

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

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

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

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

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

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

42、t;p>  右鍵點(diǎn)擊計(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á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án)境變量界面,然后再找到Path的變量,雙擊或者點(diǎn)擊編輯,在變量名最前面加上%JAVA_HOME%/bin,確定即可,如圖2-3所示。</p><p>  圖2-3 JDK配置3&l

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

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

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

47、eloper Tools全都選中accept,finish就可以了,完成后會提示重啟Eclipse來加載插件,重啟,就可以用了。</p><p>  還需要將Android SDK插入到Eclipse中,打開Eclipse后,點(diǎn)擊菜單欄的Window—>Preferences然后點(diǎn)擊Android,在SDK Location輸入SDK存放的位置,點(diǎn)擊Apply則會顯示現(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>  玩家是通過對小人的移動操作來控制推動箱子的,并且玩家需要避過障礙物以及死角,才能將其推放到指定位置從而達(dá)到過關(guān)的目的。如果玩家將箱子推入死角導(dǎo)致箱子無法移動或不能移動到指定位置則闖關(guān)失敗,可以通過退出操作進(jìn)入菜單界面來重新挑戰(zhàn)游戲。</p><p>  游戲功能需求如下所示:</p><p>  游戲界面需求:簡潔美觀的用戶界面,可以帶給用戶

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

51、并且能夠推動箱子。</p><p>  顯示需求:當(dāng)所有箱子都到達(dá)指定位置后即可過關(guān),若進(jìn)入死角則無法通過過關(guān)卡,需要進(jìn)行退出操作從菜單界面來重新挑戰(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è)歡迎動畫界面,等待動畫結(jié)束或者直接點(diǎn)擊畫面后進(jìn)入游戲的菜單界面,在菜單界面,玩家可以進(jìn)行開始游戲、聲音開關(guān)、游戲說明、退出游戲操作,從菜單界面點(diǎn)擊開始游戲進(jìn)入游戲界面開始游戲,在游戲界面里,玩家還可以退到菜單界面,本游戲軟件也將遵循該流程。</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è)模塊,分別是初始化模塊、畫圖模塊、移動箱子模塊、移動小人模塊和音樂模塊,各個(gè)模塊的功能描述如下:</p><p>  初始化模塊。該模塊包括屏幕初始化和游戲第一關(guān)的初始化。屏幕初始化用于顯示歡迎動畫,游戲第一關(guān)的初始化是構(gòu)建每一關(guān)的關(guān)卡。</p><p>  畫圖模塊。該模

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

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

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

57、戲狀態(tài),便于撤銷。</p><p>  邏輯判斷過程中,需要對地圖進(jìn)行維護(hù),主要是通過小人的移動位置進(jìn)行更新的。</p><p>  小人每次移動時(shí),四周的物體如下圖:</p><p>  圖3-2 主角四周物體</p><p>  當(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è)游戲的門面。本游戲的歡迎動畫首先是木門打開如圖4-1,接著是鐵門打開如圖4-2,最后是墻打開如圖4-3,所有門打開后就會顯示一個(gè)有山有水的圖片如圖4-4。歡迎動畫界面是通過改變動畫線程中圖

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

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

61、>  圖4-6 開始游戲</p><p>  4.2.2 聲音控制</p><p>  玩家進(jìn)入菜單界面時(shí)背景聲音是開即顯示的是聲音開圖片,菜單界面的背景音樂會滾動播放,如果玩家想要關(guān)閉聲音,只需點(diǎn)擊聲音開圖片就會關(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 游戲說明</p><p>  當(dāng)玩家點(diǎn)擊游戲說明按鈕時(shí)玩家會進(jìn)入游戲說明界面,如圖4-8所示,游戲說明界面是由一張說明圖片組成,背景設(shè)置為白色,玩家如果想要離開此界面只需點(diǎn)擊屏幕即可回到菜單界面。</p><p>  圖4-8 游戲說明</p><p>  4.2.4 退出游戲

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

64、箱子都推到指定的位置后本關(guān)游戲勝利,出現(xiàn)恭喜過關(guān)的圖片,點(diǎn)擊圖片進(jìn)入下一關(guān)卡,如圖4-10所示。</p><p>  圖4-10 勝利進(jìn)行下一關(guān)</p><p>  4.3.1 地圖類的實(shí)現(xiàn)</p><p>  該類中包含了兩個(gè)三維數(shù)組,一個(gè)三維數(shù)組表示第一層地圖即地板層,另一個(gè)三維數(shù)組表示第二層地圖即建筑層。三維數(shù)組中存儲著每個(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 角色類的實(shí)現(xiàn)</p><p>  角色類對小人進(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)行繪制,若小人正在移動,直接繪制圖片,若小人靜止時(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 鍵盤監(jiān)聽線程的實(shí)現(xiàn)</p><p>  鍵盤監(jiān)聽線程會定時(shí)檢測鍵盤的狀態(tài),然后根據(jù)狀態(tài)調(diào)用相應(yīng)的處理。每次循

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

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

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

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

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

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

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

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

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

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

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

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

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

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

103、t;/p><p>  [4]馬越.Android的架構(gòu)與應(yīng)用[D].北京:中國地質(zhì)大學(xué),2008.</p><p>  [5]靳巖,姚尚朗.Android開發(fā)入門與實(shí)戰(zhàn)[M].北京:人民郵電出版社,2009,200—230.</p><p>  [6]Lauren Darcey,Schane Conder.Android移動開發(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)用開發(fā)詳解[M].北京:電子工業(yè)出版社,2010,405—425.</p><p>  [13]李艷麗.Android時(shí)間處理過程剖析[J].長春理工大學(xué)學(xué)報(bào),2010,33(3):45-52.</p><p>  [14]張利國,代聞,龔海平.Android移動開放案例詳解[Z].北京:人民郵電出版社,2010.</p><p>  

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

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

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

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

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

112、式應(yīng)用的開發(fā)平臺為手機(jī)創(chuàng)建了一個(gè)實(shí)施嵌入式智能代理的新方法。Android是一個(gè)開源的平臺,Android應(yīng)用程序的開發(fā)是由一個(gè)新的Java庫(Java的Android庫)制作的,這個(gè)庫與個(gè)人電腦的Java密切相關(guān)(J2SE)[1]。此外,還存在這樣的可能性,Android Linux內(nèi)核可以遷移到其他平臺或電子設(shè)備上,并允許這些代理在各種設(shè)備上執(zhí)行。</p><p>  總結(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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論