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

下載本文檔

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

文檔簡介

1、<p>  本 科 畢 業(yè) 設 計</p><p>  基于J2ME環(huán)境的手機游戲軟件的開發(fā)</p><p>  所在學院 </p><p>  專業(yè)班級 電子與信息工程 </p><p>  學生姓名 學號

2、 </p><p>  指導教師 職稱 </p><p>  完成日期 年 月 </p><p><b>  摘要</b></p><p>  Java ME 以往稱作J2ME(Java Platform, Micro Editi

3、on )是為機頂盒、移動電話和PDA之類嵌入式消費電子設備提供的Java語言平臺,包括虛擬機和一系列標準化的Java API。它和Java SE、Java EE一起構(gòu)成Java技術(shù)的三大版本,并且同樣是通過JCP(Java Community Process)制訂的。網(wǎng)絡游戲產(chǎn)業(yè)的繁榮,讓企業(yè)和消費者同時認識到了游戲的力量。雖然受到屏幕尺寸和操控的限制,但作為全球使用量最大的通信產(chǎn)品,手機也具有成功進入掌上游戲領(lǐng)域的理由。從二維貪吃蛇游

4、戲,到今天的三維畫面及聲色效果俱佳的游戲,手機游戲已經(jīng)成為一種非常普遍的休閑方式。</p><p>  本文開發(fā)的游戲是一個略微簡單的J2ME射擊游戲。本文首先簡要的介紹java編程語言的三個領(lǐng)域(J2SE、J2EE、J2ME),接下去是開發(fā)環(huán)境的配置的簡要介紹,提出了怎樣對游戲進行策劃,游戲的需求性分析。本論文的主要目標是實現(xiàn)一個名為《飛機闖闖》的游戲,進入游戲后,首先啟動閃屏界面,后臺默認加載游戲資源,然后進

5、入到菜單界面,通過用戶的選擇,轉(zhuǎn)到其他相關(guān)界面。本文將程序分為六個類,包括BulletsSprite類,此類繼承于Sprite,主要實現(xiàn)了游戲子彈精靈。IntroCanvas用于繪制幫助界面,顯示游戲幫助信息。mainMIDlet屬于主控模塊類,用于整個游戲界面的切換,其他各個模塊返回中斷信號給此類,在這個類中切換當前顯示屏幕。MenuCanvas用戶提供一個菜單界面,方便用戶選擇不同的游戲程序功能。PlayCanvas為游戲的主界面,

6、實現(xiàn)了游戲功能。SplashCanvas是閃屏界面,顯示此界面時,啟動后臺線程,加載游戲資源。</p><p>  關(guān)鍵詞:J2ME;飛機射擊;手機游戲開發(fā)</p><p><b>  Abstract</b></p><p>  Java ME past the J2ME (Java Platform called for Micro hap

7、pen), STB, mobile phone and PDA embedded consumer electronic equipment such as the Java language Platform provides, including virtual machine and a series of standardized Java API. It and Java SE, Java EE together make u

8、p Java technology, and as the three versions that JCP (Java is through the Process) make. Online game industry prosperity, let the enterprise and the consumer also recognized the power game. Though when the screen size a

9、nd </p><p>  This paper development game is a slightly simple J2ME shooting game. This paper first briefly introduces three fields of Java programming language (J2SE Java, J2EE, J2ME), the next is the develo

10、pment environment of the configuration are briefly introduced, proposed how the game plan, the game needs sex analysis. This thesis's main goal is to achieve a named "aircraft, the game of chuang chuang after en

11、tering the game, the first start flash screen interface, background, and then load game resourc</p><p>  Keywords: J2ME; Aircraft shot; Mobile games development</p><p><b>  目錄</b><

12、;/p><p><b>  前言1</b></p><p>  第1章 J2ME介紹2</p><p>  1.1 J2ME體系結(jié)構(gòu)2</p><p>  1.1.1 配置層2</p><p>  1.1.2 簡表層3</p><p>  1.1.3 CLDC類庫3

13、</p><p>  1.1.4 MIDP4</p><p>  1.2 J2ME WTK4</p><p>  第二章 J2ME手機開發(fā)環(huán)境介紹5</p><p>  2.1 JDK的安裝與配置5</p><p>  2.2 Eclipse的配置6</p><p>  第三章 射擊

14、游戲程序功能分析7</p><p>  3.1程序功能需求分析7</p><p>  3.2 游戲的可行性分析7</p><p>  3.3 游戲策劃8</p><p>  3.3.1 游戲的故事背景策劃8</p><p>  3.3.2 游戲開始畫面系統(tǒng)8</p><p>  3.

15、3.3 游戲操作介紹8</p><p>  3.3.4游戲內(nèi)容分系統(tǒng)9</p><p>  3.3.5 線程控制和游戲暫停系統(tǒng)9</p><p>  第四章 手機游戲設計10</p><p>  4.1 游戲基礎類簡介10</p><p>  4.2 游戲系統(tǒng)的詳細設計11</p><p

16、>  4.3 創(chuàng)建J2ME項目設計12</p><p>  4.4 MIDP應用程序12</p><p>  第五章 游戲的具體實現(xiàn)14</p><p>  5.1 主菜單背景界面系統(tǒng)14</p><p>  5.2 子彈與飛機界面系統(tǒng)15</p><p>  5.3 鍵盤的響應16</p>

17、;<p>  5.4 子彈的發(fā)射爆炸控制16</p><p>  5.5 飛機與子彈或者其他事物碰撞檢測17</p><p>  5.6 玩家四次游戲機會的實現(xiàn)17</p><p>  5.7 游戲中的獎勵和飛機的相關(guān)行為17</p><p>  5.8 普通敵人的相關(guān)屬性18</p><p>

18、  5.9 運動中的如何讓白云實現(xiàn)19</p><p>  第六章 系統(tǒng)測試20</p><p>  6.1 程序軟件問題20</p><p>  6.2 游戲內(nèi)容測試20</p><p><b>  總結(jié)21</b></p><p><b>  致謝22</b>

19、</p><p><b>  參考文獻23</b></p><p><b>  附錄24</b></p><p><b>  前言</b></p><p>  隨著科學技術(shù)的發(fā)展,人們的工作和生活方式已經(jīng)發(fā)生了巨大的變化?,F(xiàn)今各種各樣的智能消費類電子產(chǎn)品呈現(xiàn)爆炸性增長,其數(shù)

20、量已經(jīng)遠遠超過桌面PC,以當前使用最多的移動通信設備手機來為例,隨著移動設備硬件的不斷發(fā)展,手機的內(nèi)存也在逐漸的加大,雖然遠不及PC機的內(nèi)存,但是應經(jīng)從原來的幾字節(jié)發(fā)展到如今的幾兆之多。同時也嵌入了智能芯片,處理器的能力也大大增加,同時使用了智能的手機操作系統(tǒng),具有支持數(shù)碼相機等豐富的多媒體等功能。這些功能很難讓人相信是在短短的一兩年之內(nèi)完成的,其速度之快,卻是讓人感到震驚。通過周圍人的使用情況,我們就會發(fā)現(xiàn)其速度的發(fā)展并不是沒有原因的

21、,手機逐漸普及和硬件設備的發(fā)展,以及JAVA語言的成熟都是推動手機智能化的重要力量。移動設備的增長一方面體現(xiàn)在數(shù)量的幾何形增長趨勢;另一方面,設備本身也向著更強大的處理能力、智能應用等方向的發(fā)展。移動設備數(shù)量的劇增,在帶給人們更多方便的同時,也產(chǎn)生了巨大的移動開發(fā)市場。隨著手機的普及,手機逐漸生活化,成為了人們生活中必備的一部分。人們對手機的功能要求也越來越多,為了滿足人們?nèi)粘5膴蕵饭δ?,手機游戲應運而生。雖然手機游戲受手機設備的限制,

22、很難實</p><p>  手機上玩游戲使得游戲平臺J2ME得到迅速普及。手機游戲的開發(fā)成為了游戲行業(yè)的最新熱點。隨著手機設備的不斷提高,手機內(nèi)存的不斷增加,以及java技術(shù)的不斷成熟。智能手機目前正以極快的速度在增長,隨之而來的便是巨大的手機游戲開發(fā)商機。</p><p><b>  J2ME介紹</b></p><p>  J2ME是sun

23、公司針對嵌入式、消費類電子產(chǎn)推出的開發(fā)平臺,它與J2SE和J2EE并稱為java的三大平臺。與J2SE和J2EE不同,J2ME實際只是一系列規(guī)范的集合,由JCP組織制定相關(guān)的Java Specification Request(JSR)并發(fā)布[1]。每個廠商在生產(chǎn)自己產(chǎn)品時都會按照規(guī)范實現(xiàn)相應的J2ME規(guī)則,同時必須要通過TCK測試,這樣才確保兼容性,比如MIDP2.0規(guī)范就是在JSR118中制定的。</p><p&

24、gt;  1.1 J2ME體系結(jié)構(gòu)</p><p>  J2ME平臺主要由配置(Configuration)和簡表(Profile)兩大部分組成的。配置是J2ME的類庫集合,它在滿足最大設備需求的同時,自身最小化。配置中同時也包含JAVA虛擬機。簡表是針對一系列設備提供的類庫[11]。</p><p>  J2ME中有兩個最主要的配置,分別是連接有線設備配置(Connected Limit

25、ed Devices Configuration,CLDC)和連接設備配置(Connected Devices Configuration,CDC)。它們是根據(jù)設備的硬件性能進行區(qū)分的,隨著技術(shù)的發(fā)展,J2ME開發(fā)網(wǎng)將逐步推出基于CDC的平臺介紹。CLDC主要針對手機、PDA、雙工尋呼機等。下圖是J2ME體系結(jié)構(gòu)的框圖:</p><p>  圖1.1 J2ME體系結(jié)構(gòu)圖</p><p>&

26、lt;b>  1.1.1 配置層</b></p><p>  CLDC 稱為連接受限的設備配置,針對內(nèi)存容量較小,并且只有低帶寬、間歇式網(wǎng)絡連接的低端設備[11]。它是為資源有限的小型設備定義的一種標準的、內(nèi)存占用最小的JAVA平臺。CLDC主要用于內(nèi)存16位或32的設備,從開發(fā)角度說,它的大小限制使得其相比CDC而言,更有趣、更具挑戰(zhàn)性。專家根據(jù)這類設備的特點,對標準的JAVA虛擬機規(guī)范進行了

27、精簡,去掉了一些冗余的特性,為計算能力有限的低端設備定義了一個小型JAVA虛擬機。K虛擬機即KVM(k即 kilo),也就是說KVM所需的內(nèi)存容量僅以KB來衡量。專家組還為這樣的小型JAVA虛擬機定義了兩部分核心類庫,一部分從J2SE的核心類庫中獲取,是J2SE核心類庫中定義的類的子集,另一部分是專門針對低端設備特點而設計的類。</p><p>  CDC 稱為連接不限設備配置,主要面向高內(nèi)存,高網(wǎng)絡傳輸速度且網(wǎng)

28、絡穩(wěn)定的高端設備。這類設備通常有固定的供電設備。專家組為這種高端設備定義了功能完善的JAVA虛擬機(CVM)和此類設備專用的核心類庫。CDC定義的核心類庫也有兩部分組成:一部分截取至J2SE的核心類庫,由J2SE類庫的一部分子集組成。另一部分是專門針對這些高端設備的特點而設計的類。圖1.2顯示了J2SE、CLDC和CD 定義的核心類庫之間的關(guān)系。</p><p>  圖1.2 J2ME配置和J2SE關(guān)系圖<

29、;/p><p><b>  1.1.2 簡表層</b></p><p>  簡表層構(gòu)建在配置層之上。簡表的主要作用是為相同消費電子設備的不同生產(chǎn)廠商提供標準化的JAVA類庫。在簡表層之上的是針對設備的功能特性提供JAVA類庫支持,它對配置層的規(guī)范進行擴展和補充[12]。</p><p>  簡表層中對于嵌入式設備按照其應用的領(lǐng)域的不同做了進一步的細

30、分,把相同應用領(lǐng)域的設備歸結(jié)為一個設備族,同時為設備家族中的通用功能特性提供專門的JAVA庫類支持的。支持不同設備家族的JJAVA類庫分別定義在不同的簡表層的規(guī)范中。簡表和配置結(jié)合起來,為嵌入式設備提供了一個基于java的運行環(huán)境,在一個嵌入式設備上只有一個符合其配置規(guī)范上JAVA虛擬機和核心類庫,但是對一個配置而言,在其上可以有多個簡表規(guī)范同時存在。一個簡表規(guī)范不僅可以直接建立在某個配置規(guī)范之上,也可以建立在另一個簡表規(guī)范之上。應用開

31、發(fā)人員應該針對具體的簡表和配置規(guī)范進行相應的嵌入式設備的開發(fā),這樣才保證應用程序在實現(xiàn)相同簡表和配置的設備之間是可移植的。目前J2ME領(lǐng)域里使用最為廣泛的便是移動信息設備簡表(MIDP)。</p><p>  在眾多的簡表規(guī)范中,MIDP是被廣泛支持和使用的簡表規(guī)范,它主要是針對移動信息設備和一些體積較小且處理能力有限的手持設備,這些設備有著屏幕和輸入機制的共性。</p><p>  1.

32、1.3 CLDC類庫</p><p>  CLDC的起源可追溯到1999年JavaOne大會上,Sun引入了Java和KVM,以及相關(guān)的庫首的袖珍版本,雖然其他配置CLDC的虛擬機,以滿足要求,但由于虛擬機本身并沒有因此,它的實施是載于在KVM [10]當前版本。 CLDC是為使用較小的存儲設備的設計和開發(fā)能力,使用虛擬機是KVM,這是高度優(yōu)化的JVM。對于網(wǎng)絡連接而言,它是針對有限和間歇的無線連接設備。與事件

33、處理,用戶和應用程序之間,應用程序生存期管理等相關(guān)領(lǐng)域是由Profile來定義的,使用界面的定義也在Profile層的規(guī)范之內(nèi)。 CLDC的有四個包 :java.lang、java.util、java.io和javax.microedition。</p><p>  1.1.4 MIDP</p><p>  MIDP是J2ME中第一個實現(xiàn)的Profile,它主要是針對移動信息設備或體積相對

34、較小且處理能力有限的手持設備。它對設備的要求相對較簡單,使用MIDP的移動信息設備必須有一個顯示屏幕和用戶輸入機制。除了這些硬件要求外,MIDP還定義了一些相應的軟件需求,首先直接MIDP的設備必須提供管理軟件的功能,并能夠提供運行KVM虛擬機的線程。提供可以供程序軟件讀寫的永久存儲空間,并且可以訪問無線網(wǎng)絡,提供顯示輸出等。要能夠接受按鍵和觸屏事件的觸發(fā)功能。另外還要實現(xiàn)MIDP應用程序的生存周期安裝、選擇、啟動、關(guān)閉和刪除的管理。&

35、lt;/p><p>  1.2 J2ME WTK</p><p>  WTK 是Sun公司提供的無線開發(fā)工具包,全稱是Sun J2ME Wireless Toolkit它的設計目的是為了幫助開發(fā)人員簡化J2ME的開發(fā)過程。使用這個工具包可以開發(fā)能夠在與 Java Technology for the Wireless Industry規(guī)范相兼容的設備上運行的J2ME 應用程序。該工具箱包含了

36、完整的生成工具、實用程序以及設備仿真器[8]。</p><p>  WTK是用來開發(fā)MIDP的,為了讓MIDlet可以順利編譯和執(zhí)行,WTK必須包含有CLDC和MIDP的類庫,WTK幫助我們省去了很多額外安裝調(diào)試這些類庫的時間。但是不同版本的WTK包含的程序庫內(nèi)容是不一樣的,每個WTK版本的內(nèi)容都不盡相同,如果您在開發(fā)中需要某個特定的jar包而當前的WTK版本又沒有時,您可以簡單把這個jar包拷貝如當前WTK的l

37、ib文件夾即可。</p><p>  WTK需要有JDK的支持才能夠使用,在安裝WTK前需要先安裝完并且配置好JDK。</p><p>  J2ME手機開發(fā)環(huán)境介紹</p><p>  手機之所以能夠時時刻刻伴隨著人們的生活,其關(guān)鍵的特性就是便攜,并且能夠較長時間內(nèi)脫離電源使用。手機的顯示頻幕不會很大,輸入的方式也單一,電池的電力損耗小,決定了能夠在手機上運行的軟件

38、也具有相應的特性。</p><p>  最直接的手機開發(fā)模式是在手機的操作系統(tǒng)平臺上直接進行嵌入式的開發(fā)。嵌入式的一般方法是在傳統(tǒng)的電腦上編寫代碼,通過電腦上的手機游戲模擬器進行前期的開發(fā),完成基本測試后利用廠商提供的交叉編譯工具在電腦上變成可運行的二進制代碼以后,再下載到手機上進行真實環(huán)境的測試后才能生產(chǎn)。</p><p>  C、C++語言作為一種運行效率高的語言,被多數(shù)開發(fā)人員掌握,

39、通過C/C++的指針特性以及它貼近硬件機能的本質(zhì),運用它們開發(fā)能夠最大限度與硬件平臺結(jié)合,充分利用硬件性能,實現(xiàn)高性能圖形顯示。但是很多的情況下,C函數(shù)庫并不能滿足需求進行實際開發(fā)就必須預先準備好函數(shù)庫。實際上只有在充分利用手機操作系統(tǒng)提供的功能才能達到預期的目標。</p><p>  在使用任何一種語言進行編程時都離不開開發(fā)環(huán)境,JAVA語言也不例外,下面逐步將介紹開發(fā)環(huán)境和怎么配置開發(fā)環(huán)境。</p>

40、;<p>  2.1 JDK的安裝與配置</p><p>  首先運行jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008</p><p>  點擊“接受”出現(xiàn)自定義安裝,更改安裝的盤可以自己選擇,然后點擊“下一步”。</p><p>  本次安裝默認在C盤。點擊“完成”即可。</p><p

41、>  接下來是JDK的配置。</p><p> ?。?)點擊我的電腦→屬性→高級→環(huán)境變量→點擊“新建”,在變量名輸入java_home ; 變量值輸入D:\Program Files\Java\jdk1.6.0_10 ,點擊確定。如圖2-1。</p><p>  圖2-1輸入變量值圖</p><p>  (2)同上新建一個同上,新建一個系統(tǒng)變量,變量

42、名為:classpath;變量值:.;%java_home%\lib;%java_home%\lib\ tools.jar ,點擊確定。注意前面的小圓點必須要有。</p><p>  (3)在系統(tǒng)變量中,點擊Path變量,點解編輯,在變量值中添加:%java_home%\bin;%java_home%\jre6\bin; ,點擊確定。</p><p>  至此這樣就完成了JDK的配置。&

43、lt;/p><p>  2.2 Eclipse的配置</p><p>  到Eclipse官方下載本軟件的壓縮包文件后可以直接接壓縮到磁盤上然后運行,建議解壓縮到系統(tǒng)盤目錄下單獨建立文件夾名。</p><p>  下面是Eclipse的配置,打開Eclipse 選擇 Help ---> Insert New Software。</p><p&g

44、t;  單擊add,接著單擊archive 選擇eclipseme壓縮包的路徑,Name 可以隨便起 不過最好是Eclipseme。單擊確定 。</p><p>  選中EclipseMe 點擊 “下一步”,一直點 “下一步” 最后同意 協(xié)議 ,再點“完成”可以看到Eclipse的安裝進度條(等一下重啟Eclipse就好了)。</p><p>  選中J2ME 選中 Device Mana

45、gement</p><p>  單擊 "inport"</p><p>  再單擊“Browse” 找到WTK2.5.2的安裝路徑(文件夾)</p><p>  單擊“Refresh”</p><p><b>  單擊“完成”</b></p><p>  好了 到此Eclip

46、se配置J2ME環(huán)境就好了,可以直接編寫J2me文件了。</p><p>  射擊游戲程序功能分析</p><p>  3.1程序功能需求分析</p><p>  從啟動游戲開始,用戶在菜單欄里選擇新游戲按下按鈕確定,計算機給出的響應是調(diào)用閃屏三秒,接著在后臺多線程調(diào)入飛機和子彈等的圖片然后顯示在屏幕上,至此,游戲的初始化完成。</p><p&g

47、t;  控制飛機的上下左右移動,用戶只是通過鍵盤發(fā)出命令,程序接收到命令后調(diào)用RUN()方法里的算法對飛機當前的坐標位置經(jīng)行加減乘除,并且還需要運算改變位置后的坐標,同時覆蓋飛機的當前坐標值,并且通過多線程里飛機圖像刷新并且顯示在屏幕上,完成飛機的移動控制,這個需要用戶直接控制,內(nèi)部芯片不能直接控制。</p><p>  控制飛機的生命,當飛機發(fā)生了碰撞以后,程序自動的修改了飛機的生命值,并且把修改好的生命值在屏

48、幕上通過調(diào)用生命值圖像顯示。當生命值為零時,自動結(jié)束游戲。</p><p>  發(fā)射導彈的命令由用戶通過按下鍵盤發(fā)出,接著子彈和飛機的線程因為程序響應而終止,緊接著調(diào)用子彈的圖片,顯示在屏幕上。</p><p>  敵機和障礙物,用戶不能直接對其控制,是由程序控制的。</p><p>  碰撞,用戶不能直接控制,但是可以通過飛機到達間接控制的目的,根據(jù)程序里的方法對

49、其進行計算并且顯示。</p><p>  終止游戲,前面說到當飛機的生命值為零時,系統(tǒng)終止游戲。也可以是用戶根據(jù)自身原因,將游戲關(guān)閉。這是由用戶和計算機同時控制的。</p><p>  根據(jù)上述對基礎用列的事件流程進行分析,可以得出游戲的主要流程。</p><p> ?。?)游戲開始,為了吸引用戶的注意力和發(fā)揮用戶的想象力,我們要準備精美的圖片作為游戲的標題畫面。&

50、lt;/p><p>  (2)進入到游戲的主選菜單</p><p><b> ?。?)啟動游戲</b></p><p><b>  (4)選擇游戲難度</b></p><p> ?。?)進入游戲的主要顯示內(nèi)容顯示。包括用戶對飛機的控制,發(fā)射導彈的控制,用戶控制的生命顯示,敵機和子彈的顯示,背景的顯示,子

51、彈和飛機碰撞的判斷顯示。</p><p><b>  游戲結(jié)束。</b></p><p>  3.2 游戲的可行性分析</p><p>  游戲的可行性遵循以下原則[2]:</p><p> ?。?)每個設計思路都要有規(guī)范,而且要便于管理。</p><p> ?。?)能在手機上運行的手機游戲,因為

52、本身手機具有處理能力的局限性,所以設計必須要簡單富有趣味。同樣的操作也要簡單,易于上手。</p><p>  (3)目前手機游戲可謂是層出不窮,各種各樣眼花繚亂,所以相關(guān)的設計要讓別人耳目一新。</p><p>  (4)設計的游戲要有發(fā)展空間,因為時代在進步,一個游戲若是不加入新的元素,新的創(chuàng)意,玩家就會對手機游戲失去興趣。而且隨著手機的升級,手機運算能力的上升,可以推出新的版本。<

53、;/p><p>  (5)最終的游戲程序必須要通過測試安全可靠,沒有BUG,不會溢出,不會造成手機運行功能障礙。</p><p><b>  3.3 游戲策劃</b></p><p>  游戲在設計的第一步,就需要構(gòu)思好整個游戲,先形成一個最初的概念,然后慢慢的細化,接著從每個細節(jié)慢慢詳細化。接下去就是游戲的具體策劃。</p><

54、;p>  3.3.1 游戲的故事背景策劃 </p><p>  每個游戲都有他的故事背景,本游戲的名字叫做《飛機闖闖》,這是模仿其他類的飛行戰(zhàn)斗游戲,一只可愛的小飛機本來在天空之自由的翱翔,可惜出現(xiàn)了一只只心存敵意的其他飛機,小飛機展開了自衛(wèi)戰(zhàn),通過浴血奮戰(zhàn)將敵機清除。</p><p>  3.3.2 游戲開始畫面系統(tǒng)</p><p><b>  開

55、始菜單設置</b></p><p><b>  (1) 開始游戲 </b></p><p>  用戶選擇開始新游戲時,正式進入游戲運行。</p><p><b> ?。?)游戲幫助</b></p><p>  當用戶選擇游戲幫助時顯示游戲的主要控制方法,包括按鍵設置。讓用戶能最快的學會游

56、戲的操作,方便用戶的使用。</p><p><b>  (3) 退出</b></p><p>  退出該游戲。用戶通過控制左右方向鍵鍵可以選擇開始游戲,或者退出游戲。</p><p>  3.3.3 游戲操作介紹</p><p>  本游戲主要按鍵設置:</p><p>  按鍵左→用戶可以控制飛

57、機向左移動;</p><p>  按鍵右→用戶可以控制飛機向右移動;</p><p>  按鍵上→用戶可以控制飛機向上移動;</p><p>  按鍵下→用戶可以控制飛機向下移動;</p><p>  按鍵中間→發(fā)射導彈;</p><p>  按鍵→確定,暫停,繼續(xù);</p><p><b

58、>  按鍵→掛斷,退出。</b></p><p>  3.3.4游戲內(nèi)容分系統(tǒng)</p><p>  本游戲飛機有三條生命,被敵機擊中會減少一條生命,重生后有4秒屬于無敵狀態(tài),等三條生命全部用完即GAME CVER。</p><p>  飛機每次發(fā)射三個炸彈,玩家在擊毀敵機的同時也要注意躲避敵機的撞擊和子彈。</p><p>

59、  為了增加界面的美觀,地圖會一直變化,慢慢的移動,天空中的白云也會不斷的隨機出現(xiàn)。飛機在移動中遇到的敵機也會不定期的出現(xiàn),數(shù)量也會變化,小飛機在向左右移動的時候,會傾斜著移動,增加了一定的趣味性。在經(jīng)過一段時間后會出現(xiàn)一只大的飛機,如果小飛機撞上大飛機后,飛機的顏色就會變成紅色。</p><p>  3.3.5 線程控制和游戲暫停系統(tǒng)</p><p>  游戲進入主游戲界面,啟動主線程,

60、線程內(nèi)部接收用戶鍵盤輸入,通過鍵盤輸入控制游戲主角上下左右移動,然后進行游戲的碰撞檢測,判斷游戲主角的生命狀態(tài),調(diào)用界面繪制函數(shù),將界面內(nèi)容繪制到界面上。</p><p>  游戲中可以隨時暫停,呼出暫停菜單,查看幫助,接發(fā)短信,接聽電話,也可以回到游戲界面或者選擇退出游戲。</p><p><b>  手機游戲設計</b></p><p> 

61、 4.1 游戲基礎類簡介</p><p>  (1)Canvas類的主要功能在于對底層用戶事件的處理,包括按鍵事件和指針事件,他負責監(jiān)聽這些事件,并做出相應的處理。Canvas類是Displayable類的子類,使用setCurrent方法,將Canvas類實現(xiàn)為當前的屏幕。</p><p>  Canvas類本身并不提供具體繪制屏幕的過程,它需要依靠一個抽象方法向系統(tǒng)提供一個繪制屏幕的過

62、程,這個方法就是paint,它具體定義了圖形繪制的過程。當Canvasa組件顯示在手機屏幕上時,系統(tǒng)將調(diào)用子類重新寫的Paint(Graphics)方法完成界面的繪制,在這個方法中,我們可以使用系統(tǒng)的Graphics實例繪制游戲界面。</p><p>  Canvas類的另外一個重要功能就是獲得用戶的按鍵或指針信息,并且做出相應的處理。</p><p>  當用戶按下鍵盤上的按鍵并且放開的

63、時候,會產(chǎn)生按鍵事件,并且自動調(diào)用keyPress方法和keyRelease方法,并將按鍵的代碼作為參數(shù)傳遞給這兩個方法。每一個按鍵都有一個唯一的值,也稱作鍵碼(KeyCode)。</p><p>  MIDP規(guī)范定義了三種按鍵事件激活的方法。</p><p>  Protected void keyPressed(int keyCode)———當用戶按下某個按鍵的時候,keyPress

64、ed方法就被調(diào)用,keyCode表示的是用戶所按下的鍵的代碼,在Canvas類中都有標準電話上每個鍵盤的相應代碼常量。</p><p>  Protected void keyReleased(int keyCode)———當用戶釋放某一個按鍵的時候,keyReleased方法就被調(diào)用了。</p><p>  Protected void keyRepeated(int keyCode

65、)———當在很短的時間內(nèi),用戶重復多次按下同一個按鍵時,就產(chǎn)生了重復按鍵事件,keyRepeated方法被調(diào)用,注意不是所有的設備都支持重讀按鍵事件,因此在使用該事件前要檢查一下,當前的設備是不是支持重復按鍵事件。</p><p>  檢驗方法:public boolean hasRepeateEvents();返回是ture表示系統(tǒng)是支持重復按鍵事件的,相反要是顯示false則表示系統(tǒng)不支持重復按鍵事件。<

66、;/p><p>  (2)Layer是一個抽象類,用于表示游戲中的可見的一些元素。在Layer中定義了游戲可見元素共有的功能,比如游戲中元素的大小,位置,可見性,移動的功能。</p><p>  Public int getWidth()———返回可見元素的寬度。</p><p>  Public int getHeight()———返回可見元素的高度。</p&g

67、t;<p>  Public int getX()———返回可見元素的水平位置。</p><p>  Public int getY()———返回可見元素的垂直位置。</p><p>  Public void setPosition(int x,int y)———設置可見元素的位置。參數(shù) x,y表示的是水平和垂直位置。</p><p>  Publi

68、c void setVisible(boolean b)———設置可見元素的可見性。參數(shù)b所表示的值是ture則表示元素可見。相反的要是表示的是false則表示不可見。</p><p>  Public void move(int hd,int vd )———移動當前可見元素。 水平方向移動hd個像素,hd如果取的是正數(shù),則表示向右移動,相反,hd取得是負數(shù),則表示向左移動;垂直方向移動vd個像素,vd如果取的是

69、正數(shù),則表示向下移動,vd取的是負數(shù),則表示向上移動。</p><p>  游戲中的可見元素必須由Layer的子類創(chuàng)建,TiledLayer是用于創(chuàng)建游戲背景,TiledLayer所創(chuàng)建的游戲背景的尺寸不受設備屏幕大小的限制,并且使用很小的圖片就能創(chuàng)建一幅巨大的背景。</p><p> ?。?)Sprite類</p><p>  游戲中具有這樣一種實體,它們由一系列

70、圖像表示,代表游戲中的主角,敵人,飛機等等。這些圖像被稱為精靈(Sprite)。本游戲中的飛機就是用這種類來做的。在MIDP規(guī)范中使用Sprite類來表示這樣一類對象,具有三種構(gòu)造方法。</p><p>  a.圖像創(chuàng)建,原型為:public Sprite(image img);其中,img表示精靈的圖像。</p><p>  b.由圖像創(chuàng)建,并且指定幀大小,原型為:public Spri

71、te(Image img ,int width ,int height);其中,img表示精靈的圖像,width表示幀的寬度,height 表示幀的高度。系統(tǒng)會自動按照幀的寬度和高度自動對圖像進行分割,每個分割塊稱為一幀,幀的編號從0開始,自左向右,自上而下一次遞增。需要注意的是,圖像的高度和寬度必須是幀高度和寬度的整數(shù)倍,否則會產(chǎn)生IllagalArgumentException異常。</p><p>  c.

72、由其他精靈創(chuàng)建的副本,原型為:public Sprite(Sprite s);其中,s表示的是其他精靈實例。</p><p>  由于每個軟件都有自身的特點,因此不可能提供一個適合于所有軟件的的體系架構(gòu),但總的情況來看,必須要滿足以下特征:每個層由一組相關(guān)的類或者是組建構(gòu)成,共同組合來實現(xiàn)特定的功能。每個層對上層公開應用程序接口API,但是具體的實現(xiàn)對外透明的細節(jié)。 當某個層已經(jīng)發(fā)生了變化,不變的只有它的API,

73、因而其他層不會受到影響。層與層之間體現(xiàn)的是一種由上到下的附屬關(guān)系。</p><p>  4.2 游戲系統(tǒng)的詳細設計</p><p>  一般的射擊類游戲,代碼中出現(xiàn)的的許多涉及控制操作,顯示操作等比較復雜的內(nèi)容。</p><p>  Command類和CommandListener接口結(jié)合在一起,完成了LCDUI組件上命令事件的處理,實現(xiàn)了用戶與程序的交互。<

74、/p><p>  Command對象可以添加到任何一個Displayable類中。然后根據(jù)具體平臺的顯示方式提供給用戶。當用戶激活一個帶有Command的用戶界面控件時,這一事件就會被通知給與Displayable相關(guān)的CommandListener。</p><p>  1.mainMIDlet.java</p><p>  每個程序都必須有一個主類,本程序的主MID

75、let由mainMIDlet.java文件實現(xiàn),該類由MIDlet派生而來。該程序通過調(diào)用相應的函數(shù)來描述程序文件中的相關(guān)信息,并且控制整個程序的運行。控制著整個游戲的開始、結(jié)束、暫停和幫助,其中定義了CommandListener接口類,該類監(jiān)視用戶鍵盤的活動。</p><p>  2.MenuCanvas.java</p><p>  類MenuCanvas繼承自Canvas類。使用C

76、anvas默認的keyPressed方法,獲取當前按鍵信息,通過判斷按鍵信息,切換選擇按鈕。當按下確認鍵是根據(jù)選擇的具體功能項,跳轉(zhuǎn)至不同的功能界面。</p><p>  3.BulletsSprite.java</p><p>  這是玩家子彈類, BulletsSprite類繼承于Sprite類,主要實現(xiàn)了游戲中的子彈精靈,在敵機攻擊飛機,和玩家控制飛機攻擊敵機時被調(diào)用。</p&

77、gt;<p>  4.PlayCanvas.java</p><p>  該類主要是實現(xiàn)游戲的運行界面。包含一個主線程,在線程中進行游戲的界面繪制和碰撞檢測,游戲邏輯判斷等等。游戲有兩個繪制方法用來繪制游戲界面,</p><p>  5.SplashCanvas.java</p><p>  該類是顯示閃屏的,程序首先進入此界面,默認停留三秒鐘,然后啟

78、動后臺初始化函數(shù),初始化各界面游戲資源。此模塊的主要作用是給系統(tǒng)提供充足的準備游戲資源時間。 </p><p>  4.3 創(chuàng)建J2ME項目設計</p><p>  啟動Eclipse,點擊“文件”,選擇“新建”,繼續(xù)“項目”,接著在選擇“J2ME”選項,選擇“J2ME Midlet Suite”,單擊“下一步”按鈕,在彈出的對提示對話框中填寫項目的名稱和存放路徑,一般選擇默認的路徑就可以

79、了。</p><p>  接著“下一步”,在提示的對話框中對支持的MIDP版本經(jīng)行指定。</p><p>  直接“下一步”按鈕,在屏幕的對話框中對JAVA構(gòu)建設置進行定義,通常保持默認。</p><p>  單擊“完成”按鈕,EclipseMe將自動設置好項目及運行環(huán)境。單擊剛才創(chuàng)建的項目,在右側(cè)即可看到生成的項目結(jié)構(gòu)。</p><p> 

80、 4.4 MIDP應用程序</p><p>  MIDP中的基本機型單元叫做MIDlet。MIDlet是指一個擴展了javax.Microedition</p><p>  .midlet.MIDlet類并且實現(xiàn)了若干方法,如startApp,pauseApp,destoryApp的類。</p><p>  startApp,pauseApp,destoryApp

81、三個方法構(gòu)成了一個控制MIDlet的生命期的狀態(tài)機。</p><p>  startApp是用來啟動或者重新激活一個MIDlet。在多種情況下系統(tǒng)都會調(diào)用startApp方法,不過此方法主要用途是獲取或者重新獲取MIDlet需要的資源,并且讓MIDlet準備好處理來自諸如用戶界面和定時器的事件。注意startApp方法可以多次調(diào)用,首次啟動時調(diào)用一次,每次MIDlet重新激活時又會被調(diào)用。</p>

82、<p>  pauseApp是系統(tǒng)在要求MIDlet“暫停”的時候調(diào)用的。不過一般來說,要將pauseApp方法和startApp方法聯(lián)合使用,以用來釋放盡可能多的資源,好讓更多的內(nèi)存和資源供其他MIDlet和原生程序使用。</p><p>  destoryApp是最后一個MIDlet應用程序必須實現(xiàn)的方法。這個方法是在MIDlet即將銷毀時由系統(tǒng)調(diào)用的,也可以由MIDlet自身間接調(diào)用此方法,以在退

83、出前完成清除工作。通常情況下罵我們使用destoryApp方法來執(zhí)行所有必要的清除工作,以釋放程序執(zhí)行過程中分配的全部資源(關(guān)閉圖形界面組建,網(wǎng)絡連接以及數(shù)據(jù)庫記錄等)。</p><p>  在導航器上單擊鼠標右鍵,選擇“新建”,接著選擇“其他”,在打開的對話框中選擇“J2ME”選項,選中“J2ME Midlet”子項后點擊“下一步”按鈕。在出現(xiàn)的對話框中指定包。單擊“完成”按鈕后,EclipseMe將自動生成框

84、架。</p><p>  第五章 游戲的具體實現(xiàn)</p><p>  5.1 主菜單背景界面系統(tǒng)</p><p>  游戲啟動之后首先是出現(xiàn)一個閃屏,幫助加載后面的程序,減少用戶等待的時間。如圖5-1.進過三秒以后定義了顯示主窗口,接著出現(xiàn)一個界面顯示新游戲,幫助,退出三個按鈕。(如圖5-2)。點擊進入幫助按鈕時,會出現(xiàn)一個幫助界面。(如圖5-3)并且在構(gòu)成的同時定

85、義了菜單里需要加載的圖片和文字的內(nèi)容,設定當前窗體的定義和鍵盤監(jiān)聽事件,當監(jiān)聽到上下方向按鈕鍵時會自動調(diào)用不同的菜單顯示。在選取項目后點擊確認會分別做出不同的處理。</p><p>  圖5-1 游戲開機界面圖 圖5-2 菜單界面圖</p><p>  圖5-3 幫助界面的顯示圖</p><p>  5.2 子彈與

86、飛機界面系統(tǒng)</p><p>  在這個模塊中通過構(gòu)造函,初始化飛機和子彈等游戲資源,供游戲界面顯示使用。使用默認GameCanvas提供getKeyStates函數(shù)來獲取當前鍵盤信息。以位的形式返回鍵盤按鍵的按下與釋放的狀態(tài),bit位為1和0分別代表按下狀態(tài)和釋放狀態(tài)。只需要此一個函數(shù)的返回值就可以返回所有鍵的狀態(tài)。同時,這樣的機制也可檢測到幾個鍵同時按下的狀態(tài),從而提供斜向運行等相應功能(本程序沒有實現(xiàn)斜上運

87、行功能)。玩家控制的飛機在程序運行時應進行檢測是否飛出屏幕的范圍,如果飛出了手機屏幕,那就應該重新的對玩家飛機的坐標進行設定。</p><p>  游戲中,需要時不時的平衡游戲的可玩性。當玩家操控的飛機被擊中后,玩家飛機將有短暫無敵時間,在這段時間,不會進行碰撞的檢測,在屏幕的右上角同時還會出現(xiàn)無敵時間的的進度條。(如圖5-4)</p><p>  在設計時,為了方便敵機對玩家進行攻擊,使

88、游戲的可玩性增強。敵機會在隨機的時候轉(zhuǎn)變方向向或者是發(fā)射子彈,與此同時,程序還會檢測敵機是否飛出了界外。</p><p>  圖5-4 無敵時間進度條顯示圖 </p><p><b>  5.3 鍵盤的響應</b></p><p>  在這個程序里,玩家對飛機的控制主要是通過鍵盤的方向鍵操作完成的,當程序監(jiān)聽

89、到了上下左右方向鍵盤的活動時,就會調(diào)用對應的按鍵方法,使得玩家操控的飛機原來的坐標值發(fā)生變動,然后通過重新畫圖,來實現(xiàn)飛機的飛行移動位置和導彈的發(fā)射等。函數(shù)getGameAction是直接從常數(shù)1轉(zhuǎn)化為常數(shù)。參數(shù)是玩家通過鍵盤所輸入的值,返回值是響應的鍵盤代碼。</p><p>  在這里Canvas類實現(xiàn)了對keyPressed和keyReleased方法的監(jiān)聽。keyPressed是用戶按下鍵實現(xiàn)的方法,ke

90、yReleased是用戶使用的按鍵抬起后執(zhí)行的方法。而前面說到的getGameAction(keyCode)方法可以讓程序知道我們現(xiàn)在點擊的是哪個按鍵。</p><p>  5.4 子彈的發(fā)射爆炸控制</p><p>  飛機的子彈是有9個元素的精靈數(shù)組,表示的意思是小飛機每一次可以發(fā)射3組9發(fā)子彈,在一個完成的游戲中,給予玩家的飛機相應的根據(jù)關(guān)卡來提供。飛機的性能差別體現(xiàn)在所發(fā)射的子彈有

91、著不同的射程。因為本游戲只設置了一關(guān),所以子彈速度設定的差別就沒有體現(xiàn)出來。</p><p>  當玩家一次發(fā)射了3組子彈,必須要等到這3組子彈消失時,玩家才能再次發(fā)射子彈。</p><p>  程序使用了每組子彈的第一發(fā)子彈與敵機進行檢測碰撞的精靈,于此同時在第一發(fā)子彈中設置標志位,如果飛機子彈將敵機擊中了,則當敵機消失的時候,爆炸的圖片就會被調(diào)用到屏幕上去替代原來子彈的圖片。當玩家的飛

92、機發(fā)射第二組子彈的時候,屏幕上就會將子彈的圖片重新替換回來。</p><p>  5.5 飛機與子彈或者其他事物碰撞檢測</p><p>  在許多的游戲中都需要對各種碰撞情況經(jīng)行處理,如飛機的子彈打中了另外的飛機。在MIDP2.0中的Sprite類有很方便的函數(shù)來直接處理這類問題。</p><p>  檢測當前精靈是否與圖像發(fā)生碰撞,原型為:</p>

93、<p>  Public Boolean collidesWith(Image img ,int x,int y,Boolean level);</p><p>  其中,img表示帶檢測的圖像實例,x和y表示img實例所處的位置,level表示檢測級別,ture表示經(jīng)行像素級檢測,false表示經(jīng)行邊界級檢測。該方法表示當前精靈是否參與img指定的圖像發(fā)生碰撞。</p><p&g

94、t;  檢測當前精靈是否與其他精靈發(fā)生碰撞,原型為:</p><p>  Public Boolean collidesWith(Sprite s ,Boolean level);</p><p>  其中,s表示待檢測的精靈實例,level表示檢測級別,ture表示進行像素級檢,flase表示進行邊界檢測,該方法表示當前精靈是否參與s指定的精靈發(fā)生碰撞。</p><p

95、>  最理想的碰撞,是完全按照多邊形的外形和運行路徑規(guī)劃一個小的范圍,在這個范圍當中尋找會產(chǎn)生阻擋的的物體。當物體產(chǎn)生阻擋以后,運動的物體都必須在那個位置產(chǎn)生一個碰撞的事件。完美的想法跟實際的實現(xiàn)上都有一些困難,如果我們這么做,效率就會很低。</p><p>  最簡單的方法就是尋找物體的中心點,然后用這個中心點來畫一個圓,如果是3D圖形我們就要畫一個球,本游戲是個2D平面游戲,因此檢測時,我們檢測兩個兩個

96、物體半徑相加是否大于這個物體圓心的實際距離[11]。 </p><p>  5.6 玩家四次游戲機會的實現(xiàn)</p><p>  據(jù)游戲設置,玩家在每關(guān)中有都有四次機會,當玩家飛機被擊中或撞擊爆炸后,程序首先檢測整型變量playerno的值,并根據(jù)playerno的值決定屏幕右上角所畫玩家飛機標志的數(shù)量,playerno的初始值設定為3,由于碰撞就會相對的減去1,所以玩家共有4次機會。當

97、playerno<0時,游戲顯示結(jié)束,同時將變量pver賦值變?yōu)?,在render()或renderboss()函數(shù)中,over=1表示在屏幕上顯示GAMEOVER等相關(guān)信息。同時,將整型變量inputno賦植為1,至此手機的方向鍵失去作用,從而來消除玩家可以控制爆炸圖像移動這個BUG。相對的整型變量pzbz賦植為1,用此來消除玩家爆炸圖像繼續(xù)與敵人進行碰撞檢測這個BUG。</p><p>  5.7 游戲

98、中的獎勵和飛機的相關(guān)行為</p><p>  Sboss可根據(jù)玩家飛機位置自動飛行,初始時,將sbz值設置為2,然后在下面通過if語句判斷sbz的值來設置sboss自動飛行軌跡。</p><p>  Sboss首先會根據(jù)玩家飛機的位置對sbmove賦值,其取值為1、2、3、4分別代表玩家飛機在sboss的上下左右四個方向上,分別有四個if語句來進行判斷,在這4個if語句中,要設置標志位(s

99、movebz==0)。主要是為了防止sboss不斷根據(jù)玩家飛機的位置來不斷的調(diào)整飛行軌跡,這樣sboss難免就成了追蹤機,使得游戲的可操作性大大減小。所以在程序首次根據(jù)玩家飛機的位置設定好飛行軌跡時,便不再改變。</p><p>  在玩家操控的飛機子彈擊中sboss后,使用sboss.setFrame(1)將飛機設置為紅色飛機圖片,在本次結(jié)束前,使用sboss.setFrame(0)飛機的顏色變?yōu)榫G色,程序中設

100、定的是每過1/20秒重新畫一次,這樣就得到了飛機變色效果。如圖5-5。</p><p>  圖5-5飛機變色前后圖片</p><p>  5.8 普通敵人的相關(guān)屬性</p><p>  在程序中首先會定義兩個Random()類對象aik和aip,用來生成隨機數(shù)字,通過產(chǎn)生的隨機數(shù)字來設置飛機的飛行方向,另外還定義了ai和aipp兩個整型變量。Ai的值即代表飛機隨機飛

101、行方向。使用switch(ai)語句在程序的主線程中判斷飛機下一次的出現(xiàn)情況,為了避免重復出現(xiàn)的效果,使用語句ai=aik.nextInt()%4,以隨機出現(xiàn)0,1,2,3四個整數(shù)用來表示敵機的四個不同的飛行方向。</p><p>  使用 aipp=aip.nextInt()%5取得隨機數(shù)0到5的隨機數(shù)賦值給aipp,同時根據(jù)下面三條語句來設置飛機的出現(xiàn)位置:</p><p>  j0.

102、setPosition(100-aipp*30,planepoup+24);</p><p>  j1.setPosition(100,planepoup);</p><p>  j2.setPosition(100+aipp*30,planepoup-24);</p><p>  取屏幕高度的八分之一getHeight()/8賦給整型變量kkk,每次循環(huán)kkk-1

103、,當kkk<=1時飛機改變方向,當aipp>0時,飛機向左下方運行,使用語句setFrame(0)設置飛機圖片,獲取逼真的向左下移動的效果,同時使用move(-3,3)將飛機向左下方移動3個像素距離。當aipp<0時,向右下方運動,實現(xiàn)方法與上述方法基本相同。</p><p>  情況2:初始位置設置方法同情況1。當kkk〈0時,飛機掉頭向上飛,其中setFrame(3)來改變飛機圖片,使用 m

104、ove(-4,0)是飛機向上移動4個像素距離。</p><p>  情況3:初始位置設置方法同情況1。當kkk〈0時,飛機轉(zhuǎn)向左方向。設置情況3的原因是為了更多的隨機位置出現(xiàn)敵機。</p><p>  情況4:初始位置設置方法同情況1基本相同。但其中的飛機j1具有跟蹤能力,其實現(xiàn)方法如下:使用2個if語句if(j1.getX()<c1.getX())、if(j1.getX()>

105、c1.getX())判斷J1在玩家飛機的左側(cè)或右側(cè),并且實時的根據(jù)飛機的相對位置,通過setFrame()改變飛機的圖片信息和move()改變飛機的位置,使用如下語句</p><p>  if((j1.getX()<c1.getX())&&((j1.getX()+48)>c1.getX())&&(j1.getY()<c1.getY()))判斷玩家飛機是否在j1的下

106、方,當玩家飛機處于在j1的下方時,J1就向玩家飛機發(fā)射子彈。</p><p>  以上四種情況的最后,都需要使用隨機函數(shù)的nextInt()方法產(chǎn)生新的隨機數(shù)賦值給ai,aipp。</p><p>  另外在程序中還定義了一個整型數(shù)組jb[4],對應著4種可能出現(xiàn)的情況的標志位。</p><p>  之后,玩家飛機檢和每發(fā)子彈進行的碰撞都需要檢測,如果碰撞,則子彈就

107、北設置為不顯示。同時也要對敵機與玩家飛機和玩家飛機發(fā)出的子彈進行碰撞檢測,當發(fā)生碰撞時,繪制爆炸效果,同時將此飛機和子彈移除屏幕。</p><p>  5.9 運動中的如何讓白云實現(xiàn)</p><p>  為了是游戲打到逼真的效果,程序在游戲過程中加入了白云精靈,定義了一個sprite數(shù)組cloud,由于白云必須漂浮在飛機之上,所以在實現(xiàn)添加白云精靈時必須使用如下兩個方法之一,1.在圖層控制

108、中最先加入白云精靈。2.通過插入圖層的方法,將白云精靈插入至最高圖層位置顯示。</p><p>  程序中設定白云數(shù)為5。首先設置白云的初始位置,其語句如下:</p><p>  cloud[0].setPosition(25,planepoup-(65));</p><p>  cloud[1].setPosition(80,planepoup-(140));&l

109、t;/p><p>  cloud[2].setPosition(112,planepoup-(90));</p><p>  cloud[3].setPosition(175,planepoup-(200));</p><p>  cloud[4].setPosition(223,planepoup-(70));</p><p>  其原理為:將

110、屏幕的X數(shù)軸和Y數(shù)軸各分成5份,即在X軸的5個范圍內(nèi)每個范圍產(chǎn)生一處白云,在Y軸的范圍也只能出現(xiàn)一朵白云。通過生成隨機數(shù)來生成白云的起始位置。</p><p>  在程序啟動運行后,調(diào)用move(0,1)令白云的位置變動,因為白云的位置開始設定在屏幕的各個區(qū)域,因而白云離開手機屏幕的時間是不一樣的,這樣使得界面更逼真,同時在程序的執(zhí)行過程中調(diào)用if(cloud[].getY()>planepo)來判斷白云位

111、置是否處于屏幕界面之外。接著顯示是真的就調(diào)用cloud[].setPosition(cloudposition*40,planepoup)再次初始化此云朵的位置,在次方法中,使用如下語句cloudposition=aicloud.nextInt()%5,來隨機生成云朵的初始化位置。乘以40表示其在X軸出現(xiàn)的范圍是多少,如某次初始化時,cloud[0]、cloud[1]、cloud[2]、cloud[3]、 cloud[4]乘以的值分別為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論