版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 學(xué)士學(xué)位論文</b></p><p> 基于Android平臺(tái)的“跳吧”游戲的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> 設(shè)計(jì)人: </b></p><p><b> 指導(dǎo)教師:</b></p><p><b> 所屬系部</b
2、></p><p><b> 專業(yè)班級(jí)</b></p><p> 2014 年 6月 7 日</p><p> 畢業(yè)設(shè)計(jì)(論文)任務(wù)書</p><p> 學(xué)院: 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 </p><p><b> 摘 要</b><
3、;/p><p> 隨著手機(jī)行業(yè)的發(fā)展,手機(jī)游戲以更簡(jiǎn)潔方便的形式深入人們的日常生活,成為人們?cè)谌魏畏枪ぷ鲌?chǎng)合的娛樂(lè)方式?!疤伞笔莻€(gè)老幼皆宜的小游戲,不僅能夠讓玩家放松心情、減輕壓力,同時(shí)也能鍛煉玩家眼力與手部靈活性。</p><p> 本系統(tǒng)是基于Android操作系統(tǒng)開(kāi)發(fā)的,利用Eclipse3.5環(huán)境和JAVA語(yǔ)言實(shí)現(xiàn)的。經(jīng)過(guò)可行性研究,需求分析,總體設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼實(shí)現(xiàn)和測(cè)試,
4、從而實(shí)現(xiàn)了本系統(tǒng)的設(shè)計(jì)。本文對(duì)每一個(gè)開(kāi)發(fā)環(huán)節(jié)進(jìn)行了詳細(xì)分析和和闡述。本系統(tǒng)實(shí)現(xiàn)的功能有主角移動(dòng)功能、隨機(jī)產(chǎn)生不同踏板和加分物品功能、血條功能、重力感應(yīng)功能等。</p><p> 本系統(tǒng)在Android SDK虛擬機(jī)和安卓真機(jī)ZTEU930HD下測(cè)試通過(guò),界面友好,使用方便。</p><p> 關(guān)鍵詞 游戲設(shè)計(jì);Android;Java</p><p> The
5、 Design and Implementation of Jumping Game Base On Android Platform </p><p> Author:Cao Jianqiang Tutor:Liu Aiqin</p><p><b> Abstract</b></p><p> With the developme
6、nt of the mobile phone industry, mobile games have more simple and convenient form in-depth people's daily lives, as people in any non-work occasions of entertainment. "Jumping game " is a small game for al
7、l ages, not only allows players to relax and reduce stress, but also to exercise player’s eyes and flexibility of player’s hand. </p><p> The system is based on the Android operating system developed, using
8、 Eclipse3.5 environment and JAVA language. After a feasibility study, requirements analysis, design, detailed design, coding and testing to achieve the design of the system.this paper have detailed analysis and elaborati
9、on for the each link of development . The system function can be achieved protagonist mobile features, randomly generated different footboard and processing of Bonus items function, blood of the function, gravity</p&g
10、t;<p> This system has been tested under the Android SDK virtual machine and real machine ZTEU930HD ,friendly interface and easy to use. </p><p> Keywords game design; Android; Java</p><
11、p><b> 目 錄</b></p><p> 第一章 系統(tǒng)概述1</p><p> 1.1 游戲開(kāi)發(fā)背景及意義1</p><p> 1.1.1 開(kāi)發(fā)背景1</p><p> 1.1.2 開(kāi)發(fā)意義1</p><p> 1.2 開(kāi)發(fā)平臺(tái)介紹2</p>
12、<p> 1.2.1 Eclipse2</p><p> 1.2.2 ADT2</p><p> 1.2.3 JDK2</p><p> 1.3 Android操作系統(tǒng)結(jié)構(gòu)2</p><p> 1.3.1 Android操作系統(tǒng)介紹2</p><p> 1.3.2 Android操作
13、系統(tǒng)的優(yōu)點(diǎn)3</p><p> 1.3.3 Android系統(tǒng)結(jié)構(gòu)3</p><p> 1.3.4 Android應(yīng)用程序組成部分4</p><p> 第二章 可行性分析6</p><p><b> 2.1編寫目的6</b></p><p> 2.2 可行性研究任務(wù)6&l
14、t;/p><p> 2.2.1技術(shù)可行性6</p><p> 2.2.2經(jīng)濟(jì)可行性7</p><p> 2.2.3操作可行性7</p><p> 2.3 可行性研究結(jié)論7</p><p> 第三章 需求分析8</p><p> 3.1需求分析的意義8</p>&
15、lt;p> 3.2游戲功能需求8</p><p> 3.3可靠性和可用性需求8</p><p><b> 3.4 用例圖9</b></p><p> 第四章 總體設(shè)計(jì)10</p><p> 4.1 總體設(shè)計(jì)的目標(biāo)和意義10</p><p> 4.2 功能模塊的劃分10
16、</p><p> 4.3 時(shí)序圖11</p><p> 第五章 詳細(xì)設(shè)計(jì)12</p><p> 5.1詳細(xì)設(shè)計(jì)的目的和意義12</p><p> 5.2總程序流程圖12</p><p> 5.3 隨機(jī)產(chǎn)生踏板14</p><p> 5.4 血條參數(shù)的設(shè)置15</p
17、><p> 5.5 加分物品的生成15</p><p> 5.6 主角連續(xù)動(dòng)作的生成16</p><p> 5.7 主角與踏板關(guān)系的判斷16</p><p> 5.8 主角與加分物品關(guān)系的判斷16</p><p> 第六章 開(kāi)發(fā)平臺(tái)的搭建17</p><p> 6.1 JAVA
18、虛擬機(jī)的安裝17</p><p> 6.1.1JDK的安裝17</p><p> 6.1.2 Java環(huán)境變量配置18</p><p> 6.2 Eclipse的安裝18</p><p> 6.2.1 安裝SDK18</p><p> 6.2.2 Eclipse的安裝19</p>&
19、lt;p> 第七章 編碼實(shí)現(xiàn)21</p><p> 7.1 編碼的目的21</p><p> 7.2 游戲截圖21</p><p> 7.3 游戲功能的實(shí)現(xiàn)22</p><p> 7.3.1主角動(dòng)作的實(shí)現(xiàn)22</p><p> 7.3.2隨機(jī)產(chǎn)生踏板23</p><p&
20、gt; 7.3.3下一個(gè)踏板的生成25</p><p> 7.3.4隨機(jī)生成加分物品25</p><p> 7.3.5處理主角和踏板的關(guān)系26</p><p> 7.3.6判斷主角與加分物品的關(guān)系28</p><p> 7.3.7重力感應(yīng)系統(tǒng)29</p><p> 7.3.8游戲難度的提升29&
21、lt;/p><p> 7.3.9 設(shè)置實(shí)現(xiàn)29</p><p> 第八章 系統(tǒng)測(cè)試31</p><p> 8.1 測(cè)試的目的及意義31</p><p> 8.2測(cè)試步驟32</p><p> 8.2.1 模擬器測(cè)試32</p><p> 8.2.2 真機(jī)測(cè)試34</
22、p><p> 8.3 測(cè)試結(jié)果分析35</p><p><b> 結(jié)束語(yǔ)37</b></p><p><b> 致 謝38</b></p><p><b> 參考文獻(xiàn)39</b></p><p> 附錄 外文翻譯40</p>
23、<p><b> 系統(tǒng)概述</b></p><p> 1.1 游戲開(kāi)發(fā)背景及意義</p><p> 1.1.1 開(kāi)發(fā)背景</p><p> 手機(jī)游戲的出現(xiàn)是為了娛樂(lè)心神,并隨著移動(dòng)終端和移動(dòng)通信網(wǎng)絡(luò)的不斷進(jìn)步,手機(jī)游戲也正在經(jīng)歷由簡(jiǎn)單到復(fù)雜的進(jìn)化過(guò)程。從全球來(lái)看,移動(dòng)終端的娛樂(lè)服務(wù)被認(rèn)為是帶動(dòng)移動(dòng)數(shù)據(jù)業(yè)務(wù)快速發(fā)展的重要力量。
24、作為手機(jī)娛樂(lè)服務(wù)的重要內(nèi)容之一,近年來(lái),伴隨著移動(dòng)網(wǎng)絡(luò)和移動(dòng)終端性能的不斷提高與完善,尤其是智能手機(jī)的出現(xiàn),手機(jī)游戲業(yè)務(wù)呈現(xiàn)快速增長(zhǎng)趨勢(shì)。</p><p> 近幾年來(lái),手機(jī)游戲快速發(fā)展的同時(shí)按內(nèi)容可分為:角色扮演類、冒險(xiǎn)類、格斗類、體育競(jìng)技類、電影改版類、棋牌類、益智類、模擬類。手機(jī)游戲種類已成為人類線上娛樂(lè)生活的不可缺少的最主流的載體而存在,各類智能手機(jī)伴隨著PC網(wǎng)絡(luò)游戲?yàn)榛A(chǔ)、3網(wǎng)絡(luò)的不斷變化為措施的條件下
25、大力迅猛發(fā)展手機(jī)網(wǎng)絡(luò)游戲。雖然手機(jī)游戲的用戶越來(lái)越多,豐富多彩的游戲種類給玩家?guī)?lái)了更多的選擇,但是我國(guó)的手機(jī)游戲行業(yè)的發(fā)展現(xiàn)狀并不樂(lè)觀,主要因素有:(1)高質(zhì)量游戲軟件開(kāi)發(fā)公司和人才的貧乏,導(dǎo)致無(wú)優(yōu)秀游戲打入市場(chǎng)。(2)游戲創(chuàng)意的匱乏。大多游戲都只是一味的跟風(fēng),看到某個(gè)游戲成功贏得市場(chǎng),便改換場(chǎng)景風(fēng)格,人物造型、故事背景等,其游戲核心一沉不變的思維理念會(huì)使得玩家產(chǎn)生審美疲勞。</p><p> 隨著Andro
26、id游戲的商業(yè)模式越來(lái)越凸顯,人們對(duì)移動(dòng)終端的休閑娛樂(lè)功能需求越來(lái)越大,移動(dòng)終端上的游戲已成為成為現(xiàn)代人們娛樂(lè)生活中不可或缺的。游戲應(yīng)用服務(wù)市場(chǎng)促使手機(jī)平臺(tái)的不斷提升而日新月異。在未來(lái)的游戲產(chǎn)品能否脫穎而出,一切取決于你能玩出什么花樣來(lái),這將激發(fā)更多的開(kāi)發(fā)商和制作人員攻堅(jiān)克難創(chuàng)作出高質(zhì)量的作品,而面對(duì)手機(jī)游戲自身的趣味性、易掌握性、可中斷性、交互性、游戲商家也將面臨亙古未見(jiàn)得激烈競(jìng)爭(zhēng)。由此可見(jiàn),手機(jī)已是人們?nèi)粘I钪忻懿换蛉钡男蓍e娛樂(lè)方
27、式。</p><p> 1.1.2 開(kāi)發(fā)意義</p><p> 在人們的生活中,大多數(shù)人都已離不開(kāi)手機(jī),而大多數(shù)手機(jī)用戶選擇智能手機(jī),開(kāi)發(fā)Android游戲旨在為人們?nèi)粘I钐砑痈嗟膴蕵?lè)方式,此次設(shè)計(jì)出一個(gè)能夠在任何環(huán)境任何時(shí)間放松心情娛樂(lè)心身的單機(jī)游戲,通過(guò)簡(jiǎn)單易操作的Android游戲幫助手機(jī)用戶打發(fā)閑暇時(shí)間、娛樂(lè)心身、放松心情。</p><p> 1
28、.2 開(kāi)發(fā)平臺(tái)介紹</p><p> “跳吧”游戲開(kāi)發(fā)平臺(tái)為Eclipse4.3.2 + ADT22.6.2 + JDK1.7.0_51,模擬測(cè)試平臺(tái)為Android SDK模擬器,真機(jī)測(cè)試平臺(tái)為ZTEU930HD。</p><p> 1.2.1 Eclipse</p><p> Eclipse是不僅僅是成為專門開(kāi)發(fā)JAVA程序的IDE環(huán)境,根據(jù)Eclipse
29、的體系結(jié)構(gòu),通過(guò)開(kāi)發(fā)插件,它能擴(kuò)展到任何語(yǔ)言的開(kāi)發(fā),甚至能成為圖片繪制的工具。Eclipse是一個(gè)開(kāi)放源代碼的項(xiàng)目,任何人都可以下載 Eclipse 的源代碼,并且在此基礎(chǔ)上開(kāi)發(fā)自己的功能插件。也就是說(shuō)未來(lái)只要有人需要,就會(huì)有建立在Eclipse之上的C++,JAVA,Python等語(yǔ)言的開(kāi)發(fā)插件出現(xiàn)。同時(shí)可以通過(guò)開(kāi)發(fā)新的插件擴(kuò)展現(xiàn)有插件的功能??梢詿o(wú)限擴(kuò)展,而且有著統(tǒng)一的外觀,操作和系統(tǒng)資源管理,這也正是 Eclipse的潛力所在。在
30、本項(xiàng)目中,Eclipse正是通過(guò)第三方插件—ADT實(shí)現(xiàn)了開(kāi)發(fā) Android 應(yīng)用。</p><p> 1.2.2 ADT </p><p> ADT是英文 Android Development Tools 的簡(jiǎn)稱,即Android開(kāi)發(fā)工具包。</p><p> ADT是Eclipse中構(gòu)建Android應(yīng)用程序IDE插件,ADT擴(kuò)展了Eclipse的功能,
31、讓開(kāi)發(fā)人員快速建立新的Android項(xiàng)目、創(chuàng)建應(yīng)用程序的用戶界面。ADT可以幫助Eclipse找到Android sdk,再加上Android框架的API組件調(diào)試使用Android SDK工具,以便APK分發(fā)給應(yīng)用程序。 ADT大大減輕Android應(yīng)用程序的開(kāi)發(fā)工作量,工具集成XML編輯器,將給開(kāi)發(fā)人員一個(gè)令人難以置信的開(kāi)發(fā)Android應(yīng)用環(huán)境。使用ADT之前,必須確認(rèn)已經(jīng)安裝了Eclipse以及同Eclipse IDE兼容版本的A
32、ndroid SDK。</p><p><b> 1.2.3 JDK</b></p><p> JDK(Java Development Kit) 是 Java 語(yǔ)言的軟件開(kāi)發(fā)工具包(SDK)。有SE、EE、ME三個(gè)版本。</p><p> 沒(méi)有JDK的話,無(wú)法編譯Java程序,如果想只運(yùn)行Java程序,要確保已安裝相應(yīng)的JRE。<
33、/p><p> 1.3 Android操作系統(tǒng)結(jié)構(gòu)</p><p> 1.3.1 Android操作系統(tǒng)介紹</p><p> Android是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要在移動(dòng)設(shè)備上工作,如智能手機(jī)和平板電腦,由Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。Android操作系統(tǒng)最初由Andy Rubin開(kāi)發(fā),主要支持手機(jī)。隨后Google
34、以Apache開(kāi)源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上。</p><p> 1.3.2 Android操作系統(tǒng)的優(yōu)點(diǎn)</p><p> 作為一個(gè)手機(jī)平臺(tái),Android 在技術(shù)上的優(yōu)勢(shì)主要有以下幾點(diǎn): </p><p> ?。?)全開(kāi)放智能手機(jī)平臺(tái) &l
35、t;/p><p> ?。?)多硬件平臺(tái)的支持 </p><p> ?。?)使用眾多的標(biāo)準(zhǔn)化技術(shù) </p><p> ?。?)核心技術(shù)完整,統(tǒng)一 </p><p> ?。?)完善的 SDK 和文檔 </p><p> ?。?)完善的輔助開(kāi)發(fā)工具 </p><p> Android 的開(kāi)發(fā)者可以在完備
36、的開(kāi)發(fā)環(huán)境中進(jìn)行開(kāi)發(fā),Android 的官方網(wǎng)站也提供了豐富的文檔、資料。這樣有利于 Android 系統(tǒng)的開(kāi)發(fā)和運(yùn)行在一個(gè)良好的生態(tài)環(huán)境中。 </p><p> 1.3.3 Android系統(tǒng)結(jié)構(gòu)</p><p> Android的系統(tǒng)結(jié)構(gòu)如下圖1.1所示:</p><p> 圖 1.1 Android系統(tǒng)結(jié)構(gòu)</p><p>
37、Android 的第 1 層次由 C 語(yǔ)言實(shí)現(xiàn),第 2 層次由 C 和/C++實(shí)現(xiàn),第 3、4 層次主要由 Java 代碼實(shí)現(xiàn)。第 1 層次和第 2 層次之間,從 Linux 操作系統(tǒng)的角度來(lái)來(lái)看,是內(nèi)核空間與用戶空間的分界線,第 1 層次運(yùn)行于內(nèi)核空間,第 2、3、4 層次運(yùn)行于用戶空間。 第 2 層次和第 3 層次之間,是本地代碼層和 Java 代碼層的接口。第 3 層次和第 4 層次之間,是 Android 的系統(tǒng) API 的接口
38、,對(duì)于 Android 應(yīng)用程序的開(kāi)發(fā),第 3 層次以下的內(nèi)容是不可見(jiàn)的,僅考慮系統(tǒng) API 即可。由于 Android 系統(tǒng)需要支持 Java 代碼的運(yùn)行,這部分內(nèi)容是 Android 的運(yùn)行環(huán)境(Runtime),由虛擬機(jī)和Java 基本類組成。對(duì)于 Android 應(yīng)用程序的開(kāi)發(fā),主要關(guān)注第 3 層次和第 4 層次之間的接口。</p><p> 1.3.4 Android應(yīng)用程序組成部分 </p&
39、gt;<p> 一般情況下,Android 應(yīng)用程序由以下 4 種組件構(gòu)成: </p><p> ? 活動(dòng)(Activity)、廣播接收器(BroadcastReceiver)、服務(wù)(Service)、內(nèi)容提供者(Content Provider)。 </p><p> 活動(dòng)是最基本的 Android 應(yīng)用程序組件,在應(yīng)用程序中,一個(gè)活動(dòng)通常就是一個(gè)單獨(dú)的用戶界面。每
40、一個(gè)活動(dòng)都被實(shí)現(xiàn)為一個(gè)獨(dú)立的類,并且從活動(dòng)(Activity)基類中繼承而來(lái),活動(dòng)類將會(huì)顯示由視圖(View)控件組成的用戶接口,并對(duì)事件(Event)做出響應(yīng)。大多數(shù)的應(yīng)用程序都會(huì)有多個(gè)用戶界面,因此便會(huì)有多個(gè)相應(yīng)的活動(dòng)。Android 的一個(gè)活動(dòng)一般對(duì)應(yīng)界面中的一個(gè)屏幕顯示,可以理解成一個(gè)界面,每一個(gè)活動(dòng)在界面上可以包含按鈕、文本框等多種可視的 UI 元素。</p><p> Android 系統(tǒng)中的不同組
41、件具有不同的生命周期。Android 根據(jù)每個(gè)進(jìn)程中運(yùn)行的組件以及組件的狀態(tài)把進(jìn)程放入一個(gè)重要性分級(jí)(importance hierarchy)中。Android 進(jìn)程的重要性分級(jí),可以理解成執(zhí)行的優(yōu)先級(jí)?;顒?dòng)的生命周期如圖 1.2 所示。 </p><p> 運(yùn)行活動(dòng)的情景:當(dāng)一個(gè)活動(dòng)被啟動(dòng)時(shí),活動(dòng)中的 onCreate()、onStart()和 onResume()這 3 個(gè)方法被依次調(diào)用,活動(dòng)對(duì)應(yīng)的界面
42、出現(xiàn)在屏幕上。 </p><p> ? 活動(dòng)被“覆蓋”的情景:Android 的活動(dòng)一般都占據(jù)一個(gè)完整的屏幕,從當(dāng)前活動(dòng)啟動(dòng)另外一個(gè)活動(dòng)時(shí),另一個(gè)活動(dòng)將被啟動(dòng)到前臺(tái)(Foreground),當(dāng)前活動(dòng)轉(zhuǎn)入后臺(tái)(Background),這時(shí)活動(dòng)的 onPasuse()方法將被調(diào)用,活動(dòng)轉(zhuǎn)入后臺(tái)運(yùn)行。如果活動(dòng)變?yōu)椴豢梢?jiàn),還將調(diào)用 onStop()方法。在轉(zhuǎn)入后臺(tái)onStop()是否被調(diào)用取決于活動(dòng)是否被完全覆蓋,在
43、新的活動(dòng)有透明部分時(shí),轉(zhuǎn)入后臺(tái)的活動(dòng)依然“可見(jiàn)”,其他情況下(較多數(shù)的情況)活動(dòng)均進(jìn)入不可見(jiàn)狀態(tài)(被完全覆蓋)。 </p><p> ? 活動(dòng)被恢復(fù)的情景:當(dāng)界面上最前面的活動(dòng)退出后,它所覆蓋的活動(dòng)將被恢復(fù),這時(shí) onResume()方法將被調(diào)用,活動(dòng)重新轉(zhuǎn)入前臺(tái)運(yùn)行。 </p><p> ? 活動(dòng)完全退出的情景:當(dāng)使用回退(Back)按鈕退出活動(dòng)時(shí),onDestroy()方法將被
44、調(diào)用,活動(dòng)關(guān)閉。如果系統(tǒng)缺少內(nèi)存時(shí),也會(huì)殺死(kill)后臺(tái)的活動(dòng),其中優(yōu)先殺死不可見(jiàn)的活動(dòng),可見(jiàn)的活動(dòng)一般不會(huì)被殺死。</p><p> 圖 1.2 活動(dòng)的生命周期</p><p><b> 可行性分析</b></p><p><b> 2.1編寫目的</b></p><p> 可行性研
45、究的目的是目標(biāo)系統(tǒng)是否值得去開(kāi)發(fā),怎樣才能達(dá)到這個(gè)目的。</p><p> 一個(gè)項(xiàng)目的開(kāi)發(fā)需要仔細(xì)分析,看它在目前的情況下是否可行,如果一個(gè)項(xiàng)目開(kāi)發(fā)它具有很好的背景和意義,但是在經(jīng)濟(jì)上或者是技術(shù)上是不可行的,那么它也只能稱之為不能實(shí)現(xiàn)的項(xiàng)目。</p><p> 2.2 可行性研究任務(wù)</p><p> 2.2.1技術(shù)可行性 </p><p&
46、gt; 確保現(xiàn)有的技術(shù)是否能解決本該開(kāi)發(fā)項(xiàng)目:系統(tǒng)采用JAVA語(yǔ)言開(kāi)發(fā),Eclipse作為Android開(kāi)發(fā)環(huán)境。ADT插件提供了一系列圖形用戶界面組件進(jìn)行界面編程,所以在技術(shù)上可行。Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,是由Sun Microsystems公司推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)的總稱。Java自面世后就非常流行,發(fā)展迅速,對(duì)C++語(yǔ)言形成了有力沖擊。Java 技術(shù)具有卓越的通用性、高效性
47、、平臺(tái)移植性和安全性,廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開(kāi)發(fā)者專業(yè)社群。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢(shì)和廣闊前景。</p><p> Java是目前使用最為廣泛的網(wǎng)絡(luò)編程語(yǔ)言之一。它具有簡(jiǎn)單,面向?qū)ο?,穩(wěn)定,與平臺(tái)無(wú)關(guān),解釋型,多線程,動(dòng)態(tài)等特點(diǎn)。Java語(yǔ)言有以下幾點(diǎn)優(yōu)點(diǎn):</p><p>
48、面向?qū)ο蟮木幊谈先说乃季S模式,使人們更容易編寫程序。</p><p> 內(nèi)置對(duì)多線程的支持。</p><p> Java程序的安全性。當(dāng)你準(zhǔn)備從網(wǎng)絡(luò)上下載一個(gè)程序時(shí),你最大的擔(dān)心是程序中含有惡意的代碼,比如試圖讀取或刪除本地機(jī)上的一些重要文件,甚至該程序是一個(gè)病毒程序等。當(dāng)你使用支持Java的瀏覽器時(shí),你可以放心地運(yùn)行Java的小應(yīng)用程序 Java Applet ,不必?fù)?dān)心病毒的感
49、染和惡意的企圖,Java小應(yīng)用程序?qū)⑾拗圃?Java運(yùn)行環(huán)境中,不允許它訪問(wèn)計(jì)算機(jī)的其它部分。</p><p> Java 程序的基本組成單元就是類,有些類是自己編寫的,有一些是從類庫(kù)中引入的,而類又是運(yùn)行時(shí)動(dòng)態(tài)裝載的,這就使得 Java 可以在分布環(huán)境中動(dòng)態(tài)地維護(hù)程序及類庫(kù),而不像 C++那樣,每當(dāng)其類庫(kù)升級(jí)之后,相應(yīng)的程序都必須重新修改,編譯。</p><p> 因此我覺(jué)得Java
50、程序語(yǔ)言該技術(shù)已成熟,采用JAVA編程語(yǔ)言是可行的。</p><p> 2.2.2經(jīng)濟(jì)可行性</p><p> 由于“跳吧”游戲作為畢業(yè)設(shè)計(jì)進(jìn)行開(kāi)發(fā),有本人親自開(kāi)發(fā),成本不會(huì)太高,所以經(jīng)濟(jì)上是可行的。 </p><p> 2.2.3操作可行性</p><p> 確定軟件產(chǎn)品是否能夠被最終的用戶所接受,用戶是否能操作最終的產(chǎn)品:該游戲在
51、方便易操作的Android手機(jī)上運(yùn)行,方便于玩家操作。</p><p> 2.3 可行性研究結(jié)論</p><p> 根據(jù)以上幾個(gè)方面的研究,在技術(shù)上、經(jīng)濟(jì)上和操作上都是可行的,本項(xiàng)目可進(jìn)行開(kāi)發(fā)。</p><p><b> 需求分析</b></p><p> 3.1需求分析的意義</p><p&
52、gt; 為了開(kāi)發(fā)出真正的滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。為軟件需求的深入理解是軟件開(kāi)發(fā)工作獲得成功的前提條件,不論人們把設(shè)計(jì)和編碼工作做得如何出色,不能真正的滿足用戶需求的程序只會(huì)令用戶失望,給開(kāi)發(fā)者帶來(lái)煩惱。</p><p> 需求分析是軟件定義時(shí)期的最后一個(gè)階段,它的基本任務(wù)是準(zhǔn)確地回答“系統(tǒng)必須做什么”這個(gè)問(wèn)題。</p><p><b> 3.2游戲功
53、能需求</b></p><p> 游戲能夠?qū)崿F(xiàn)讓玩家在游戲中放松心神、減輕壓力的作用,同時(shí)要求游戲中的精靈不斷變換,鍛煉玩家眼力與手部靈活性的功能。</p><p> 要求“跳吧”游戲能實(shí)現(xiàn)以下功能:</p><p> 主角移動(dòng)功能。主角移動(dòng)功能就是玩家利用手機(jī)重力感應(yīng)系統(tǒng)對(duì)其進(jìn)行左右移動(dòng)操作。</p><p> 產(chǎn)生踏板
54、功能。系統(tǒng)可以隨機(jī)產(chǎn)生不同類型的踏板,這些踏板分為:穩(wěn)定踏板、帶刺踏板、左/右移動(dòng)踏板、彈簧踏板、不穩(wěn)定踏板,并且這些踏板能夠以一定的速度向屏幕頂部移動(dòng);同時(shí),帶刺踏板可以對(duì)主角造成一定的傷害,左/右移動(dòng)踏板可以將主角向左/右移動(dòng),彈簧踏板會(huì)將主角向上彈起,不穩(wěn)定踏板會(huì)在主角站在上面時(shí)破碎,穩(wěn)定踏板不產(chǎn)生任何效果。</p><p> 產(chǎn)生加分物品。系統(tǒng)會(huì)隨機(jī)產(chǎn)生不同類型的加分物品,物品分值隨物品類別不同而不同,
55、且物品要停留一定時(shí)間再消失。</p><p> 設(shè)置功能。能夠?qū)τ螒蜻M(jìn)行一些簡(jiǎn)單的設(shè)置,這些設(shè)置包括音效設(shè)置、震動(dòng)設(shè)置、主角移動(dòng)速度設(shè)置、輸入玩家名稱。</p><p> 血條功能。主角在踩到帶刺踏板時(shí),血條減少一定的值,當(dāng)主角掉到屏幕下方時(shí)血條值歸零。</p><p> 排行榜功能。游戲可以跟據(jù)玩家的游戲得分按由高到低順序進(jìn)行排名次。</p>
56、<p> 3.3可靠性和可用性需求</p><p> 在游戲開(kāi)發(fā)階段要求在windows 7操作系統(tǒng)、JAVA編程語(yǔ)言、Eclipse平臺(tái)下開(kāi)發(fā),在Android SDK虛擬機(jī)和ZTEU930HD真機(jī)下測(cè)試運(yùn)行。</p><p> 要求游戲能夠在Android 4.0.0及其以上版本、RAM為512MB的安卓手機(jī)上穩(wěn)定流暢運(yùn)行,并要求游戲在運(yùn)行過(guò)程中不能影響手機(jī)正常通信功能
57、及用戶手機(jī)上的其他應(yīng)用功能。</p><p><b> 3.4 用例圖</b></p><p> 在該游戲中玩家可操作游戲的功能有:通過(guò)重力感應(yīng)對(duì)游戲主角進(jìn)行左右移動(dòng)、輸入玩家名稱、點(diǎn)擊返回按鈕、點(diǎn)擊重新開(kāi)始按鈕、點(diǎn)擊退出按鈕、點(diǎn)擊開(kāi)始按鈕、點(diǎn)擊排行榜按鈕、設(shè)置音效(開(kāi)/關(guān))、設(shè)置主角移動(dòng)速度、設(shè)置震動(dòng)效果。游戲用例圖如圖3.3 。</p><
58、p><b> 圖 3.3 用例圖</b></p><p><b> 總體設(shè)計(jì)</b></p><p> 4.1 總體設(shè)計(jì)的目標(biāo)和意義</p><p> 經(jīng)過(guò)前面的需求分析,已經(jīng)確定了系統(tǒng)要做什么,總體設(shè)計(jì)的目的是為了實(shí)現(xiàn)現(xiàn)在怎么做??傮w設(shè)計(jì)的意義是為了更好地設(shè)計(jì)游戲讓后續(xù)的工作更好地高質(zhì)量工作。</p&
59、gt;<p> 4.2 功能模塊的劃分</p><p> 該游戲有人物模塊、踏板模塊、設(shè)置模塊、加分物品模塊、血條模塊、排行榜模塊,其中在設(shè)置模塊下包含有音效設(shè)置、震動(dòng)效果設(shè)置、人物移動(dòng)速度模塊、輸入玩家名稱模塊,其模塊劃分如下圖4.1。</p><p> 圖 4.1 功能模塊圖</p><p> 在主角移動(dòng)模塊中要實(shí)現(xiàn)主角移動(dòng)動(dòng)作時(shí)顯示連續(xù)的
60、效果;踏板模塊是系統(tǒng)隨機(jī)產(chǎn)生的,含有不同類型的踏板;在設(shè)置模塊當(dāng)中玩家可以根據(jù)自己的喜好進(jìn)行音效設(shè)置(包含音效的開(kāi)和關(guān))、震動(dòng)效果設(shè)置、輸入玩家名稱和主角移動(dòng)速度的設(shè)置;在加分物品模塊當(dāng)中,系統(tǒng)會(huì)隨機(jī)產(chǎn)生8中不同類型的加分物品,當(dāng)主角撿到加分物品時(shí)游戲成績(jī)?cè)黾?,血條模塊當(dāng)中,每當(dāng)主角受到傷害時(shí)血條值將會(huì)減少一定的值;排行榜模塊是為了更好地顯示玩家排名。 </p><p><b> 4.3 時(shí)序圖&
61、lt;/b></p><p> 游戲大概操作流程為玩家點(diǎn)擊游戲圖標(biāo)進(jìn)入游戲主界面,然后點(diǎn)擊開(kāi)始游戲進(jìn)行操作,等游戲結(jié)束后玩家在彈出的窗口輸入玩家名稱,然后點(diǎn)擊結(jié)束按鈕退出游戲,游戲時(shí)序圖如圖4.2 。</p><p><b> 圖4.2 時(shí)序圖</b></p><p><b> 詳細(xì)設(shè)計(jì)</b></p&g
62、t;<p> 5.1詳細(xì)設(shè)計(jì)的目的和意義</p><p> 詳細(xì)設(shè)計(jì)的目的是為了能夠確定具體地實(shí)現(xiàn)所要求的系統(tǒng),經(jīng)過(guò)前面的分析和設(shè)計(jì),現(xiàn)應(yīng)該對(duì)目標(biāo)系統(tǒng)得出詳細(xì)的描述,并設(shè)計(jì)出詳細(xì)的方案,以便讓程序員能夠?qū)懗龈鼮楦哔|(zhì)量的程序代碼。</p><p><b> 5.2總程序流程圖</b></p><p> 系統(tǒng)總程序流程圖如圖5
63、.1所示。</p><p> 圖 5.1 系統(tǒng)總流程圖</p><p> 系統(tǒng)開(kāi)始時(shí)先進(jìn)行判斷是否為開(kāi)始游戲、是否設(shè)置游戲參數(shù)、是否查看排名、是否退出游戲,然后系統(tǒng)根據(jù)選擇進(jìn)行相應(yīng)的操作,如果選擇是開(kāi)始游戲則做出開(kāi)始游戲的動(dòng)作直到游戲結(jié)束并輸入玩家名稱,點(diǎn)擊返回按鈕;若選擇為設(shè)置游戲則對(duì)游戲的各項(xiàng)參數(shù)進(jìn)行設(shè)置,然后點(diǎn)擊返回按鈕;加入選擇排名則系統(tǒng)顯示玩家成績(jī)與排名,然后點(diǎn)擊返回按鈕。&
64、lt;/p><p> 圖 5.2 游戲流程圖</p><p> 游戲流程圖如圖5.2所示,當(dāng)點(diǎn)擊開(kāi)始游戲時(shí),系統(tǒng)判斷玩家接觸到的踏板類型,然后根據(jù)踏板的類型做出不同的效果,當(dāng)玩家左右移動(dòng)時(shí)碰到不穩(wěn)定踏板時(shí),踏板破碎;當(dāng)為彈簧踏板時(shí)玩家被彈起;當(dāng)為左右移動(dòng)踏板時(shí),玩家隨踏板左右移動(dòng);當(dāng)為帶刺踏板時(shí),玩家血條將會(huì)減少一定的值;當(dāng)玩家血條為零或者玩家直接調(diào)到屏幕下面則游戲結(jié)束。</p>
65、;<p> 圖 5.3 游戲設(shè)置流程圖</p><p> 當(dāng)選擇游戲設(shè)置時(shí),玩家可以對(duì)游戲參數(shù)進(jìn)行設(shè)置,其設(shè)置流程圖如圖5.3所示。</p><p> 當(dāng)選擇設(shè)置音效時(shí),在游戲設(shè)置界面,設(shè)置音效的開(kāi)/關(guān)。當(dāng)選擇為設(shè)置人物移動(dòng)速度時(shí),在游戲設(shè)置界面通過(guò)左右滑動(dòng)調(diào)節(jié)線條來(lái)調(diào)節(jié)游戲角色的移動(dòng)速度,當(dāng)選擇為錄入玩家的名稱時(shí)在設(shè)置界面文本框內(nèi)輸入玩家的名稱,然后點(diǎn)擊退出按鈕進(jìn)行保
66、存設(shè)置并退出到游戲主界面,或者當(dāng)點(diǎn)擊設(shè)置界面的返回按鈕時(shí)返回游戲主界面。</p><p> 5.3 隨機(jī)產(chǎn)生踏板</p><p> 系統(tǒng)隨機(jī)產(chǎn)生0到19數(shù)字,當(dāng)隨機(jī)數(shù)在0-2之間時(shí)游戲生成不穩(wěn)定踏板,隨機(jī)數(shù)在3-5之間時(shí)游戲生成彈簧踏板,隨機(jī)數(shù)在6-11之間時(shí)游戲生成帶刺踏板,當(dāng)隨機(jī)數(shù)在12-13之間時(shí)游戲生成左移動(dòng)踏板,當(dāng)隨機(jī)數(shù)在14-15之間時(shí)游戲生成右移動(dòng)踏板,當(dāng)隨機(jī)數(shù)在16-1
67、9之間時(shí)游戲生成穩(wěn)定踏板。其踏板產(chǎn)生機(jī)制如圖5.4所示。</p><p> 圖 5.4 踏板的產(chǎn)生</p><p> 5.4 血條參數(shù)的設(shè)置</p><p> 為了游戲更加吸引玩家,同時(shí)考慮到游戲的難易程度,玩家在游戲中的心理作用,現(xiàn)將游戲的血條總參數(shù)設(shè)置為18,也就是說(shuō)游戲主角的總生命值為18,當(dāng)游戲主角每次收到傷害時(shí),血條值減少3,也就是說(shuō)每當(dāng)玩家受到一次
68、傷害時(shí),游戲主角的生命值減少3,這樣當(dāng)玩家受到傷害6次游戲?qū)⒔Y(jié)束,或者當(dāng)玩家直接掉到屏幕下面時(shí)游戲主角的生命值為0,游戲結(jié)束。</p><p> 5.5 加分物品的生成</p><p> 為了游戲的有趣性,更好的讓玩家放松,在游戲中得到更大的樂(lè)趣,設(shè)置加分機(jī)制,在游戲中將隨機(jī)產(chǎn)生香蕉、蛋糕、西紅柿、桃子、草莓、山果、梨子、面包。每個(gè)加分物品的分值如下:</p><p
69、> 面包 ——1 桃子 ——5</p><p> 山果 ——4 草莓 ——6 </p><p> 西紅柿——10 梨 ——12 </p><p> 香蕉 ——15 蛋糕 ——20</p><p> 加
70、分物品隨機(jī)產(chǎn)生參數(shù)的設(shè)置,系統(tǒng)隨機(jī)產(chǎn)生23個(gè)數(shù),當(dāng)隨機(jī)數(shù)為0時(shí)游戲生成面包,當(dāng)隨機(jī)數(shù)為1時(shí)游戲生成蛋糕,隨機(jī)數(shù)在2-4之間時(shí)游戲生成香蕉,隨機(jī)數(shù)在5-7之間時(shí)游戲生成梨,當(dāng)隨機(jī)數(shù)在8-10之間時(shí)游戲生成西紅柿,當(dāng)隨機(jī)數(shù)在11-13之間時(shí)游戲生成桃,當(dāng)隨機(jī)數(shù)在14-17之間時(shí)游戲生成草莓,當(dāng)隨機(jī)數(shù)在18-21之間時(shí)游戲生成山果。 </p><p> 5.6 主角連續(xù)動(dòng)作的生成</p><
71、p> 首先利用if語(yǔ)句判斷主角的狀態(tài)是出于何種狀態(tài),,然后根據(jù)所處的狀態(tài)將首張圖片賦給主角判斷形狀的變量,然后在判斷主角形狀變量與下一張的關(guān)系,然后再將下一張圖片賦給主角形狀變量直到最后一張,最后通過(guò)循環(huán)語(yǔ)句和系統(tǒng)定時(shí)器來(lái)控制動(dòng)作的發(fā)生和結(jié)束。</p><p> 5.7 主角與踏板關(guān)系的判定</p><p> 當(dāng)系統(tǒng)隨機(jī)生成六中不同類型的踏板時(shí),如何判斷主角與踏板發(fā)生碰撞呢?下
72、面是解決主角與踏板關(guān)系的實(shí)現(xiàn)方法。</p><p> 給主角定義一個(gè)主角狀態(tài)變量、同時(shí)定義踏板類型變量。首先判斷主角與踏板碰撞效果,利用if語(yǔ)句判斷主句坐標(biāo)與踏板坐標(biāo)的關(guān)系,具體如下:</p><p> 當(dāng)主角最大Y軸值大于等于踏板Y軸最小值,同時(shí)主角Y軸最大值小于踏板Y軸最大值,同時(shí)主角最大X值大于踏板X軸最小值,并且主角X軸最小值小于踏板X軸最大值時(shí)為主角和踏板發(fā)生了碰撞。<
73、/p><p> 然后再通過(guò)主角狀態(tài)變量與踏板類型變量的關(guān)系來(lái)判斷主角與何種踏板發(fā)生碰撞并作出相應(yīng)的效果。</p><p> 5.8 主角與加分物品關(guān)系的判定</p><p> 判斷主角與加分物品的關(guān)系和判斷主角與踏板關(guān)系的方法基本相似,都是通過(guò)坐標(biāo)進(jìn)行判斷,當(dāng)主角最大Y軸值大于等于加分物品Y軸最小值,同時(shí)主角Y軸最大值小于加分物品Y軸最大值,同時(shí)主角最大X值大于加
74、分物品X軸最小值,并且主角X軸最小值小于加分物品X軸最大值時(shí)為主角和加分物品發(fā)生了碰撞。</p><p><b> 開(kāi)發(fā)平臺(tái)的搭建</b></p><p> 6.1 JAVA虛擬機(jī)的安裝</p><p> 6.1.1JDK的安裝</p><p> 下載jdk1.7.0_51軟件,打開(kāi)軟件進(jìn)行安裝,如圖6.1、6.
75、2。</p><p> 圖 6.1 JDK的安裝</p><p> 圖 6.2 JDK完成安裝</p><p> 6.1.2 Java環(huán)境變量配置</p><p> 1.打開(kāi)我的電腦--屬性--高級(jí)--環(huán)境變量 ,如圖6.3。</p><p> 圖6.3 配置Java環(huán)境變量</p><p
76、> 2.新建系統(tǒng)變量JAVA_HOME 和CLASSPATH </p><p> 變量名:JAVA_HOME </p><p> 變量值:C:\Program Files\Java\jdk1.7.0</p><p> 變量名:CLASSPATH </p><p> 變量值:.;%JAVA_HOME%\lib\dt.jar;%J
77、AVA_HOME%\lib\tools.jar;</p><p> 3. 選擇“系統(tǒng)變量”中變量名為“Path”的環(huán)境變量,雙擊該變量,把JDK安裝路徑中bin目錄的絕對(duì)路徑,添加到Path變量的值中,并使用半角的分號(hào)和已有的路徑進(jìn)行分隔。 </p><p><b> 變量名:Path </b></p><p> 變量值:%JAVA_HO
78、ME%\bin;%JAVA_HOME%\jre\bin;</p><p> 6.2 Eclipse的安裝</p><p> 下載Eclipse4.3.2 、 ADT22.6.2 、Android SDK。</p><p> 6.2.1 安裝SDK</p><p> 點(diǎn)擊Android SDK進(jìn)行安裝,如圖6.4。</p>
79、<p> 圖 6.4 安裝SDK</p><p> 完成安裝后,打開(kāi)SDK下載相應(yīng)的Android操作系統(tǒng)版本,如圖6.5。</p><p> 圖 6.5 安裝Android操作系統(tǒng)</p><p> 6.2.2 Eclipse的安裝</p><p> 1、點(diǎn)擊Eclipse安裝軟件,根據(jù)提示進(jìn)行安裝,安裝完成后,點(diǎn)擊h
80、elp-->install new software,然后點(diǎn)擊add,在彈出的窗口中點(diǎn)擊archive選擇ADT所在路徑,并在name除填入ADT名稱,然后點(diǎn)擊OK,根據(jù)提示進(jìn)行安裝ADT插件,如圖 4.6。</p><p> 圖 6.6安裝ADT插件</p><p> 點(diǎn)擊Window->preference,點(diǎn)擊Android選擇Browse選擇sdk所在路徑,點(diǎn)擊ap
81、ply然后點(diǎn)擊OK,如圖6.7。</p><p> 圖 6.7 添加SDK路徑</p><p><b> 編碼實(shí)現(xiàn)</b></p><p><b> 7.1 編碼的目的</b></p><p> 通過(guò)編碼把軟件設(shè)計(jì)結(jié)果翻譯成Java語(yǔ)言的程序,同時(shí)也是對(duì)設(shè)計(jì)的進(jìn)一步具體化,也是對(duì)所學(xué)知識(shí)的一
82、個(gè)具體體現(xiàn)。</p><p><b> 7.2 游戲截圖</b></p><p> 游戲截圖如下圖7.1,圖7.2,圖7.3,圖7.4。</p><p> 圖7.1 游戲主界面 圖 7.2 開(kāi)始游戲界面</p><p> 圖 7.3 設(shè)置界面
83、 圖 7.4 游戲結(jié)束界面</p><p> 7.3 游戲功能的實(shí)現(xiàn)</p><p> 7.3.1主角動(dòng)作的實(shí)現(xiàn)</p><p> 主角每完成一個(gè)完整的動(dòng)作是由好多個(gè)分解動(dòng)作組成,比如主角向左移動(dòng)時(shí),是由好幾個(gè)向左走動(dòng)的單個(gè)動(dòng)作構(gòu)成,那么判斷主角移動(dòng)狀態(tài)并形成連續(xù)的動(dòng)作的算法如下: </p><p> public int ge
84、tRoleSharp() {</p><p> if (mRoleStatus == UIModel.ROLE_STATUS_ON_FOOTBOARD) {</p><p> mRoleSharp = UIModel.ROLE_SHARP_STANDING;</p><p> return mRoleSharp;</p><p><
85、;b> }</b></p><p> mFrameCounter++;</p><p> if (mFrameCounter == mFrameDelay) {</p><p> mFrameCounter = 0;</p><p> if (mRoleStatus == UIModel.ROLE_STATUS_F
86、REEFALL) {</p><p> if (mRoleSharp == UIModel.ROLE_SHARP_FREEFALL_NO1) {</p><p> mRoleSharp = UIModel.ROLE_SHARP_FREEFALL_NO2;</p><p> } else if (mRoleSharp == UIModel.ROLE_SHARP_
87、FREEFALL_NO2) {</p><p> mRoleSharp = UIModel.ROLE_SHARP_FREEFALL_NO3;</p><p> } else if (mRoleSharp == UIModel.ROLE_SHARP_FREEFALL_NO3) {</p><p> mRoleSharp = UIModel.ROLE_SHARP_
88、FREEFALL_NO4;</p><p><b> } else {</b></p><p> mRoleSharp = UIModel.ROLE_SHARP_FREEFALL_NO1;</p><p><b> }</b></p><p> } else if (mRoleStatus
89、== UIModel.ROLE_STATUS_FREEFALL_RIGHT</p><p> || mRoleStatus == UIModel.ROLE_STATUS_ON_FOOTBOARD_RIGHT) {</p><p> if (mRoleSharp == UIModel.ROLE_SHARP_MOVE_RIGHT_NO1) {</p><p> m
90、RoleSharp = UIModel.ROLE_SHARP_MOVE_RIGHT_NO2;</p><p> } else if (mRoleSharp == UIModel.ROLE_SHARP_MOVE_RIGHT_NO2) {</p><p> mRoleSharp = UIModel.ROLE_SHARP_MOVE_RIGHT_NO3;</p><p>
91、; } else if (mRoleSharp == UIModel.ROLE_SHARP_MOVE_RIGHT_NO3) {</p><p> mRoleSharp = UIModel.ROLE_SHARP_MOVE_RIGHT_NO4;</p><p><b> } else {</b></p><p> mRoleSharp =
92、UIModel.ROLE_SHARP_MOVE_RIGHT_NO1;</p><p><b> }</b></p><p><b> } else {</b></p><p> if (mRoleSharp == UIModel.ROLE_SHARP_MOVE_LEFT_NO1) {</p><p
93、> mRoleSharp = UIModel.ROLE_SHARP_MOVE_LEFT_NO2;</p><p> } else if (mRoleSharp == UIModel.ROLE_SHARP_MOVE_LEFT_NO2) {</p><p> mRoleSharp = UIModel.ROLE_SHARP_MOVE_LEFT_NO3;</p><
94、p> } else if (mRoleSharp == UIModel.ROLE_SHARP_MOVE_LEFT_NO3) {</p><p> mRoleSharp = UIModel.ROLE_SHARP_MOVE_LEFT_NO4;</p><p><b> } else {</b></p><p> mRoleSharp
95、= UIModel.ROLE_SHARP_MOVE_LEFT_NO1;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> return mRoleSharp;</p><
96、;p><b> }</b></p><p> 7.3.2隨機(jī)產(chǎn)生踏板</p><p> 在游戲中隨機(jī)生成20個(gè)隨機(jī)數(shù),并根據(jù)詳細(xì)設(shè)計(jì)里的規(guī)則形成相應(yīng)的踏板,其算法如下:</p><p> private void generateFootboard() {</p><p> int frameAmount
97、 = 1;</p><p> int frameDelay = 1;</p><p> int frameType = FOOTBOARD_TYPE_NORMAL;</p><p> switch (mRan.nextInt(20)) {</p><p><b> case 0:</b></p>&
98、lt;p><b> case 1:</b></p><p><b> case 2:</b></p><p> frameType = FOOTBOARD_TYPE_UNSTABLE;</p><p><b> break;</b></p><p><b&g
99、t; case 3:</b></p><p><b> case 4:</b></p><p><b> case 5:</b></p><p> frameType = FOOTBOARD_TYPE_SPRING;</p><p><b> break;</b
100、></p><p><b> case 6:</b></p><p><b> case 7:</b></p><p><b> case 8:</b></p><p><b> case 9:</b></p><p>
101、;<b> case 10:</b></p><p><b> case 11:</b></p><p> frameType = FOOTBOARD_TYPE_SPIKED;</p><p><b> break;</b></p><p><b> cas
102、e 12:</b></p><p><b> case 13:</b></p><p> frameType = FOOTBOARD_TYPE_MOVING_LEFT;</p><p> frameAmount = 2;</p><p> frameDelay = 15;</p><
103、;p><b> break;</b></p><p><b> case 14:</b></p><p><b> case 15:</b></p><p> frameType = FOOTBOARD_TYPE_MOVING_RIGHT;</p><p> f
104、rameAmount = 2;</p><p> frameDelay = 15;</p><p><b> break;</b></p><p><b> default:</b></p><p> frameType = FOOTBOARD_TYPE_NORMAL;}</p>
105、<p> mFootboardList.add(new Footboard(mRan.nextInt(mScreenAttribute.maxX</p><p> - BORDER_ATTRIBUTE_IMAGE_WIDTH), mScreenAttribute.maxY</p><p> + ROLE_ATTRIBUTE_HEITH, BORDER_ATTRIBUTE
106、_IMAGE_WIDTH,</p><p> BORDER_ATTRIBUTE_IMAGE_HEITH, frameType, frameAmount,</p><p> frameDelay));}</p><p> 隨機(jī)產(chǎn)生的踏板如圖7.1所示。</p><p> 圖 7.1 隨機(jī)產(chǎn)生的踏板</p><p>
107、; 7.3.3下一個(gè)踏板的生成</p><p> 當(dāng)隨機(jī)產(chǎn)生踏板時(shí),在游戲當(dāng)中還要有生成下一個(gè)踏板的算法,生成下一個(gè)踏板的算法如下所示:</p><p> public int nextFrame() {</p><p><b> try {</b></p><p> return mFrameCounter
108、/ mFrameDelay;</p><p> } finally {</p><p> mFrameCounter++;</p><p> if (mFrameCounter == mFrameAmount * mFrameDelay) {</p><p> mFrameCounter = 0;</p><p&g
109、t;<b> }</b></p><p><b> }</b></p><p> 7.3.4隨機(jī)生成加分物品</p><p> 根據(jù)詳細(xì)設(shè)計(jì)規(guī)定,隨機(jī)生成25個(gè)隨機(jī)數(shù),根據(jù)相關(guān)規(guī)定生成加分物品,實(shí)現(xiàn)算法如下:</p><p> private void generateFood() {&l
110、t;/p><p> if (mCurFood.mTimeCounter > 0) {</p><p><b> return;</b></p><p><b> }</b></p><p> switch (mRan.nextInt(25)) {</p><p>&
111、lt;b> case 0:</b></p><p> mCurFood.mFoodReward = FOOD_1;</p><p><b> break;</b></p><p><b> case 1:</b></p><p> mCurFood.mFoodReward
112、 = FOOD_2;</p><p><b> break;</b></p><p><b> case 2:</b></p><p><b> case 3:</b></p><p><b> case 4:</b></p><
113、;p> mCurFood.mFoodReward = FOOD_3;</p><p><b> break;</b></p><p><b> case 5:</b></p><p><b> case 6:</b></p><p><b> case
114、 7:</b></p><p> mCurFood.mFoodReward = FOOD_4;</p><p><b> break;</b></p><p><b> case 8:</b></p><p><b> case 9:</b></p&g
115、t;<p><b> case 10:</b></p><p> mCurFood.mFoodReward = FOOD_5;</p><p><b> break;</b></p><p><b> case 11:</b></p><p><b&
116、gt; case 12:</b></p><p><b> case 13:</b></p><p> mCurFood.mFoodReward = FOOD_6;</p><p><b> break;</b></p><p><b> case 14:</b
117、></p><p><b> case 15:</b></p><p><b> case 16:</b></p><p><b> case 17:</b></p><p> mCurFood.mFoodReward = FOOD_7;</p>&
118、lt;p><b> break;</b></p><p><b> case 18:</b></p><p><b> case 19:</b></p><p><b> case 20:</b></p><p><b> cas
119、e 21:</b></p><p> mCurFood.mFoodReward = FOOD_8;</p><p><b> break;</b></p><p><b> default:</b></p><p> mCurFood.mFoodReward = FOOD_NON
120、E;</p><p><b> return;</b></p><p><b> }</b></p><p> mCurFood.mMinX = mRan</p><p> .nextInt((mScreenAttribute.maxX - FOOD_ATTRIBUTE_IMAGE_SIZE
121、));</p><p> mCurFood.mMinY = mRan</p><p> .nextInt((mScreenAttribute.maxY - FOOD_ATTRIBUTE_IMAGE_SIZE));</p><p> mCurFood.mMaxX = mCurFood.mMinX + FOOD_ATTRIBUTE_IMAGE_SIZE;</
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于安卓平臺(tái)的手機(jī)計(jì)步器畢業(yè)論文
- 畢業(yè)論文——基于安卓坦克大戰(zhàn)游戲
- 基于安卓平臺(tái)的手機(jī)計(jì)步器畢業(yè)論文
- 基于安卓坦克大戰(zhàn)游戲畢業(yè)論文.doc
- 基于安卓平臺(tái)的手機(jī)計(jì)步器的設(shè)計(jì)-畢業(yè)論文
- 畢業(yè)論文--基于安卓系統(tǒng)的拼圖游戲設(shè)計(jì)
- 本科畢業(yè)論文基于安卓系統(tǒng)的拼圖游戲的設(shè)計(jì)與開(kāi)發(fā)
- 基于安卓的音樂(lè)播放器開(kāi)發(fā)-畢業(yè)論文
- 安卓游戲畢業(yè)設(shè)計(jì)論文
- 基于安卓平臺(tái)開(kāi)發(fā)的移動(dòng)應(yīng)用——用藥指南【畢業(yè)論文】
- 畢業(yè)論文范文——基于安卓平臺(tái)的手機(jī)助手設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文范文——基于安卓平臺(tái)的手機(jī)助手設(shè)計(jì)與實(shí)現(xiàn)
- 安卓游戲畢業(yè)設(shè)計(jì)--基于安卓的“經(jīng)營(yíng)冷飲店”游戲設(shè)計(jì)
- 畢業(yè)論文---- 基于j2me的手機(jī)游戲開(kāi)發(fā)
- 畢業(yè)設(shè)計(jì)(論文)+手機(jī)游戲開(kāi)發(fā)-java畢業(yè)論文
- 基于安卓的手機(jī)貼身秘書系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)——畢業(yè)論文
- 畢業(yè)論文——基于安卓系統(tǒng)的考勤系統(tǒng)
- 安卓手機(jī)旅游向?qū)脚_(tái)畢業(yè)論文(含外文翻譯)
- 基于安卓android手機(jī)平臺(tái)的記事本設(shè)計(jì)課程設(shè)計(jì)畢業(yè)論文
- 基于java+me的手機(jī)游戲畢業(yè)論文
評(píng)論
0/150
提交評(píng)論