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

正文內(nèi)容

j2me手機游戲開發(fā)畢業(yè)設(shè)計(doc畢業(yè)設(shè)計論文)-在線瀏覽

2024-08-04 02:32本頁面
  

【正文】 將可能導(dǎo)致運行的不流暢。9. 游戲的結(jié)束、開始、動態(tài)信息畫面作為構(gòu)成一個程序都是必不可少的重要部分。以上相關(guān)技術(shù)細節(jié)和整體流程將分別在以下小節(jié)闡述。MIDlet 及相關(guān)的支持類組成了 MIDP 應(yīng)用程序的實際內(nèi)容。在 MIDP規(guī)范中定義了 MIDlet 的生命周期,以及可以存在的三種狀態(tài),包括 Paused、Active 以及 Destroyed,每一個 MIDlet 在任何時刻只可能處于其中的一個狀態(tài)。在啟動一個 MIDlet 的時候,應(yīng)用管理軟件會首先創(chuàng)建一個 MIDlet 實例并使得他處于 pause 狀態(tài),當 startApp()方法被調(diào)用的時候 MIDlet 進入 active 狀態(tài),也就是所說的運行狀態(tài)。值得一提的是 destroyApp(boolean unconditional)方法,事實上,當 destroyApp()方法被調(diào)用的時候,AMS 通知 MIDlet 進入 destroyed 狀態(tài)。如果unconditional 為 false 的時候,MIDlet 可以在接到通知后拋出MIDletStateChangeException 而保持在當前狀態(tài),如果設(shè)置為 true 的話,則必須立即進入 destroyed 狀態(tài)。運行程序后允許用戶選擇執(zhí)行選項菜單,在開始游戲后將先從外部文件載入地圖文件,對背景的所有物體進行繪圖。游戲開始后先繪制地圖,并將各個對象實例化。當敵人或者用戶的子彈達到射程范圍后,并不刪除子彈對象,而是使用 setVisable(false)使其不能顯示,當用戶或敵人在次發(fā)射子彈時,只需使用 setVisable(true)設(shè)置成可以顯示即可。如:玩家剩余飛機數(shù)是為 0、敵人、玩家飛機是否被擊中、屏幕上相關(guān)信息的繪制等。lzhhdm 類繼承自Midlet,gameScrenn 類、MenuScreen 類繼承自 GameCanvas,mybullets 繼承自 Sprite類。點擊 ok 后調(diào)用 MenuScreen 類實現(xiàn)菜單。Mybullets 類為玩家子彈類。從程序開發(fā)的觀點看,Canvas 類可與高級 Screen 類交互,程序可在需要時在 Canvas 中摻入高級類的組件。鍵盤事件由鍵代碼指定,但這樣控制游戲會導(dǎo)致缺乏通用性,并不是每個設(shè)備的鍵盤布局都適合游戲的操作。 Graphics類Graphics 類提供了簡單的 2D 繪圖功能。程序只能在 paint()函數(shù)中使用 Graphics 繪制,GameCanvas 可調(diào)用 getGraphics()函數(shù)直接繪制在緩沖區(qū)上,可以在任何時間請求傳輸?shù)角芭_。 在沒有 前,進行游戲繪圖一般需要手動編程使用雙緩沖。Image 類提供了一個建立背景的靜態(tài)方法createImage(int width, int height),再利用 getGraphics()方法取得屬于這個背景的Graphics 對象,所進行的繪圖操作都會作用在背景上,等到全部的繪圖操作完成后,再調(diào)用 drawImage()方法將背景的數(shù)據(jù)復(fù)制到實際顯示的屏幕上。繪制動畫時經(jīng)常需要不斷地更新畫面,而更新畫面的操作就是先將屏幕以 fillRect()的方式清除,再將下一張圖片畫在屏幕上,然而反復(fù)的清除及重繪會造成屏幕的閃爍現(xiàn)象(flicker),因此使用雙重緩沖的好處就是在背景進行這個清除及重繪的操作,再將完成的繪圖拷貝到屏幕上,由于用戶看不到清除的操作,因此就不會出現(xiàn)閃爍的現(xiàn)象了。 GameCanvas包 J2ME 的流行促進幾個運營商和制造商開發(fā)了一些支持游戲的類,但是,這卻造成了游戲缺乏可移植性的問題,例如,很難將使用 Siemens 的 Sprite 類的游戲移植到 Nokia上。 新加入了GameCanvas、Sprite、Layer、LayerManager、TiledLayer 五個與游戲開發(fā)相關(guān)的類。 Game 類的出現(xiàn)不僅降低了錯誤出現(xiàn)的幾率,也使游戲代碼變的更小,因為開發(fā)者不需要自己編寫象 Sprite 這種例子。 GameCanvas 類繼承自 Canvas,所以具有 Canvas 所具有的功能,還額外增加了一些便于游戲設(shè)計的功能。GameCanvas 類提供了 flushGraphics()的功能,實現(xiàn)了雙緩沖技術(shù)。Sprite 類是繼承自 Layer 的用于存儲多楨的基本可視元素。圖片可翻轉(zhuǎn)、顛倒、由一個主角圖片就可以方便的得到所有方向的顯示狀態(tài),相比原先只能使用 Canvas 繪圖,需要將所有方向的主角圖象都繪制在 png圖象中簡化了許多。每個小圖按照其排列順序有相應(yīng)的序號,在程序中調(diào)用其序號,就可以繪制出相應(yīng)的圖片。LayerManager 提供控制整體畫面層的控制。LayerManager 存儲了一個層的列表,新的層可以用函數(shù)附加、刪除和插入。層號總是連續(xù)的,即使有中間的層被移除,其他層的序號會作相應(yīng)的調(diào)整以保持整體的完整性。改變 View Window 的位置可以制造出滾動屏幕的效果。該類使不需要高分辨率的圖J2ME 手 機 游 戲 開 發(fā) 與 設(shè) 計畢業(yè)設(shè)計 第 10 頁象就能創(chuàng)建大幅圖面成為可能。一塊整圖可被分割成等大小的圖象格,每塊格有其對應(yīng)的序號,按照行列遞增。 PNG圖片格式PNG(Portable Network Graphics)格式是 MIDlet 唯一支持的圖象格式,PNG 具體格式由 PNG Specification,Version 定義的。飛機之間或與白云碰撞時就不會因為背景有特定的顏色,顯示出的效果像貼上的圖片而缺乏真實感,物體之間輕微重疊時最上層圖片也不會覆蓋超過其有效象素外的部分。這些代碼包含在每一個單獨的 png 格式圖象中,然而如果將多個 png 圖象合并在一張幅面稍大一些的整圖中,多個 chunks 就可以得到精簡,圖片的大小可以得到控制。在 Game 包中的 TiledLayer 和Sprite 類都整合了這樣的功能。 玩家飛機的控制方式和敵人方的智能運行 GameCanvas 提供 getKeyStates 函數(shù)可獲取當前鍵盤上的信息。只需要此一個函數(shù)的返回值就可以返回所有鍵的狀態(tài)。同時,這樣的機制也可檢測到幾個鍵同時按下的狀態(tài),從而提供斜向運行等相應(yīng)功能(本程序沒有實現(xiàn)斜上運行功能)。 玩家飛機被擊中后,為了平衡游戲的可玩性,玩家飛機將有短暫時間無敵,即不進行碰撞檢測,同時在屏幕右上角顯示無敵時間。不能與玩家飛機重合,則他每走一步都需要檢測一下是否與玩家飛機碰撞。同理,還需要檢測玩家子彈與敵機、敵機與玩家子彈是否碰撞。敵人飛機需要具有一定的智能性,以便對玩家攻擊,使游戲具有一定的可玩性。在普通敵機中,有一組敵機的其中一架具有跟蹤功能,其原理為:當其進入屏幕后,根據(jù)玩家飛機的 X、Y 坐標不斷調(diào)整自己的 X、Y 坐標,已達成跟蹤的效果。在游戲進行中出現(xiàn)的大型飛機,由于其不可能立即被擊落,所以應(yīng)該設(shè)置其的運行方法,理論上講還是根據(jù)玩家飛機的坐標,但是,在此設(shè)置一個標志位,使得敵人在取的玩家位置后即開始玩家方向運動,這期間,將不執(zhí)行取得玩家飛機位置重設(shè)飛行方向的步驟。在關(guān)尾出現(xiàn)的 BOSS,其在屏幕上方左右移動并發(fā)射子彈??上в捎跁r間關(guān)系沒有實現(xiàn)。由于本游戲僅有一關(guān),所以子彈速度設(shè)定的差別沒有體現(xiàn)出來。 使用每組子彈的第一發(fā)作為與敵人進行碰撞檢測的精靈,同時相關(guān)的標志位也設(shè)在第一發(fā)子彈中。 內(nèi)存的優(yōu)化手機內(nèi)存空間小,所以在程序設(shè)計時應(yīng)該注意以下幾點,以盡量減少內(nèi)存的使用: (1)盡量縮短命名的長度。所有這些可以借助混淆器來幫助實現(xiàn) (2)所有代碼寫為一個類。 (4)盡量不使用靜態(tài)變量。將 PNG 格式的小分辨率圖象合并在一張大的高分辨率圖象中,由于減少了頭文件的大小,將比合并前的總大小減少許多。 包括內(nèi)存狀況的檢測(手機上的內(nèi)存空間十分有限,必須時刻關(guān)注機載內(nèi)存是否大于程序所能使用到的最大可能的內(nèi)存空間),網(wǎng)絡(luò)狀況的檢測,運行函數(shù)的跟蹤等。其中,允許強制垃圾回收(Garbage Collection)。在程序運行中也可以調(diào)用 System 類的 gc()函數(shù)手動收回廢棄的內(nèi)存。它包括了所有的信息。目前流行的如 decode,JAD 等反編譯工具可以以很快的速度生成源文件。由此引入混淆器的概念。 混淆器的作用不僅僅是保護代碼,它也有精簡編譯后程序大小的作用?;煜?,體積大約能減少 25%,這對當前費用較貴的無線網(wǎng)絡(luò)傳輸是有一定意義的。對游戲基本算法等做了詳細敘述。4 程序分析和具體實現(xiàn) 游戲進入前的選擇J2ME 手 機 游 戲 開 發(fā) 與 設(shè) 計畢業(yè)設(shè)計 第 14 頁每個 MIDlet 程序都必須有一個主類,該類必須繼承自 MIDlet。該類中擁有可以管理程序的創(chuàng)建、開始、暫停(手機中很可能有正在運行程序卻突然來電的情況,這時應(yīng)進入暫停狀態(tài)。本程序主類為 lzhhdm,并實現(xiàn)接口 CommandLIstener。使用語句 ok=new Command(ok,1)。調(diào)用 addCommand()命令建立 ok 命令與 Form 之間的關(guān)聯(lián),調(diào)用setCommandListener()命令使 Form 與 CommandListener 建立關(guān)聯(lián)。圖 41 游戲背景介紹 當玩家點擊 ok 后將調(diào)用 (menuscreen)以顯示游戲菜單 menuscreen(圖 42)。在類 menuscreen 中定義了 lowColor 和highColor、highBGColor 三個整型變量及布爾型變量 co。當玩家按住上或下鍵時,在函數(shù) keyPressed(int code)中的整型變量 menuIndex 相應(yīng)的減 1 或加 1,相應(yīng)的,在 paint()函數(shù)中會根據(jù) menuIndex 繪制選項是否被選中。 當移動選項條到某項,并點擊 ok 時,在 mandAction()方法中根據(jù) menuIndex 圖 42 游戲的菜單 J2ME 手 機 游 戲 開 發(fā) 與 設(shè) 計畢業(yè)設(shè)計 第 15 頁的值判斷選擇了哪個選項,列如當選擇“關(guān)于”時,將調(diào)用 lzhhdm 類中的 renwuShow()方法以顯示”關(guān)于”界面(圖 43),在 renwuShow()方法中,F(xiàn)orm 類對象 a=null,表示清空 Form,并重新調(diào)用用 append()方法在表單上放置 StringItem 類的實例以顯示游戲關(guān)于信息,“幫助“界面的顯示與”關(guān)于“界面相同,只不過調(diào)用的是 helpShow()方法。 Mybullets 類繼承自 Sprite 類,以實現(xiàn)玩家子彈的相關(guān)功能。類中定義的方法 setfirstposition()起到定義玩家子彈發(fā)射坐標的作用(此方法在設(shè)計時起到的作用是消除每按一次開火玩家子彈位置就重新定位這個 BUG,但是,這個 BUG 完全可以用設(shè)置圖 43 關(guān)于界面進入游戲y11550pzbzover==0顯示敵人玩家被擊落了嗎 ?玩家是否還有機會?繼續(xù)游戲是否過關(guān)返回主界面YYNYYN圖 44 gameScreen 類主要關(guān)系流程圖NJ2ME 手 機 游 戲 開 發(fā) 與 設(shè) 計畢業(yè)設(shè)計 第 16 頁標志位的方法消除)。mybullets 類在 gameScreen 中建立了對象數(shù)組 huokebullet[9],代表玩家所能發(fā)射的 9 發(fā)子彈。它運行在獨立的線程中,以恒定的頻率刷新畫面。其主邏輯如圖 44 所示。gameScreen 類包括了 LayerManager,這樣所有靜態(tài)和動態(tài)的圖象都不需要手動刷新,只需要在 LayerManager 中加入所有的需要控制的精靈,在統(tǒng)一由 LayerManager 刷新即可, 因此,在 gameScreen 中創(chuàng)建 LayerManager 的對象 lm,并在構(gòu)造函數(shù)中實例子化。 地圖的創(chuàng)建 由于手機存儲空間的限制,不可能將整張地圖完整地存儲在手機中,為了節(jié)約空間,往往提出地圖中相同的圖片組成一張 PNG 格式的圖片,然后象拼圖一樣拼出地圖來,專業(yè)的游戲設(shè)計者往往自己寫一個地圖編輯器,以使拼圖過程不是那么痛苦。TiledLayer 指的是由一塊一塊類似用瓷磚拼湊起來的畫面。先利用 TiledLayer 的構(gòu)造函數(shù)建立TiledLayer,根據(jù)構(gòu)造函數(shù)的參數(shù)可以給定 Cell 數(shù)組 的大小,并且地圖圖片切割成等尺寸的畫面,并調(diào)用 setCell()設(shè)置具體的圖象格內(nèi)容。 圖 45 地圖J2ME 手 機 游 戲 開 發(fā) 與 設(shè) 計畢業(yè)設(shè)計 第 17 頁 (0,y1) y1=y1+1。在方法中,定義整型數(shù)組 map1[]以存儲 Cell 的索引值。其中 i 的值由循環(huán) for(int i=0。i++)取得,column 由語句column=i%15 取得、行由 row=(i
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1