版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 畢 業(yè) 設(shè) 計 說 明 書</p><p> 2013年 6月 1日</p><p><b> 摘 要</b></p><p> 隨著現(xiàn)代科技的高速發(fā)展,短短幾十年,電腦游戲得到迅猛發(fā)展。電腦游戲充分利用多媒體網(wǎng)絡(luò)優(yōu)勢,拓寬了傳統(tǒng)游戲的界限,給人們帶來全新的體驗。在這些游戲中,F(xiàn)lash游戲以其好看的動畫,絢
2、麗的聲光效果,高度的通暢性,以及很強的可玩性,而受到廣大青少年的青睞。 </p><p> Flash軟件由Macromedia公司推出,除了制作動畫以外,還能實現(xiàn)交互功能。Flash是一種創(chuàng)作工具,設(shè)計人員和開發(fā)人員可使用它來創(chuàng)建演示文稿、應(yīng)用程序和其它允許用戶交互的內(nèi)容。Flash 可以包含簡單的動畫、視頻內(nèi)容、復(fù)雜演示文稿和應(yīng)用程序以及介于它們之間的任何內(nèi)容。它不僅能夠制作出許多眩目多彩的效果,只要你肯賦
3、予它一定的情景,它也會模擬出現(xiàn)實生活中的場景。通過Flash生成的動畫文件非常小,可以很好的用在網(wǎng)頁設(shè)計及更多的領(lǐng)域。Flash可以采用補間形狀或補間動畫等多種手段,產(chǎn)生很復(fù)雜的動畫;同時,F(xiàn)lash不同于gif動畫,它可以附加很復(fù)雜的控制代碼,從而開發(fā)出很復(fù)雜的應(yīng)用,比如一些小游戲。</p><p> 關(guān)鍵詞:Flash;游戲;動畫;網(wǎng)絡(luò)</p><p><b> Abs
4、tract</b></p><p> With the rapid development of modern technology, only lasts for a few decades, computer games has been the rapid development. Computer games take full advantage of multimedia network
5、, and widened the boundaries of traditional games, to bring to people new experience. In these games, Flash game with its nice animation, gorgeous sound and light effect, patency of height, and can play sex is very stron
6、g, by the majority of young people of all ages.</p><p> Flash software produced by Macromedia company, in addition to other animation, can realize the interactive function. Flash is an authoring tool, desig
7、ners and developers can use it to create presentations, applications and other content to allow user interaction. Flash can include simple animation, video content, complex presentations, applications, and anything in be
8、tween them. It is not only able to create many of the dazzling and colorful effect, as long as you are willing to give it a certai</p><p> Key Words:Flash; Animation; Network; The game</p><p>&
9、lt;b> 前言</b></p><p> 伴隨著計算機的迅速普及,伴隨著網(wǎng)絡(luò)“觸角”的迅速延伸,信息時代到來了!喜歡探索,充滿幻想,渴望參與,這是人的天性。信息時代帶給我們一個能夠滿足人類這種天性的禮物——電腦小游戲。真實感、立體感、交互性強的游戲吸引著成千上萬的人,很多人迷戀上了游戲,迷戀上了計算機,迷戀上了網(wǎng)絡(luò),迷戀上了Flash!</p><p> 電腦小游
10、戲現(xiàn)在已成為社會上各界人士來放松自己,消遣時間的有效途徑之一。就像前期在我們學(xué)生廣為流傳的《植物大戰(zhàn)僵尸》,大部分學(xué)生在課余時間都在用這個游戲來充實自己的課余生活。小游戲和其它大型游戲的區(qū)別在于它不容易讓玩家上癮。玩家完全可以在業(yè)余時間來運用小游戲來放松自己和娛樂。</p><p> 作為一種大眾娛樂方式,游戲已經(jīng)越來越被人們所接受,尤其是在電腦游戲方面。面對當(dāng)今社會上的種種壓力,偶爾玩小游戲已是現(xiàn)在社會各界人
11、士來放松自己,緩解自身壓力的一種有效方法。特別是在射擊方面的小游戲,游戲自身的激烈的戰(zhàn)斗與玩游戲時候玩家的心態(tài)可以使玩家重新調(diào)整心態(tài),從而又更好的心態(tài)去工作。</p><p> 鑒于上述問題的綜合的考慮,也為了展示這三年來所學(xué)成果,我決定做基于Flash的射擊類小游戲——宇宙大作戰(zhàn)。</p><p> 現(xiàn)在網(wǎng)絡(luò)上流行的小游戲大多是運用Flash來制作的。Flash游戲是一種新興起的游戲
12、形式,以游戲簡單,操作方便,綠色,無需安裝,文件體積小等優(yōu)點現(xiàn)在漸漸被廣大網(wǎng)友喜愛。Flash游戲又叫Flash小游戲,因為Flash游戲主要應(yīng)用于一些趣味化的、小型的游戲之上,以完全發(fā)揮它基于矢量圖的優(yōu)勢。制作FLASH游戲需要用到ActionScript語言。利用ActionScript編程來控制場景的移動,飛機的屬性和游戲中道具的作用等等。Flash是Macromedia公司的一個的網(wǎng)頁交互動畫制作工具。Flash是交互式矢量圖和
13、Web動畫的標(biāo)準(zhǔn)。網(wǎng)頁設(shè)計者使用Flash能創(chuàng)建漂亮的、可改變尺寸的、以及極其緊密的導(dǎo)航界面、技術(shù)說明以及其他奇特的效果。</p><p><b> 1 簡介</b></p><p> 安卓游戲[1]是運行在安卓系統(tǒng)平臺的游戲,隨著移動終端設(shè)備的發(fā)展,安卓游戲不但可以運行于智能手機,也可以運行在平板電腦上。因為操作簡單,節(jié)奏明快,因此,作為縱軸射擊的經(jīng)典之作,《雷
14、電》系列受到了廣大玩家的歡迎,可以說是老少咸宜的游戲了?!独纂姟凡坏l頻登陸街機,家用機和掌機等各大平臺,而且,除官方版本外,還出現(xiàn)了許多同人版。因此,畢業(yè)課題我選擇雷電作為畢業(yè)設(shè)計的項目,既可以模仿經(jīng)典,又可以創(chuàng)造經(jīng)典。</p><p> 1.1 課題的背景及意義</p><p> 自上世紀(jì)80年代第一部手機誕生以來,隨著計算機技術(shù)的進步,手機也經(jīng)歷了從模擬器到GSM、2.5G再到今
15、天的3G手機如此一個發(fā)展歷程[1]。特別是進入21世紀(jì)后手機的硬件性能得到很大的提高,當(dāng)前主流手機普遍配有主頻500MHZ的微處理器和500MB容量的存儲器。與之同步發(fā)展的還有支持手機運行的手機操作系統(tǒng),從當(dāng)初的單片機系統(tǒng)到后來的專用嵌入式系統(tǒng),到后來開始為智能手機設(shè)計開發(fā)出可以更高效管理手機軟硬件資源的操作系統(tǒng),其中有不少屬于開源項目的手機操作系統(tǒng)。目前全球的智能手機操作系統(tǒng)主要以Google公司開發(fā)的Android系統(tǒng)、蘋果公司開發(fā)
16、的iPhone系統(tǒng)、諾基亞公司開發(fā)的Symbian系統(tǒng)、微軟公司開發(fā)的WindowsMobile系統(tǒng)和Linux系統(tǒng)為代表。</p><p> 手機的發(fā)展也帶動了手機游戲產(chǎn)業(yè)的快速發(fā)展。在人們的生活中有許多的游戲,但是不同的游戲會帶給玩家不同的感受和生活理念。游戲是人們?nèi)粘I畹囊粋€必不可少的娛樂項目,也帶動了游戲相關(guān)產(chǎn)業(yè)市場的發(fā)展。游戲平臺經(jīng)過從游戲機到電視游戲,然后到PC游戲,再到手機游戲,中間經(jīng)歷了很多技
17、術(shù)的更新和變革。但隨著新技術(shù)的發(fā)展和人們生活水平質(zhì)量的提高,手機開始逐漸普及,因為手機是非常小巧便捷的,而且方便的特性成為人們?nèi)粘I钪斜貍渫ㄓ嵐ぞ?。而基于手機平臺的游戲也就擁有的市場空間是巨大的,也因隨著3g的開通和應(yīng)用,手機游戲必然會迎來新的一輪游戲熱潮。</p><p><b> 1.2 特色介紹</b></p><p><b> 1.2.1開放性
18、</b></p><p> 在優(yōu)勢方面,Android平臺首先就是其開放性,開放的平臺允許任何移動終端廠商加入到Android聯(lián)盟中來。顯著的開放性可以使其擁有更多的開發(fā)者,隨著用戶和應(yīng)用的日益豐富,一個嶄新的平臺也將很快走向成熟。 開發(fā)性對于Android的發(fā)展而言,有利于積累人氣,這里的人氣包括消費者和廠商,而對于消費者來講,最大的受益正是豐富的軟件資源。開放的平臺也會帶來更大競爭,如此一來,
19、消費者將可以用更低的價位購得心儀的手機。</p><p><b> 1.2.2掙脫束縛</b></p><p> 在過去很長的一段時間,特別是在歐美地區(qū),手機應(yīng)用往往受到運營商制約,使用什么功能接入什么網(wǎng)絡(luò),幾乎都受到運營商的控制。自從iPhone上市,用戶可以更加方便地連接網(wǎng)絡(luò),運營商的制約減少。隨著EDGE、HSDPA這些2G至3G移動網(wǎng)絡(luò)的逐步過渡和提升,手
20、機隨意接入網(wǎng)絡(luò)已不是運營商口中的笑談。</p><p><b> 1.2.3硬件選擇</b></p><p> 這一點還是與Android平臺的開放性相關(guān),由于Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產(chǎn)品。功能上的差異和特色,卻不會影響到數(shù)據(jù)同步、甚至軟件的兼容。好比你從諾基亞Symbian風(fēng)格手機一下改用蘋果iPhone,同時還可將S
21、ymbian中優(yōu)秀的軟件帶到iPhone上使用、聯(lián)系人等資料更是可以方便地轉(zhuǎn)移。</p><p> 1.2.4不限制開發(fā)商</p><p> Android平臺提供給第三方開發(fā)商一個十分寬泛、自由的環(huán)境。因此不會受到各種條條框框的阻擾,可想而知,會有多少新穎別致的軟件會誕生。但也有其兩面性,血腥、暴力、情色方面的程序和游戲如何控制正是留給Android難題之一。</p>
22、<p><b> 1.2.5發(fā)展趨勢</b></p><p> 隨著各平臺對OpenGL ES支持能力的大力加強,使得開發(fā)復(fù)雜的3D場景游戲成為可能。更多顯示芯片對Android的支持,硬件性能將不再成為制約專業(yè)化游戲發(fā)展的瓶頸。越來越多在PC、PSP、PS3、XBOX360等各游戲平臺占有領(lǐng)先地位的專業(yè)游戲公司將向Android等手機平臺領(lǐng)域快速滲透,使得游戲的規(guī)劃更加向?qū)I(yè)
23、化方向發(fā)展。</p><p> 將向網(wǎng)絡(luò)化方向發(fā)展 隨著各平臺對無線通信網(wǎng)絡(luò)、WIFI網(wǎng)絡(luò)、藍牙網(wǎng)絡(luò)的良好支持,游戲?qū)?chuàng)新出更好的游戲性和用戶本驗。網(wǎng)絡(luò)游戲,多人游戲,聯(lián)機對戰(zhàn)等將進一步強化玩家對游戲的粘著度,并且容易通過對道具等的控制產(chǎn)生營利模式。玩家之間對交互能力的需求也會促成未來的游戲向網(wǎng)絡(luò)化發(fā)展進程的加快。</p><p> 將向休閑化、時間片化方向發(fā)展 移動設(shè)備的隨身性使
24、是休閑小游戲?qū)⒌玫娇焖俚陌l(fā)展。移動設(shè)備對分散時間的利用促進了游戲向時間片化發(fā)展,即一個游戲可以隨時開始,隨時結(jié)束,充分利用用戶分散的時間片來運行。</p><p><b> 1.3論文結(jié)構(gòu)安排</b></p><p> 論文共分五章,內(nèi)容及章節(jié)安排如下:</p><p> 第一章,介紹Android手機游戲的研究背景以及意義、Androi
25、d的特色介紹、本文研究的主要內(nèi)容和論文的組織結(jié)構(gòu)。</p><p> 第二章,介紹Android平臺的特征和應(yīng)用構(gòu)成,以及Android的系統(tǒng)構(gòu)造。</p><p> 第三章,介紹游戲的策劃和需求分析過程。</p><p> 第四章,介紹游戲的具體實現(xiàn)過程。用SQLite數(shù)據(jù)庫存取大容量數(shù)據(jù)源及Share preferences存取臨時數(shù)據(jù),依照設(shè)定的游戲情節(jié)
26、設(shè)計游戲控制引擎,設(shè)計劇情,為玩家提供多點觸控來操縱游戲。</p><p> 第五章,介紹游戲的測試過程。</p><p> 最后,總結(jié)了本文的工作,提出未來的工作計劃。</p><p> 2 Android平臺研究</p><p> Android是一個包含操作系統(tǒng)、中介架構(gòu)層及應(yīng)用程序所產(chǎn)生出來的軟件堆棧架構(gòu)。本章通過Androi
27、d的特征和應(yīng)用構(gòu)成介紹Android的開發(fā)平臺,并通過與iPhone比較兩者的優(yōu)缺點。</p><p> 2.1 Android特征</p><p> Android系統(tǒng)是工作于智能手機之上的操作系統(tǒng)[5],處處體現(xiàn)了與手機相關(guān)的特性。由于手機硬件配置的關(guān)系A(chǔ)ndroid系統(tǒng)與PC機上的操作系統(tǒng)有著很大的差異。只有充分了解Android系統(tǒng)特性才能開發(fā)出適合手機運用的軟件。以下為And
28、roid SDK2.2的主要特性:</p><p> ?。?)可重用和可替換組件的程序應(yīng)用框架</p><p> ?。?)針對移動設(shè)備優(yōu)化過的Dalvik虛擬機</p><p> ?。?)集成了基于開源Webkit引擎的網(wǎng)頁瀏覽器</p><p> (4)經(jīng)過優(yōu)化過的自定義2D圖形庫和基于OpenGL ES 1.0庫 可選硬件加速</
29、p><p> ?。?)SQLite結(jié)構(gòu)化的數(shù)據(jù)存儲數(shù)據(jù)庫</p><p> (6)支持常規(guī)的音頻視頻多媒體格式,如MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF GSM電話(硬件決定) </p><p> ?。?)藍牙、GPRS-EDGE、3G和Wifi無線網(wǎng)絡(luò)</p><p> (8)相機、GPS全球定位、導(dǎo)航和感應(yīng)
30、加速器</p><p> ?。?)豐富的開發(fā)環(huán)境包含設(shè)備模擬器、工具、調(diào)試器、內(nèi)存和性能分析工具,以及Eclipse集成開發(fā)環(huán)境插件</p><p> 2.2 Android應(yīng)用的構(gòu)成</p><p> 對于一個Android應(yīng)用程序來說,是由Activity、IntentReceiver、Service、Content Provider四部分組成[6]。在應(yīng)用
31、程序中使用時,需要在配置文件AndroidManifest.xml中進行配置。這個配置文件是每個Android應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能以及必要條件等。Android應(yīng)用的構(gòu)成和工作流程如圖2-1所示。 </p><p> 圖2-1 Android的構(gòu)成和工作流程</p><p> 通常由以下四個組件來構(gòu)建一個完整的Android應(yīng)用程序[7]。</p&
32、gt;<p><b> ?。?)活動</b></p><p><b> ?。?)意圖接收器</b></p><p><b> ?。?)服務(wù)</b></p><p><b> ?。?)內(nèi)容提供者</b></p><p> 然而,并不是所有的A
33、ndroid應(yīng)用程序都必須具備上面的四個組件,可以由上面的一個或幾個來組建。當(dāng)決定使用以上哪些組件來構(gòu)建Android應(yīng)用程序時,需要將它們注冊在AndroidManifest.xml文件中,這是一個XML配置文件,在這個文件中可以聲明應(yīng)用程序組件以及它們的特性和要求。這個配置文件是每個Android應(yīng)用程序所必需的。</p><p><b> 2.2.1 活動</b></p>
34、<p> 活動是以上四個組件中最常用的一個。每個活動都是Activity的子類,并實現(xiàn)了一些獨有的功能,如管理UI顯示和UI的反饋事件。一個活動就相當(dāng)于應(yīng)用程序的一個用戶界面,由事件響應(yīng)以及視圖等組成。大多數(shù)的應(yīng)用程序通常包括多個界面。例如:一個文本聊天應(yīng)用程序,至少應(yīng)該包含一個聯(lián)系人列表界面、一個聊天界面、一個設(shè)置界面、一個聊天記錄查詢界面等等。每個界面其實都可看作是一個活動。顯示一個新界面就相當(dāng)于生成一個對應(yīng)的活動對
35、象。在一些情況下,活動能夠返回給它的上級界面一個返回值,例如一個提供給用戶選擇照片的活動可以返回給它的調(diào)用者用戶選擇了哪個照片文件。</p><p> 當(dāng)一個新的活動出現(xiàn)時,前一個活動被中斷并被放入到一個歷史堆棧中。用戶可以使用返回鍵使前一個活動重現(xiàn)。當(dāng)一個活動不再需要時,可以將它們從歷史堆棧中移除。默認情況下,Android會為每個應(yīng)用程序保留從主界面開始的歷史堆棧。</p><p>
36、 Android通過一個被稱作意圖的特殊類,來實現(xiàn)界面與界面之間的跳轉(zhuǎn)。一個意圖描述了一個應(yīng)用程序想要做什么。在意圖的描述結(jié)構(gòu)中,含有兩個重要的數(shù)據(jù)結(jié)構(gòu):動作和動作對應(yīng)的數(shù)據(jù)。典型的動作類型包括MAIN、VIEW、PICK、EDIT等等,而動作對應(yīng)的數(shù)據(jù)則以URI的形式表示。例如:顯示一個聯(lián)系人信息的界面,可以創(chuàng)建一個意圖,并將它的動作設(shè)置成VIEW,數(shù)據(jù)設(shè)置成表示這個人信息的URI。</p><p> 除此
37、之外,還有一個被稱作意圖過濾器(IntentFiher)的相關(guān)類。當(dāng)發(fā)生一個有效的目的請求時,意圖過濾器用來描述一個活動能夠處理什么意圖。如上例中所描述,想要正常顯示一個聯(lián)系人信息的界面,必須聲明一個意圖過濾器,它說明當(dāng)有聯(lián)系人數(shù)據(jù)要在界面上顯示時,知道如何處理它們。通常意圖過濾器要被注冊在AndroidManifest.xml文件中。從一個界面跳轉(zhuǎn)到另一個界面是由解析各種意圖實現(xiàn)的。例如:一個活動使用startActivity(myI
38、ntent)來調(diào)用其他活動時,系統(tǒng)會查找所有已經(jīng)安裝的應(yīng)用程序的意圖過濾器,并從中挑選出能夠匹配myIntent意圖的活動。隨后,這個新的活動接收到意圖(myIntent)的通知并開始運行。當(dāng)startActivity方法被調(diào)用,解析意圖的處理過程隨之發(fā)生,這個機制有以下兩個突出的優(yōu)點:</p><p> ?。?)活動可以通過一個以意圖形式產(chǎn)生的請求來重用其他組件的功能。</p><p>
39、 ?。?)活動可以在任何時候被一個具有等價意圖過濾器的新活動所替代。</p><p> 2.2.2 意圖接收器</p><p> 當(dāng)想要編寫代碼來對外部事件做一些處理時,可以使用意圖接收器。意圖接收器并不顯示UI界面,它是通過NotificationManager來通知用戶他們感興趣的事件發(fā)生了。意圖接收器同樣可以被注冊在AndroidManifest.xml文件中,同時也可以在代碼中
40、使用Context.registerReceiver()來注冊自己的意圖接收器。當(dāng)一個意圖接收器被觸發(fā)時,系統(tǒng)會根據(jù)需要來啟動應(yīng)用程序。</p><p><b> 2.2.3 服務(wù)</b></p><p> 服務(wù)是具有長生命周期并且沒有用戶界面的代碼。Service一般用于需要長時間在后天運行的應(yīng)用。例如,在播放MP3音樂時,使用Service播放MP3音樂,可以
41、在關(guān)閉播放器界面的情況下長時間播放MP3音樂,并通過對外公開Service的通信接口,控制MP3音樂播放的啟動、暫停和停止。</p><p> 2.2.4 內(nèi)容提供者</p><p> 在Android中,每個應(yīng)用程序都是有自己的userID及在自己的進程中執(zhí)行。這樣做的好處是,可以保護系統(tǒng)及應(yīng)用程序,避免被其他不正常的應(yīng)用程序所影響??梢园衙總€進程想像成是一個黑盒子,彼此不會互相影響
42、,連內(nèi)存的資料都無法共享。如果應(yīng)用程序之間想要共享數(shù)據(jù),就需要使用內(nèi)容提供者。一個內(nèi)容提供者就是一個類,它實現(xiàn)了一個標(biāo)準(zhǔn)的方法集合。其他的應(yīng)用程序可以使用這些方法來保存和檢索此內(nèi)容提供者處理過的數(shù)據(jù)。</p><p> 2.3 Android的系統(tǒng)構(gòu)架</p><p> 安卓游戲的系統(tǒng)架構(gòu)和其它操作系統(tǒng)一樣,采用了分層的架構(gòu)。從架構(gòu)圖看,android分為四個層,從高層到低層分別是應(yīng)用
43、程序?qū)?、?yīng)用程序框架層、系統(tǒng)運行庫層和linux核心層。</p><p> Android是以Linux為核心的手機操作平臺,作為一款開放式的操作系統(tǒng),隨著Android的快速發(fā)展,如今已允許開發(fā)者使用多種編程語言來開發(fā)Android應(yīng)用程序,而不再是以前只能使用Java開發(fā)Android應(yīng)用程序的單一局面,因而受到眾多開發(fā)者的歡迎,成為真正意義上的開放式操作系統(tǒng)。</p><p>
44、在Android中,開發(fā)者可以使用Java作為編程語言來開發(fā)應(yīng)用程序,也可以通過NDK使用C/C++作為編程語言來開發(fā)應(yīng)用程序,也可使用SL4A來使用其他各種腳本語言進行編程(如:python、lua、tcl、php等等),還有其他諸如:Qt(qt for android)、Mono(mono for android)等一些著名編程框架也開始支持Android編程,甚至通過MonoDroid,開發(fā)者還可以使用C#作為編程語言來開發(fā)應(yīng)用程
45、序。另外,谷歌還在2009年特別發(fā)布了針對初學(xué)者的Android Simple語言,該語言類似Basic語言。而在網(wǎng)頁編程語言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已經(jīng)支持Android開發(fā)。而在Android系統(tǒng)底層方面,Android使用C/C++作為開發(fā)語言。</p><p><b> 2.4 本章小結(jié)</b
46、></p><p> 本章簡要闡述游戲的開發(fā)環(huán)境Android的特點和構(gòu)成,然后與iPhone平臺作比較,最后總結(jié)兩者的優(yōu)缺點。</p><p><b> 3 策劃與需求分析</b></p><p> 本章主要探究游戲的前期策劃工作,從游戲策劃、美工需求和功能需求三個方面描述游戲的策劃與需求分析過程。</p><
47、p><b> 3.1 游戲策劃</b></p><p> 本游戲是根據(jù)84般小霸王游戲合集里的《雷電》《1943》以及當(dāng)下比較流行的一些西方射擊類游戲為背景題材射擊的一款打飛機的小游戲。很多有游戲經(jīng)歷的玩家一定對《雷電》不會陌生,這是一款非常刺激的單機飛行射擊游戲,今天我設(shè)計的這款《雷電》可以算的上安卓手機版的雷電游戲,這款游戲采用玩家比較熟悉的豎版界面,游戲依然以大自然水流動為背
48、景,你將感受在海洋上空作戰(zhàn)的不一樣感受,你將操控你的戰(zhàn)機一步一步深入敵人老巢,并最終將之摧毀。我加入了觸屏效果,使得游戲玩家可以點擊屏幕改變飛機的位置,使得控制能力更強,更有意思。 </p><p> 運行的目標(biāo)平臺,本游戲的目標(biāo)平臺為Android2.2以上的Android手機。</p><p> 操作方式,本游戲采用Android手機觸摸屏幕控制游戲,使操作更加簡單方便。</
49、p><p> 游戲使用Eclipse作為主要的開發(fā)工具,使用Photoshop作為圖片處理工具。</p><p><b> 3.2 美工需求</b></p><p> 一款游戲是否受歡迎,取決于它的娛樂性和可觀賞性,高速發(fā)展的游戲產(chǎn)業(yè)使玩家的要求越來越嚴格,所以游戲的界面美化和圖形設(shè)計是很重要的[8]。本游戲的一些美工需求如下:</p&
50、gt;<p> 場景:游戲的背景圖片采用動態(tài)水流效果,清澈的水流效果使得游戲玩家感覺使得游戲視覺效果更好。 </p><p> 觸屏:游戲的操作采用觸屏的效果,使得游戲的操作性能更佳。</p><p> 圖片:游戲的背景圖片是各種戰(zhàn)斗機的效果圖,使玩家能看見不同的飛機效果,吸引玩家眼球。</p><p> 計劃采用網(wǎng)上素材和設(shè)計這兩種方式,用P
51、hotoshop等圖片處理軟件處理圖片達到需要的效果。</p><p><b> 3.3 功能需求</b></p><p> 項目實現(xiàn)解謎游戲的所有基本功能,同時,為了滿足玩家的個人需求,在游戲中加入了背景音樂和音效等效果,從而使游戲從感官上更加吸引玩家。在游戲中為了方便玩家的控制,把游戲的控制功能改成觸屏瞬移的效果,可以更好的躲避敵機和子彈的碰撞。</p&
52、gt;<p> 1. 游戲主界面功能需求</p><p> 良好的用戶界面,能夠在視覺上吸引玩家。為了使界面簡潔美觀,需要在主界面中添加背景圖片來渲染游戲的氣氛,同時為了便于玩家的操作,需要設(shè)置四個按鈕供玩家選擇,分別是“開始游戲”、“游戲設(shè)置”、“游戲關(guān)于”、“游戲幫助”、“退出”。這樣的設(shè)置讓用戶一目了然。具體功能如下:</p><p> (1)開始游戲,點擊跳轉(zhuǎn)到
53、飛機準(zhǔn)備起航的圖片,點擊圖片開始游戲;</p><p> (2)游戲設(shè)置,玩家可以選擇是否打開背景音樂和設(shè)置音樂音量的大??; </p><p> (3)游戲關(guān)于,簡單介紹此游戲的基本功能和玩法;</p><p> (4)游戲幫助,簡單介紹游戲的背景以及意義;</p><p> (5)退出,點擊退出游戲。</p><
54、p> 2.用戶注冊界面的功能需求</p><p> 為了方便記錄玩家的高分記錄,采用用戶登錄注冊的方式,玩家可以自主登錄游戲也可以注冊登錄游戲,更有娛樂性。</p><p> 3. 背景音效的功能需求</p><p> 玩家可以自主選擇是否開啟背景音效,也可以調(diào)節(jié)背景音效的音量大小,使得玩家玩游戲時候,更加輕松、愉悅。</p><p
55、><b> 游戲控制的功能需求</b></p><p> 游戲采用觸屏和鍵盤雙控制操作功能實現(xiàn),使玩家可以更好、更方便的控制飛機的位置,更好的避開敵機的襲擊,創(chuàng)造更高的記錄。</p><p><b> 事件響應(yīng)需求</b></p><p> 事件響應(yīng)分為按鈕響應(yīng)、圖片響應(yīng)、特定區(qū)域響應(yīng),分別對應(yīng)玩家點擊按鈕、
56、點擊圖片和點擊特定區(qū)域的動作,根據(jù)不同動作做出不同的響應(yīng)。</p><p> 游戲的功能用例圖如圖3-1所示。</p><p> 圖3-1 游戲功能用例圖</p><p><b> 3.4 本章小結(jié)</b></p><p> 本章詳細探究了游戲的需求分析,完成了游戲的內(nèi)容設(shè)計、美工需求和功能需求三個方面的內(nèi)容。&
57、lt;/p><p><b> 4 設(shè)計與實現(xiàn)</b></p><p> 本章詳細描述該游戲的設(shè)計與實現(xiàn)過程。從總體類框架設(shè)計、界面設(shè)計、功能設(shè)計與實現(xiàn)及卡關(guān)設(shè)計的解決方案幾個方面闡述游戲開發(fā)過程。</p><p><b> 4.1 類框架介紹</b></p><p> 該游戲開發(fā)的類比較多,為了
58、更好的理解各個類在游戲中所扮演的角色,將框架分類并對各個類的功能進行簡要介紹。</p><p> 游戲的類框架如圖4-1所示。</p><p> 圖4-1 游戲的類框架</p><p><b> 1.公共類</b></p><p> DataBase_Manager:游戲的數(shù)據(jù)庫設(shè)計,包含代碼創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)庫幫
59、助類以及對數(shù)據(jù)進行增加、刪除、查詢、判斷等操作的一些方法。</p><p> Music:游戲的音樂服務(wù)類,包含控制服務(wù)的方法,實現(xiàn)背景音樂的開關(guān)和音量大小的方法。</p><p> Bullet:游戲的子彈設(shè)置,包含自己的子彈和敵機子彈的軌跡,以及boss出現(xiàn)后發(fā)射的矩形彈幕效果。</p><p><b> 游戲主界面相關(guān)類</b>&l
60、t;/p><p> MMActivity:游戲的用戶登錄界面,包含用戶登錄以及注冊等功能。</p><p> RaidenView:游戲功能的實現(xiàn),包含游戲飛機、敵機、子彈、boss、爆炸效果、生命、動態(tài)背景等相關(guān)內(nèi)容的功能實現(xiàn)。</p><p> meauActivity:游戲主界面,包含初始化服務(wù)、初始化數(shù)據(jù)庫等方法。</p><p>
61、 helpActivity:游戲幫助顯示游戲介紹和幫助信息界面功能的實現(xiàn)。</p><p> aboutActivity:游戲關(guān)于界面的跳轉(zhuǎn)的功能實現(xiàn)。</p><p> setupActivity:游戲設(shè)置,顯示游戲設(shè)置背景音效和界面跳轉(zhuǎn)的功能實現(xiàn)。</p><p> 3.游戲運行界面相關(guān)類</p><p> main:游戲菜單界
62、面,游戲的相關(guān)幫助,設(shè)置以及開始游戲等按鈕。</p><p> youxi:游戲開始,游戲第一關(guān)界面,包含控制跳轉(zhuǎn)和判斷過關(guān)條件的方法。</p><p> help:游戲幫助文檔界面,關(guān)于游戲的相關(guān)背景,操作方法等內(nèi)容。</p><p> about:游戲相關(guān)內(nèi)容界面,關(guān)于游戲的相關(guān)設(shè)計人員,以及意義。</p><p> set:游戲
63、的音效設(shè)置界面,有關(guān)游戲的背景音效設(shè)置的界面。</p><p> tianjia:游戲用戶名和密碼的注冊頁面,設(shè)置關(guān)于用戶的登錄用戶名。</p><p><b> 4.2 界面設(shè)計</b></p><p> 本游戲的一項難點在界面設(shè)計,好的游戲界面既能使畫面美觀也能提高對玩家的吸引力。本小節(jié)介紹游戲界面的具體實現(xiàn)過程,包括主界面、游戲界面
64、和劇情界面的設(shè)計。</p><p><b> 4.2.1 主界面</b></p><p> 用戶登錄界面由用戶名、密碼、保存用戶名、記住密碼4個文本框和登陸、注冊、取消3項按鈕構(gòu)成。在菜單界面的配置文件main.xml中設(shè)置背景圖片的路徑android:background="@drawable/img4",其中img4為圖片的名稱。</
65、p><p><b> 如圖1</b></p><p><b> 圖1</b></p><p> 4.2.2 菜單界面</p><p> 主界面由一張背景圖片和5個按鈕組成,5個按鈕為統(tǒng)一風(fēng)格統(tǒng)一大小的按鈕,分別用來實現(xiàn)開始游戲、游戲設(shè)置、游戲關(guān)于、游戲幫助和退出功能。</p>&l
66、t;p> 游戲啟動界面如圖4-2所示。</p><p> 圖4-2 游戲主界面</p><p> 在菜單界面的配置文件meau.xml中設(shè)置背景圖片的路徑android:background="@drawable/yt",其中yt為圖片的名稱。設(shè)置5個按鈕的名稱、位置、以及按鈕大小。</p><p> 4.2.3 游戲界面</
67、p><p> 點擊開始游戲按鈕,彈出圖片“image”,點擊圖片跳轉(zhuǎn)到游戲界面。</p><p> 4.2.4 背景音效設(shè)置界面</p><p> 游戲設(shè)置界面包含“開”、“關(guān)”兩個單選按鈕,點擊“開”按鈕響起背景音效,點擊“關(guān)”按鈕關(guān)閉背景音效,玩家可以通過調(diào)節(jié)音量鍵調(diào)節(jié)音量大小。</p><p><b> 4.3 功能實現(xiàn)&
68、lt;/b></p><p> 本小節(jié)主要介紹游戲功能的具體實現(xiàn)過程,包括界面跳轉(zhuǎn)、背景音樂控制、保存設(shè)置和物品數(shù)據(jù)操作。闡述了游戲中對數(shù)據(jù)和控制的實現(xiàn)方式與步驟。</p><p> 4.3.1 界面跳轉(zhuǎn)與特效</p><p> 本游戲由多個Activity組成,進行界面跳轉(zhuǎn)的時候就需要用到Activity和Intent來進行跳轉(zhuǎn)。例如游戲主界面跳轉(zhuǎn)到開
69、始游戲界面:</p><p> public void bt1(View v){</p><p> Intent intent=new Intent(this,youxiActivity.class);</p><p> startActivity(intent);</p><p><b> }</b></
70、p><p> 創(chuàng)建一個Intent,指定由當(dāng)前Activity跳轉(zhuǎn)到preface這個Activity,把創(chuàng)建好的Intent作為參數(shù)傳遞給startActivity()方法。由于使用多個Activity,因此需要在AndroidMainfest.xml文件中注冊這些Activity。使用<activity>標(biāo)簽,嵌套在<application>標(biāo)簽內(nèi)部。</p><p&
71、gt; 其中bt1是在meau.xml中定義的一個按鈕,定義代碼:</p><p><b> <Button</b></p><p> android:id="@+id/button1"</p><p> android:layout_width="120dp"</p><
72、;p> android:layout_height="wrap_content"</p><p> android:layout_marginTop="70dip"</p><p> android:layout_marginLeft="100dip"</p><p> android:tex
73、t="開始游戲"</p><p> android:onClick="bt1"/></p><p> 4.3.2 背景音樂控制</p><p> 游戲中背景音樂沒有界面,不直接與用戶交互,能夠長期在后臺運行。適合用Service來控制在后臺服務(wù)[9]。</p><p> 在Music.ja
74、va類中定義了一個Mediaplayer播放器,在方法中定義了音效的播放和停止的方法:</p><p> public static void onStart(Context context,int startId){</p><p> player=MediaPlayer.create(context, startId);</p><p> player.s
75、etLooping(true);</p><p> player.start();</p><p><b> }</b></p><p> public static void stop(Context context){</p><p> if(player!=null){</p><p&g
76、t; player.stop();</p><p> player.release();</p><p> player=null;</p><p><b> }</b></p><p> 以及調(diào)節(jié)音量的大小方法,按↑鍵音量增加,按↓鍵音量減少:</p><p> public boo
77、lean onKeyDown(int keyCode,KeyEvent event){</p><p> if(keyCode==KeyEvent.KEYCODE_DPAD_UP){</p><p> am.setStreamVolume(AudioManager.STREAM_MUSIC, currentVol+1, AudioManager.FLAG_PLAY_SOUND);<
78、;/p><p><b> }</b></p><p> else if(keyCode==KeyEvent.KEYCODE_DPAD_DOWN){</p><p> am.setStreamVolume(AudioManager.STREAM_MUSIC, currentVol-1, AudioManager.FLAG_PLAY_SOUND)
79、;</p><p><b> }</b></p><p> return super.onKeyDown(keyCode, event);</p><p><b> }</b></p><p> 在setup.java方法類中定義了點擊按鈕開關(guān)音效的方法,以及監(jiān)聽是否已有背景音效的存在:&l
80、t;/p><p> public void yy(){</p><p> if(player!=null){</p><p> Music.stop(this);</p><p><b> }</b></p><p><b> }</b></p><
81、p> public void bt23(View v){</p><p> super.onResume();</p><p> Music.onStart(this,R.raw.foot);</p><p><b> }</b></p><p> public void bt24(View v){&
82、lt;/p><p> super.onPause();</p><p> Music.stop(this); </p><p><b> }</b></p><p> 4.3.3 用戶登錄和注冊</p><p> 用戶的登錄用戶名和密碼的記錄和保存:</p><p>
83、; public void btn_save_click(View v){</p><p> SharedPreferences.Editor editer=preference.edit();</p><p> editer.putString("name", name_text.getText().toString());</p><p&g
84、t; editer.commit();</p><p><b> }</b></p><p> public void btn_save_mima(View v){</p><p> SharedPreferences.Editor editer=preference.edit();</p><p> edit
85、er.putString("mima", mima_text.getText().toString());</p><p> editer.commit();</p><p> 用戶的登錄用戶名和密碼是否正確的判斷:</p><p> public void bt9(View v){</p><p> Boolea
86、n result = false;</p><p><b> try {</b></p><p> result = Database_helper.InquireTable_Name(name_text.getText().toString().trim(), mima_text.getText().toString().trim());</p>
87、<p> Log.i("zx", ""+result);</p><p> } catch (Exception e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p> if(result){
88、</p><p> // Toast.makeText(this, cursor.getString(1)+"你好", Toast.LENGTH_SHORT).show();</p><p> Intent intent=new Intent(this,setupActivity.class);</p><p> this.startAct
89、ivity(intent);</p><p><b> }else{</b></p><p> Toast.makeText(this, "用戶名或密碼錯誤", Toast.LENGTH_LONG).show();</p><p><b> }</b></p><p>
90、用戶注冊功能的實現(xiàn):</p><p> public void btn_studentinfo_add(View v){</p><p><b> try {</b></p><p> dataBase_Manager.CreateTable();</p><p> } catch (Exception e1)
91、{</p><p> // TODO Auto-generated catch block</p><p> e1.printStackTrace();</p><p><b> } </b></p><p><b> try{</b></p><p> dataB
92、ase_Manager.InsertTable(editText_name.getText().toString().trim(), editText_password.getText().toString().trim());</p><p> Toast.makeText(this, "注冊成功", Toast.LENGTH_SHORT).show();</p><p
93、> }catch(Exception e){</p><p> Toast.makeText(this, "用戶名或密碼不合法", Toast.LENGTH_LONG).show();</p><p><b> }</b></p><p> Intent intent=new Intent();</p&g
94、t;<p> this.setResult(RESULT_OK, intent);</p><p><b> finish();</b></p><p><b> }</b></p><p> 4.3.2 游戲中子彈、敵機的定義</p><p><b> //炸彈效
95、果</b></p><p> public void bombEffect(){</p><p> if(bomby>-97){</p><p> Bitmap myplane = BitmapFactory.decodeResource(this.getResources(), R.drawable.myplane);</p>
96、<p> Matrix matrix = new Matrix();</p><p> bomby -= 24;</p><p> matrix.setTranslate((width-172)/2, bomby);</p><p> canvas.drawBitmap(myplane, matrix, paint);</p>&l
97、t;p> ebullets.removeAll(ebullets);</p><p> bossbullets.removeAll(bossbullets);</p><p> bossbullets1.removeAll(bossbullets1);</p><p> bossbullets2.removeAll(bossbullets2);<
98、/p><p><b> }else{</b></p><p> bombon=false;</p><p><b> }</b></p><p><b> }</b></p><p><b> //花形彈幕繪制</b><
99、/p><p> public void bulletStorm(){</p><p> Bitmap cbullet = BitmapFactory.decodeResource(this.getResources(), R.drawable.bossbullet);</p><p> for(int r = 30,d = 0;r<90;r++){</
100、p><p><b> d = d+10;</b></p><p> int bx = (int) (160+r*Math.cos(d));</p><p> int by = (int) (100+r*Math.sin(d));</p><p> Bullet cbull = new Bullet(bx-80+bos
101、sx,by,cbullet,0);</p><p> cbull.draw4(canvas);</p><p> bossbullets.add(cbull);</p><p><b> }</b></p><p><b> }</b></p><p><b&g
102、t; //矩形彈幕繪制</b></p><p> public void bulletStorm1(){</p><p> if(time%30==0&time%90<=40){</p><p> Bitmap bbullet = BitmapFactory.decodeResource(this.getResources(), R
103、.drawable.bossbullet);</p><p> int i = time/90;</p><p> Bullet bossbullet = null;</p><p> if(i<=85){</p><p> if(i<=16){</p><p> bossbullet = new
104、 Bullet(20*i,50,bbullet,time);</p><p> bossbullets2.add(bossbullet);</p><p> }else if(i>16&i<=20){</p><p> bossbullet = new Bullet(300,30+20*(i-15),bbullet,time);</p
105、><p> bossbullets2.add(bossbullet);</p><p> }else if(i>20&i<=35){</p><p> bossbullet = new Bullet(340-20*(i-19),150,bbullet,time);</p><p> bossbullets2.add(b
106、ossbullet);</p><p> }else if(i>35&i<=40){</p><p> bossbullet = new Bullet(0,210-20*(i-33),bbullet,time);</p><p> bossbullets2.add(bossbullet);</p><p><b
107、> }</b></p><p><b> }else{</b></p><p><b> time = 0;</b></p><p><b> }</b></p><p><b> }</b></p><p&
108、gt;<b> }</b></p><p> //繪圖(飛機,子彈,分數(shù),血條等)</p><p> public void draw() {</p><p><b> if(flag){</b></p><p> if(time%2100==0){</p><p>
109、; bulletStormCreate = true;</p><p><b> }</b></p><p> canvas = sh.lockCanvas();</p><p> canvas.drawColor(Color.BLACK);</p><p> canvas.drawBitmap(backgro
110、und, height1,0,new Paint());</p><p> height1+=5;</p><p> if(height1>=0)</p><p> height1=-background.getWidth()+this.getWidth();</p><p><b> //生命值顯示</b>
111、;</p><p> life = BitmapFactory.decodeResource(this.getResources(), R.drawable.life);</p><p> for(int i = 0;i<ilife;i++){</p><p> canvas.drawBitmap(life, 10+20*i,10, null);<
112、/p><p><b> }</b></p><p> //boss的左右循環(huán)移動</p><p> Matrix matrix = new Matrix();</p><p> if(flagboss){</p><p> matrix.setTranslate(bossx++, bossy
113、);</p><p> if(bossx==144){</p><p> flagboss = false;</p><p><b> }</b></p><p><b> }else{</b></p><p> matrix.setTranslate(bossx-
114、-, bossy);</p><p> if(bossx==0){</p><p> flagboss = true;</p><p><b> }</b></p><p><b> }</b></p><p><b> //分數(shù)繪制</b>&
115、lt;/p><p> paint.setColor(Color.WHITE);</p><p> canvas.drawText("Score:"+ score, 140, 30, paint);</p><p> //boss出來后 撒彈幕 顯boss血條</p><p> if(warning){</p>
116、;<p> canvas.drawBitmap(boss, matrix, null);</p><p> bulletStorm1();</p><p><b> time+=30;</b></p><p> canvas.drawText("boss:", 255, 50, paint);</
117、p><p> int lifered = 30+(bosslife*(RaidenView.this.getHeight()-60)/500);</p><p> if(lifegray>lifered){</p><p> lifegray-=2;</p><p><b> }</b></p>
118、<p> System.out.println(lifered+" "+lifegray);</p><p> paint.setColor(Color.RED);</p><p> Rect rect4 = new Rect(RaidenView.this.getWidth()-30,30,RaidenView.this.getWidth()-10,l
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于android平臺開發(fā)的飛機射擊游戲
- 基于android平臺開發(fā)的飛機射擊游戲-畢業(yè)論文
- 基于android策略型游戲開發(fā)畢業(yè)設(shè)計
- 基于android平臺的手機游戲開發(fā)【畢業(yè)設(shè)計】
- 基于Android平臺開發(fā)的飛機射擊游戲-畢業(yè)論文終稿.doc
- 基于Android平臺開發(fā)的飛機射擊游戲-畢業(yè)論文終稿.doc
- android游戲畢業(yè)設(shè)計
- 基于android平臺的飛機游戲畢業(yè)設(shè)計
- 基于android平臺的飛機游戲畢業(yè)設(shè)計
- 基于android平臺的手機游戲開發(fā)【畢業(yè)設(shè)計+開題報告+文獻綜述】
- 基于android平臺的飛機游戲畢業(yè)設(shè)計x
- 基于android數(shù)獨游戲設(shè)計_畢業(yè)設(shè)計論文
- 基于Android的游戲設(shè)計與開發(fā).pdf
- 畢業(yè)論文--基于android平臺的beatplane游戲開發(fā)
- 基于android系統(tǒng)的打氣球游戲的設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- 基于android的游戲開發(fā)開題報告
- 手機游戲開發(fā)畢業(yè)設(shè)計
- 基于android的斗地主游戲的設(shè)計與開發(fā)
- 基于android的esl管理系統(tǒng)的設(shè)計與開發(fā)【畢業(yè)設(shè)計】
- 基于android的游戲開發(fā)開題報告
評論
0/150
提交評論