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

正文內(nèi)容

基于java的手機(jī)游戲開(kāi)發(fā)技術(shù)研究(文件)

 

【正文】 ] = 5 (速度) 可以在任何時(shí)候?qū)δ忝總€(gè)子彈的屬性進(jìn)行修正,可以將數(shù)組的這種使用方法想象成“對(duì)象 .屬性”。圖片見(jiàn)圖 。我的動(dòng)畫(huà)圖片的每幀都是 32*32像素大小的,所以我只需要一個(gè)變量就可以保存這個(gè)數(shù)字,如果長(zhǎng)寬不一樣的話(huà)就需要兩個(gè)變量保存。 數(shù)組 里的每個(gè)元素代表圖片上飛機(jī)的第幾個(gè)動(dòng)作。 //右翻滾 private final int nomalSequence[] = {3}。在這個(gè)游戲中,進(jìn)行碰撞的元素過(guò)多,要讓碰撞看起來(lái)自然而且準(zhǔn)確需要進(jìn)行很多細(xì)節(jié)上處理是件不 容 易的事。做圓形碰撞需要定義對(duì)象的幾個(gè)屬性, (1) 圓心的 X軸和 Y軸坐標(biāo); (2) 圓的半徑。這個(gè)方法的參數(shù)比較多,在上邊分析類(lèi)結(jié)構(gòu)的時(shí)候已經(jīng)把參數(shù)列出來(lái)了,并進(jìn)行了注釋。如果斜邊長(zhǎng)大于半徑,說(shuō)明沒(méi)有碰撞到,否則對(duì)象發(fā)生碰撞。游戲中的分?jǐn)?shù)是個(gè)最典型的例子。然后逐位的把數(shù)字畫(huà)到屏幕上去。如果要畫(huà)到屏幕上,直接把畫(huà)圖的語(yǔ)句寫(xiě)到循環(huán)體內(nèi),就在求出數(shù)字之后。在游戲初始化的時(shí)候通過(guò) Plane類(lèi)實(shí)例化了5個(gè)敵機(jī)對(duì)象出來(lái),需要刷新敵機(jī)的時(shí)候就檢查對(duì)象池中是否 有空閑對(duì)象,如果有就將對(duì)象畫(huà)到屏幕上,如果沒(méi)有 就一直等待對(duì)象池中有空閑對(duì)象可以使用。 為什么要優(yōu)化 游戲能夠被劃分為兩種較廣泛的類(lèi)型:實(shí)時(shí)型和按鍵驅(qū)動(dòng)型。 動(dòng)作類(lèi)游戲一個(gè)重要的特征就是將大量的運(yùn)算花在屏幕顯示上,而且刷新率必須保持在 10赫茲 以上。 何時(shí)不用優(yōu)化 如果編寫(xiě)的游戲不是動(dòng)作游戲,有可能不必去優(yōu)化。 即使你正在編寫(xiě)這類(lèi)游戲,優(yōu)化也是相當(dāng)危險(xiǎn)的。下面給出不要去優(yōu)化的更多的理由。反之也有可能。這 10%的代碼段是我們需要集中 全力去優(yōu)化的部分。在我的游戲里 (%) CPU時(shí)間最多,所以我們著重對(duì)這部分代碼 進(jìn)行 優(yōu)化 。幾乎已經(jīng)沒(méi)有什么可以?xún)?yōu)化的了。 濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 29 參考文獻(xiàn) [1] 黃聰明 .精通 java2程序設(shè)計(jì) [M](第一版) .北京: 清華大學(xué)出版社 .:527 [2] 胡虛懷 .J2ME移動(dòng)設(shè)備程序設(shè)計(jì) [M](第二版) .北京: 清華大學(xué)出版社 .:1023 [3] 詹建飛 .J2ME開(kāi)發(fā)精解 [M](第二版 ).北京: 電子工業(yè)出版社 .:1125 [4] 郝玉龍,李向前 .J2ME 移動(dòng)應(yīng)用開(kāi)發(fā) [M](第三版 ).北京: 清華大學(xué)出版社 .:516 [5] 耿祥義 .java大學(xué)實(shí)用教程 [M](第一版) .北京: 電子工業(yè)出版社 .:1920 [6] 溫尚書(shū) . J2ME無(wú)線(xiàn)通信實(shí)用案例教程 [M](第二版 ).北京: 電子工業(yè)出版社 .:821 [7] 林信良 .Java JDK6 學(xué)習(xí)筆記 [M] (第三版 ).北京: 清華大學(xué)出版社 .:1318 [8] 印旻 . Java 語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì) [M] (第三版 ).北京: 清華 大學(xué)出版社 .:629 [9] 陳剛 . Eclipse從入門(mén)到精通 (第三版 ) [M].北京: 清華大學(xué)出版社 .:2027 [10] 李振鵬 龔劍 , J2ME手機(jī)游戲開(kāi)發(fā)技術(shù)詳解北 [M].北京: 清華大學(xué)出版社 .:828 [11] 施錚 .J2ME無(wú)線(xiàn)移動(dòng)游戲開(kāi)發(fā) [M] (第三版) .北京: 清華大學(xué)出版社 .:2027 [12] 陸光義 Java游戲編程導(dǎo)學(xué) [M](第二版) .北京: 清華大學(xué)出版社 .:913 [13] 呂建德 .游戲程序設(shè)計(jì)概論 [M](第 二版) .北京: 中國(guó)鐵道出版社 :1026 [14] 張霞 .Java 2游戲設(shè)計(jì) [M](第三版) .重慶: 重慶大學(xué)出版社 . :719 [15] 張超 .游戲開(kāi)發(fā)能手 —— 精彩游戲自己編 [M](第二版) .北京 :人民郵電出版社 .:1226 [16] 劉勁松 .游戲軟件設(shè)計(jì)概論 [M](第三版) .北京 : 機(jī)械工業(yè)出版社 .:1427 濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 30 附錄 此部分為飛機(jī)射擊類(lèi)游戲 —— 重裝火炮 Canvas 類(lèi)的部分 源程序,主要代碼如下: package 。 import .*。 Thread th 。 boolean showpause。 private static boolean gun_right。 //大炮的 X 坐標(biāo) private static int gun_y。 private static int gun_width。 //temp degree 濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 31
。 private static int cdegree = 0。 //炮彈的 X 坐標(biāo) private static int shot_y[] = new int[4]。 private static boolean win = false。 private Score highscore = null。 private boolean stopthread。 public class GameCanvas extends FullCanvas implements Runnable{ private static int WIDTH 。 import .*。 濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 28 結(jié)束語(yǔ) 本畢業(yè)設(shè)計(jì)研究開(kāi)發(fā)了一個(gè)手機(jī)游戲的基本框架、分析開(kāi)發(fā)流程、在這個(gè)游戲中運(yùn)用的算法、技術(shù)和最后如何測(cè)試優(yōu)化代碼,實(shí)現(xiàn)了一款可在多種環(huán)境平臺(tái)下運(yùn)行的 java手機(jī)游戲, 該游戲能夠?qū)崿F(xiàn)主機(jī)的射擊、翻滾、平移,前進(jìn),敵機(jī)的射擊、與主機(jī)碰撞,基本上滿(mǎn)足了玩家的需求。發(fā)現(xiàn)占用 CPU時(shí)間最多的一部分就是 setClip()這是 J2ME為我們提供的函數(shù),已經(jīng)沒(méi)法再優(yōu)化了。見(jiàn)圖 。 從哪里開(kāi)始優(yōu)化 最直接的方式是使用 J2ME Wireless Toolkit的 Profiler去剖析你的代碼的運(yùn)行效率,它也將幫助你更精確的測(cè)量出這些技術(shù)對(duì)于提高性能的有效性。 對(duì)最后一點(diǎn)的解釋?zhuān)河捎趦?yōu)化的是一個(gè)不定的目標(biāo)及平臺(tái), 有些方法可能在 Java平濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 26 臺(tái)上運(yùn)行快一點(diǎn),而有些可能在 J2ME平臺(tái)上運(yùn)行快一點(diǎn)。這就需要開(kāi)發(fā)者自己去平衡。不過(guò)一個(gè)例外是如果你的程序需要大量的運(yùn)算去決定它下一步怎樣走,例如棋類(lèi)游戲需要在幾百萬(wàn)種組合中去尋找。這類(lèi)游戲需要玩家有快速的反應(yīng)和很好的手眼協(xié)調(diào)能力,所以這類(lèi)游戲?qū)︽I盤(pán)輸入的反應(yīng)也有極高的要求。棋牌類(lèi)游戲,大部分的解謎類(lèi)游戲以及策略類(lèi)和文字類(lèi)游戲都屬于這類(lèi)游戲。濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 25 5 后期優(yōu)化與平臺(tái)移植 這一章講述代碼優(yōu)化對(duì)于編寫(xiě)高效的手機(jī)游戲的重要性。 結(jié)果在調(diào)試這部分代碼的時(shí)候我發(fā)現(xiàn)實(shí)例化一個(gè)新對(duì)象的時(shí)候仿真器需要花費(fèi)2030毫秒的時(shí)間,如果一次要實(shí)例化多架敵機(jī)的話(huà)就會(huì)出現(xiàn)掉幀的現(xiàn)象。 求出 point每一位上的數(shù)字的算法:使用 for循環(huán),這是個(gè)反循環(huán)從 N( N剛才已求出)循環(huán)到 0, point整除 10的 N次方,然后減去最高位(比如 1100,剔除 1000還剩 下 100,現(xiàn)在百位為最高位)。見(jiàn)圖 。所以在判斷碰撞的時(shí)候需要加上對(duì)應(yīng)坐標(biāo)軸上的位移量,對(duì)下一幀進(jìn)行預(yù)先判斷。直角三角形的兩條直角邊的長(zhǎng)度可以用坐標(biāo)相減的方法求得,然后用勾股定理求得 斜邊的平方,注意!一定不要將其開(kāi)方,因?yàn)?CPU做浮點(diǎn)數(shù)運(yùn)算比做整數(shù)運(yùn)算要耗 費(fèi)更多的時(shí)間。由于上邊總結(jié)出的 7種碰撞情況中,有 5種都需要做圓形檢測(cè),這讓代碼顯的不易讀,冗余度增大。 碰撞檢測(cè)有很多種類(lèi) 型,矩形碰撞是最常用的一種。這個(gè)地方就需要釋放按鍵以后檢查飛機(jī)的當(dāng)前幀,如果不是動(dòng)畫(huà)的最后一幀就繼續(xù)動(dòng)畫(huà),否則直接轉(zhuǎn)為平穩(wěn)飛行。這里我們定義了玩家飛機(jī)的 3種動(dòng)作: private final int leftSequence[] = { 3, 2, 1, 0, 7, 6, 5, 4 }。 接下來(lái)需要設(shè)置動(dòng)畫(huà)序列數(shù)組了。首 先,保證動(dòng)畫(huà)圖片里邊每一幀的尺寸都一樣。 4. 動(dòng)畫(huà) 動(dòng)畫(huà)是每個(gè)游戲必不可少的要素,沒(méi)有動(dòng)畫(huà)的游戲畫(huà)面顯得十分呆板,很難吸引玩濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 22 家。也就是說(shuō),你的子彈有多少種屬性,后邊的括號(hào)就添幾。 另一個(gè)簡(jiǎn)便一點(diǎn)的子彈算法,讓每顆子彈的用法更貼近于對(duì)象,寫(xiě)論文的時(shí)候才想到的。所以只需要幾個(gè)數(shù)組就能實(shí)現(xiàn) (關(guān)于游戲的優(yōu)化,下一章討論 )。 3. 玩家子彈算法 在大部分射擊游戲中,子彈都是作為對(duì)象來(lái)實(shí)現(xiàn)的,一個(gè)子彈對(duì)象包括了子彈的坐標(biāo),位移量,爆炸范圍等等,每一顆子彈都是一個(gè)物件。具體算法如下: (1) 算出在 X軸方向和 Y軸方向需要移動(dòng)的距離,如果正好為 1000的整數(shù)倍,將其縮小 1000倍作為屏幕上 X、 Y軸的位移量。這里需要注意的是,求出的 X軸和 Y軸的位 移量是經(jīng)過(guò)放大 1000倍的數(shù)字,所以要縮小 1000倍后再使用。所以如果子彈要沿著這條斜線(xiàn)移動(dòng)的話(huà)也應(yīng)該遵循這條規(guī)律。 2. 保持每個(gè)角度子彈的運(yùn)動(dòng)速度都和水平 (垂直 )方向一樣 解決子彈飛行的角度以后,第二個(gè)難點(diǎn)就是要保證子彈的運(yùn)動(dòng)速度都和水平 (垂直 )方向一樣。敵機(jī) 玩家 a b c 濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 20 這里可以使用一個(gè)折中的辦法,規(guī)定幾個(gè)角度出來(lái),讓子彈沿著最接近玩家飛機(jī)的那個(gè)角度飛行。其它大大小小各類(lèi)算法還是比較多 ,接下來(lái)討論其中主要的幾個(gè)算法。根據(jù)計(jì)算的數(shù)據(jù)繪制不同的對(duì)象到屏幕上,包括玩家飛機(jī)、敵機(jī)、BOSS、 BOSS血條、分?jǐn)?shù) collide()方法檢測(cè)不同的對(duì)象是否可以進(jìn)行碰撞,如果可以碰撞再調(diào)用 roundCheck()方法。在不 同的狀態(tài)繪制不同的圖片,所以需要一個(gè) switch分支結(jié)構(gòu)控制繪畫(huà)的圖片和計(jì)算的內(nèi)容, switch分支執(zhí)行效率高于 if(){}else if(){}結(jié)構(gòu)。 在這個(gè)游戲當(dāng)中, Canvas類(lèi)實(shí)現(xiàn)了現(xiàn)在大部分手機(jī)游戲的一種標(biāo)準(zhǔn)結(jié)構(gòu) —— 把一個(gè)游戲的所有方法封裝在一個(gè)循環(huán)體內(nèi),并由一個(gè)單線(xiàn)程進(jìn)行控制。 根據(jù)上邊幾個(gè)方法計(jì)算出的 數(shù)據(jù) 在 Canvas里調(diào)用 drawPlane(),在 drawPlane()里調(diào)用drawBullet()繪制飛機(jī)和子彈。玩家飛機(jī)有自己的子彈池,通過(guò)射擊敵機(jī)和子彈出屏幕來(lái)回收發(fā)射的子彈。 BOSS 生命值較大,所以需要畫(huà)一個(gè)血條 bossLife() BOSS 人工智能,需要判斷 BOSS 的移動(dòng)方向和什么時(shí)候發(fā)射什么樣式的子彈,bossAi()方法。需要計(jì)算敵機(jī)方法 pute()和計(jì)算子彈方法 putBullet(),然后繪制到屏幕 drawEnemy()和 drawBullet()。 敵機(jī)將使用類(lèi)似子彈的方法來(lái)實(shí)現(xiàn),實(shí)例化五個(gè)敵機(jī)對(duì)象作為一個(gè)對(duì)象池,每次需要刷新敵機(jī)的時(shí)候就遍歷對(duì)象池中是否有空閑對(duì)象。 由于 BOSS和普通敵機(jī)有很多共同屬性例如:生命值、幀尺寸、碰撞范圍等,還有一個(gè)比較重要的共同方法,就是發(fā)射子彈。 由于 Plane敵機(jī)類(lèi)和 BOSS類(lèi)有許 多共同 點(diǎn),所以 BOSS繼承自敵機(jī)類(lèi), PlayerPlane玩家飛機(jī) 類(lèi)和 Map地圖類(lèi)各自獨(dú)立,以上四個(gè)類(lèi)都在 Canvas類(lèi)中實(shí)例化,進(jìn)行協(xié)調(diào)和控制。 類(lèi)的劃分 對(duì)象 (Object):思維、感受和 動(dòng)作所作用的物件 或精神體玩家為一種對(duì)象。 濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 13 4 游戲結(jié)構(gòu)分析 JAVA和 C++其中的一個(gè)的不同之處就是, C++雖然已經(jīng)采用了面向?qū)ο蟮睦碚摚渲羞€是包含到有面向過(guò)程的理論在里邊, JAVA則是一門(mén)完全面象對(duì)象的程序語(yǔ)言,鼓勵(lì)廣大程序員將數(shù)據(jù)完整的封裝,通過(guò) get和 set方法來(lái)訪(fǎng)問(wèn)和改變類(lèi)里的私有 數(shù)據(jù)。在“ Preferences”里,展開(kāi)“ J2ME”分支,選擇“ Device Management”,再點(diǎn)擊“ Import”。 EclipseME提供了下列功能以幫助開(kāi)發(fā)者輕松的創(chuàng)建 Midlets: 1. 無(wú)線(xiàn)工具包首選項(xiàng) 濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 10 2. 創(chuàng)建新的 J2ME Midlet套件專(zhuān)案 3. 創(chuàng)建新的 Midlet 4. Java應(yīng)用描述文件編輯器 5. 對(duì) class檔進(jìn)行增量的 /自動(dòng)的預(yù)檢驗(yàn) 6. 支持從 Eclipse中啟動(dòng)運(yùn)行 J2ME仿真器 7. 打包以及部署(包括無(wú)線(xiàn)下載方式)測(cè)試,并可以使用 ProGuard對(duì)輸出包進(jìn)行混淆 工具安裝方法 由于 JDK、 WTK、 Eclipse的安裝方法和普通軟件無(wú)差別,所以只介紹 EclipseMe的安裝方法和在 Eclipse環(huán)境下 WTK的配制。到本文寫(xiě)作時(shí)為止可以獲取有四個(gè)版本,分別是 ,, , , ,和 。 工具介紹 WTK的全稱(chēng)是 Sun J2ME Wireless To
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1