基于Android操作系統(tǒng)的飛機大戰(zhàn)手機游戲畢業(yè)論文(設(shè)計)_第1頁
基于Android操作系統(tǒng)的飛機大戰(zhàn)手機游戲畢業(yè)論文(設(shè)計)_第2頁
基于Android操作系統(tǒng)的飛機大戰(zhàn)手機游戲畢業(yè)論文(設(shè)計)_第3頁
基于Android操作系統(tǒng)的飛機大戰(zhàn)手機游戲畢業(yè)論文(設(shè)計)_第4頁
基于Android操作系統(tǒng)的飛機大戰(zhàn)手機游戲畢業(yè)論文(設(shè)計)_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、石家莊科技信息職業(yè)學(xué)院畢 業(yè) 論 文題目:基于android操作系統(tǒng)的飛機大戰(zhàn)手機游戲 學(xué) 號: 090124012 姓 名: 魏鑠 專業(yè)班級:軟件技術(shù)(游戲方向)09-24 班指導(dǎo)教師: 劉永偉 完成日期: 2011-12-22 摘要: 飛機大戰(zhàn)是滾動屏動作類游戲的一種,其中融入了很多動作類游戲特有的技術(shù),并且畫面流暢、聲音震撼。 當(dāng)今網(wǎng)絡(luò)發(fā)展迅速,益智類游戲被廣泛運用到網(wǎng)絡(luò)各大平臺上。借鑒網(wǎng)絡(luò)各大平臺上的游戲,通過eclipse android sdk 利用java語言編寫的飛機大戰(zhàn)。本文闡述了在android平臺上,面向?qū)ο蟮能浖_發(fā)思想對飛機大戰(zhàn)游戲系統(tǒng)的分析、設(shè)計及實現(xiàn)過程。在項目的

2、實踐過程中,主要用到了以下技術(shù):手機布局主要使用了xml設(shè)計,程序及其子模塊的生命周期管理用到了activity流程控制,游戲的畫面更新使用的是手機的2d圖形編程。本論文的前半部分將簡要介紹系統(tǒng)相關(guān)的行業(yè)信息及基礎(chǔ)的技術(shù)知識,后半部分將對本人在系統(tǒng)各模塊中所使用的關(guān)鍵技術(shù)的實現(xiàn)進行了全面的介紹。 關(guān)鍵詞:滾屏游戲;飛機大戰(zhàn);手機游戲 ;android平臺abstract: the world war ii aircraft rolling screen action game one, incorporating many action games unique technology, and

3、 smooth picture, sound rock.the network is developing rapidly, a puzzle game is widely applied to the network the platform. from the network the platform game, through the eclipse android sdk java language prepared by the world war ii aircraft.this paper elaborated on the platform of android, object

4、-oriented software development thought 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 design, procedures and sub module life cycle ma

5、nagement used in the activity process control, the game screen is updated using the mobile phone 2d graphics programming. in this paper, the front half part of brief introduction of system related industry information and basic technical knowledge, the second part of the each module of the system us

6、ed in the realization of the key technology for a comprehensive introduction.key words: scrolling game; world war ii aircraft; mobile phone games; android platform目 錄一、 緒論5二、 相關(guān)研究綜述6(一)關(guān)于java語言6 (二) 關(guān)于android8三、系統(tǒng)開發(fā)環(huán)境及相關(guān)技術(shù)10四、游戲所需類的分析與實現(xiàn)11(一)游戲的框架簡介11(二)游戲界面的框架簡介12(三)各個類的簡要介紹13五、游戲界面展示22總結(jié)27致謝28參考文獻

7、29前 言隨著3g移動網(wǎng)絡(luò)應(yīng)用的推廣,手機游戲的規(guī)模、復(fù)雜程度日益增強;其技術(shù)手段、設(shè)計思想、系統(tǒng)體系結(jié)構(gòu)都發(fā)生了深刻的變化。手機操作系統(tǒng)正朝著高處理能力、多功能、智能化的方向發(fā)展。近年來,網(wǎng)絡(luò)文化市場發(fā)展很快,隨著互聯(lián)網(wǎng)的迅速普及、寬帶的接入社區(qū)和家庭,我國網(wǎng)絡(luò)游戲市場發(fā)展迅速并進入了一個高速增長期,并已經(jīng)創(chuàng)造了較大的產(chǎn)值,帶動了相關(guān)產(chǎn)業(yè)的發(fā)展。現(xiàn)在,游戲的類型也由最初的動作游戲和簡單益智游戲向更復(fù)雜、更高智力,更具真實性的游戲發(fā)展。目前的游戲種類繁多,包括角色扮演、仿真模擬類、人工智能、休閑類、渲染類、網(wǎng)絡(luò)類等等,甚至有的游戲包含了好幾種類型。機戰(zhàn)類游戲一直以來都很多。但仿真模擬類的游戲卻

8、有不少,現(xiàn)在休閑類的技術(shù)廣泛的應(yīng)用到很多游戲里面等等。飛機大戰(zhàn)游戲是廣泛人士喜愛的游戲,通過上下左右鍵控制方向a鍵發(fā)射子彈,游戲中有加血道具與子彈升級道具。并有關(guān)卡boss等著與你死戰(zhàn)。鑒于游戲的對社會的巨大影響力和光輝的發(fā)展前景,以及我們自己對游戲愛好,這次的畢業(yè)設(shè)計我們決定嘗試設(shè)計和制作一個具有一定可玩性的游戲。期間,我們收集相關(guān)資料、研究同類型的游戲、閱讀有關(guān)這類型游戲和相關(guān)技術(shù)性的書籍,通過制作游戲項目來熟悉游戲的制作思路、過程,加深對面向?qū)ο缶幊陶Z言的掌握,培養(yǎng)自己的耐心、細心和考慮問題的全面性,同時解決本課題要完成的問題,如游戲框架如何構(gòu)建,如何完善游戲的各種功能,如何能讓游戲有音

9、樂和音效的實現(xiàn),如何能讓游戲過關(guān),如何能讓游戲界面美觀,看起來舒服感覺。一、緒論11 研究內(nèi)容android平臺飛機大戰(zhàn)是基于android手機平臺,運用java語言編寫的一款手機滾屏類射擊游戲。12 研究意義android平臺手機游戲的開發(fā)的意義在于活動人的思維,使人精神放松,鍛煉人的反應(yīng)能力與應(yīng)變能力。13研究現(xiàn)狀和發(fā)展趨勢據(jù)gartner最新數(shù)據(jù)顯示,2010年第二、三季度全球智能手機銷售繼續(xù)大幅增長,其中第三季度安卓占全球智能手機市場的25.5%,僅次于塞班,成為第二大智能手機系統(tǒng)。2010第二、三季度與去年同期相比,增度分別是15.4%及22%,增勢迅猛。而塞班系統(tǒng)較09年的市場份額

10、,盡管終端銷量有大幅度提升,但增勢下滑10%,形勢非常嚴(yán)峻。其他操作系統(tǒng)的表現(xiàn)則要平穩(wěn)很多。安卓是首款開源代碼的操作系統(tǒng),采用linux內(nèi)核,開放手機聯(lián)盟(oha)成員可以任意使用和修改安卓的sdk軟件包。系統(tǒng)的開源性使其具有良好的拓展性,一方面,為眾多移動應(yīng)用開發(fā)者提供了良好的系統(tǒng)性平臺,有利于移動應(yīng)用的集合;另一方面,終端廠商可以針對自身的特殊需要“定制化開發(fā)”。與此相比,盡管2010年2月,塞班基本完成開源工作,但由于代碼臃腫,用戶界面設(shè)計缺失,塞班的開源并無實際意義,錯失發(fā)展良機。我們認為,安卓在全球市場的成長壯大,塞班市場份額不斷下跌已成不爭事實。安卓操作系統(tǒng)發(fā)展迅猛主要得益于免費、

11、開源和良好產(chǎn)業(yè)運作策略,這三點為安卓在智能手機市場贏得更多的發(fā)展機遇。系統(tǒng)的免費讓更多的廠商加入,推動了份額的上升;代碼的開源讓更多的開發(fā)者進入應(yīng)用開發(fā);應(yīng)用的豐富吸引了更多用戶選擇,這也是谷歌值得眾多廠商學(xué)習(xí)的地方。此外,谷歌通過oha聯(lián)合眾多廠商進行系統(tǒng)研發(fā),不斷更新版本,將系統(tǒng)應(yīng)用推廣到更多的終端產(chǎn)品中,確保用戶體驗持續(xù)改善。二、相關(guān)研究綜述2.1 關(guān)于java語言java編程特點 1、java語言是簡單的。java語言的語法與c語言和c+語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用java。另一方面,java丟棄了c+ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承

12、、自動的強制類型轉(zhuǎn)換。特別地,java語言不使用指針,并提供了自動的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。 2、java語言是一個面向?qū)ο蟮摹ava語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實現(xiàn)機制(關(guān)鍵字為implements)。java語言全面支持動態(tài)綁定,而c+ 語言只對虛函數(shù)使用動態(tài)綁定。總之,java語言是一個純的面向?qū)ο蟪绦蛟O(shè)計語言。 3、java語言是分布式的。java語言支持internet應(yīng)用的開發(fā),在基本的java應(yīng)用編程接口中有一個網(wǎng)絡(luò)應(yīng)用編程接口(java net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫

13、,包括url、urlconnection、socket、serversocket等。java的rmi(遠程方法激活)機制也是開發(fā)分布式應(yīng)用的重要手段。 4、java語言是健壯的。java的強類型機制、異常處理、廢料的自動收集等是java程序健壯性的重要保證。對指針的丟棄是java的明智選擇。java的安全檢查機制使得java更具健壯性。 5、java語言是安全的。java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,java提供了一個安全機制以防惡意代碼的攻擊。除了java語言具有的許多安全特性以外,java對通過網(wǎng)絡(luò)下載的類具有一個安全防范機制(類classloader),如分配不同的名字空間以防替代本地的同

14、名類、字節(jié)代碼檢查,并提供安全管理機制(類securitymanager)讓java應(yīng)用設(shè)置安全哨兵。 6、java語言是體系結(jié)構(gòu)中立的。java程序(后綴為java的文件)在java平臺上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件), 然后可以在實現(xiàn)這個java平臺的任何系統(tǒng)中運行。這種途徑適合于異構(gòu)的網(wǎng)絡(luò)環(huán)境和軟件的分發(fā)。 7、java語言是可移植的。這種可移植性來源于體系結(jié)構(gòu)中立性,另外,java還嚴(yán)格規(guī)定了各個基本數(shù)據(jù)類型的長度。java系統(tǒng)本身也具有很強的可移植性,java編譯器是用java實現(xiàn)的,java的運行環(huán)境是用ansi c實現(xiàn)的。 8、java語言是解釋型的。

15、如前所述,java程序在java平臺上被編譯為字節(jié)碼格式,然后可以在實現(xiàn)這個java平臺的任何系統(tǒng)中運行。在運行時,java平臺中的java解釋器對這些字節(jié)碼進行解釋執(zhí)行,執(zhí)行過程中需要的類在聯(lián)接階段被載入到運行環(huán)境中。 9、java是高性能的。與那些解釋型的高級腳本語言相比,java的確是高性能的。事實上,java的運行速度隨著jit(just-in-time)編譯器技術(shù)的發(fā)展越來越接近于c+。 10、java語言是多線程的。在java語言中,線程是一種特殊的對象,它必須由thread類或其子(孫)類來創(chuàng)建。通常有兩種方法來創(chuàng)建線程:其一,使用型構(gòu)為thread(runnable) 的構(gòu)造子

16、將一個實現(xiàn)了runnable接口的對象包裝成一個線程,其二,從thread類派生出子類并重寫run方法,使用該子類創(chuàng)建的對象即為線程。值得注意的是thread類已經(jīng)實現(xiàn)了runnable接口,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。java語言支持多個線程的同時執(zhí)行,并提供多線程之間的同步機制(關(guān)鍵字為synchronized)。 11、java語言是動態(tài)的。java語言的設(shè)計目標(biāo)之一是適應(yīng)于動態(tài)變化的環(huán)境。java程序需要的類能夠動態(tài)地被載入到運行環(huán)境,也可以通過網(wǎng)絡(luò)來載入所需要的類。這也有利于軟件的升級。另外,java中的類

17、有一個運行時刻的表示,能進行運行時刻的類型檢查。 java語言的優(yōu)點1 java最初是為對家用電器進行集成控制而設(shè)計的一種語言,因此它必須簡單明了。java語言的簡單性主要體現(xiàn)在以下三個方面:1.java的風(fēng)格類似于c+,因而c+程序員是非常熟悉的。從某種意義上講,java語言是c及c+語言的一個變種,因此,c+程序員可以很快就掌握java編程技術(shù)。2.java摒棄了c+中容易引發(fā)程序錯誤的地方,如指針和內(nèi)存管理。3.java提供了豐富的類庫。2 面向?qū)ο罂梢哉f是java最重要的特性。java語言的設(shè)計完全是面向?qū)ο蟮模恢С诸愃芻語言那樣的面向過程的程序設(shè)計技術(shù)。java支持靜態(tài)和動態(tài)風(fēng)格

18、的代碼繼承及重用。單從面向?qū)ο蟮奶匦詠砜矗琷ava類似于smalltalk,但其它特性、尤其是適用于分布式計算環(huán)境的特性遠遠超越了smalltalk。3 另外,為了建立java作為網(wǎng)絡(luò)的一個整體,java將它的程序編譯成一種結(jié)構(gòu)中立的中間文件格式。只要有java運行系統(tǒng)的機器都能執(zhí)行這種中間代碼。現(xiàn)在,java運行系統(tǒng)有solaris2.4(sparc),win32系統(tǒng)(windows95和windowsnt)等.java源程序被編譯成一種高層次的與機器無關(guān)的byte-code格式語言,這種語言被設(shè)計在虛擬機上運行,由機器相關(guān)的運行調(diào)試器實現(xiàn)執(zhí)行。2.2 關(guān)于android 2.2.1 and

19、roid構(gòu)架android作為一個移動設(shè)備的平臺,其軟件層次結(jié)構(gòu)包括了一個操作系統(tǒng)(os),中間件(middleware)和應(yīng)用程序(application)。根據(jù)android的軟件框圖,其軟件層次結(jié)構(gòu)自下而上分為以下幾個層次:圖2.2 android系統(tǒng)架構(gòu)2.2.2 xul界面布局xul 是一種基于 xml 的語言,因此需要對 xml(特別是 xml 名稱空間)很熟悉。xul是英文“xml user interface language”的首字母縮寫。顧名思義,它是一種應(yīng)用xml來描述使用者界面的標(biāo)示語言。 2.2.3 android的activity組件activity,一般代表手機屏

20、幕的一屏,相當(dāng)于瀏覽器的一個頁面。在activity中添加view,實現(xiàn)應(yīng)用界面和用戶交互。一個應(yīng)用程序一般由多個activity構(gòu)成,這些activity之間可互相跳轉(zhuǎn),可進行頁面間的數(shù)據(jù)傳遞。每個activity都有自己的生命周期。224 sqlite數(shù)據(jù)庫在android平臺上,集成了一個嵌入式關(guān)系型數(shù)據(jù)庫sqlite。sqlite是支持結(jié)構(gòu)化查詢的輕量級數(shù)據(jù)庫,能很好得適應(yīng)于移動設(shè)備的應(yīng)用。android提供了一個名為sqlitedatabase的類,該類封裝了一些操作數(shù)據(jù)庫的api,使用該類可以完成對數(shù)據(jù)進行添加(create)、查詢(retrieve)、更新(update)和刪除(

21、delete)操作(這些操作簡稱為crud)。225 android 2d圖形編程 1、simple graphics in view:就是直接使用android已經(jīng)實現(xiàn)的一些畫圖操作,比如說images,shapes,colors,pre-defined animation等等。這種方式只能畫靜態(tài)或者極為簡單的2d圖畫,對于實時性很強的動畫,高品質(zhì)的游戲都是沒法實現(xiàn)的。2、canvas:首先我們要明白這個canvas是一個2d的概念,是在skia中定義的。也就是說在這個方式下還是說的畫2d圖形。三、系統(tǒng)開發(fā)環(huán)境及相關(guān)技術(shù)3.1 android開發(fā)環(huán)境介紹android的上層應(yīng)用程序是用jav

22、a語言開發(fā),同時還需要基于dalvik虛擬機,所以,google公司推薦使用主流的java繼承開發(fā)環(huán)境eclipse。只有eclipse還不夠,因為是使用java語言進行開發(fā),還應(yīng)該有由sun公司提供的java sdk(其中包括jre:java runtime environment)。此外,android的應(yīng)用程序開發(fā)和java開發(fā)有較大區(qū)別的,所以還需要有g(shù)oogle提供的android sdk。同時,還需要在eclipse安裝adt,為android開發(fā)提供開發(fā)工具的升級或者變更,是eclipse下開發(fā)工具的升級下載的工具。(1) java sdk(2) eclipse(3) andro

23、id sdk3.2 android開發(fā)平臺搭建android開發(fā)平臺搭建步驟:首先到/downloads/下載eclipse集成開發(fā)環(huán)境并且解壓,這里推薦下載java ee 集成版本,可以為平臺的搭建省下不少工作。接著再去 站點下載sdk后安裝,下載 sdk1.5后解壓。第一步下載工序就結(jié)束了。雙擊eclipse解壓后目錄中的eclipse.exe然后啟動,選擇eclipse菜單中的help- install new software- 選項卡上的available software,點擊右側(cè)的“add”輸入http:/dl- with”下拉菜單中選擇

24、剛才輸入的網(wǎng)址。過一會就會出現(xiàn)一個developer tools選項,勾上以后點擊next以后eclipse會自動網(wǎng)上查找android 開發(fā)工具插件,然后找到android ddms和android development tools,選中這兩個點擊finish,eclipse就會自動下載并安裝android插件了,最后會提示重啟eclipse。重啟后選擇eclipse菜單中的windows- preferences 在左側(cè)的android項目中sdk location中填入android sdk解壓后的目錄,然后點擊apply。 在windowsxp的系統(tǒng)變量中的path變量中添加一個值,

25、該值指向解壓后的android sdk目錄下的tools文件夾。四、游戲所需類的分析與實現(xiàn)4.1 游戲的框架簡介圖4.1 游戲的類框架1、啟動游戲,在planeactivity中會先進入加載界面processview,然后后臺加載歡迎界面welcomview,當(dāng)加載完成后屏幕切換到歡迎界面,并啟動welcoeviewthread線程生成歡迎界面的動畫效果。2、當(dāng)歡迎動畫播放完成后屏幕會停留在選擇狀態(tài)等待玩家操作。3、當(dāng)玩家單擊“幫助”時將初始化幫助界面helpview并將其顯示出來。4、當(dāng)玩家大幾“開始游戲”按鈕時,屏幕將顯示加載界面。后臺將初始化游戲界面gameview,在地圖信息類maps

26、中初始化此關(guān)卡中的所有敵機、變槍的道具、補血的道具等。5、初始化游戲界面的同時啟動gameviewbackgroundthread線程,以初始滾動游戲界面的背景圖片。6、當(dāng)玩家發(fā)射炮彈或敵機發(fā)射炮彈時會創(chuàng)建bullet對象,并將其添加到已知的容器中。7、在游戲過程中如果需要顯示爆炸效果,會創(chuàng)建爆炸效果類explode以及explodethread類來渲染爆炸效果。8、游戲中所有類中使用的常量全部封裝到常量類constantutil類中。4.2 游戲界面的框架簡介圖4.2 游戲界面的類框架 1、gameview在初始化是會從maps讀取當(dāng)前關(guān)卡的地圖信息,包括敵機、補血道具、換槍道具等。 2、在

27、界面初始化的同時,還需要啟動movethread線程、gameviewbackgroundthread線程、keythread線程以及explodethread線程。 3、gameview會在適當(dāng)?shù)臅r候從plane類中讀取主戰(zhàn)飛機的信息進行繪制。 4、當(dāng)主戰(zhàn)飛機發(fā)射子彈時,會創(chuàng)建bullet對象并添加到指定容器中,此時movethread同樣需要定時改變子彈對象的位置。 5、在以上過程中,全部都需要pianeactivity的管理與constanutil的參與。4.3各個類的簡要介紹1、 共有類:activity的實現(xiàn)類planeactivity,該類是通過擴展基類activity實現(xiàn)的,是整

28、個游戲程序的入口。鍵盤監(jiān)聽線程keythread,該類為手機鍵盤的監(jiān)聽線程,每隔一段時間讀取一次鍵盤的狀態(tài)值,并根據(jù)當(dāng)前鍵盤狀態(tài)做出相應(yīng)的操作package wyf.ytl;public class keythread extends thread int span = 20;/ 睡眠的毫秒數(shù)int countmove = 0;/ 飛機移動的計數(shù)器int countfine = 0;/ 飛機發(fā)子彈的計數(shù)器int moven = 3;/ 每三次循環(huán)移動一下int finen = 5;/ 每五次循環(huán)發(fā)一次子彈planeactivity activity;/ activity的引用private b

29、oolean flag = true;/ 循環(huán)標(biāo)志int action;/ 鍵盤狀態(tài)碼private boolean key_up = false;/ 向上鍵是否被按下private boolean key_down = false;/ 向下鍵是否被按下private boolean key_left = false;/ 向左的鍵被按下private boolean key_right = false;/ 向右的鍵被按下private boolean key_a = false;/ a的鍵被按下private boolean key_b = false;/ b的鍵被按下public keyth

30、read(planeactivity activity) / 構(gòu)造器this.activity = activity;public void setflag(boolean flag) / 設(shè)置標(biāo)志位this.flag = flag;public void run() / 重寫的方法while (flag) action = activity.action;/ 得到當(dāng)前鍵盤的狀態(tài)碼if (action = 19) / 上key_up = true; else key_up = false;if (action = 20) / 下key_down = true; else key_down =

31、false;if (action = 21) / 左key_left = true; else key_left = false;if (action = 22) / 右key_right = true; else key_right = false;if (action = 29) / akey_a = true; else key_a = false;if (activity.gameview.status = 1 | activity.gameview.status = 3) if (countmove = 0) / 每moven次移動一次if (key_up = true) / 向上鍵

32、被按下/ 檢測在不碰到上邊界的情況下if (!(activity.gameview.plane.gety() - activity.gameview.plane.getspan() constantutil.screenheight- activity.gameview.plane.bitmap1.getheight() activity.gameview.plane.sety(activity.gameview.plane.gety()+ activity.gameview.plane.getspan();activity.gameview.plane.setdir(constantutil

33、.dir_down);if (key_left = true) / 向左鍵被按下if (!(activity.gameview.plane.getx() - activity.gameview.plane.getspan() constantutil.screenwidth- activity.gameview.plane.bitmap1.getwidth() activity.gameview.plane.setx(activity.gameview.plane.getx()+ activity.gameview.plane.getspan();/水平態(tài)if (key_right = fal

34、se & key_left = false& key_down = false & key_up = false) activity.gameview.plane.setdir(constantutil.dir_stop);/如果按下a鍵發(fā)射子彈if (countfine = 0) / 每finen發(fā)一次子彈if (key_a = true) / a鍵被按下activity.gameview.plane.fire();countmove = (countmove + 1) % moven;countfine = (countfine + 1) % finen;try thread.sleep(

35、span);/ 睡覺指定毫秒數(shù) catch (exception e) e.printstacktrace();常量類constantutil,游戲中用到的所有的常量全部封裝到該類中,便于管理與維護。2、 輔助界面相關(guān)類歡迎界面welcomeview,該類為游戲歡迎界面的實現(xiàn)類,主要負責(zé)歡迎界面的繪制工作。歡迎界面的動畫實現(xiàn)類welcomeviewthread,該類是為welcomeview服務(wù)的線程類,主要負責(zé)歡迎界面中動畫的生成。幫助界面helpview,該類非常簡單,主要負責(zé)繪制幫助界面的相關(guān)圖片。加載界面processview,為了使游戲更加人性化,給玩家更好的體驗,在長時間加載某些資

36、源時,需要給出加載界面以提示玩家后臺加載的進度。勝利界面winview,該類為玩家順利過關(guān)后的恭喜過關(guān)界面。失敗界面failview,該類為主戰(zhàn)飛機死亡后顯示的失敗界面,在該界面中玩家可以選擇重新開始游戲或者退出游戲。3、 游戲界面相關(guān)類游戲主界面類gameview,該類為游戲菜單界面的實現(xiàn)類,負責(zé)界面繪制工作。背景滾動線程gameviewbackgroundthread,該類主要負責(zé)背景的滾動、敵機以及各種道具的出現(xiàn)。package wyf.ytl;/* * * 該類為背景滾動、物品出現(xiàn)的類 * */public class gameviewbackgroundthread extends

37、thread private int sleepspan = 100;/ 睡眠的毫秒數(shù)private int span = 3;/ 圖片移動的步長private boolean flag = true;/ 循環(huán)標(biāo)志位gameview gameview;/ gameview的引用long touchtime = 0;/ 當(dāng)前所到的時間public gameviewbackgroundthread(gameview gameview) / 構(gòu)造器this.gameview = gameview;public void setflag(boolean flag) / 設(shè)置標(biāo)記位this.flag =

38、 flag;public void run() while (flag) if (gameview.status = 1) / 游戲中時gameview.backgroundix -= span;if (gameview.backgroundix -constantutil.picturewidth) gameview.i = (gameview.i + 1) % constantutil.picturecount;gameview.backgroundix += constantutil.picturewidth;gameview.cloudx -= span;/ 移動云彩if (gamev

39、iew.cloudx -1000) gameview.cloudx = 1000;touchtime+;/ 時間自加/ 滾動地圖的時候try for (enemyplane ep : gameview.enemyplanes) / 到時間出現(xiàn)敵機if (ep.touchpoint = touchtime) ep.status = true;if (ep.type = 3) / 到關(guān)口了gameview.status = 3;for (life l : gameview.lifes) / 到時間出現(xiàn)血塊if (l.touchpoint = touchtime) l.status = true;f

40、or (changebullet cb : gameview.changebollets) / 到時間出現(xiàn)吃了改變槍的物體if (cb.touchpoint = touchtime) cb.status = true; catch (exception e) / 捕獲異常e.printstacktrace();/ 打印異常信息/ 一分多鐘后游戲結(jié)束if (touchtime = 641) / 到關(guān)口時this.flag = false;try thread.sleep(sleepspan);/ 睡眠 catch (exception e) / 捕獲異常e.printstacktrace();/

41、 打印異常信息地圖信息maps,該類包含著地圖的相關(guān)信息,例如敵機所有的移動路線、各個關(guān)卡中補血道具、換槍道具等。物體的移動線程類movethread,該線程負責(zé)除了我方主戰(zhàn)飛機外所有可移動物的移動。4、 情景相關(guān)類主戰(zhàn)飛機plane,該類為主戰(zhàn)飛機的封裝類,可由玩家控制其方向以及移動狀態(tài)。敵機enemyplane,該類為敵機的封裝類。子彈類bullet,子彈的封裝類,游戲中所有的子彈都為該類的對象。爆炸效果類explode,該類為爆炸效果的渲染類,負責(zé)在指定位置繪制爆炸效果。爆炸換幀線程explode,該類是為爆炸效果類服務(wù)的,當(dāng)爆炸存在時定時為每個爆炸效果換幀。補血道具類life,該類為補

42、血道具類,當(dāng)主戰(zhàn)飛機與該類對象碰撞時,會為主戰(zhàn)飛機增加一格血。換槍道具類changebullet,該類為換槍道具類,當(dāng)主戰(zhàn)飛機與該類對象碰撞時,會增強主戰(zhàn)飛機所攜帶的武器。五、游戲界面展示1、主界面圖5.1主界面 2、游戲界面 圖5.2游戲界面3、射擊圖5.3射擊(子彈未升級)4、射擊(子彈升級后)圖5.4射擊(子彈升級后)5、子彈升級道具圖5.5子彈升級道具6、加血道具圖5.6加血道具7、擊中敵機圖5.7擊中敵機8、關(guān)卡boss 圖5.8關(guān)卡boss9、游戲結(jié)束 圖5.9游戲結(jié)束總結(jié)經(jīng)過一段時間的努力,android平臺飛機大戰(zhàn)游戲終于完成了。由于對java濃厚的興趣引發(fā)了我對android

43、的好奇心,從一開始什么都不懂一直摸索著運用了很多高級技術(shù)完成了這個軟件。在這次畢業(yè)設(shè)計的制作過程中,我強烈感覺到自己知識的貧乏,和對以往學(xué)習(xí)過的知識掌握不夠。從最初的茫然,到慢慢的進入狀態(tài),再到對思路逐漸的清晰,整個寫作過程難以用語言來表達。在這個過程中,我學(xué)會了很多知識,比如android環(huán)境的搭建、intent、activity、service、contentprovider、sqlite等,但我學(xué)會的最重要的一點是,利用現(xiàn)有的資源去解決問題,在圖書館、在網(wǎng)絡(luò)上尋找答案。雖然,這個軟件目前運行良好,但是我認為代碼的健壯行還很差,在整個工程的構(gòu)思方面也不足,用戶操作界面還不夠靈活,這些問題還

44、需要今后逐一解決。與此同時,這個軟件還可以進一步擴展,例如雙人聯(lián)機合作,還有更多功能強大的道具和各式各樣的敵機。還需要更多的努力,做出讓用戶體驗更好的游戲。知識必須通過時間才能實現(xiàn)其價值!頭寫東西一位學(xué)會了,但真正用到的時候才發(fā)現(xiàn)是兩回事,所以我認為只有真正會用的時候才是真正的學(xué)會了。致謝本課題的設(shè)計和論文撰寫過程中,我的指導(dǎo)老師劉永偉老師給于了極大的幫助,為我提供了大量的相關(guān)資料。在完成課題設(shè)計的過程中,老師在總體設(shè)計思想上給予了許多重要的實際指導(dǎo),拓展了我的思路,使得我得以完成了任務(wù)。在此,我對劉永偉老師的指導(dǎo)表示衷心的感謝。同時,我也衷心的感謝石家莊科技信息學(xué)院幾年來對我的精心栽培,良好

45、的校園環(huán)境、精良的師資隊伍、濃厚的校園文化都讓我深深懷念,都為我進入社會提供了莫大的幫助。參考文獻1 王正軍 著,java程序設(shè)計,北京:人民郵電出版社,2006年。2 王樹偉 著,java游戲編程基礎(chǔ),北京:電子工業(yè)出版社,2005年。3榮欽科技編著. java游戲設(shè)計.北京:科海電子出版社4夏云龍編著.最新java使用手冊.電子工業(yè)出版社5 武瑩 彭文明編著java開發(fā)實用編程200例中國鐵道出版社2006年6 吳亞峰 蘇亞龍 編著android游戲開發(fā)寶典2.0 人民郵電出版社。7 夏少瓊.photoshop實戰(zhàn)教程-游刃有余. 暨南大學(xué)出版社. 2008年第1版8 (美)貝斯克.游戲開

46、發(fā)與制作.清華大學(xué)出版社.未著明出版時間9 黃維通 魯明羽著,java程序設(shè)計北京:清華大學(xué)出版社,2005年。附錄:游戲部分主要代碼1、planeactivity類的實現(xiàn)package wyf.ytl;import android.app.activity;/引入相關(guān)類import android.os.bundle;/引入相關(guān)類import android.os.handler;/引入相關(guān)類import android.os.looper;/引入相關(guān)類import android.os.message;/引入相關(guān)類import android.view.keyevent;/引入相關(guān)類imp

47、ort android.view.window;/引入相關(guān)類import android.view.windowmanager;/引入相關(guān)類public class planeactivity extends activity / 在任何一個主線程中都會自動生成一個looper(消息隊列)用來儲存發(fā)送的信息通過looper.loop();來調(diào)用儲存到looper中的信息int action = 0;/ 鍵盤的狀態(tài),二進制表示 從左往右表示上下左右gameview gameview;/ gameview的引用welcomeview welcomeview;/ welcomeview的引用fail

48、view failview;/ 游戲失敗界面的引用helpview helpview;/ helpview的引用winview winview;/ 歡迎界面的引用processview processview;/ 進度條界面的引用boolean issound = true;/ 是否播放聲音handler myhandler = new handler() / 用來更新ui線程中的控件public void handlemessage(message msg) if (msg.what = 1) / 游戲失敗,玩家飛機墜毀if (gameview != null) gameview.keythread.setflag(false);/ 停止鍵盤監(jiān)聽gameview.gamethread.setflag(false);gameview.movethread.setflag(false);gameview = null;initfailview();/ 切換到fialview else if (msg.what = 2) / 切換到gameviewif (welcomeview != null) welcomeview = null;/ 釋放歡迎界面if (processview != null) processview = null;/ 釋放加載界面processvie

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論