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

正文內(nèi)容

基于j2me為平臺(tái)的坦克大戰(zhàn)游戲開發(fā)論文-預(yù)覽頁(yè)

 

【正文】 ..................................... 23 敵人坦克的功能屬性 ............................................................................ 23 子彈的運(yùn)行和控制 ................................................................................ 25 2 記分系 統(tǒng) ................................................................................................ 26 本章小結(jié) ................................................................................................ 28 第五章 總 結(jié) .............................................................................................. 29 本程序的總結(jié)和展望 .............................................................................. 29 經(jīng)驗(yàn)和感想 ............................................................................................ 29 致 謝 ................................................................................................................ 31 參考文獻(xiàn) ................................................................................................................ 32 附錄 源程序代碼 .............................................................................................. 33 3 第一章 緒 論 手機(jī)軟件現(xiàn)狀 在信息社會(huì)中,手機(jī)及其他無(wú)線設(shè)備越 來(lái)越多的走進(jìn)普通百姓的工作和生活,隨著信息網(wǎng)絡(luò)化的不斷進(jìn)展,手機(jī)及其他無(wú)線設(shè)備上網(wǎng)絡(luò)勢(shì)在必行。 2. Java 技術(shù)提供了一個(gè)類庫(kù),它使的應(yīng)用開發(fā)商可以創(chuàng)建更為直覺、豐富的用戶界面 (GUI); 3. Java 技術(shù)使網(wǎng)絡(luò)帶寬的應(yīng)用更為有效,因?yàn)閼?yīng)用程序可以下載到器件上,并在本地運(yùn)行 ,僅僅是在連接到服務(wù)器時(shí)才會(huì)占用網(wǎng)絡(luò)帶寬。其中 J2ME定位在消費(fèi)性電子產(chǎn)品的應(yīng)用上。于 是 J2ME 先將所有的嵌入式裝置大體上區(qū)分為兩種 : 一種是運(yùn)算功能有限、電力供應(yīng)也有限的嵌入式裝置 (比方說 PDA 、手機(jī) );另外一種則是運(yùn)算能力相對(duì)較佳、 在電力供應(yīng)上相對(duì)比較充足的嵌入式裝置 (比方說冷氣機(jī)、電冰箱、電視機(jī)上盒 (settop box))。它有一些非常重 要的特征對(duì)所有組織都有益。所有字節(jié)碼應(yīng)用在執(zhí)行之前都要校驗(yàn); JVM 在執(zhí)行過程中監(jiān)督應(yīng)用的安全性和存儲(chǔ)違反問題。游戲開發(fā)者和玩家常常是前沿計(jì)算機(jī)技術(shù)的最早的采用者。他們是最普遍攜帶的個(gè)人用品中僅次于鑰匙和錢包的東西。 因?yàn)樗麄兯嫦虻膶?duì)象、生活方式和分布式模型都有著極大的區(qū)別。保持游戲的簡(jiǎn)單是最基本的要求。而游戲、日歷管理、通訊和工作數(shù)據(jù)訪問使用的是同一個(gè)設(shè)備。 一開始開發(fā)和設(shè)計(jì)每個(gè)游戲都是昂貴的。豐富的社會(huì)交互 : 不管一個(gè)游戲設(shè)計(jì)得多好,只要玩家找到了它的根本模式或者玩完了所 有的游戲路徑很快就會(huì)厭煩這個(gè)游戲。利用手機(jī)技術(shù)的優(yōu)點(diǎn): 巨額的手機(jī)技術(shù)研發(fā)費(fèi)用都花在提高設(shè)備和網(wǎng)絡(luò)的可用性和可靠性上面。無(wú)違法內(nèi)容:既然 所有年齡 /性別的人群都玩手機(jī)游戲并且常常在公共 /工作場(chǎng)合,就 應(yīng)該避免明顯的暴力或者色情內(nèi)容。主機(jī)所采用得處理器為 CMOS 6502,一款已經(jīng)淘汰的 70 年代中期產(chǎn)品。 其游戲界面如圖 13 所示。使用 Java 編寫的程序能在世界范圍內(nèi)共享。 3. 面向?qū)ο? Java 吸收了 C++面向?qū)ο蟮母拍?,將?shù)據(jù)封裝于類中,實(shí)現(xiàn)了程序的簡(jiǎn)潔性和便于維護(hù)性,使程序代碼可以只需一次編譯就可反復(fù)利用。 關(guān)于 JBuilder9 JBuilder 是目前最好的 Java 開發(fā)工具之一,在協(xié)同管理、對(duì) J2EE 和 XML的支持等方面均走在其他產(chǎn)品的前面。 由于 Java 技術(shù)的發(fā)展迅速,經(jīng)常有新的組件推出或 7 新的錯(cuò)誤修正,致使 JBuilder 的版本升級(jí)很快。 雖然它沒有強(qiáng)大的功能和完善的調(diào)試手段,但它提供運(yùn)行模擬器的最基本組件 ,是其他 IDE 需集成采用的 必備元素。整 個(gè)詳細(xì) 的 運(yùn)作 流程如 圖 21 所示 。 因此,其邏輯設(shè)計(jì)應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計(jì)中。 敵人坦克的運(yùn)行算法也需要進(jìn)行適當(dāng)?shù)脑O(shè)置,以免游戲過于簡(jiǎn)單,單調(diào)。 另外,子彈在運(yùn)行過程中也需要實(shí)時(shí)掃描是否碰撞到了相關(guān)障礙物或屏幕邊界。 6. 游戲的結(jié)束、開始、動(dòng)態(tài)信息畫面作為構(gòu)成一個(gè)完美程序都是必不可少的重要部分。 同時(shí) ,地圖關(guān)卡不宜保存在手機(jī)有限的內(nèi)存中,而最好采取外部文件的讀入讀出方法。手機(jī)中由于處理器和內(nèi)存空間、存儲(chǔ)空間都十分有限,其數(shù)據(jù)庫(kù)系統(tǒng)與普通 PC大相徑庭。 以上相關(guān)技術(shù)細(xì)節(jié)和整體流程將分別在以下小節(jié)闡述。在 MIDP 規(guī)格中定義了 MIDlet 的生命周期,以及可以存在的三種狀態(tài),包括Paused、 Active 以及 Destroyed,每一個(gè) MIDlet 在任何時(shí)刻只可能處于其中的一個(gè)狀態(tài)。用戶控制的坦克運(yùn)行在主線程中,隨屏幕刷新的頻率而步進(jìn)。 在屏幕重繪的主程序中,將在每次的循環(huán)中判斷若干事件 。 TankMain 類是繼承自 MIDlet的控制主程序啟動(dòng)的首先被載入系統(tǒng)的部分。它決定了游戲何時(shí)該結(jié)束,何時(shí)分配敵人數(shù)量, GameOver字樣的閃現(xiàn)規(guī) 則,地圖的繪制及整個(gè)游戲的調(diào)度。如果已死亡或完成所有的關(guān)數(shù),程序?qū)⒂脩羲玫姆謹(jǐn)?shù)記載到 RMS 數(shù)據(jù)庫(kù)中,進(jìn)行永久性保存。 Canvas 提供了鍵盤事件、指點(diǎn)桿事件(如果設(shè)備支持),并定義了允許將鍵盤按鍵映射為游戲控制鍵的函數(shù) 。 Graphics 類 Graphics 類提供了簡(jiǎn)單的 2D 繪圖功能。 PNG 格式 PNG(Portable Network Graphics)格式是 MIDlet 唯一支持的圖象格式, PNG具體格式由 PNG Specification,Version 定義的。 這些 代碼包含在每一個(gè)單獨(dú)的 png 格式圖象中,然而如果將多個(gè) png 圖象合并在一張幅面稍 12 大一些的整圖中,多個(gè) chunks 就可以得到精簡(jiǎn),圖片的大小可以得到控制。 Game包中的新功能 MIDP 自 以后新增了 Game 包,為游戲的開發(fā)帶來(lái)了極大的便利。 LM 存儲(chǔ)了一個(gè)層的列表,新的層可以用 append 函數(shù)附加、刪除和插入。改變 View Window 的位置可以制造出滾動(dòng)屏幕的效果。不同的 frame 可交相顯示,構(gòu)成動(dòng)態(tài)的效果。 本程序中的雙方坦克、子彈都由 Sprite 繼承得到。 默認(rèn)是 (0,0)點(diǎn),如果需要 ,可將參考點(diǎn)設(shè)置在畫面邊界之外。該類使不需要高分辨率的圖象就能創(chuàng)建大幅圖面成為可能。 本程序中的地圖即為游戲背景。 J2ME中并沒有 J2SE 中的 File 類,獲取外部文件的手段很有限,僅僅在 Class 類中提供了一個(gè) getResourceAsStream 函 數(shù),將外部文件獲取為輸入流,再由InputStream 的繼承類讀出。 這樣的技術(shù)在繪制動(dòng)畫時(shí)特別有用。 Canvas 類中采取響應(yīng)鍵盤事件的方法,每次執(zhí)行周期時(shí)會(huì)讀取 keyPressed 函數(shù)中需執(zhí)行的代碼。對(duì)此,針對(duì)游戲的開發(fā),Game 包提供的鍵盤狀態(tài)功能將顯得十分有效。這保證了快速的按鍵和釋放也會(huì)被循環(huán)所捕捉。 然而不能僅僅將用戶坦克作為其 Sprite 參數(shù)傳遞給敵人的類進(jìn)行判斷。 這樣,就可以提前一步判斷。 需要指出的是,當(dāng)發(fā)生阻礙不能在不變方向的情況下繼續(xù)行走時(shí),并不一定立即需要采取轉(zhuǎn)向的對(duì)策。 坦克之間由以上道理也不會(huì)發(fā)生重疊,但當(dāng)某坦克正從上方生成而正巧有另一輛阻礙在其生成點(diǎn)處,這將導(dǎo)致不可避免的重合。 子彈所需要完成的任務(wù)有: 它是一個(gè)繼承了 Runnable 虛類的 可運(yùn)行單獨(dú)線程的對(duì)象。 如果來(lái)自玩家,則每一步需掃描所有的敵方坦克,檢查是否發(fā)生碰撞,這可能會(huì)花費(fèi)不少的 CPU 時(shí)間。這樣較多的運(yùn)算也將不可避免的耗費(fèi)大量 CPU 時(shí)間。 很顯然,手機(jī)上的數(shù)據(jù)庫(kù)系統(tǒng)不可能有 PC 上的強(qiáng)大功能。在一個(gè) MIDlet suite 包里的所有 MIDlet 都允許創(chuàng)建多個(gè)記錄集,只要它們賦有不同的名稱。訪問模式允許私有使用或訪問。開發(fā)者可以利用 InputStream的派生類 DataInputStream、DataOutputStream 以及 ByteArrayInputStream、 ByteArrayOutputStream 將不 16 同種類的數(shù)據(jù)類型打包,以字節(jié)流的形式發(fā)送和接收。 然而讀取或?qū)懭氲淖止?jié)數(shù)組都只能代表一個(gè)字段的信息,如果需要讀取或?qū)懭攵鄠€(gè)字段就必須要將數(shù)據(jù)轉(zhuǎn)換成字節(jié)信息,并且提供適當(dāng)?shù)臋C(jī)制來(lái)分隔這些信息。 2.利用輸入 /輸出流 這一種方法較上一種復(fù)雜,但是較為實(shí)用。 本程序中主要存放在永久區(qū)的內(nèi)容為 用戶得到的最高分?jǐn)?shù)的記錄。返回的 getString 可以將名字輸送給字節(jié)流。在這樣的情況下需要在不影響原有功能的情況下適當(dāng)?shù)目s減 JAR文件的大小, 除了可以克服內(nèi)存空間的限制外,也能 大幅度縮短下載的 時(shí)間(費(fèi) 17 用也降低了),勢(shì)必會(huì)有更多的人愿意下載 所開發(fā)的程序。 第二是減少?gòu)?fù)雜的程序結(jié)構(gòu),為一些共同的行為建立一個(gè)抽象類 (Abstract Class) 來(lái)表示繼承的子類的共通性。它包括了所有的信息 。 由此引入混淆器的概念。 混淆后,體積大約能減少 25%,這對(duì)當(dāng)前費(fèi)用較貴的無(wú)線網(wǎng)絡(luò)傳輸是有一定意義的 。 包括內(nèi)存狀況的檢測(cè)(手機(jī)上的內(nèi)存空間十分有限,必須時(shí)刻關(guān)注機(jī)載內(nèi)存是否大于程序所能使用到的最大可能的內(nèi)存空間),網(wǎng)絡(luò)狀況的檢測(cè),運(yùn)行函數(shù)的跟蹤等。在程序運(yùn)行中也可以調(diào)用 System 類的 gc()函數(shù)手動(dòng)收回廢棄的內(nèi)存。 圖 34 內(nèi)存監(jiān)視器 19 第四章 程序 分析和具體實(shí)現(xiàn) 游戲 進(jìn)入前的選擇 每個(gè) MIDlet 程序都必須有一個(gè)主類,該類必須繼承自 MIDlet。 進(jìn)入時(shí),首先載入畫面的不是游戲運(yùn)行狀態(tài),而是提供選項(xiàng),當(dāng)再次選擇 Start Game 時(shí)才正式運(yùn)行。在顯示高級(jí)用戶界面前,建造了一個(gè)Alert 類。在此,由于貼在 Alert 上的圖片大小超出了其范圍,故已成為永久狀態(tài)。即按鈕事件觸發(fā)后需執(zhí)行的函數(shù)。getSelectIndex()可檢測(cè)到選擇的項(xiàng)目的序號(hào),序號(hào)從 0 開始遞增。 刷新速度需大于 30/秒才能使畫面顯示因人眼的暫時(shí)停留效應(yīng)流暢運(yùn)行。它們分別為:EnemySprite 和 UserSprite。 其他,如 Sprite 類的 gameover 字樣、記分統(tǒng)計(jì)畫面也都需在此主邏輯中建立相應(yīng)對(duì)象。 地圖由外部文件讀入。 用二維循環(huán)將讀出的每個(gè)整數(shù),通過 setCell()將整幅地圖畫出即可。因?yàn)榈貓D上的障礙物之一 —— 草,在坦克運(yùn)行中時(shí)是必須處于坦克的上層的,否則將失去真實(shí)性。所以在構(gòu)造函數(shù)中,也應(yīng)當(dāng)分配 6個(gè) EnemySprite 對(duì)象的內(nèi)存空間。 當(dāng)敵人坦克完全死亡時(shí) (enemyNum 為 0),需調(diào)用 System 類的currentTimeMillis()賦值給結(jié)果的時(shí)間。 如果游戲未結(jié)束,則需判斷屏上坦克是否已小于還剩坦克的總數(shù),如果是這樣,就需要再提供一輛坦克。這樣可提示玩家具體敵人將在什么時(shí)刻出現(xiàn) ,以便做好準(zhǔn)備。 效果如圖 45所示。 在繪圖的 render()過程中,除了要重繪坦克、地圖、子彈外,還會(huì) 在右邊空白處繪出一個(gè)生命統(tǒng)計(jì)欄。 在允許敵人出現(xiàn)前,需要檢測(cè)給即將出現(xiàn)的敵人分配一個(gè)數(shù)組序號(hào)。 EnemeySprite和 UserSprite 都繼承了該類以簡(jiǎn)化結(jié)構(gòu)。 在 setBulletDirection()中,將根據(jù)坦克當(dāng)前的方向確定子彈出膛后的方向,其中 setRefPixelPosition()將子彈的參考點(diǎn)設(shè)置在其未變形狀態(tài)的底部,setXY()將其放置到炮口的位置, setTransform()將其圖片方向轉(zhuǎn)到需要使用的位置。 在得到障礙物屬性后,判斷其序
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1