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

正文內容

基于j2me手機坦克大戰(zhàn)游戲設計與開發(fā)畢業(yè)論文-資料下載頁

2025-07-01 19:43本頁面

【導讀】著不可忽視的作用。本論文著眼于J2ME技術的應用,開發(fā)一款可商用的手機游。戲程序——坦克大戰(zhàn)。本程序的界面和運作方式繼承于日本任天堂公司在20世。更流行的硬件平臺提供應用軟件。次坦克大戰(zhàn)的手機游戲。并且實現了游戲中的諸多功能:音效,運行流暢度,道。具運用,敵方坦克的智能運行等。解決方案,并因其“WriteOnce,runanywhere”的Java特性而提高開發(fā)的效率。師的指導下進行的研究工作及取得的成果。盡我所知,除文中特別加。究所取得的研究成果。除了文中特別加以標注引用的內容外,本論文。不包含任何其他個人或集體已經發(fā)表或撰寫的成果作品。究做出重要貢獻的個人和集體,均已在文中以明確方式標明。全意識到本聲明的法律后果由本人承擔。本學位論文作者完全了解學校有關保留、使用學位論文的規(guī)定,同意學校保留并向國家有關部門或機構送交論文的復印件和電子版,允許論文被查閱和借閱。本人授權大學可以將本學位。印或掃描等復制手段保存和匯編本學位論文。涉密論文按學校規(guī)定處理。

  

【正文】 、結束、以及游戲中信息的布局作為一個游戲的重要部分。制作友好的用戶界面可以更加吸引玩家,這也需要參考大量的同類型游戲。 以上相關技術細節(jié)和整體流程將分別在以下小節(jié)闡述。 繪圖基礎 低級屏顯 Canvas 類 如同高級界面屏幕類都繼承 Screen 類一樣,在使用到低級用戶界面必須要繼承 Canvas 這個抽象類, Canvas 是 Displayable 的直接子類,屬于 J2ME 中的低級 API。 用戶利用這些低級 API 可對設備精確控制,如繪制像素 ,接受原始的用戶輸入事件等。 與高級 API 相比控制更加靈活,但這是以其復雜性、高成本為代價的,并犧牲了一定的可移植性。它的基本用法與其他 Displayable 對象一致。Canvas 的核心是 paint()這個方法, 這個方法做是負責繪制屏幕上的畫面,每當屏幕需要重新繪制時,就會產生重繪事件,系統(tǒng)就會自動調用 paint(),并傳入一個 Graphics 對象。從程序開發(fā)的觀點看, Canvas 類可與高級 Screen 類交互,程序可在需要時在 Canvas 中摻入高級類的組件。 Canvas 提供了鍵盤事件、指點桿事件(如果設備支持), 并定義了允許將鍵盤按鍵映射為游戲控制鍵的函數 。鍵盤事件由鍵代碼指定,但這樣控制游戲會導致缺乏通用性,并不是每個設備的鍵盤布局都適合游戲的操作。應當將鍵代碼轉換為游戲鍵的代碼,以便硬件開發(fā)商能定義他們自己的游戲鍵布局。本程序中,操縱用戶坦克運行的按鍵都定義為游戲控制鍵,這樣便能適應所有的機器 [13]。 Graphics 類 Graphics 類中提供了一套各不相同的關于圖形繪制的方法 ,一般來說,圖形繪制首先要調用相關的方法進行顏色設置、坐標變換和剪裁。針對不同的需要,Graphics 類中提供了用于描繪線條、繪制和填充矩形或圓角矩形、繪制和填充圓弧以及文本和圖像的方法。程序只能在 paint()函數中使用 Graphics 繪制,GameCanvas 可調用 getGraphics()函數直接繪制在緩沖區(qū)上,可以在任何時間請 16 求傳輸到前臺。其對象會被傳給 Canvas 的 paint()函數,以便最終顯示。 圖片格式 PNG(Portable Network Graphics)格式是 MIDlet 唯一支持的圖象格式。 PNG 格式圖片中包含許多定義其圖片特性的冗余部分 (Chunks)。這些代碼包含在每一個單獨的 png 格式圖象中,然而如果將多個 png 圖象合并在一張幅面稍大一些的整圖中,多個 chunks 就可以得到精簡,圖片的大小可以得到控制。使用 Image 類中的 createImage 函數可從整圖中分割出所需要的元素。 Game 包中的 TiledLayer和 Sprite 類都整合了這樣的功能。 雙緩沖技術 在沒有 前,進行游戲繪圖一般需要手動編程使用雙緩沖。需要在paint()方法內所想要畫的圖形畫在一張預先準備好的背景,等所有繪圖操作都完成后再將背景的數據拷貝到實際的屏幕上。 Image 類提供了一個建立背景的靜態(tài)方法 createImage(int width, int height),再利用 getGraphics()方法取得屬于這個背景的 Graphics 對象,所進行的繪圖操作都會作用在背景上,等到全部的繪圖操作完成后,再調用 drawImage()方法將背景的數據復制到實際顯示的屏幕上。 這樣的技術在繪制動畫時特別有用。繪制動畫時經常需要不斷地更新畫面,而更新畫面的操作就是先將屏幕 以 fillRect()的方式清除,再將下一張圖片畫在屏幕上,然而反復的清除及重繪會造成屏幕的閃爍現象 (flicker),因此使用雙重緩沖的好處就是在背景進行這個清除及重繪的操作,再將完成的繪圖拷貝到屏幕上,由于用戶看不到清除的操作,因此就不會出現閃爍的現象了。 按鍵處理 事件可以分為:低層事件 (lowlevel event)與高層事件 (highlevel event)。低層事件一般用來處理設備事件,如:按鍵事件、探針事件。高層事件用來處理應用中的相關事件,如:命令事件、組件狀態(tài)變化事件。由于開發(fā) 手機游戲時我們主要用到的是 Key 事件的處理方法,因為移動設備的鍵盤是傳遞用戶意圖的最主要的輸入設備, Key 事件屬于低層事件。那么低層事件中用下面的兩種方法來處理應用的 Key 事件。 在鍵盤響應中又分為監(jiān)聽按鍵處理和放開按鍵處理,本章接下面將以更詳細的內容來介紹這兩個部分。 17 Key Pressed 方法 方法 key Pressed 是用來處理鍵被按下的事件,這個方法沒有與其對應的顯示的聽眾對象 (Listener),這些聽眾對象有系統(tǒng)根據實際對象缺省提供,例如后面提到的 Canvas 對象就是默認的 key 事件 聽眾對象,它缺省地實現了 Key Listener接口 [14]。簡單的一個樣例代碼: //監(jiān)聽按鍵信息并處理按鍵 public void keyPressed (int keyCode) { if (keyCode 0) { } } //輸出當前被按下鍵的鍵碼 System. (“keyPressed ” +( (char) keyCode ) )。 } else { … } 當按下手機的操作鍵盤上的按鍵時,就會觸發(fā)這 key 事件,系統(tǒng)并會自動調用 keyPressed( )方法, 并且系統(tǒng)將捕獲到的鍵碼傳遞給該方法,在上面的那段代碼中方法判斷了所按的按鍵值是否大于 0,如果大于 0 輸出所按的手機鍵盤上的實際值,否則執(zhí)行其他的操作任務。 在本程序中 KeyPressed( )方法應用于整個程序的各個可交互界面,如菜單部分,選關部分和游戲部分等等。 Key Released 方法 可以說方法 key Released 與上面提到的 keyPressed 方法是對應的。它是用來處理手機操作鍵盤上的按鍵被釋放的事件,這個方法也同樣沒有與之對應的顯示的聽眾,這些聽眾也是由系統(tǒng)根據實際對象 提供的。下面是一個樣例代碼: / /輸出當前被釋放鍵的鍵碼 public void keyReleased(int keyCode) { if (keyCode 0 ) { } } 18 //輸出當前被 釋放 鍵的鍵碼 (“keyReleased ” +( (char) keyCode) )。 } else { … } } 當釋放手機操作鍵盤上被按下的按鍵時,則會觸發(fā)這個 key 事件,系統(tǒng)并會自動交由 keyReleased( )方法來處理該事件,同樣的上面的這段代碼中,該方法判斷了所按的按鍵值是否大于 0,如果大于 0 則輸出所釋放的手機鍵盤上的被按下的按鍵的實際鍵值,否則執(zhí)行其他的操作任務。 內存使用的最佳化 通常在 MIDP 應用程序的手機執(zhí)行環(huán)境中,所牽涉的內存有下列三種: 一 、應用程序存儲內存 二 、 RecordStore 存儲內存 三 、執(zhí)行時期內存 (Java Heap)。 其中前兩種是持久性的內存,關閉電源后還能保持數據的正確性,通常這兩種內存所能存儲的容量是合并計算的,這個上限對每種手機都不一樣,大部分在一兩 百 KB 內。在這樣的情況下需要在不影響原有功能的情況下適當的縮減 JAR文件的大小,除了可以克服內存空間的限制外,也能大幅度縮短下載的時間(費用也降低了),勢必會有更多的人愿意下載所開發(fā)的程序。 為了避免這種情況的發(fā)生,我們找出了幾種 方法: 第一,就是盡量縮短命名的長度。在應用程序內,對于所建立的類、接口、方法及變量名而言,都需要賦予一個識別的名稱,所命名的名稱每多一個字符就會在類文件內多產生一個字節(jié),對于一個較復雜的應用程序而言就會增加為數不小的數據量。所有這些可以借助混淆器來幫助實現。 第二是減少復雜的程序結 構,為一些共同的行為建立一個抽象類 (Abstract Class) 來表示繼承的子類的共通性。 第三是減少圖形數據的大小。將 PNG 格式的小分辨率圖象合并在一張大的高分辨率圖象中,由于減少了 chunks,將比合并前的總大小減少許多。這樣在處理起來就會更加流暢和節(jié)省運行時間。 19 混淆器 (Obfuscator)的使用 Java 語言并沒有完全編譯成二進制可執(zhí)行文件,編譯出的 .class 文件是一種介于源程序和二進制之間的一中基于半解釋的字節(jié)碼,需要虛擬機來執(zhí)行。它包括了所有的信息。然而這樣會導致 .class 很容 易被反編譯為源代碼,從而不能保護作者的知識成果。目前流行的如 decode, JAD 等反編譯工具可以以很快的速度生成源文件。如果不加以施行有效的措施,將造成嚴重的后果。 由此引入混淆器的概念。混淆器將代碼中的所有變量、函數、類的名稱變?yōu)楹喍痰挠⑽淖帜复?,如果缺乏相應的函數名指示和程序注釋,即使被反編譯,也將難以閱讀。 混淆器的作用不僅僅是保護代碼,它也有精簡編譯后程序大小的作用。由于以上介紹的減少變量、函數的命名長度的關系,編譯后也會從 .class 文件中減少這些冗余的信息?;煜?,體積大約能減少 25%,這對當前費用較貴的無線網絡傳輸是有一定意義的。 為了能與各種 IDE 集成,就像 Java2 SDK 一樣,混淆器采用命令行參數的形式,以便可被其調用。目前流行的 Obfuscator 有 RetroGuard 等 [15]。 本章小結 本章通過對坦克大戰(zhàn)運行過程中可能存在的一些技術問題進行了簡要的分析,和對程序中所需要使用到的技術有了一個簡要的了解,接下來的一個章節(jié)就是對程序進行理論的分析。 20 第五章 程序分析和具體實現 游戲總體 控制類 此次設計的坦克大戰(zhàn)總共 20 關,每關會有不同的地圖,同時 要考慮其中的地圖元素。地圖元素有:空白區(qū)域、鐵墻、磚墻、草地和飛鷹標志,飛鷹標志是玩家守護的對象。由于專業(yè)限制本設計所有地圖美工文件和聲音文件均是由朋友提供。 每個 MIDlet 程序都必須有一個主類,該類必須繼承自 MIDlet。它控制著整個程序的運行,并且可以通過相應函數從程序描述文件中獲取相關的信息。該類中擁有可以管理程序的創(chuàng)建、開始、暫停(手機中很可能有正在運行程序卻突然來電的情況,這時應進入暫停狀態(tài)。)、結束的函數。 進入時,首先載入畫面的不是游戲運行狀態(tài),而是提供游戲的基本信息,當再次選擇開始時才正式 運行。游戲的啟動選項畫面在 TankCanvas 類中,在控制主程序運行的 MIDlet 中, startApp()函數隨即調用了 Displayable 的 setCurrent()函數將當前屏幕設置為 TankCanvas。同時這個類還繼承了 mandListener,這樣就可以使用高級界面的 Command 按鈕。繼承了 mandListener 的類必須擁有 mandAction()以決定對按鍵采取什么樣的行為。即按鈕事件觸發(fā)后需執(zhí)行的函數。在設置好 mandlistener 后,需要調用 setCommandListener()以將按鈕事件激活。鍵盤事件中,可用 getCommandType()返回的 Command 類型來確定選擇的是什么按鈕 , 本程序中主要是通過 MEAU 命令按鈕來連接各個界面之間的相互轉換。 在本程序開始的界面中,先由下而上先顯示出本程序的片頭圖片: BattleCity,在圖片顯示動畫結束之后會顯示出供玩家選擇的三個選項按鈕,它們分別為:PLAY、 DIFFICALTY、 CONSTRUCTION 代表著開始游戲、難度選擇和游戲說明。選擇開始游戲后,手機界面窗口會彈出一個關卡選項界面,通過上下鍵玩家可以自 由選擇想要進入的關卡,點擊確定即可進入選擇的關卡進行游戲。在難度選擇界面玩家可以自由選擇普通模式和困難模式,普通模式屏幕上最多出現的敵方坦克數為 5,而困難模式屏幕上能出現的最大坦克數為 7。在游戲說明界面玩家可以了解到游戲的一些基本信息,以及制作者的相關情況。在本程序中主要劃分為 8 個類: TankCanvas、 TankMIDlet、 Enemy、 SoundPlayer、 EnemyPool、 Hero、Bonous、 Bullet。下文圍繞著具體的游戲邏輯以及涉及到的若干主要的類對程序的運行進行簡要的分析。 21 主 游戲邏輯及涉及到的若干類 TankCanvas 主管著所有類之間的協調,決定何時死亡,何時分配新的敵人,及控制敵人出現處的閃光圖標、游戲結束后的顯示字樣。它運行在獨立的線程中,以恒定的頻率刷新畫面。刷新速度需大于 30 毫秒才能使畫面顯示因人眼的暫時停留效應流暢運行。本程序 設置 為 50 毫秒。其主邏輯如圖 12 所示。程序中建立了另外的兩個類,分別表述了敵人坦克和玩家坦克的功能。它們分別為: Enemy和 Hero。 這兩個類均在 TankCanvas 中建立了對象,以便進行統(tǒng)一調度。其他的,如 記分統(tǒng)計畫面也都需在此主邏輯中建立相 應對象。還需保存的變量有,游戲開始時間、結束時間(用于統(tǒng)計分數)、敵人的總數、屏幕上敵人的數量、下一個敵人需要出現的位置(總共允許在三個不同的位置出現,分別位于屏幕的左、中、右方)、游戲是否已成功結 束或是否已死亡。 構造函數中,需初始
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1