

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢 業(yè) 論 文</b></p><p> 題目:基于Android操作系統(tǒng)的飛機(jī)大戰(zhàn)手機(jī)游戲 </p><p> 學(xué) 號(hào): </p><p> 姓 名: </p><p>
2、 專(zhuān)業(yè)班級(jí):軟件技術(shù)(游戲方向)09-24 班</p><p> 指導(dǎo)教師: </p><p> 完成日期: 2011-12-22 </p><p> 摘要: 飛機(jī)大戰(zhàn)是滾動(dòng)屏動(dòng)作類(lèi)游戲的一種,其中融入了很多動(dòng)作類(lèi)游戲特有的技術(shù),并且畫(huà)面流暢、聲音震撼。</p>&l
3、t;p> 當(dāng)今網(wǎng)絡(luò)發(fā)展迅速,益智類(lèi)游戲被廣泛運(yùn)用到網(wǎng)絡(luò)各大平臺(tái)上。借鑒網(wǎng)絡(luò)各大平臺(tái)上的游戲,通過(guò)Eclipse Android SDK 利用Java語(yǔ)言編寫(xiě)的《飛機(jī)大戰(zhàn)》。</p><p> 本文闡述了在Android平臺(tái)上,面向?qū)ο蟮能浖_(kāi)發(fā)思想對(duì)飛機(jī)大戰(zhàn)游戲系統(tǒng)的分析、設(shè)計(jì)及實(shí)現(xiàn)過(guò)程。在項(xiàng)目的實(shí)踐過(guò)程中,主要用到了以下技術(shù):手機(jī)布局主要使用了XML設(shè)計(jì),程序及其子模塊的生命周期管理用到了Activi
4、ty流程控制,游戲的畫(huà)面更新使用的是手機(jī)的2D圖形編程。本論文的前半部分將簡(jiǎn)要介紹系統(tǒng)相關(guān)的行業(yè)信息及基礎(chǔ)的技術(shù)知識(shí),后半部分將對(duì)本人在系統(tǒng)各模塊中所使用的關(guān)鍵技術(shù)的實(shí)現(xiàn)進(jìn)行了全面的介紹。</p><p> 關(guān)鍵詞:滾屏游戲;飛機(jī)大戰(zhàn);手機(jī)游戲 ;Android平臺(tái)</p><p> Abstract: the World War II aircraft rolling screen
5、action game one, incorporating many action games unique technology, and smooth picture, sound rock.The network is developing rapidly, a puzzle game is widely applied to the network the platform. From the network the plat
6、form game, through the Eclipse Android SDK Java language prepared by the" World War II aircraft".</p><p> This paper elaborated on the platform of Android, object-oriented software development tho
7、ught to the World War II aircraft game system analysis, design and implementation process. In the practice of the project process, the main use of the following techniques: the layout of the main mobile phone using XML d
8、esign, procedures and sub module life cycle management used in the Activity process control, the game screen is updated using the mobile phone 2D graphics programming. In this paper, the fro</p><p> Key wor
9、ds: scrolling game; World War II aircraft; mobile phone games; Android platform</p><p> 目 錄</p><p> 緒論…………………………………………………………………5</p><p> 相關(guān)研究綜述…………………………………………………………6</
10、p><p> ?。ㄒ唬╆P(guān)于java語(yǔ)言………………………………………………6</p><p> (二) 關(guān)于Android……………………………………………………8</p><p> 三、系統(tǒng)開(kāi)發(fā)環(huán)境及相關(guān)技術(shù)……………………………………………10</p><p> 四、游戲所需類(lèi)的分析與實(shí)現(xiàn)……………………………………………11</
11、p><p> (一)游戲的框架簡(jiǎn)介…………………………………………………11</p><p> ?。ǘ┯螒蚪缑娴目蚣芎?jiǎn)介……………………………………………12</p><p> ?。ㄈ└鱾€(gè)類(lèi)的簡(jiǎn)要介紹…………………………………………………13</p><p> 五、游戲界面展示…………………………………………………………22</p&
12、gt;<p> 總結(jié)……………………………………………………………………27</p><p> 致謝………………………………………………………………………28</p><p> 參考文獻(xiàn)…………………………………………………………………29</p><p><b> 前 言</b></p><p>
13、; 隨著3G移動(dòng)網(wǎng)絡(luò)應(yīng)用的推廣,手機(jī)游戲的規(guī)模、復(fù)雜程度日益增強(qiáng);其技術(shù)手段、設(shè)計(jì)思想、系統(tǒng)體系結(jié)構(gòu)都發(fā)生了深刻的變化。手機(jī)操作系統(tǒng)正朝著高處理能力、多功能、智能化的方向發(fā)展。近年來(lái),網(wǎng)絡(luò)文化市場(chǎng)發(fā)展很快,隨著互聯(lián)網(wǎng)的迅速普及、寬帶的接入社區(qū)和家庭,我國(guó)網(wǎng)絡(luò)游戲市場(chǎng)發(fā)展迅速并進(jìn)入了一個(gè)高速增長(zhǎng)期,并已經(jīng)創(chuàng)造了較大的產(chǎn)值,帶動(dòng)了相關(guān)產(chǎn)業(yè)的發(fā)展。</p><p> 現(xiàn)在,游戲的類(lèi)型也由最初的動(dòng)作游戲和簡(jiǎn)單益智游戲
14、向更復(fù)雜、更高智力,更具真實(shí)性的游戲發(fā)展。目前的游戲種類(lèi)繁多,包括角色扮演、仿真模擬類(lèi)、人工智能、休閑類(lèi)、渲染類(lèi)、網(wǎng)絡(luò)類(lèi)等等,甚至有的游戲包含了好幾種類(lèi)型。</p><p> 機(jī)戰(zhàn)類(lèi)游戲一直以來(lái)都很多。但仿真模擬類(lèi)的游戲卻有不少,現(xiàn)在休閑類(lèi)的技術(shù)廣泛的應(yīng)用到很多游戲里面等等。</p><p> 飛機(jī)大戰(zhàn)游戲是廣泛人士喜愛(ài)的游戲,通過(guò)上下左右鍵控制方向A鍵發(fā)射子彈,游戲中有加血道具與子彈
15、升級(jí)道具。并有關(guān)卡BOSS等著與你死戰(zhàn)。</p><p> 鑒于游戲的對(duì)社會(huì)的巨大影響力和光輝的發(fā)展前景,以及我們自己對(duì)游戲愛(ài)好,這次的畢業(yè)設(shè)計(jì)我們決定嘗試設(shè)計(jì)和制作一個(gè)具有一定可玩性的游戲。期間,我們收集相關(guān)資料、研究同類(lèi)型的游戲、閱讀有關(guān)這類(lèi)型游戲和相關(guān)技術(shù)性的書(shū)籍,通過(guò)制作游戲項(xiàng)目來(lái)熟悉游戲的制作思路、過(guò)程,加深對(duì)面向?qū)ο缶幊陶Z(yǔ)言的掌握,培養(yǎng)自己的耐心、細(xì)心和考慮問(wèn)題的全面性,同時(shí)解決本課題要完成的問(wèn)題,
16、如游戲框架如何構(gòu)建,如何完善游戲的各種功能,如何能讓游戲有音樂(lè)和音效的實(shí)現(xiàn),如何能讓游戲過(guò)關(guān),如何能讓游戲界面美觀,看起來(lái)舒服感覺(jué)。</p><p><b> 一、緒論</b></p><p><b> 1.1 研究?jī)?nèi)容</b></p><p> Android平臺(tái)飛機(jī)大戰(zhàn)是基于Android手機(jī)平臺(tái),運(yùn)用Java語(yǔ)
17、言編寫(xiě)的一款手機(jī)滾屏類(lèi)射擊游戲。</p><p><b> 1.2 研究意義</b></p><p> Android平臺(tái)手機(jī)游戲的開(kāi)發(fā)的意義在于活動(dòng)人的思維,使人精神放松,鍛煉人的反應(yīng)能力與應(yīng)變能力。</p><p> 1.3研究現(xiàn)狀和發(fā)展趨勢(shì)</p><p> 據(jù)Gartner最新數(shù)據(jù)顯示,2010年第二、三
18、季度全球智能手機(jī)銷(xiāo)售繼續(xù)大幅增長(zhǎng),其中第三季度安卓占全球智能手機(jī)市場(chǎng)的25.5%,僅次于塞班,成為第二大智能手機(jī)系統(tǒng)。2010第二、三季度與去年同期相比,增度分別是15.4%及22%,增勢(shì)迅猛。而塞班系統(tǒng)較09年的市場(chǎng)份額,盡管終端銷(xiāo)量有大幅度提升,但增勢(shì)下滑10%,形勢(shì)非常嚴(yán)峻。其他操作系統(tǒng)的表現(xiàn)則要平穩(wěn)很多。</p><p> 安卓是首款開(kāi)源代碼的操作系統(tǒng),采用Linux內(nèi)核,開(kāi)放手機(jī)聯(lián)盟(OHA)成員可以
19、任意使用和修改安卓的SDK軟件包。系統(tǒng)的開(kāi)源性使其具有良好的拓展性,一方面,為眾多移動(dòng)應(yīng)用開(kāi)發(fā)者提供了良好的系統(tǒng)性平臺(tái),有利于移動(dòng)應(yīng)用的集合;另一方面,終端廠(chǎng)商可以針對(duì)自身的特殊需要“定制化開(kāi)發(fā)”。與此相比,盡管2010年2月,塞班基本完成開(kāi)源工作,但由于代碼臃腫,用戶(hù)界面設(shè)計(jì)缺失,塞班的開(kāi)源并無(wú)實(shí)際意義,錯(cuò)失發(fā)展良機(jī)。</p><p> 我們認(rèn)為,安卓在全球市場(chǎng)的成長(zhǎng)壯大,塞班市場(chǎng)份額不斷下跌已成不爭(zhēng)事實(shí)。安
20、卓操作系統(tǒng)發(fā)展迅猛主要得益于免費(fèi)、開(kāi)源和良好產(chǎn)業(yè)運(yùn)作策略,這三點(diǎn)為安卓在智能手機(jī)市場(chǎng)贏得更多的發(fā)展機(jī)遇。系統(tǒng)的免費(fèi)讓更多的廠(chǎng)商加入,推動(dòng)了份額的上升;代碼的開(kāi)源讓更多的開(kāi)發(fā)者進(jìn)入應(yīng)用開(kāi)發(fā);應(yīng)用的豐富吸引了更多用戶(hù)選擇,這也是谷歌值得眾多廠(chǎng)商學(xué)習(xí)的地方。此外,谷歌通過(guò)OHA聯(lián)合眾多廠(chǎng)商進(jìn)行系統(tǒng)研發(fā),不斷更新版本,將系統(tǒng)應(yīng)用推廣到更多的終端產(chǎn)品中,確保用戶(hù)體驗(yàn)持續(xù)改善。</p><p><b> 二、相關(guān)
21、研究綜述</b></p><p> 2.1 關(guān)于java語(yǔ)言</p><p><b> Java編程特點(diǎn)</b></p><p> 1、Java語(yǔ)言是簡(jiǎn)單的。Java語(yǔ)言的語(yǔ)法與C語(yǔ)言和C++語(yǔ)言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java。另一方面,Java丟棄了C++ 中很少使用的、很難理解的、令人迷惑的那些特性,如操
22、作符重載、多繼承、自動(dòng)的強(qiáng)制類(lèi)型轉(zhuǎn)換。特別地,Java語(yǔ)言不使用指針,并提供了自動(dòng)的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂(yōu)。 </p><p> 2、Java語(yǔ)言是一個(gè)面向?qū)ο蟮?。Java語(yǔ)言提供類(lèi)、接口和繼承等原語(yǔ),為了簡(jiǎn)單起見(jiàn),只支持類(lèi)之間的單繼承,但支持接口之間的多繼承,并支持類(lèi)與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)。Java語(yǔ)言全面支持動(dòng)態(tài)綁定,而C++ 語(yǔ)言只對(duì)虛函數(shù)使用動(dòng)態(tài)綁定??傊?/p>
23、,Java語(yǔ)言是一個(gè)純的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。 </p><p> 3、Java語(yǔ)言是分布式的。Java語(yǔ)言支持Internet應(yīng)用的開(kāi)發(fā),在基本的Java應(yīng)用編程接口中有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口(java net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類(lèi)庫(kù),包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也是開(kāi)發(fā)分布式應(yīng)用的重要手段。 </p>
24、;<p> 4、Java語(yǔ)言是健壯的。Java的強(qiáng)類(lèi)型機(jī)制、異常處理、廢料的自動(dòng)收集等是Java程序健壯性的重要保證。對(duì)指針的丟棄是Java的明智選擇。Java的安全檢查機(jī)制使得Java更具健壯性。 </p><p> 5、Java語(yǔ)言是安全的。Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java提供了一個(gè)安全機(jī)制以防惡意代碼的攻擊。除了Java語(yǔ)言具有的許多安全特性以外,Java對(duì)通過(guò)網(wǎng)絡(luò)下載的類(lèi)具有
25、一個(gè)安全防范機(jī)制(類(lèi)ClassLoader),如分配不同的名字空間以防替代本地的同名類(lèi)、字節(jié)代碼檢查,并提供安全管理機(jī)制(類(lèi)SecurityManager)讓Java應(yīng)用設(shè)置安全哨兵。 </p><p> 6、Java語(yǔ)言是體系結(jié)構(gòu)中立的。Java程序(后綴為java的文件)在Java平臺(tái)上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件), 然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。這種途徑適合
26、于異構(gòu)的網(wǎng)絡(luò)環(huán)境和軟件的分發(fā)。 </p><p> 7、Java語(yǔ)言是可移植的。這種可移植性來(lái)源于體系結(jié)構(gòu)中立性,另外,Java還嚴(yán)格規(guī)定了各個(gè)基本數(shù)據(jù)類(lèi)型的長(zhǎng)度。Java系統(tǒng)本身也具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSI C實(shí)現(xiàn)的。 </p><p> 8、Java語(yǔ)言是解釋型的。如前所述,Java程序在Java平臺(tái)上被編譯為字節(jié)碼格式,然
27、后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。在運(yùn)行時(shí),Java平臺(tái)中的Java解釋器對(duì)這些字節(jié)碼進(jìn)行解釋執(zhí)行,執(zhí)行過(guò)程中需要的類(lèi)在聯(lián)接階段被載入到運(yùn)行環(huán)境中。 </p><p> 9、Java是高性能的。與那些解釋型的高級(jí)腳本語(yǔ)言相比,Java的確是高性能的。事實(shí)上,Java的運(yùn)行速度隨著JIT(Just-In-Time)編譯器技術(shù)的發(fā)展越來(lái)越接近于C++。 </p><p> 10
28、、Java語(yǔ)言是多線(xiàn)程的。在Java語(yǔ)言中,線(xiàn)程是一種特殊的對(duì)象,它必須由Thread類(lèi)或其子(孫)類(lèi)來(lái)創(chuàng)建。通常有兩種方法來(lái)創(chuàng)建線(xiàn)程:其一,使用型構(gòu)為T(mén)hread(Runnable) 的構(gòu)造子將一個(gè)實(shí)現(xiàn)了Runnable接口的對(duì)象包裝成一個(gè)線(xiàn)程,其二,從Thread類(lèi)派生出子類(lèi)并重寫(xiě)run方法,使用該子類(lèi)創(chuàng)建的對(duì)象即為線(xiàn)程。值得注意的是Thread類(lèi)已經(jīng)實(shí)現(xiàn)了Runnable接口,因此,任何一個(gè)線(xiàn)程均有它的run方法,而run方法中包
29、含了線(xiàn)程所要運(yùn)行的代碼。線(xiàn)程的活動(dòng)由一組方法來(lái)控制。Java語(yǔ)言支持多個(gè)線(xiàn)程的同時(shí)執(zhí)行,并提供多線(xiàn)程之間的同步機(jī)制(關(guān)鍵字為synchronized)。 </p><p> 11、Java語(yǔ)言是動(dòng)態(tài)的。Java語(yǔ)言的設(shè)計(jì)目標(biāo)之一是適應(yīng)于動(dòng)態(tài)變化的環(huán)境。Java程序需要的類(lèi)能夠動(dòng)態(tài)地被載入到運(yùn)行環(huán)境,也可以通過(guò)網(wǎng)絡(luò)來(lái)載入所需要的類(lèi)。這也有利于軟件的升級(jí)。另外,Java中的類(lèi)有一個(gè)運(yùn)行時(shí)刻的表示,能進(jìn)行運(yùn)行時(shí)刻的類(lèi)
30、型檢查。 </p><p><b> Java語(yǔ)言的優(yōu)點(diǎn)</b></p><p> 1 java最初是為對(duì)家用電器進(jìn)行集成控制而設(shè)計(jì)的一種語(yǔ)言,因此它必須簡(jiǎn)單明了。Java語(yǔ)言的簡(jiǎn)單性主要體現(xiàn)在以下三個(gè)方面:1.Java的風(fēng)格類(lèi)似于C++,因而C++程序員是非常熟悉的。從某種意義上講,Java語(yǔ)言是C及C++語(yǔ)言的一個(gè)變種,因此,C++程序員可以很快就掌握J(rèn)av
31、a編程技術(shù)。2.Java摒棄了C++中容易引發(fā)程序錯(cuò)誤的地方,如指針和內(nèi)存管理。3.Java提供了豐富的類(lèi)庫(kù)。</p><p> 2 面向?qū)ο罂梢哉f(shuō)是Java最重要的特性。Java語(yǔ)言的設(shè)計(jì)完全是面向?qū)ο蟮?,它不支持?lèi)似C語(yǔ)言那樣的面向過(guò)程的程序設(shè)計(jì)技術(shù)。Java支持靜態(tài)和動(dòng)態(tài)風(fēng)格的代碼繼承及重用。單從面向?qū)ο蟮奶匦詠?lái)看,Java類(lèi)似于SmallTalk,但其它特性、尤其是適用于分布式計(jì)算環(huán)境的特性遠(yuǎn)遠(yuǎn)超越了
32、SmallTalk。</p><p> 3 另外,為了建立Java作為網(wǎng)絡(luò)的一個(gè)整體,Java將它的程序編譯成一種結(jié)構(gòu)中立的中間文件格式。只要有Java運(yùn)行系統(tǒng)的機(jī)器都能執(zhí)行這種中間代碼。現(xiàn)在,Java運(yùn)行系統(tǒng)有Solaris2.4(SPARC),Win32系統(tǒng)(Windows95和WindowsNT)等.Java源程序被編譯成一種高層次的與機(jī)器無(wú)關(guān)的byte-code格式語(yǔ)言,這種語(yǔ)言被設(shè)計(jì)在虛擬機(jī)上運(yùn)行,
33、由機(jī)器相關(guān)的運(yùn)行調(diào)試器實(shí)現(xiàn)執(zhí)行。</p><p> 2.2 關(guān)于Android </p><p> 2.2.1 android構(gòu)架</p><p> Android作為一個(gè)移動(dòng)設(shè)備的平臺(tái),其軟件層次結(jié)構(gòu)包括了一個(gè)操作系統(tǒng)(OS),中間件(MiddleWare)和應(yīng)用程序(Application)。根據(jù)Android的軟件框圖,其軟件層次結(jié)構(gòu)自下而上分為以下幾個(gè)
34、層次:</p><p> 圖2.2 Android系統(tǒng)架構(gòu)</p><p> 2.2.2 XUL界面布局</p><p> XUL 是一種基于 XML 的語(yǔ)言,因此需要對(duì) XML(特別是 XML 名稱(chēng)空間)很熟悉。XUL是英文“XML User Interface Language”的首字母縮寫(xiě)。顧名思義,它是一種應(yīng)用XML來(lái)描述使用者界面的標(biāo)示語(yǔ)言。 <
35、;/p><p> 2.2.3 Android的Activity組件</p><p> Activity,一般代表手機(jī)屏幕的一屏,相當(dāng)于瀏覽器的一個(gè)頁(yè)面。在Activity中添加view,實(shí)現(xiàn)應(yīng)用界面和用戶(hù)交互。一個(gè)應(yīng)用程序一般由多個(gè)Activity構(gòu)成,這些Activity之間可互相跳轉(zhuǎn),可進(jìn)行頁(yè)面間的數(shù)據(jù)傳遞。每個(gè)Activity都有自己的生命周期。</p><p&g
36、t; 2.2.4 SQLite數(shù)據(jù)庫(kù)</p><p> 在Android平臺(tái)上,集成了一個(gè)嵌入式關(guān)系型數(shù)據(jù)庫(kù)—SQLite。SQLite是支持結(jié)構(gòu)化查詢(xún)的輕量級(jí)數(shù)據(jù)庫(kù),能很好得適應(yīng)于移動(dòng)設(shè)備的應(yīng)用。</p><p> Android提供了一個(gè)名為SQLiteDatabase的類(lèi),該類(lèi)封裝了一些操作數(shù)據(jù)庫(kù)的API,使用該類(lèi)可以完成對(duì)數(shù)據(jù)進(jìn)行添加(Create)、查詢(xún)(Retrieve)
37、、更新(Update)和刪除(Delete)操作(這些操作簡(jiǎn)稱(chēng)為CRUD)。</p><p> 2.2.5 Android 2D圖形編程 </p><p> 1、Simple Graphics in View:就是直接使用Android已經(jīng)實(shí)現(xiàn)的一些畫(huà)圖操作,比如說(shuō)images,shapes,colors,pre-defined animation等等。這種方式只能畫(huà)靜態(tài)或者極為簡(jiǎn)單的
38、2D圖畫(huà),對(duì)于實(shí)時(shí)性很強(qiáng)的動(dòng)畫(huà),高品質(zhì)的游戲都是沒(méi)法實(shí)現(xiàn)的。2、Canvas:首先我們要明白這個(gè)Canvas是一個(gè)2D的概念,是在Skia中定義的。也就是說(shuō)在這個(gè)方式下還是說(shuō)的畫(huà)2D圖形。</p><p> 三、系統(tǒng)開(kāi)發(fā)環(huán)境及相關(guān)技術(shù)</p><p> 3.1 Android開(kāi)發(fā)環(huán)境介紹</p><p> Android的上層應(yīng)用程序是用Java語(yǔ)言開(kāi)發(fā),同時(shí)
39、還需要基于Dalvik虛擬機(jī),所以,Google公司推薦使用主流的Java繼承開(kāi)發(fā)環(huán)境Eclipse。只有Eclipse還不夠,因?yàn)槭鞘褂肑ava語(yǔ)言進(jìn)行開(kāi)發(fā),還應(yīng)該有由SUN公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android的應(yīng)用程序開(kāi)發(fā)和Java開(kāi)發(fā)有較大區(qū)別的,所以還需要有Google提供的Android SDK。同時(shí),還需要在Eclipse安裝ADT,為Andro
40、id開(kāi)發(fā)提供開(kāi)發(fā)工具的升級(jí)或者變更,是Eclipse下開(kāi)發(fā)工具的升級(jí)下載的工具。</p><p> (1) Java SDK</p><p> (2) Eclipse</p><p> (3) Android SDK</p><p> 3.2 Android開(kāi)發(fā)平臺(tái)搭建</p><p> Android開(kāi)發(fā)
41、平臺(tái)搭建步驟:</p><p> ?、偈紫鹊絟ttp://www.eclipse.org/downloads/下載Eclipse集成開(kāi)發(fā)環(huán)境并且解壓,這里推薦下載Java EE 集成版本,可以為平臺(tái)的搭建省下不少工作。接著再去http://java.sun.com/javase/downloads/index.jsp 站點(diǎn)下載SDK后安裝,下載http://dl.google.com/android/androi
42、d-sdk-windows-1.5_r1.zip,Android SDK1.5后解壓。第一步下載工序就結(jié)束了。</p><p> ?、陔p擊Eclipse解壓后目錄中的eclipse.exe然后啟動(dòng),選擇Eclipse菜單中的Help-> Install New Software-> 選項(xiàng)卡上的Available Software,點(diǎn)擊右側(cè)的“Add”輸入http://dl-ssl.google.com
43、/android/eclipse/后確定,然后在“Work with”下拉菜單中選擇剛才輸入的網(wǎng)址。過(guò)一會(huì)就會(huì)出現(xiàn)一個(gè)Developer Tools選項(xiàng),勾上以后點(diǎn)擊Next以后Eclipse會(huì)自動(dòng)網(wǎng)上查找Android 開(kāi)發(fā)工具插件,然后找到Android DDMS和Android Development Tools,選中這兩個(gè)點(diǎn)擊Finish,Eclipse就會(huì)自動(dòng)下載并安裝Android插件了,最后會(huì)提示重啟Eclipse。<
44、;/p><p> ?、壑貑⒑筮x擇Eclipse菜單中的Windows-> Preferences 在左側(cè)的Android項(xiàng)目中SDK Location中填入Android SDK解壓后的目錄,然后點(diǎn)擊Apply。</p><p> 在WindowsXP的系統(tǒng)變量中的path變量中添加一個(gè)值,該值指向解壓后的Android SDK目錄下的tools文件夾。</p><
45、p> 四、游戲所需類(lèi)的分析與實(shí)現(xiàn)</p><p> 4.1 游戲的框架簡(jiǎn)介</p><p> 圖4.1 游戲的類(lèi)框架</p><p> 1、啟動(dòng)游戲,在PlaneActivity中會(huì)先進(jìn)入加載界面ProcessView,然后后臺(tái)加載歡迎界面WelcomView,當(dāng)加載完成后屏幕切換到歡迎界面,并啟動(dòng)WelcoeViewThread線(xiàn)程生成歡迎界面的動(dòng)畫(huà)
46、效果。</p><p> 2、當(dāng)歡迎動(dòng)畫(huà)播放完成后屏幕會(huì)停留在選擇狀態(tài)等待玩家操作。</p><p> 3、當(dāng)玩家單擊“幫助”時(shí)將初始化幫助界面HelpView并將其顯示出來(lái)。</p><p> 4、當(dāng)玩家大幾“開(kāi)始游戲”按鈕時(shí),屏幕將顯示加載界面。后臺(tái)將初始化游戲界面GameView,在地圖信息類(lèi)Maps中初始化此關(guān)卡中的所有敵機(jī)、變槍的道具、補(bǔ)血的道具等。
47、</p><p> 5、初始化游戲界面的同時(shí)啟動(dòng)GameViewBackGroundThread線(xiàn)程,以初始滾動(dòng)游戲界面的背景圖片。</p><p> 6、當(dāng)玩家發(fā)射炮彈或敵機(jī)發(fā)射炮彈時(shí)會(huì)創(chuàng)建Bullet對(duì)象,并將其添加到已知的容器中。</p><p> 7、在游戲過(guò)程中如果需要顯示爆炸效果,會(huì)創(chuàng)建爆炸效果類(lèi)Explode以及ExplodeThread類(lèi)來(lái)渲染
48、爆炸效果。</p><p> 8、游戲中所有類(lèi)中使用的常量全部封裝到常量類(lèi)ConstantUtil類(lèi)中。</p><p> 4.2 游戲界面的框架簡(jiǎn)介</p><p> 圖4.2 游戲界面的類(lèi)框架</p><p> 1、GameView在初始化是會(huì)從Maps讀取當(dāng)前關(guān)卡的地圖信息,包括敵機(jī)、補(bǔ)血道具、換槍道具等。</p>
49、<p> 2、在界面初始化的同時(shí),還需要啟動(dòng)MoveThread線(xiàn)程、GameViewBackGroundThread線(xiàn)程、KeyThread線(xiàn)程以及ExplodeThread線(xiàn)程。</p><p> 3、GameView會(huì)在適當(dāng)?shù)臅r(shí)候從Plane類(lèi)中讀取主戰(zhàn)飛機(jī)的信息進(jìn)行繪制。</p><p> 4、當(dāng)主戰(zhàn)飛機(jī)發(fā)射子彈時(shí),會(huì)創(chuàng)建Bullet對(duì)象并添加到指定容器中,此時(shí)M
50、oveThread同樣需要定時(shí)改變子彈對(duì)象的位置。</p><p> 5、在以上過(guò)程中,全部都需要PianeActivity的管理與ConstanUtil的參與。</p><p> 4.3各個(gè)類(lèi)的簡(jiǎn)要介紹</p><p><b> 共有類(lèi):</b></p><p> Activity的實(shí)現(xiàn)類(lèi)PlaneActivi
51、ty,該類(lèi)是通過(guò)擴(kuò)展基類(lèi)Activity實(shí)現(xiàn)的,是整個(gè)游戲程序的入口。</p><p> 鍵盤(pán)監(jiān)聽(tīng)線(xiàn)程KeyThread,該類(lèi)為手機(jī)鍵盤(pán)的監(jiān)聽(tīng)線(xiàn)程,每隔一段時(shí)間讀取一次鍵盤(pán)的狀態(tài)值,并根據(jù)當(dāng)前鍵盤(pán)狀態(tài)做出相應(yīng)的操作</p><p> package wyf.ytl;</p><p> public class KeyThread extends Thread
52、{</p><p> int span = 20;// 睡眠的毫秒數(shù)</p><p> int countMove = 0;// 飛機(jī)移動(dòng)的計(jì)數(shù)器</p><p> int countFine = 0;// 飛機(jī)發(fā)子彈的計(jì)數(shù)器</p><p> int moveN = 3;// 每三次循環(huán)移動(dòng)一下</p><p&g
53、t; int fineN = 5;// 每五次循環(huán)發(fā)一次子彈</p><p> PlaneActivity activity;// Activity的引用</p><p> private boolean flag = true;// 循環(huán)標(biāo)志</p><p> int action;// 鍵盤(pán)狀態(tài)碼</p><p> privat
54、e boolean KEY_UP = false;// 向上鍵是否被按下</p><p> private boolean KEY_DOWN = false;// 向下鍵是否被按下</p><p> private boolean KEY_LEFT = false;// 向左的鍵被按下</p><p> private boolean KEY_RIGHT =
55、false;// 向右的鍵被按下</p><p> private boolean KEY_A = false;// A的鍵被按下</p><p> private boolean KEY_B = false;// B的鍵被按下</p><p> public KeyThread(PlaneActivity activity) {// 構(gòu)造器</p>
56、;<p> this.activity = activity;</p><p><b> }</b></p><p> public void setFlag(boolean flag) {// 設(shè)置標(biāo)志位</p><p> this.flag = flag;</p><p><b>
57、}</b></p><p> public void run() {// 重寫(xiě)的方法</p><p> while (flag) {</p><p> action = activity.action;// 得到當(dāng)前鍵盤(pán)的狀態(tài)碼</p><p> if (action == 19) {// 上</p><
58、;p> KEY_UP = true;</p><p><b> } else {</b></p><p> KEY_UP = false;</p><p><b> }</b></p><p> if (action == 20) {// 下</p><p>
59、 KEY_DOWN = true;</p><p><b> } else {</b></p><p> KEY_DOWN = false;</p><p><b> }</b></p><p> if (action == 21) {// 左</p><p>
60、KEY_LEFT = true;</p><p><b> } else {</b></p><p> KEY_LEFT = false;</p><p><b> }</b></p><p> if (action == 22) {// 右</p><p> KE
61、Y_RIGHT = true;</p><p><b> } else {</b></p><p> KEY_RIGHT = false;</p><p><b> }</b></p><p> if (action == 29) {// A</p><p> KE
62、Y_A = true;</p><p><b> } else {</b></p><p> KEY_A = false;</p><p><b> }</b></p><p> if (activity.gameView.status == 1 || activity.gameView.s
63、tatus == 3) {</p><p> if (countMove == 0) {// 每moveN次移動(dòng)一次</p><p> if (KEY_UP == true) {// 向上鍵被按下</p><p> // 檢測(cè)在不碰到上邊界的情況下</p><p> if (!((activity.gameView.plane.get
64、Y() - activity.gameView.plane</p><p> .getSpan()) < ConstantUtil.top)) {</p><p> // 向上移動(dòng)10個(gè)像素</p><p> activity.gameView.plane</p><p> .setY(activity.gameView.pla
65、ne.getY()</p><p> - activity.gameView.plane.getSpan());</p><p><b> }</b></p><p> // 通過(guò)dir更換圖標(biāo)</p><p> activity.gameView.plane.setDir(ConstantUtil.DIR_UP
66、);</p><p><b> }</b></p><p> if (KEY_DOWN == true) {// 向下鍵被按下</p><p> if (!((activity.gameView.plane.getY() + activity.gameView.plane</p><p> .getSpan())
67、 > ConstantUtil.screenHeight</p><p> - activity.gameView.plane.bitmap1.getHeight())) {</p><p> activity.gameView.plane</p><p> .setY(activity.gameView.plane.getY()</p>
68、<p> + activity.gameView.plane.getSpan());</p><p><b> }</b></p><p> activity.gameView.plane.setDir(ConstantUtil.DIR_DOWN);</p><p><b> }</b></p>
69、;<p> if (KEY_LEFT == true) {// 向左鍵被按下</p><p> if (!((activity.gameView.plane.getX() - activity.gameView.plane</p><p> .getSpan()) < -40)) {</p><p> activity.gameView.
70、plane</p><p> .setX(activity.gameView.plane.getX()</p><p> - activity.gameView.plane.getSpan());</p><p><b> }</b></p><p><b> }</b></p>
71、<p> if (KEY_RIGHT == true) {// 向右鍵被按下</p><p> if (!((activity.gameView.plane.getX() + activity.gameView.plane</p><p> .getSpan()) > ConstantUtil.screenWidth</p><p> -
72、 activity.gameView.plane.bitmap1.getWidth())) {</p><p> activity.gameView.plane</p><p> .setX(activity.gameView.plane.getX()</p><p> + activity.gameView.plane.getSpan());</p&g
73、t;<p><b> }</b></p><p><b> }</b></p><p><b> //水平態(tài)</b></p><p> if (KEY_RIGHT == false && KEY_LEFT == false</p><p>
74、 && KEY_DOWN == false && KEY_UP == false) {</p><p> activity.gameView.plane.setDir(ConstantUtil.DIR_STOP);</p><p><b> }</b></p><p> //如果按下a鍵發(fā)射子彈</
75、p><p> if (countFine == 0) {// 每fineN發(fā)一次子彈</p><p> if (KEY_A == true) {// A鍵被按下</p><p> activity.gameView.plane.fire();</p><p><b> }</b></p><p&g
76、t;<b> }</b></p><p><b> }</b></p><p> countMove = (countMove + 1) % moveN;</p><p> countFine = (countFine + 1) % fineN;</p><p><b> }&l
77、t;/b></p><p><b> try {</b></p><p> Thread.sleep(span);// 睡覺(jué)指定毫秒數(shù)</p><p> } catch (Exception e) {</p><p> e.printStackTrace();</p><p><
78、;b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 常量類(lèi)ConstantUtil,游戲中用到的所有的常量全部封裝到該類(lèi)中,便于管理與維護(hù)。</
79、p><p><b> 輔助界面相關(guān)類(lèi)</b></p><p> 歡迎界面WelcomeView,該類(lèi)為游戲歡迎界面的實(shí)現(xiàn)類(lèi),主要負(fù)責(zé)歡迎界面的繪制工作。</p><p> 歡迎界面的動(dòng)畫(huà)實(shí)現(xiàn)類(lèi)WelcomeViewThread,該類(lèi)是為WelcomeView服務(wù)的線(xiàn)程類(lèi),主要負(fù)責(zé)歡迎界面中動(dòng)畫(huà)的生成。</p><p>
80、 幫助界面HelpView,該類(lèi)非常簡(jiǎn)單,主要負(fù)責(zé)繪制幫助界面的相關(guān)圖片。</p><p> 加載界面ProcessView,為了使游戲更加人性化,給玩家更好的體驗(yàn),在長(zhǎng)時(shí)間加載某些資源時(shí),需要給出加載界面以提示玩家后臺(tái)加載的進(jìn)度。</p><p> 勝利界面WinView,該類(lèi)為玩家順利過(guò)關(guān)后的恭喜過(guò)關(guān)界面。</p><p> 失敗界面FailView,該
81、類(lèi)為主戰(zhàn)飛機(jī)死亡后顯示的失敗界面,在該界面中玩家可以選擇重新開(kāi)始游戲或者退出游戲。</p><p><b> 游戲界面相關(guān)類(lèi)</b></p><p> 游戲主界面類(lèi)GameView,該類(lèi)為游戲菜單界面的實(shí)現(xiàn)類(lèi),負(fù)責(zé)界面繪制工作。</p><p> 背景滾動(dòng)線(xiàn)程GameViewBackGroundThread,該類(lèi)主要負(fù)責(zé)背景的滾動(dòng)、敵機(jī)以
82、及各種道具的出現(xiàn)。</p><p> package wyf.ytl;</p><p><b> /**</b></p><p><b> * </b></p><p> * 該類(lèi)為背景滾動(dòng)、物品出現(xiàn)的類(lèi)</p><p><b> * </b>
83、</p><p><b> */</b></p><p> public class GameViewBackGroundThread extends Thread {</p><p> private int sleepSpan = 100;// 睡眠的毫秒數(shù)</p><p> private int span
84、 = 3;// 圖片移動(dòng)的步長(zhǎng)</p><p> private boolean flag = true;// 循環(huán)標(biāo)志位</p><p> GameView gameView;// GameView的引用</p><p> long touchTime = 0;// 當(dāng)前所到的時(shí)間</p><p> public GameViewB
85、ackGroundThread(GameView gameView) {// 構(gòu)造器</p><p> this.gameView = gameView;</p><p><b> }</b></p><p> public void setFlag(boolean flag) {// 設(shè)置標(biāo)記位</p><p>
86、 this.flag = flag;</p><p><b> }</b></p><p> public void run() {</p><p> while (flag) {</p><p> if (gameView.status == 1) {// 游戲中時(shí)</p><p>
87、 gameView.backGroundIX -= span;</p><p> if (gameView.backGroundIX < -ConstantUtil.pictureWidth) {</p><p> gameView.i = (gameView.i + 1) % ConstantUtil.pictureCount;</p><p> ga
88、meView.backGroundIX += ConstantUtil.pictureWidth;</p><p><b> }</b></p><p> gameView.cloudX -= span;// 移動(dòng)云彩</p><p> if (gameView.cloudX < -1000) {</p><p&
89、gt; gameView.cloudX = 1000;</p><p><b> }</b></p><p> touchTime++;// 時(shí)間自加</p><p> // 滾動(dòng)地圖的時(shí)候</p><p><b> try {</b></p><p> for
90、(EnemyPlane ep : gameView.enemyPlanes) {// 到時(shí)間出現(xiàn)敵機(jī)</p><p> if (ep.touchPoint == touchTime) {</p><p> ep.status = true;</p><p> if (ep.type == 3) {// 到關(guān)口了</p><p> ga
91、meView.status = 3;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> for (Life l : gameView.lifes) {// 到時(shí)間出現(xiàn)血塊</p>
92、;<p> if (l.touchPoint == touchTime) {</p><p> l.status = true;</p><p><b> }</b></p><p><b> }</b></p><p> for (ChangeBullet cb : gam
93、eView.changeBollets) {// 到時(shí)間出現(xiàn)吃了改變槍的物體</p><p> if (cb.touchPoint == touchTime) {</p><p> cb.status = true;</p><p><b> }</b></p><p><b> }</b>
94、</p><p> } catch (Exception e) {// 捕獲異常</p><p> e.printStackTrace();// 打印異常信息</p><p><b> }</b></p><p> // 一分多鐘后游戲結(jié)束</p><p> if (touchTime
95、== 641) {// 到關(guān)口時(shí)</p><p> this.flag = false;</p><p><b> }</b></p><p><b> }</b></p><p><b> try {</b></p><p> Thread.
96、sleep(sleepSpan);// 睡眠</p><p> } catch (Exception e) {// 捕獲異常</p><p> e.printStackTrace();// 打印異常信息</p><p><b> }</b></p><p><b> }</b></p&
97、gt;<p><b> }</b></p><p><b> }</b></p><p> 地圖信息Maps,該類(lèi)包含著地圖的相關(guān)信息,例如敵機(jī)所有的移動(dòng)路線(xiàn)、各個(gè)關(guān)卡中補(bǔ)血道具、換槍道具等。</p><p> 物體的移動(dòng)線(xiàn)程類(lèi)MoveThread,該線(xiàn)程負(fù)責(zé)除了我方主戰(zhàn)飛機(jī)外所有可移動(dòng)物的移動(dòng)。&l
98、t;/p><p><b> 情景相關(guān)類(lèi)</b></p><p> 主戰(zhàn)飛機(jī)Plane,該類(lèi)為主戰(zhàn)飛機(jī)的封裝類(lèi),可由玩家控制其方向以及移動(dòng)狀態(tài)。</p><p> 敵機(jī)EnemyPlane,該類(lèi)為敵機(jī)的封裝類(lèi)。</p><p> 子彈類(lèi)Bullet,子彈的封裝類(lèi),游戲中所有的子彈都為該類(lèi)的對(duì)象。</p>
99、<p> 爆炸效果類(lèi)Explode,該類(lèi)為爆炸效果的渲染類(lèi),負(fù)責(zé)在指定位置繪制爆炸效果。</p><p> 爆炸換幀線(xiàn)程Explode,該類(lèi)是為爆炸效果類(lèi)服務(wù)的,當(dāng)爆炸存在時(shí)定時(shí)為每個(gè)爆炸效果換幀。</p><p> 補(bǔ)血道具類(lèi)Life,該類(lèi)為補(bǔ)血道具類(lèi),當(dāng)主戰(zhàn)飛機(jī)與該類(lèi)對(duì)象碰撞時(shí),會(huì)為主戰(zhàn)飛機(jī)增加一格血。</p><p> 換槍道具類(lèi)Change
100、Bullet,該類(lèi)為換槍道具類(lèi),當(dāng)主戰(zhàn)飛機(jī)與該類(lèi)對(duì)象碰撞時(shí),會(huì)增強(qiáng)主戰(zhàn)飛機(jī)所攜帶的武器。</p><p><b> 五、游戲界面展示</b></p><p><b> 1、主界面</b></p><p><b> 圖5.1主界面</b></p><p><b>
101、 2、游戲界面</b></p><p><b> 圖5.2游戲界面</b></p><p><b> 3、射擊</b></p><p> 圖5.3射擊(子彈未升級(jí))</p><p> 4、射擊(子彈升級(jí)后)</p><p> 圖5.4射擊(子彈升級(jí)后)
102、</p><p><b> 5、子彈升級(jí)道具</b></p><p> 圖5.5子彈升級(jí)道具</p><p><b> 6、加血道具</b></p><p><b> 圖5.6加血道具</b></p><p><b> 7、擊中敵機(jī)&
103、lt;/b></p><p><b> 圖5.7擊中敵機(jī)</b></p><p><b> 8、關(guān)卡boss</b></p><p> 圖5.8關(guān)卡BOSS</p><p><b> 9、游戲結(jié)束</b></p><p><b>
104、 圖5.9游戲結(jié)束</b></p><p><b> 總結(jié)</b></p><p> 經(jīng)過(guò)一段時(shí)間的努力,Android平臺(tái)飛機(jī)大戰(zhàn)游戲終于完成了。由于對(duì)JAVA濃厚的興趣引發(fā)了我對(duì)Android的好奇心,從一開(kāi)始什么都不懂一直摸索著運(yùn)用了很多高級(jí)技術(shù)完成了這個(gè)軟件。</p><p> 在這次畢業(yè)設(shè)計(jì)的制作過(guò)程中,我強(qiáng)烈感覺(jué)
105、到自己知識(shí)的貧乏,和對(duì)以往學(xué)習(xí)過(guò)的知識(shí)掌握不夠。從最初的茫然,到慢慢的進(jìn)入狀態(tài),再到對(duì)思路逐漸的清晰,整個(gè)寫(xiě)作過(guò)程難以用語(yǔ)言來(lái)表達(dá)。在這個(gè)過(guò)程中,我學(xué)會(huì)了很多知識(shí),比如Android環(huán)境的搭建、Intent、Activity、Service、ContentProvider、SQLite等,但我學(xué)會(huì)的最重要的一點(diǎn)是,利用現(xiàn)有的資源去解決問(wèn)題,在圖書(shū)館、在網(wǎng)絡(luò)上尋找答案。</p><p> 雖然,這個(gè)軟件目前運(yùn)行良
106、好,但是我認(rèn)為代碼的健壯行還很差,在整個(gè)工程的構(gòu)思方面也不足,用戶(hù)操作界面還不夠靈活,這些問(wèn)題還需要今后逐一解決。與此同時(shí),這個(gè)軟件還可以進(jìn)一步擴(kuò)展,例如雙人聯(lián)機(jī)合作,還有更多功能強(qiáng)大的道具和各式各樣的敵機(jī)。還需要更多的努力,做出讓用戶(hù)體驗(yàn)更好的游戲。</p><p> 知識(shí)必須通過(guò)時(shí)間才能實(shí)現(xiàn)其價(jià)值!頭寫(xiě)東西一位學(xué)會(huì)了,但真正用到的時(shí)候才發(fā)現(xiàn)是兩回事,所以我認(rèn)為只有真正會(huì)用的時(shí)候才是真正的學(xué)會(huì)了。</p
107、><p><b> 致謝</b></p><p> 本課題的設(shè)計(jì)和論文撰寫(xiě)過(guò)程中,我的指導(dǎo)老師**老師給于了極大的幫助,為我提供了大量的相關(guān)資料。在完成課題設(shè)計(jì)的過(guò)程中,老師在總體設(shè)計(jì)思想上給予了許多重要的實(shí)際指導(dǎo),拓展了我的思路,使得我得以完成了任務(wù)。在此,我對(duì)劉永偉老師的指導(dǎo)表示衷心的感謝。</p><p> 同時(shí),我也衷心的感謝**學(xué)院
108、幾年來(lái)對(duì)我的精心栽培,良好的校園環(huán)境、精良的師資隊(duì)伍、濃厚的校園文化都讓我深深懷念,都為我進(jìn)入社會(huì)提供了莫大的幫助。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 王正軍 著,《Java程序設(shè)計(jì)》,北京:人民郵電出版社,2006年。</p><p> [2] 王樹(shù)偉 著,《Java游戲編程基礎(chǔ)》,北京:電子工業(yè)出版
109、社,2005年。</p><p> [3]榮欽科技編著. Java游戲設(shè)計(jì).北京:科海電子出版社</p><p> [4]夏云龍編著.最新Java使用手冊(cè).電子工業(yè)出版社</p><p> [5] 武瑩 彭文明編著Java開(kāi)發(fā)實(shí)用編程200例中國(guó)鐵道出版社2006年</p><p> [6] 吳亞峰 蘇亞龍 編著Android游戲開(kāi)發(fā)
110、寶典2.0 人民郵電出版社。</p><p> [7] 夏少瓊.《Photoshop實(shí)戰(zhàn)教程--游刃有余》. 暨南大學(xué)出版社. 2008年第1版</p><p> [8] (美)貝斯克.《游戲開(kāi)發(fā)與制作》.清華大學(xué)出版社.未著明出版時(shí)間</p><p> [9] 黃維通 魯明羽著,《Java程序設(shè)計(jì)》北京:清華大學(xué)出版社,2005年。</p>&
111、lt;p> 附錄:游戲部分主要代碼</p><p> 1、PlaneActivity類(lèi)的實(shí)現(xiàn)</p><p> package wyf.ytl;</p><p> import android.app.Activity;//引入相關(guān)類(lèi)</p><p> import android.os.Bundle;//引入相關(guān)類(lèi)</
112、p><p> import android.os.Handler;//引入相關(guān)類(lèi)</p><p> import android.os.Looper;//引入相關(guān)類(lèi)</p><p> import android.os.Message;//引入相關(guān)類(lèi)</p><p> import android.view.KeyEvent;//引入相關(guān)
113、類(lèi)</p><p> import android.view.Window;//引入相關(guān)類(lèi)</p><p> import android.view.WindowManager;//引入相關(guān)類(lèi)</p><p> public class PlaneActivity extends Activity {// 在任何一個(gè)主線(xiàn)程中都會(huì)自動(dòng)生成一個(gè)Looper(消息隊(duì)
114、列)用來(lái)儲(chǔ)存發(fā)送的信息通過(guò)Looper.loop();來(lái)調(diào)用儲(chǔ)存到Looper中的信息</p><p> int action = 0;// 鍵盤(pán)的狀態(tài),二進(jìn)制表示 從左往右表示上下左右</p><p> GameView gameView;// GameView的引用</p><p> WelcomeView welcomeView;// WelcomeVi
115、ew的引用</p><p> FailView failView;// 游戲失敗界面的引用</p><p> HelpView helpView;// HelpView的引用</p><p> WinView winView;// 歡迎界面的引用</p><p> ProcessView processView;// 進(jìn)度條界面的引用
116、</p><p> boolean isSound = true;// 是否播放聲音</p><p> Handler myHandler = new Handler() {// 用來(lái)更新UI線(xiàn)程中的控件</p><p> public void handleMessage(Message msg) {</p><p> if (ms
117、g.what == 1) {// 游戲失敗,玩家飛機(jī)墜毀</p><p> if (gameView != null) {</p><p> gameView.keyThread.setFlag(false);// 停止鍵盤(pán)監(jiān)聽(tīng)</p><p> gameView.gameThread.setFlag(false);</p><p>
118、 gameView.moveThread.setFlag(false);</p><p> gameView = null;</p><p><b> }</b></p><p> initFailView();// 切換到FialView</p><p> } else if (msg.what == 2) {
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于android操作系統(tǒng)的飛機(jī)大戰(zhàn)手機(jī)游戲畢業(yè)論文(設(shè)計(jì))
- 基于android操作系統(tǒng)的足球小將手機(jī)游戲畢業(yè)論文
- 畢業(yè)論文-基于android操作系統(tǒng)的中國(guó)象棋手機(jī)游戲
- 基于android操作系統(tǒng)的足球小將手機(jī)游戲
- android操作系統(tǒng)畢業(yè)論文
- 基于android平臺(tái)開(kāi)發(fā)的飛機(jī)射擊游戲-畢業(yè)論文
- 智能手機(jī)的操作系統(tǒng)畢業(yè)論文
- 智能手機(jī)的操作系統(tǒng)畢業(yè)論文
- 飛機(jī)大戰(zhàn)游戲開(kāi)發(fā)文檔(android版)
- 基于android系統(tǒng)的手機(jī)防盜畢業(yè)論文
- 飛機(jī)大戰(zhàn)游戲開(kāi)發(fā)文檔(android版)
- 畢業(yè)論文-- 基于android系統(tǒng)的股票預(yù)測(cè)游戲
- 基于Android平臺(tái)開(kāi)發(fā)的飛機(jī)射擊游戲-畢業(yè)論文終稿.doc
- 基于Android平臺(tái)開(kāi)發(fā)的飛機(jī)射擊游戲-畢業(yè)論文終稿.doc
- android手機(jī)輔助系統(tǒng)畢業(yè)論文
- 基于android的手機(jī)衛(wèi)士——畢業(yè)論文
- 基于android的手機(jī)衛(wèi)士——畢業(yè)論文
- 畢業(yè)論文——基于安卓坦克大戰(zhàn)游戲
- 畢業(yè)論文范文——基于android植物大戰(zhàn)僵尸
- 畢業(yè)論文范文——基于android植物大戰(zhàn)僵尸
評(píng)論
0/150
提交評(píng)論