freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于eclipse平臺的飛機游戲的開發(fā)畢業(yè)論文設(shè)計(編輯修改稿)

2024-07-19 00:49 本頁面
 

【文章內(nèi)容簡介】 ipse 是使用 Java 語言開發(fā)的,但它的用途并不限于 Java 語言;例如,支持諸如 C/C++、COBOL 和 Eiffel 等編程語言的插件已經(jīng)可用,或預(yù)計會推出。Eclipse 框架還可用來作為與軟件開發(fā)無關(guān)的其他應(yīng)用程序類型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)。Eclipse 是一個開放源代碼的、基于 Java 的可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。 關(guān)于 Wireless Tool Kit4WTK(Wireless Tool Kit)是 Sun 公司針對 J2ME 推出的用于手機和 Palm 等移動設(shè)備的開發(fā)包,是除手機廠商的專用開發(fā)包外唯一的手機模擬器開發(fā)包。它通用性高,開發(fā)出的應(yīng)用程序可保證能運行在大部分設(shè)備上,而不像專用廠商具有一定的不兼容性。雖然它沒有強大的功能和完善的調(diào)試手段,但它提供運行模擬器的最基本組件,是其他 IDE 需集成采用的必備元素。 Java Appication Manager手機中負(fù)責(zé)調(diào)配程序運行資源的管理后臺是 Java Application Manager。它所使用的傳輸媒體可以是紅外線、網(wǎng)絡(luò)、以及其他可用來傳輸?shù)拿襟w。Java Application Manager 會從網(wǎng)絡(luò)上下載代表該Application Suite 的 JAR 檔,接著在手機上安裝此 MIDlet Suite,然后在手機開始執(zhí)行該應(yīng)用程序。 本章小結(jié)第二章介紹了 Java 語言的特點、本程序的開發(fā)環(huán)境及其相關(guān)工具的原理和使用。53 程序結(jié)構(gòu)、思想和相關(guān)技術(shù) 本程序需要解決的主要技術(shù)問題 游戲程序是一項精度要求很高的程序系統(tǒng),因為其代碼利用率很高。一個實時運行的最終作品,每秒都會運行成千上萬行程序,繪圖事件、鍵盤事件都會以極高的頻率在后臺等待響應(yīng),若有絲毫的差別都將很容易導(dǎo)致程序在運行不久后可能出現(xiàn)嚴(yán)重錯誤,甚至死循環(huán)。因此,其邏輯設(shè)計應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計中。 游戲中為了美觀,適用性強,可能需要采用外部文件引入的圖片貼圖,有關(guān)貼圖,在 中提供了用于增強游戲功能的 game 包,使得解決靜態(tài)或動態(tài)、畫面背景、屏幕刷新的雙緩沖等都有較好的解決方案。 玩家飛機的運行可以通過鍵盤響應(yīng)事件控制,但敵方則因為是自動運行,就需要有一定的智能性;敵人飛機的運行算法也要進(jìn)行相關(guān)的設(shè)置,已免游戲過于簡單。 對于雙方發(fā)射的子彈應(yīng)該賦予不同的速度,同時,程序應(yīng)該設(shè)定敵人飛機的子彈不與敵人的飛機進(jìn)行碰撞檢測,已增加游戲的可玩性。 雙方的飛機在前進(jìn)時也需要考慮到是否碰撞到對方飛機,以免重疊運行,造成許多物理上不可能的情況,缺乏真實感。每一次刷新頁面、每前進(jìn)一步都需要進(jìn)行相關(guān)的碰撞檢測。 為了增加界面的美觀,在程序中添加了白云。由于手機屏幕大小有限,所以白云的數(shù)量和出現(xiàn)的位置要經(jīng)過相關(guān)的設(shè)置,才能實現(xiàn)白云不規(guī)則出現(xiàn)的效果。 游戲的地圖不可能通過繪圖來解決。否則,不僅難于控制和處理過多的元素,也會因過多的大型圖片而不能限制程序的大小,失去手機上程序的原則和 Java 的優(yōu)勢。 Java 是基于虛擬機的半解釋型編譯系統(tǒng),其執(zhí)行效率較 C++等完全編譯后的程序會低很多,程序如果不進(jìn)行精簡和優(yōu)化,將可能導(dǎo)致運行的不流暢。除開發(fā)過程中對結(jié)構(gòu)上的控制、變量的使用、算法的優(yōu)化等優(yōu)化外,還可以使用混淆器(Obfuscator)進(jìn)行程序打包后的優(yōu)化。 游戲的結(jié)束、開始、動態(tài)信息畫面作為構(gòu)成一個程序都是必不可少的重要部分。良好的用戶界面更是吸引用戶的硬指標(biāo),相關(guān)的美術(shù)構(gòu)圖和人性化設(shè)置也需要有一定的考慮。以上相關(guān)技術(shù)細(xì)節(jié)和整體流程將分別在以下小節(jié)闡述。 程序流程MIDlet suite 是 MIDP 應(yīng)用程序的最小單位,JAM 負(fù)責(zé)將手機內(nèi)的 MIDlet suite 以圖形化的方式呈現(xiàn),讓用戶能夠選取欲執(zhí)行的 MIDlet suite,一旦選取了某個 MIDlet suite,操作系統(tǒng)就會激活 KVM 執(zhí)行里面的 MIDlet。MIDlet 及相關(guān)的支持類組成了 MIDP 應(yīng)用程序的實際內(nèi)容。而每個 MIDlet 都必須繼承 這個抽象類。在 MIDP 規(guī)范中定義了MIDlet 的生命周期,以及可以存在的三種狀態(tài),包括 Paused、Active 以及Destroyed,每一個 MIDlet 在任何時刻只可能處于其中的一個狀態(tài)。這三種狀態(tài)的轉(zhuǎn)換關(guān)系如圖 31 所示:MIDlet 有三個狀態(tài),分別是 pause、 active 和 destroyed。在啟動一個 MIDlet 的時候,應(yīng)用管理軟件會首先創(chuàng)建一個 MIDlet實例并使得他處于 pause 狀態(tài),當(dāng) startApp()方法被調(diào)用的時候 MIDlet 進(jìn)入 active 狀態(tài),也就是所說的運行狀態(tài)。在 active 狀態(tài)調(diào)用 destroyApp(boolean unconditional)或者消減狀態(tài)(Destroyed)停止?fàn)顟B(tài)(Paused)運行狀態(tài)(Active)StartApp()DestroyApp()呼叫 MIDlet 的構(gòu)造函數(shù)DestroyApp()PauseApp()圖 31 MIDlet 的流程6pauseApp()方法可以使得 MIDlet 進(jìn)入 destroyed 或者 pause 狀態(tài)。值得一提的是 destroyApp(boolean unconditional)方法,事實上,當(dāng) destroyApp()方法被調(diào)用的時候,AMS 通知 MIDlet 進(jìn)入 destroyed 狀態(tài)。在 destroyed 狀態(tài)的 MIDlet 必須釋放了所有的資源,并且保存了數(shù)據(jù)。如果 unconditional 為 false的時候,MIDlet 可以在接到通知后拋出 MIDletStateChangeException 而保持在當(dāng)前狀態(tài),如果設(shè)置為true 的話,則必須立即進(jìn)入 destroyed 狀態(tài)。本程序采用面向?qū)ο蟮脑O(shè)計模式,對游戲中的所有物體賦予對象的概念和屬性。運行程序后允許用戶選擇執(zhí)行選項菜單,在開始游戲后將先從外部文件載入地圖文件,對背景的所有物體進(jìn)行繪圖。在主程序運行的線程中,畫面刷新將以一定的頻率采用雙緩沖技術(shù)對屏幕重繪,實時反映整個游戲的進(jìn)行狀態(tài)。游戲開始后先繪制地圖,并將各個對象實例化。游戲中所有的對象都應(yīng)該運行在同一個線程下。當(dāng)敵人或者用戶的子彈達(dá)到射程范圍后,并不刪除子彈對象,而是使用 setVisable(false)使其不能顯示,當(dāng)用戶或敵人在次發(fā)射子彈時,只需使用 setVisable(true)設(shè)置成可以顯示即可。在屏幕重繪的主程序中,將在每次的循環(huán)中判斷若干事件,以便程序進(jìn)入相關(guān)的分支執(zhí)行相關(guān)的反應(yīng)代碼。如:玩家剩余飛機數(shù)是為 0、敵人、玩家飛機是否被擊中、屏幕上相關(guān)信息的繪制等。程序為需要完成獨立功能的模塊設(shè)置了單獨的類。lzhhdm 類繼承自 Midlet,gameScreen 類、MenuScreen 類繼承自 GameCanvas,mybullets 繼承自 Sprite 類。載入程序后首先啟動的是程序介紹的信息畫面。點擊 ok 后調(diào)用 MenuScreen 類實現(xiàn)菜單。如果選擇進(jìn)入游戲,則調(diào)用 gameScreen 類,并且中止 MenuScreen 類中的線程運行,已提高運行速度。Mybullets 類為玩家子彈類。 Canvas 類為了能有程序開發(fā)人員控制接口的外觀和行為,需要使用大量的初級用戶接口類,尤其在游戲程序中,幾乎完全依賴的就是 Canvas 抽象類進(jìn)行繪圖。從程序開發(fā)的觀點看,Canvas 類可與高級Screen 類交互,程序可在需要時在 Canvas 中摻入高級類的組件。Canvas 提供了鍵盤事件、指點桿事件(如果設(shè)備支持),并定義了允許將鍵盤按鍵映射為游戲控制鍵的函數(shù)。鍵盤事件由鍵代碼指定,但這樣控制游戲會導(dǎo)致缺乏通用性,并不是每個設(shè)備的鍵盤布局都適合游戲的操作。應(yīng)當(dāng)將鍵代碼轉(zhuǎn)換為游戲鍵的代碼,以便硬件開發(fā)商能定義他們自己的游戲鍵布局。 Graphics 類Graphics 類提供了簡單的 2D 繪圖功能。它具有 24 位深度色彩的繪制能力,以三原色分別各占一個字節(jié)表示其顏色。程序只能在 paint()函數(shù)中使用 Graphics 繪制,GameCanvas 可調(diào)用 getGraphics()函數(shù)直接繪制在緩沖區(qū)上,可以在任何時間請求傳輸?shù)角芭_。其對象會被傳給 Canvas 的 paint()函數(shù),以便最終顯示。 技術(shù)下的繪制背景技術(shù)在沒有 前,進(jìn)行游戲繪圖一般需要手動編程使用雙緩沖。需要在 paint()方法內(nèi)將所想要畫的圖形畫在一張預(yù)先準(zhǔn)備好的背景上,等所有繪圖操作都完成后再將背景的數(shù)據(jù)拷貝到實際的屏幕上。Image 類提供了一個建立背景的靜態(tài)方法 createImage(int width, int height),再利用 getGraphics()方法取得屬于這個背景的 Graphics 對象,所進(jìn)行的繪圖操作都會作用在背景上,等到全部的繪圖操作完成后,再調(diào)用 drawImage()方法將背景的數(shù)據(jù)復(fù)制到實際顯示的屏幕上。這樣的技術(shù)在繪制動畫時特別有用。繪制動畫時經(jīng)常需要不斷地更新畫面,而更新畫面的操作就是先將屏幕以 fillRect()的方式清除,再將下一張圖片畫在屏幕上,然而反復(fù)的清除及重繪會造成屏幕的閃爍現(xiàn)象(flicker),因此使用雙重緩沖的好處就是在背景進(jìn)行這個清除及重繪的操作,再將完成的繪圖拷貝到屏幕上,由于用戶看不到清除的操作,因此就不會出現(xiàn)閃爍的現(xiàn)象了。不過在某些MIDP 的實現(xiàn)上已經(jīng)加上了雙重緩沖的支持,因此在處理前應(yīng)先利用 Canvas 類的 isDoubleBuffer()方法來判斷。7 新增的 GameCanvas 包 J2ME 的流行促進(jìn)幾個運營商和制造商開發(fā)了一些支持游戲的類,但是,這卻造成了游戲缺乏可移植性的問題,例如,很難將使用 Siemens 的 Sprite 類的游戲移植到 Nokia 上。 在 版本發(fā)布后,這些游戲移植性問題初步得到了解決。 新加入了GameCanvas、Sprite 、Layer、LayerManager、TiledLayer 五個與游戲開發(fā)相關(guān)的類。其中 Layer 類一般不會直接用到。 Game 類的出現(xiàn)不僅降低了錯誤出現(xiàn)的幾率,也使游戲代碼變的更小,因為開發(fā)者不需要自己編寫象 Sprite 這種例子。下面將簡要介紹 Game 類。 GameCanvas 類繼承自 Canvas,所以具有 Canvas 所具有的功能,還額外增加了一些便于游戲設(shè)計的功能。比如: GameCanvas 類直接提供了 getKeyStates(),使程序員可以在同一個線程自己偵測按鍵的狀態(tài)。GameCanvas 類提供了 flushGraphics()的功能,實現(xiàn)了雙緩沖技術(shù)。 所謂的 Sprite,就是畫面上獨立移動的圖形。Sprite 類是繼承自 Layer 的用于存儲多楨的基本可視元素。不同的 frame 可交相顯示,構(gòu)成動態(tài)的效果。圖片可翻轉(zhuǎn)、顛倒、由一個主角圖片就可以方便的得到所有方向的顯示狀態(tài),相比原先只能使用 Canvas 繪圖,需要將所有方向的主角圖象都繪制在 png 圖象中簡化了許多。Sprite 也可以從整合的圖象中讀圖,讀圖時將把大圖分解為若干等寬等高的小圖。每個小圖按照其排列順序有相應(yīng)的序號,在程序中調(diào)用其序號,就可以繪制出相應(yīng)的圖片。本程序中的雙方飛機、子彈、白云都由 Sprite 繼承得到。LayerManager 提供控制整體畫面層的控制。它包括了一系列自動獲取了代號和位置的層,簡化了各層加入游戲畫面的過程,提供了自動排序和繪制的能力。LayerManager 存儲了一個層的列表,新的層可以用函數(shù)附加、刪除和插入。層的序號相當(dāng)于坐標(biāo)的 Z 軸, 0 層表示最接近用戶視覺,層數(shù)越高,離用戶越遠(yuǎn)。層號總是連續(xù)的,即使有中間的層被移除,其他層的序號會作相應(yīng)的調(diào)整以保持整體的完整性。LM 中的 View Window 控制著與 LM 相對坐標(biāo)的可視區(qū)域。改變 View Window 的位置可以制造出滾動屏幕的效果。TiledLayer 是有一組圖象格元素組成的整塊虛擬圖象。該類使不需要高分辨率的圖象就能創(chuàng)建大幅圖面成為可能。這項技術(shù)通常應(yīng)用在 2D 游戲平臺的滾動背景的繪圖。一塊整圖可被分割成等大小的圖象格,每塊格有其對應(yīng)的序號,按照行列遞增。多塊小格可由大塊同時替換組合而模擬動態(tài)的背景,這不需要逐塊替換所有的靜態(tài)圖象格而顯得非常方便。 PNG 圖片格式PNG(Portable Network Graphics)格式是 MIDlet 唯一支持的圖象格式,PNG 具體格式由 PNG Specification,Version 定義的。PNG 格式提供透明背景的圖象,這對繪制游戲畫面和被操縱主角極有幫助。飛機之間或與白云碰撞時就不會因為背景有特定的顏色,顯示出的效果像貼上的圖片而缺乏真實感,物體之間輕微重疊時最上層圖片也不會覆蓋超過其有效象素外的部分。PNG 格式圖片中包含許多定義其圖片特性的冗余部分(Chunks)。這些代碼包含在每一個單獨的png 格式圖象中,然而如果將多個 png 圖象合并在一張幅面稍大一些的整圖中,多個 chunks 就可以得到精簡,圖片的大小可以得到控制。使用 Image 類中的 createImage 函數(shù)可從整圖中分割出所需要的元素。在 Game 包中的 TiledLayer 和 Sprite 類都整合了這樣的功能。本程序中的地圖元素都集成在一張 圖片中,實現(xiàn)了方便的管理和程序體積的精簡。 玩家飛機的控制方式和敵人方的智能
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1