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

正文內(nèi)容

java游戲設(shè)計(jì)—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-01-04 06:08 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 減少內(nèi)存的使用: (1)盡量縮短命名的長(zhǎng)度。在應(yīng)用程序 內(nèi),對(duì)于所建立的類、接口、方法及變量名而言,都需要賦予一個(gè)識(shí)別的名稱,所命名的名稱每多一個(gè)字符就會(huì)在類文件內(nèi)多產(chǎn)生一個(gè)字節(jié),對(duì)于一個(gè)較復(fù)雜的應(yīng)用程序而言就會(huì)增加為數(shù)不小的數(shù)據(jù)量。所有這些可以借助混 第 11 頁 淆器來幫助實(shí)現(xiàn) (2)所有代碼寫為一個(gè)類。 (3)只使用一個(gè)線程。 (4)盡量不使用靜態(tài)變量。 (5)將 PNG 圖片合并成一張,減少圖形數(shù)據(jù)的大小。 將 PNG格式的小分辨率圖象合并在一張大的高分辨率圖象中,由于減少了頭文件的大小,將比合并前的總大小減少許多。 內(nèi)存檢測(cè)器 Wireless Tool Kit 提供了許多在運(yùn)行時(shí)監(jiān)視運(yùn)行狀態(tài)的工具。 包括內(nèi)存狀況的檢測(cè)(手機(jī)上的內(nèi)存空間十分有限,必須時(shí)刻關(guān)注機(jī)載內(nèi)存是否大于程序所能使用到的最大可能的內(nèi)存空間),網(wǎng)絡(luò)狀況的檢測(cè),運(yùn)行函數(shù)的跟蹤等。 內(nèi)存檢測(cè)器是內(nèi)存跟蹤測(cè)試隨時(shí)間變化的調(diào)試器。其中,允許強(qiáng)制垃圾回收 (Garbage Collection)。由于 Java 語言中,不像許多其他的如 C++語言,不需要指定回收函數(shù)中特定不使用的資源,資源回收機(jī)制將自動(dòng)清空無效變量占用的空間。在程序運(yùn)行中也可以調(diào)用 System 類的 gc()函數(shù)手動(dòng)收回廢棄的內(nèi)存。 關(guān)于混淆器 Java 語言并沒有完全編譯成二進(jìn)制可執(zhí)行文件,編譯出的 .class 文件是一種介于源程序和二進(jìn)制之間的一中基于半解釋的字節(jié)碼,需要虛擬機(jī)來執(zhí)行。它包括了所有的信息。然而這樣會(huì)導(dǎo)致 .class 很容易被反編譯為源代碼,從而不能保護(hù)作者的知識(shí)成果。目前流行的如 decode,JAD 等反編譯工具可以以很快的速度生成源文件。如果不加以施行有效的措施,將造成嚴(yán)重的后果。 由此引入混淆器的概念?;煜鲗⒋a中的所有變量、函數(shù)、類的名稱變?yōu)楹?jiǎn)短的英文字母代號(hào),如果缺乏相應(yīng)的函數(shù)名指示和程序 注釋,即使被反編譯,也將難以閱讀。 混淆器的作用不僅僅是保護(hù)代碼,它也有精簡(jiǎn)編譯后程序大小的作用。由于以上介紹的減少變量、函數(shù)的命名長(zhǎng)度的關(guān)系,編譯后也會(huì)從 .class 文件中減少這些冗余的信息?;煜螅w積大約能減少 25%,這對(duì)當(dāng)前費(fèi)用較貴的無線網(wǎng)絡(luò)傳輸是有一定意義的。 本章小結(jié) 第三章中介紹了程序的流程、相關(guān)技術(shù)的思想及其在本程序中的應(yīng)用。對(duì)游戲基本算法等做了詳細(xì)敘述。具體算法的代碼實(shí)現(xiàn)和詳細(xì)流程將在下章介紹。 第 12 頁 4 程序分析和具體實(shí)現(xiàn) 游戲進(jìn)入前的選擇 每個(gè) MIDlet 程序都必須有一個(gè)主類,該類必須繼承自 MIDlet。它控制著整個(gè)程序的運(yùn)行,并且可以通過相應(yīng)函數(shù)從程序描述文件中獲取相關(guān)的信息。該類中擁有可以管理程序的創(chuàng)建、開始、暫停(手機(jī)中很可能有正在運(yùn)行程序卻突然來電的情況,這時(shí)應(yīng)進(jìn)入暫停狀態(tài)。)、結(jié)束的函數(shù)。本程序主類為 lzhhdm,并實(shí)現(xiàn)接口 CommandLIstener。 首先顯示的是游戲的背景介紹(圖 41),為此,在類 lzhhdm 定義 Form類對(duì)象 a,在 startApp()函數(shù)中判斷 isSplash 是否為真,如果為真的話,將創(chuàng)建 Form 類的實(shí)例 a,并且調(diào)用 append()方法在表單上放置StringItem 類的實(shí)例以顯示游戲背景信息。使用語句 ok=new Command(ok,1)。實(shí)例化 Command 類對(duì)象 ok。調(diào)用addCommand() 命 令 建 立 ok 命令與 Form 之 間 的 關(guān) 聯(lián) , 調(diào) 用 第 13 頁 setCommandListener()命令使 Form 與 CommandListener 建立關(guān)聯(lián)。調(diào)用 Displayable 的 seturrent()函 數(shù)顯示背景介紹窗口。 當(dāng)玩家點(diǎn)擊 ok后將調(diào)用 (menuscreen) 以顯示游戲菜單 menuscreen(圖 42)。 類 menuscreen 繼承自 Canvas 類,并實(shí)現(xiàn)接口 Runnable 和 CommandListener。在類 menuscreen 中定義了 lowColor 和 highColor、 highBGColor 三個(gè)整型變量及布爾型變量 co。其 中 lowColor 賦值為 0x000000FF,代表蘭色, higColor 賦值為 0x00FF0000,代表紅色 ,highBGColor 賦值為 0x00CCCCCC,代表 蘭灰色,即背景條。當(dāng)玩家按住上或下鍵時(shí),在函數(shù) keyPressed (int code)中的整型變量 menuIndex 相應(yīng)的減 1 或加 1,相應(yīng)的,在 paint()函數(shù)中會(huì)根據(jù) menuIndex 繪制選項(xiàng)是否被選中。在函數(shù) run()中,如果 co為真,則不停的 repaint(),設(shè)置 co 的意義在于,當(dāng)進(jìn)入游戲主畫面后,co 賦值為 false, 以終止繪制選項(xiàng)的repaint(),提高游戲速度。 當(dāng)移動(dòng)選項(xiàng)條到某項(xiàng),并點(diǎn)擊 ok時(shí),在mandAction()方法中根據(jù) menuIndex 的值判斷選擇了哪個(gè)選項(xiàng),列如當(dāng)選擇“關(guān)于”時(shí),將調(diào)用 lzhhdm 類中的 renwuShow()方法以顯示 ”關(guān)于 ”界面(圖 43),在 renwuShow()方法中, Form 類對(duì)象 a=null,表示清空 Form,并重新調(diào)用用 append()方法在表單上放置StringItem 類的實(shí)例以顯示游戲關(guān)于信息,“幫助“界面的顯示與”關(guān)于“界面相同,只不過調(diào)用的是 helpShow()方法。 圖 41游戲背景介紹 圖 42 游戲的菜單 進(jìn)入游戲 y11550 pzbzover==0 顯示敵人 玩家被擊落了嗎 ? 玩家是否還有機(jī)會(huì)? 繼續(xù)游戲 是否過關(guān) 返回主界面 Y Y N Y Y N 圖 44 gameScreen 類主要關(guān)系流程圖 N 第 14 頁 mybullets 類 在介紹游戲主類 gameScreen 類之前,應(yīng)該先簡(jiǎn)要說明一下玩家子彈類 mybullets 類,實(shí)際上 ,mybullets 類是應(yīng)該刪除的,其要實(shí)現(xiàn)的功能應(yīng)該放在 gameScreen 類中 ,但是由于設(shè)計(jì)游戲的過程也是一個(gè)學(xué)習(xí)的過程,而在當(dāng)時(shí),我并沒有意識(shí)到這一點(diǎn)。 Mybullets 類繼承自 Sprite 類,以實(shí)現(xiàn)玩家子彈的相關(guān)功能。首先,創(chuàng)建子彈狀態(tài)數(shù)組 private int[][] bullets,其中, [i][0]代表子彈的 X 坐標(biāo), [i][1]代表子彈的 Y 坐標(biāo), [i][2]代表子彈 Y 方向速度, [i][3]代表子彈存活狀態(tài) (由于此類是在早期設(shè)計(jì)的,而之后子彈存活狀態(tài)使用了子彈射程作為標(biāo)志位,所 以其并沒有起到作用 )。類中定義的方法 setfirstposition()起到定義玩家子彈發(fā)射坐標(biāo)的作用 (此方法在設(shè)計(jì)時(shí)起到的作用是消除每按一次開火玩家子彈位置就重新定位這個(gè) BUG,但是,這個(gè) BUG 完全可以用設(shè)置標(biāo)志位的方法消除 )。方法 newposition()實(shí)現(xiàn)的功能為更新玩家的子彈位置,并且檢測(cè)玩家子彈與普通敵人的碰撞及記錄玩家戰(zhàn)果 (更新子彈位置的功能可以由使用 move()加設(shè)置標(biāo)志位的方法取代;由于設(shè)計(jì)這個(gè)類的時(shí)候并沒有考慮到添加 BOSS 等,所以在此檢測(cè)碰撞,但添加 BOOS 等功能后,此處的檢測(cè)完全可以 和飛機(jī)對(duì)飛機(jī)等的碰撞檢測(cè)封裝在同一個(gè)方法中 )。 mybullets 類在 gameScreen 中建立了對(duì)象數(shù)組 huokebullet[9],代表玩家所能發(fā)射的 9發(fā)子彈。 游戲邏輯及 gameScreen 類 gameScreen 類是游戲的主類,決定著敵人何時(shí)出現(xiàn),控制著敵人出現(xiàn)的方法,判斷敵人及玩家是否被擊中等。它運(yùn)行在獨(dú)立的線程中,以恒定的頻率刷新畫面。本程序設(shè)置為1/20 秒。其主邏輯如圖 44所示。 gameScreen 類所實(shí)現(xiàn)的功能 gameScreen 類要實(shí)現(xiàn)地圖的滾 動(dòng)、敵人飛機(jī)的相關(guān)屬性、玩家的相關(guān)屬性等功能。 gameScreen 類 包括了 LayerManager,這樣所有靜態(tài)和動(dòng)態(tài)的圖象都不需要手動(dòng)刷新,只需要在 LayerManager 中加 入所有的需要控制的精靈 ,在統(tǒng)一由 LayerManager 刷新即可 , 因此 ,在 gameScreen 中創(chuàng)建 LayerManager 的對(duì)象 lm,并在構(gòu)造函數(shù)中實(shí)例子化。 其他精靈類的對(duì)象如敵人飛機(jī)、玩家飛機(jī)、玩家飛機(jī)的子彈、敵人的子彈、 BOSS 及圖 43關(guān)于界面 第 15 頁 (0,y1) y1=y1+1。 View Window 向下移動(dòng) (0,0) 圖 46 圖 46 BOSS 所屬的子彈都需在 gameScreen()類中建立相應(yīng)的對(duì)象,并在構(gòu)造喊數(shù)中實(shí)例化,且由 ()方法添加到 LayerManager 類對(duì)象 lm中。 地圖的創(chuàng)建 由于手機(jī)存儲(chǔ)空間的限制,不可能將整張地圖完整地存儲(chǔ)在手機(jī)中,為了節(jié)約空間,往往提出地圖中相同的圖片組成一張 PNG 格式的圖片,然后象拼圖一樣拼出地圖來,專業(yè)的游戲設(shè)計(jì)者往往自己寫一個(gè)地圖編輯器,以使拼圖過程不是那么痛苦。 創(chuàng)建地圖就需要使用 TiledLayer。 TiledLayer 指的是由一塊一塊類似用瓷磚拼湊起來的畫面。地圖實(shí)際即為 TiledLayer 的一個(gè)對(duì)象。先利用 TiledLayer 的構(gòu)造函數(shù)建立TiledLayer,根據(jù)構(gòu)造函數(shù)的參數(shù)可以給定 Cell 數(shù)組 的大小,并且地圖圖片切割成等尺寸的畫面,并調(diào)用 setCell()設(shè)置具體的圖象格內(nèi)容。地圖 圖片如圖 45所示。 因此,創(chuàng)建一個(gè)返回 TtiledLayer 的方法 createBackGround(),以便在 gameScreen()的構(gòu)造函數(shù)中調(diào)用。在方法中,定義整型數(shù)組 map1[]以存儲(chǔ) Cell 的索引值。并使用(column,row,map1[i])設(shè)定 TtiledLayer 的內(nèi)容,以形成地圖。其中i的值由循環(huán) for(int i=0。i。i++)取得, column 由語句 column=i%15 取得、行由 row=(icolumn)/15 取得。 畫出地圖后,由 ()將地圖添加到 LayerManager 類對(duì)象 lm 中。由于地圖位于 Layer 的最低層,即離用戶視線最遠(yuǎn)的層,所以 Tiledlayer 最后一個(gè)被添加到 lm中。 地圖的移動(dòng) 根據(jù)游戲的設(shè)定,游戲中地圖是向下移動(dòng)的,實(shí)現(xiàn)此功能的方法如下: 首先,在使用 createBackGround()函數(shù)創(chuàng)建地圖數(shù)組時(shí),用 (row+1)*16getHeight() 語句對(duì)整型變量 row2 賦值,其中 row+1 代表地圖有多少列,
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1