計(jì)算機(jī)應(yīng)用技術(shù)畢業(yè)論文_第1頁(yè)
計(jì)算機(jī)應(yīng)用技術(shù)畢業(yè)論文_第2頁(yè)
計(jì)算機(jī)應(yīng)用技術(shù)畢業(yè)論文_第3頁(yè)
計(jì)算機(jī)應(yīng)用技術(shù)畢業(yè)論文_第4頁(yè)
計(jì)算機(jī)應(yīng)用技術(shù)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

(此文檔為word格式,下載后您可任意編輯修改?。┵F州電子信息職業(yè)技術(shù)學(xué)院計(jì)算機(jī)科學(xué)系畢業(yè)設(shè)計(jì)論文題目:Java專業(yè):計(jì)算機(jī)應(yīng)用技術(shù)姓名:指導(dǎo)老師:彭偉,胡登權(quán)二0一一年月日目錄TOC\o"1-5"\h\z\o"CurrentDocument"第1章JAVA的簡(jiǎn)介3第2章JAVA中的類4第三章Java與CC+的差異5\o"CurrentDocument"第四章J2ME技術(shù)概覽...二6J2ME的概念6J2ME的簡(jiǎn)介6手機(jī)游戲的發(fā)展74.3.1面前國(guó)內(nèi)手機(jī)游戲的發(fā)展情況74.3.2面前國(guó)際手機(jī)游戲的發(fā)展情.況7\o"CurrentDocument"第五章游戲的需求設(shè)計(jì)分析8MIDP中的游戲API8游戲類構(gòu)成9Boxer類的實(shí)現(xiàn).9GameCanvas類的功能及特點(diǎn)9Sprite類的功能及特點(diǎn)95.3游戲角色的處理95.4游戲中的事件處理10keyPressed方法..10keyReleased方法....11■勺設(shè)計(jì)方案126.1項(xiàng)目簡(jiǎn)介126.2項(xiàng)目模塊12技術(shù)實(shí)現(xiàn)136.4項(xiàng)目演示13\o"CurrentDocument"6.5飛機(jī)大戰(zhàn)的所需素材…14\o"CurrentDocument"飛機(jī)大戰(zhàn)的設(shè)計(jì)代碼展示15飛機(jī)大戰(zhàn)的截面圖組18第7章感想19第八章致謝和參考文獻(xiàn)21第一章JAVA簡(jiǎn)介它最初被命名為Oak,目標(biāo)設(shè)定在家用電器等小型系統(tǒng)的編程語(yǔ)言,來(lái)解決諸如電視機(jī)、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通訊問(wèn)題。由于這些智能化家電的市場(chǎng)需求沒(méi)有預(yù)期的高,Sun放棄了該項(xiàng)計(jì)劃。就在Oak幾近失敗之時(shí),隨著互聯(lián)網(wǎng)的發(fā)展,Sun看到了Oak在計(jì)算機(jī)網(wǎng)絡(luò)上的廣闊應(yīng)用前景,于是改造了Oak,以“Java”的名稱正式發(fā)布?!鯤port|avl.AppM.UnftfiASHpuLwJ—-「匚I■Tfwft用尊〈畢畢^(qū)#■炸5|H郵puMH:MlQPfJrfftaOtidIM.弩HEE0;._.J"一__-pwcta:rw,I(H>l*wpf9VrNHAj4:JAVAJava編程語(yǔ)言的風(fēng)格十分接近C、C++語(yǔ)言。Java是一個(gè)純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它繼承了C++語(yǔ)言面向?qū)ο蠹夹g(shù)的核心,Java舍棄了C++語(yǔ)言中容易引起錯(cuò)誤的指針(以引用取代)、運(yùn)算符重載(operatoroverloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對(duì)象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔(dān)憂。在JavaSE1.5版本中,Java又引入了泛型編程(GenericProgramming)、類型安全的枚舉、不定長(zhǎng)參數(shù)和自動(dòng)裝拆箱等語(yǔ)言特性。Java不同于一般的編譯執(zhí)行計(jì)算機(jī)語(yǔ)言和解釋執(zhí)行計(jì)算機(jī)語(yǔ)言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺(tái)上的虛擬機(jī)來(lái)解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。不過(guò),每次的編譯執(zhí)行需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了Java程序的運(yùn)行效率。但在J2SE1.4.2發(fā)布后,Java的執(zhí)行速度有了大幅提升。與傳統(tǒng)程序不同,Sun公司在推出Java之際就將其作為一種開(kāi)放的技術(shù)。全球數(shù)以萬(wàn)計(jì)的Java開(kāi)發(fā)公司被要求所設(shè)計(jì)的Java軟件必須相互兼容°“Java語(yǔ)言靠群體的力量而非公司的力量”是Sun公司的口號(hào)之一,并獲得了廣大軟件開(kāi)發(fā)商的認(rèn)同。這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式完全不同。Sun公司對(duì)Java編程語(yǔ)言的解釋是:Java編程語(yǔ)言是個(gè)簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無(wú)關(guān)、可移植、高性能、多線程和動(dòng)態(tài)的語(yǔ)言。Java平臺(tái)是基于Java語(yǔ)言的平臺(tái)。這樣的平臺(tái)目前非常流行,因此微軟公司推出了與之競(jìng)爭(zhēng)的.NET平臺(tái)以及模仿Java的C#語(yǔ)言。名字起源。(內(nèi)容來(lái)自老師的講解和相關(guān)課本的摘要)第二章JAVA中相關(guān)類1,final類:為防止他人從你的類上派生新類,此類是不可擴(kuò)展的。動(dòng)態(tài)調(diào)用比靜態(tài)調(diào)用花費(fèi)的時(shí)間要長(zhǎng)。2,多態(tài)類:在java中,對(duì)象變量是多態(tài)的。而java中不支持多重繼承。3,抽象類:規(guī)定一個(gè)或多個(gè)抽象方法的類本身必須定義為abstract。例:publicabstractstringgetDescripitionJava中的每一個(gè)類都是從Object類擴(kuò)展而來(lái)的。object類中的equal和七0$0而&方法。equal用于測(cè)試一個(gè)對(duì)象是否同另一個(gè)對(duì)象相等。toString返回一個(gè)代表該對(duì)象的字符串,幾乎每一個(gè)類都會(huì)重載該方法,以便返回當(dāng)前狀態(tài)的正確表示。(toString方法是一個(gè)很重要的方法)通用編程:任何類類型的所有值都可以同object類型的變量來(lái)代替。封裝:就是把數(shù)據(jù)和行為結(jié)合起在一個(gè)包中)并對(duì)對(duì)象使用者隱藏?cái)?shù)據(jù)的實(shí)現(xiàn)過(guò)程,一個(gè)對(duì)象中的數(shù)據(jù)叫他的實(shí)例字段(instancefield。重載:當(dāng)多個(gè)方法具有相同的名字而含有不同的參數(shù)時(shí),便發(fā)生重載。編譯器必須挑選出調(diào)用哪個(gè)方法。數(shù)組列表:ArrayList動(dòng)態(tài)數(shù)組列表,是一個(gè)類庫(kù),定義在java.uti包中,可自動(dòng)調(diào)節(jié)數(shù)組的大小。4,class類和object類中的getclass方法返回

class類型的一個(gè)實(shí)例,程序啟動(dòng)時(shí)包含在main方法的類會(huì)被加載,虛擬機(jī)要加載他需要的所有類,每一個(gè)加載的類都要加載它需要的類。第三章Java與CC++的差異熟悉C語(yǔ)言和C++語(yǔ)言的讀者一定想搞清楚這個(gè)問(wèn)題,實(shí)際上,Java確實(shí)是從C語(yǔ)言和C++語(yǔ)言繼承了許多成份,甚至可以將Java看成是類C語(yǔ)言發(fā)展和衍生的產(chǎn)物。比如Java語(yǔ)言的變量聲明操作符形式參數(shù)傳遞,流程控制等方面和C語(yǔ)言,C++語(yǔ)言完全相同盡管如此,Java和C語(yǔ)言,C++語(yǔ)言又有許多差別,主要表現(xiàn)在如下幾個(gè)方面:Java中對(duì)內(nèi)存的分配是動(dòng)態(tài)的它采用面向?qū)ο蟮臋C(jī)制,采用運(yùn)算符new為每個(gè)對(duì)象分配內(nèi)存空間而且,實(shí)際內(nèi)存還會(huì)隨程序運(yùn)行情況而改變。程序運(yùn)行中,每個(gè),Java系統(tǒng)自動(dòng)對(duì)內(nèi)存進(jìn)行掃描對(duì)長(zhǎng)期不用的空間作為”垃圾”進(jìn)行收集,使得系統(tǒng)資源得到更充分地利用.按照這種機(jī)制程序員不必關(guān)注內(nèi)存管理問(wèn)題,這使Java程序的編寫(xiě)變得簡(jiǎn)單明了,并且避免了了由于內(nèi)存管理方面的差錯(cuò)而導(dǎo)致系統(tǒng)出問(wèn)題。而C語(yǔ)言通過(guò)malloc()和free(這兩個(gè)庫(kù)函數(shù)來(lái)分別實(shí)現(xiàn)分配內(nèi)在和釋放內(nèi)存空間的,C++語(yǔ)言中則通過(guò)運(yùn)算符new和delete來(lái)分配和釋放內(nèi)存.在C和C++這種機(jī)制中程序員必須非常仔細(xì)地處理內(nèi)存的使用問(wèn)題。一方面,如果對(duì)己釋放的內(nèi)存再作釋放或者對(duì)未曾分配的內(nèi)存作釋放,都會(huì)造成死機(jī);而另一方面,如果對(duì)長(zhǎng)期不用的或不再使用的內(nèi)存不釋放則會(huì)浪費(fèi)系統(tǒng)資源,甚至因此造成資源枯竭^(guò)Java不在所有類之外定義全局變量而是在某個(gè)類中定義一種公用靜態(tài)的變量來(lái)完成全局變量的功能。Java不用goto語(yǔ)句而是用try-catch-final異嫦處理語(yǔ)句來(lái)代替goto語(yǔ)句處理出錯(cuò)的功能.Java不支持頭文件,而C和C++語(yǔ)言中都用頭文件來(lái)定義類的原型全局變量,庫(kù)函數(shù)等,這種采用頭文件的結(jié)構(gòu)使得系統(tǒng)的運(yùn)行維護(hù)相當(dāng)繁雜。Java不支持宏定義,而是使用關(guān)鍵字finals定義常量在C++中則采用宏定義來(lái)實(shí)現(xiàn)常量定義,這不利于程序的可讀性.Java對(duì)每種數(shù)據(jù)類型都分配固定長(zhǎng)度。比如,在Java中,int類型總是32位的而在C和C++中,對(duì)于不同的平臺(tái),同一個(gè)數(shù)據(jù)類型分配不同的字節(jié)數(shù),同樣是int類型在PC機(jī)中為二字節(jié)即16位,而在VAX-11中則為32位這使得C語(yǔ)言造成不可移植性,而Java則具有跨平臺(tái)性平臺(tái)無(wú)關(guān)性).類型轉(zhuǎn)換不同。在C和C++中可通過(guò)指針進(jìn)行任意的類型轉(zhuǎn)換,常常帶來(lái)不安全性,而在Java中,運(yùn)行時(shí)系統(tǒng)對(duì)對(duì)象的處理要進(jìn)行類型相容性檢查,以防止不安全的轉(zhuǎn)換.結(jié)構(gòu)和聯(lián)合的處理。在C和C++中,結(jié)構(gòu)和聯(lián)合的所有成員均為公有這就帶來(lái)了安全性問(wèn)題,而在Java中根本就不包含結(jié)構(gòu)和聯(lián)合所有的內(nèi)容都封裝在類里面.Java不再使用指針。指針是C和C++中最靈活,也最容易產(chǎn)生錯(cuò)誤的數(shù)據(jù)類型.由指針?biāo)M(jìn)行的內(nèi)存地址操作常會(huì)造成不可預(yù)知的錯(cuò)誤,同時(shí)通過(guò)指針對(duì)某個(gè)內(nèi)存地址進(jìn)行顯式類型轉(zhuǎn)換后,可以訪問(wèn)一個(gè)C++中的私有成員從而破壞安全性。而Java對(duì)指針進(jìn)行完全地控制,程序員不能直接進(jìn)行任何指針操作.避免平臺(tái)依賴。Java語(yǔ)言編寫(xiě)的類庫(kù)可以在其它平臺(tái)的Java應(yīng)用程序中使用,而不像C++語(yǔ)言必須依賴于Windows平臺(tái)。第四章J2ME技術(shù)概覽J2ME的概念:J2ME的全稱是Java2MicroEdition(J2ME)——Java2技術(shù)微型版,與J2SE、J2EE一樣都是有美國(guó)SUN微系統(tǒng)公司提出的JAVA技術(shù)規(guī)范。J2ME簡(jiǎn)介:J2ME是為了能夠開(kāi)發(fā)運(yùn)行在小型設(shè)備、獨(dú)立設(shè)備、互聯(lián)移動(dòng)設(shè)備、嵌入式設(shè)備上的JAVA應(yīng)用程序而被提出的。J2ME是建立在一個(gè)由概要描述、配置、JAVA虛擬機(jī)和操作系統(tǒng)等部分組成的標(biāo)準(zhǔn)架構(gòu)之上的,這些內(nèi)容共同組成了完整的J2ME實(shí)時(shí)運(yùn)行環(huán)境。它的技術(shù)核心是由一個(gè)JAVA虛擬機(jī)(JVM)及一套適合運(yùn)行在上述設(shè)備環(huán)境上的API接口構(gòu)成。J2ME在1999年的JavaOne開(kāi)發(fā)人員大會(huì)上初次亮相,它的目標(biāo)是面向智能無(wú)線設(shè)備和小型計(jì)算設(shè)備的開(kāi)發(fā)人員,這些開(kāi)發(fā)人員需要在他們的產(chǎn)品中整合跨平臺(tái)的能力。無(wú)線設(shè)備和小型計(jì)算設(shè)備的消費(fèi)者期望這些設(shè)備能夠有較高的性能。他們希望小型計(jì)算設(shè)備有快速的響應(yīng)時(shí)間,與同種設(shè)備相兼容,擁有功能完備的應(yīng)用程序。消費(fèi)者希望桌面計(jì)算機(jī)和筆記本電腦上的軟件和功能同樣能夠運(yùn)行在移動(dòng)電話和個(gè)人數(shù)字助理上。為了滿足他們的需求,開(kāi)發(fā)人員必須重新考慮他們?cè)O(shè)計(jì)計(jì)算機(jī)系統(tǒng)的方式。開(kāi)發(fā)人員需要利用商業(yè)計(jì)算機(jī)上現(xiàn)有的前端和后端軟件的計(jì)算能力,并將這些能力傳遞到微型、移動(dòng)和無(wú)線的計(jì)算設(shè)備上。J2ME能夠以最小的修改來(lái)實(shí)現(xiàn)這種傳遞,如果應(yīng)用程序的設(shè)計(jì)是可伸縮的,應(yīng)用程序就可以適應(yīng)小型計(jì)算設(shè)備上有限的資源。J2ME為在小型電子設(shè)備上創(chuàng)建性能卓越的網(wǎng)絡(luò)應(yīng)用提供了一套完整的解決方案,能很好的解決軟件跨平臺(tái)的兼容性和安全性的問(wèn)題。J2ME架構(gòu)的模塊化設(shè)計(jì)使應(yīng)用程序可以靈活適應(yīng)小型計(jì)算設(shè)備的限制。J2ME架構(gòu)沒(méi)有替代小型計(jì)算設(shè)備的操作系統(tǒng)。相反,J2ME架構(gòu)由位于原生操作系統(tǒng)之上的多層軟件組成,這些軟件共同稱為“連接有限設(shè)備配置”(ConnectedLimitedDeviceConfiguration,CLDC)。安裝在操作系統(tǒng)之上的CLDC形成了小型計(jì)算設(shè)備的運(yùn)行時(shí)環(huán)境。J2ME架構(gòu)由3個(gè)軟件層組成:第一層是包括在內(nèi)的配置層,這個(gè)層次直接與原生操作系統(tǒng)進(jìn)行交互。配置層還處理profile和JVM之間的交互。第二層是profile層,由小型計(jì)算設(shè)備的應(yīng)用程序編程接口(API)的最小集合組成。第三層是MobileInformationDeviceProfile(MIDI)層。MIDP層由用戶網(wǎng)絡(luò)連接、永久存儲(chǔ)和用戶界面的javaAPI組成。它還能夠訪問(wèn)CLDC庫(kù)和MIDP庫(kù)。4.3手機(jī)游戲的發(fā)展,手機(jī)是現(xiàn)在人們生活中必不可少的通訊工具之一,有著其重要的作用,現(xiàn)在的人們?cè)絹?lái)越認(rèn)識(shí)到它的重要性。作為手機(jī)中的一部分一一手機(jī)游戲,也發(fā)揮著它特有作用??梢哉f(shuō),手機(jī)游戲發(fā)展到今天已經(jīng)越來(lái)越為人們所熟知,也越來(lái)越受到人們的喜愛(ài)。但是應(yīng)該看到,國(guó)內(nèi)手機(jī)游戲的發(fā)展還是剛剛起步,與歐美日韓等先進(jìn)國(guó)家還有著一定的差距,但是這種差距正在一步一步的縮小。4.3.1目前國(guó)內(nèi)手機(jī)游戲的發(fā)展情況,隨著技術(shù)對(duì)游戲經(jīng)驗(yàn)的促進(jìn),游戲市場(chǎng)持續(xù)增長(zhǎng)。商業(yè)IT革命為我們節(jié)省了時(shí)間和金錢,從而提高了我們的工作水平,我們因此花費(fèi)更多的時(shí)間和金錢在游戲上,來(lái)改善生活的整體質(zhì)量。甚至在當(dāng)今困難的經(jīng)濟(jì)時(shí)代,游戲仍保持快速增長(zhǎng),它仍然是盈利行業(yè)的組成部分。Java開(kāi)發(fā)者應(yīng)該注意到這里蘊(yùn)藏著的巨大的商機(jī)。手機(jī)游戲市場(chǎng)的確有很大的市場(chǎng)發(fā)展空間,前景看好,但是在中國(guó)游戲市場(chǎng)中馬上占據(jù)主流地位是不大可能的,那應(yīng)該還需要至少一年的“磨合期”。中國(guó)大眾還不大熟悉手機(jī)游戲這一新鮮事物,在消費(fèi)心理和習(xí)慣上需要引導(dǎo)和培養(yǎng),尤其是在電腦網(wǎng)絡(luò)游戲大行中國(guó)的時(shí)期。這也是一個(gè)消費(fèi)對(duì)象需要被確定的問(wèn)題。什么樣的人會(huì)為手機(jī)游戲而消費(fèi)呢?而這直接關(guān)系到這一新興產(chǎn)業(yè)的存活。只有有了消費(fèi)需求,才能帶動(dòng)整個(gè)手機(jī)游戲產(chǎn)業(yè)鏈的循環(huán)。在發(fā)展不見(jiàn)明朗的萌芽期,手機(jī)游戲營(yíng)運(yùn)方式、費(fèi)用結(jié)算方式也是需要一段摸索時(shí)間的。內(nèi)容提供商、電信運(yùn)營(yíng)商、手機(jī)終端生產(chǎn)商之間利益的協(xié)調(diào)還需要實(shí)踐地調(diào)整。而這都是目前中國(guó)手機(jī)游戲界內(nèi)無(wú)法做到的事情。手機(jī)游戲肯定會(huì)有大發(fā)展,但是,目前不適合非理智地冒進(jìn)。4.3.2目前國(guó)際手機(jī)游戲的發(fā)展情況,在國(guó)際上日本、韓國(guó)在這方面處于領(lǐng)先地位。日本在手機(jī)游戲領(lǐng)域占據(jù)了絕對(duì)的領(lǐng)導(dǎo)地位。1999年,包括北美在內(nèi)的很多國(guó)家和地區(qū)對(duì)手機(jī)游戲還一無(wú)所知,日本就已擁有超過(guò)3(萬(wàn)的手機(jī)游戲用戶,占全球手機(jī)游戲用戶的70%以上。2001年初,當(dāng)短信游戲在全球逐步發(fā)展之時(shí),日本NTTDoCoMo已經(jīng)推出了近500款i—mode游戲。2004年4月,日本計(jì)算機(jī)娛樂(lè)協(xié)會(huì)(CESA)發(fā)表的統(tǒng)計(jì)報(bào)告顯示,2003年日本國(guó)內(nèi)利用手機(jī)上網(wǎng)玩游戲的用戶數(shù)達(dá)897萬(wàn)人。第五章游戲設(shè)計(jì)的需求分析5.1,MIDP中的游戲API:MIDP是專門為互聯(lián)受限設(shè)備配置設(shè)計(jì)的,它為移動(dòng)設(shè)備提供了一套API集合,MIDP包含用戶界面類、持久存儲(chǔ)功能與網(wǎng)絡(luò)功能。早在MIDP1.0版本時(shí),是沒(méi)有單獨(dú)的游戲API的,在MIDP2.0后增加了一個(gè)新的專門的游戲軟件包Javax.microedition.lcdui.game,顧名思義,此包中定義了游戲開(kāi)發(fā)的各種類型。這個(gè)軟件包是一個(gè)專門為在移動(dòng)信息設(shè)備上開(kāi)發(fā)游戲應(yīng)用而設(shè)計(jì)的,所以又叫作游戲API。[10]它里面的成員類有以下幾個(gè):GameCanvas、Layer、LayerManager、Sprite、TiledLayer。GameCanvas是提供基本的游戲界面;Layer是一個(gè)用來(lái)表示游戲中的可視元素的抽象類;LayerManager管理一系列的Layer;Sprite是一個(gè)基本的可視元素,它本身包含了許多操作,比如將一個(gè)圖片切分成若干畫(huà)面幀(RowFrame),再對(duì)這些畫(huà)面幀編排出一個(gè)動(dòng)畫(huà)序列(FrameSequence);TiledLayer是一個(gè)可以被許多圖片填充的類似于表格的可視元素。[10]本論文在設(shè)計(jì)游戲過(guò)程中涉及到其中的GameCanvas類和Sprite類。5.2游戲類構(gòu)成:在游戲中,主要的一些類構(gòu)成有PocketBoxing、Boxer、Enemy、GameCanvas。其中PocketBoxing類繼承了MIDlet類,用來(lái)進(jìn)行MIDlet的LiveCycle控制;Boxer存儲(chǔ)了玩家的拳擊手的信息,進(jìn)行拳擊手的描繪;Enemy存儲(chǔ)電腦控制的拳擊手的信息,進(jìn)行拳擊手的描繪,它繼承了Boxer類;GameCanvas繼承了Canvas一&類,進(jìn)行畫(huà)面的描繪與操作。各類都是用與類名稱相同的文件名來(lái)存儲(chǔ)的Boxer類的實(shí)現(xiàn):Boxer類是用來(lái)存儲(chǔ)玩家拳擊手狀態(tài)的信息,再以次為根據(jù)進(jìn)行描繪。Boxer類由于與用來(lái)表現(xiàn)對(duì)手的Enemy類大致上是相同的,所以要以繼承了Enemy類為前提來(lái)實(shí)現(xiàn)。在Boxer類的Constructor當(dāng)中,會(huì)進(jìn)行拳擊手圖像的獲取。這里要準(zhǔn)備拳擊手的身體、上段防御的手腕、下段防御的手腕、上段拳擊的手腕、下段拳擊的手腕等五種圖像。通過(guò)身體圖像四種類圖像的配合,就可以描繪出生動(dòng)拳擊手動(dòng)態(tài)。GameCanvas類的功能及特點(diǎn):GameCanvas類是Javax,microedition,lcdu軟件包中的Cavas類的一個(gè)子類,它可以為游戲提供基本的顯示功能;GameCanvas類是提供了游戲的中心屬性,如游戲鍵當(dāng)前狀態(tài)的能力、雙緩存繪圖等;GameCanvas類是一個(gè)專門的為每一個(gè)GameCanvas實(shí)例填充初始化純白像素的緩存器;通過(guò)調(diào)用Graphics對(duì)象可以改變緩存器中的內(nèi)容。5.2.3Sprite類的功能及特點(diǎn):Sprite類是一個(gè)能顯示幾個(gè)繪圖幀(frame)中的其中一幀的基本動(dòng)態(tài)層;這些幀大小相同并且由一個(gè)單獨(dú)的圖片(image)對(duì)象提供;Sprite類可以使許多幀連續(xù)的運(yùn)動(dòng),可以使一個(gè)定制的序列以任何方式被放置;另外還可以提供轉(zhuǎn)化于檢測(cè)方法。下面是Sprite代碼樣例:[1]5.3游戲角色的處理:這里的游戲角色一一拳擊手的初始化是以將拳擊手設(shè)為后退,并將生命值設(shè)為默認(rèn)值為主要目的。拳擊手在揮出拳之后,將會(huì)在等待一段時(shí)間后恢復(fù)原本的防御狀態(tài)。為了要進(jìn)行這個(gè)等待處理,使用到了Tick計(jì)數(shù)。當(dāng)現(xiàn)在的狀態(tài)為上下拳擊時(shí),就會(huì)開(kāi)始Tick計(jì)數(shù),當(dāng)數(shù)到4以上的狀態(tài)時(shí)就會(huì)回到原來(lái)的防御位置。這樣一來(lái)就可以表現(xiàn)出拳擊手出拳頭后再回到原來(lái)防御狀態(tài)的樣子。不過(guò),在后退時(shí)揮出拳擊的情況中,這里不能馬上回到后退狀態(tài)。要在揮出拳擊后回到后退狀態(tài)時(shí),就得通過(guò)玩家自己的操作來(lái)進(jìn)行了。5.4游戲中的事件處理:事件可以分為低層事件(low-levelevent)與高層事件((“keyPressed”+((char)keyCode));}else(,}}當(dāng)按下手機(jī)的操作鍵盤上的按鍵時(shí),就會(huì)觸發(fā)這key事件,系統(tǒng)并會(huì)自動(dòng)調(diào)用keyPressed()方法,并且系統(tǒng)將捕獲到的鍵碼傳遞給該方法,在上面的那段代碼中方法判斷了所按的按鍵值是否大于0,如果大于0輸出所按的手機(jī)鍵盤上的實(shí)際值,否則執(zhí)行其他的操作任務(wù)。囹5.4.2keyReleased方法:可以說(shuō)方法keyReleased()與上面提到的keyPressed()方法是對(duì)應(yīng)的。它是用來(lái)處理手機(jī)操作鍵盤上的按鍵被釋放的事件,這個(gè)方法也同樣沒(méi)有與之對(duì)應(yīng)的顯示的聽(tīng)眾,這些聽(tīng)眾也是由系統(tǒng)根據(jù)實(shí)際對(duì)象提供的。下面是一個(gè)樣例代碼:publicvoidkeyReleased(intkeyCode)(if(keyCode>0)(輸出當(dāng)前被釋放鍵的鍵碼System.out.println(“keyReleased”+((char)keyCode));}else(,}}當(dāng)釋放手機(jī)操作鍵盤上被按下的按鍵時(shí),則會(huì)觸發(fā)這個(gè)key事件,系統(tǒng)并會(huì)自動(dòng)交由keyReleased()方法來(lái)處理該事件,同樣的上面的這段代碼中,該方法判斷了所按的按鍵值是否大于0,如果大于0則輸出所釋放的手機(jī)鍵盤上的被按下的按鍵的實(shí)際鍵值,否則執(zhí)行其他的操作任務(wù)。[4]上面說(shuō)的是在開(kāi)發(fā)手機(jī)游戲過(guò)程中遇到的兩種低層事件的方法keyPressed方法和keyReleased方法,下面就具體介紹“PocketBoxing”手機(jī)游戲的開(kāi)發(fā)過(guò)程。第六章第二種游戲(飛機(jī)大戰(zhàn))的設(shè)計(jì)方案6.1項(xiàng)目簡(jiǎn)介;w,A,S.D鍵分別來(lái)控制上、左、下、右四個(gè)方向,方便閃躲敵機(jī)子彈和進(jìn)攻敵機(jī),用J鍵來(lái)射擊子彈攻打敵機(jī)。6.2項(xiàng)目模塊6.36.5飛機(jī)大戰(zhàn)所需的素材1背景圖2敵軍飛機(jī)3我軍飛機(jī)4敵軍飛機(jī)5我軍飛機(jī)發(fā)射子彈6開(kāi)始截面圖7另一個(gè)背景圖BOS機(jī)出現(xiàn))8敵軍BOS機(jī)(當(dāng)我軍把敵機(jī)消滅到一定數(shù)量時(shí)候敵機(jī)9我軍子彈擊中敵機(jī)時(shí)候的爆炸圖6.6飛機(jī)大戰(zhàn)設(shè)計(jì)的源代碼展示packageGames;importjava.awt.Color;importjava.awt.Frame;importjava.awt.Graphics;importjava.awt.Image;importjava.awt.Toolkit;importjava.awt.event.KeyAdapter;importjava.awt.event.KeyEvent;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.io.InputStream;importjava.util.ArrayList;importjava.util.Random;importsun.awt.image.PixelConverter.Bgrx;importjavazoom.jl.decoder.JavaLayerException;importjavazoom.jl.player.advanced.AdvancedPlayer;publicclassGameStart<zidan>extendsFrame{得到窗體工具類Toolkittool=Toolkit.getDefaultToolkit();publicintw_width=700;窗體的寬度publicintw_zd=null;定義一個(gè)boss類的對(duì)象:bsbossbs=newboss(this);publicvoidshowWindow(){this.setTitle飛機(jī)大戰(zhàn)");this.setSize(w_width,w_(kuandu,gaodu);this.setResizable(false);添加關(guān)閉窗體的監(jiān)聽(tīng)addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEventarg0){System.exit(0);}});添加鍵盤的監(jiān)聽(tīng),用于控制飛機(jī)飛行addKeyListener(newKeyAdapter(){在按下某一個(gè)鍵的時(shí)候觸發(fā)publicvoidkeyPressed(KeyEvente){調(diào)用飛機(jī)按下鍵盤修改狀態(tài)的方法fj.moveFeiji(e);從新在窗體上畫(huà)圖repaint();}});this.setVisible(true);啟動(dòng)線程,實(shí)現(xiàn)窗體從畫(huà)MyThreadmy=newMyThread();啟動(dòng)線程my.start();音樂(lè)的路徑Stringpath="music[jonasbrothers]sorry-jonasbrothers.mp3〃;InputStreamis=this.getClass().getClassLoader().getResourceAsStream(path);事例化音樂(lè)類try{AdvancedPlayerap=newAdvancedPlayer(is);ap.play();}catch(JavaLayerExceptionel){TODO自動(dòng)生成catch塊e1.printStackTrace();}**通過(guò)雙緩沖解決閃屏的效果Graphicsg表示窗體的畫(huà)筆*?Overridepublicvoidupdate(Graphicsg){如果緩沖圖片是空的,就創(chuàng)建一個(gè)緩沖圖片if(Time)編譯器技術(shù)的發(fā)展越來(lái)越接近于C++。Java語(yǔ)言是多線程的。在Java語(yǔ)言中,線程是一種特殊的對(duì)象,它必須由Thread類或其子(孫)類來(lái)創(chuàng)建。值得注意的是Thread類已經(jīng)實(shí)現(xiàn)了Runnable接口,因此,任何一個(gè)線程均有它的run方法,而run方法中包含了線程所要運(yùn)行的代碼。線程的活動(dòng)由一組方法來(lái)控

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論