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

正文內(nèi)容

基于java的手機(jī)游戲開(kāi)發(fā)技術(shù)研究(編輯修改稿)

2025-01-06 23:26 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 iuder、 NetBeans、 JCreater??各個(gè)工具性能的使用方法都不一樣,這里我選擇的完全免費(fèi)的開(kāi)源工具 ,雖說(shuō)是免費(fèi)軟件,不過(guò)功能完全不次于像 JBliuder這樣的商業(yè)軟件。 一門(mén)好的程序開(kāi)發(fā)語(yǔ)言需要有好的開(kāi)發(fā)環(huán)境做基礎(chǔ), J2ME也不例外,我就來(lái)總結(jié)一下如何利用 Eclipse搭建 J2ME的開(kāi)發(fā)環(huán)境。 搭建一個(gè)最基本的開(kāi)發(fā)環(huán)境需要下載以下工具: 1. JDK 2. WTK 3. EclipseMe 4. Eclipse 如有需要還可以下載 Eclipse多國(guó)語(yǔ)言包 (LanguagePack)。 工具介紹 WTK的全稱(chēng)是 Sun J2ME Wireless Toolkit —— Sun的無(wú)線開(kāi)發(fā)工具包。這一工具包的設(shè)計(jì)目的是為了幫助開(kāi)發(fā)人員簡(jiǎn)化 j2me的開(kāi)發(fā)過(guò)程。使用其中的工具可以開(kāi)發(fā)與 Java Technology for the Wireless Industry (JTWI, JSR 185)規(guī)范兼容的設(shè)備上運(yùn)行的 j2me 應(yīng)用程序。該工具箱包含了完整的生成工具、實(shí)用程序以及設(shè)備仿真器。到本文寫(xiě)作時(shí)為止可以獲取有四個(gè)版本,分別是 ,, , , ,和 。每個(gè)版 本都包括英語(yǔ),日語(yǔ),簡(jiǎn)體中文,繁體中文 4個(gè)語(yǔ)種包。 在安裝 WTK之前需要注意的是,由于安裝程序會(huì)自動(dòng)尋找 JDK的路徑,所以一定要將 JDK正確安裝。 EclipseME是幫助開(kāi)發(fā)者開(kāi)發(fā) J2ME MIDlet的 Eclipse插件。 EclipseME提供了下列功能以幫助開(kāi)發(fā)者輕松的創(chuàng)建 Midlets: 1. 無(wú)線工具包首選項(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ú)線下載方式)測(cè)試,并可以使用 ProGuard對(duì)輸出包進(jìn)行混淆 工具安裝方法 由于 JDK、 WTK、 Eclipse的安裝方法和普通軟件無(wú)差別,所以只介紹 EclipseMe的安裝方法和在 Eclipse環(huán)境下 WTK的配制。 首先進(jìn)入 Eclipse接口并通過(guò)其幫助菜單下的軟件更新彈出的“查找并安裝” “新建已歸檔的站點(diǎn)”,然后選取下載的 EclipseMe文件的路徑,按照提示完成安裝。 安裝成功以后在 Eclipse接口點(diǎn)擊“ Windows”,打開(kāi)“ Preferences”,如果出現(xiàn)了“ J2ME”項(xiàng),表示安裝正確。如圖 濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 11 圖 EclipseME 安裝成功以后的“ Preferences” 接下來(lái)需要配制 WTK仿真器路徑。在“ Preferences”里,展開(kāi)“ J2ME”分支,選擇“ Device Management”,再點(diǎn)擊“ Import”。如圖 濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 12 圖 配制 WKT 路徑 在“ Specify search directory:”文本框中輸入 WTK的安裝路徑(例如: D:\),點(diǎn)擊“ Refresh”。幾秒種過(guò)后“ Device”表格中將出現(xiàn) WTK自帶的幾款仿真器列表,表示 WTK配制正確,點(diǎn)擊“ Finish”結(jié)束配制。 至此一個(gè)最基本的 J2ME開(kāi)發(fā)環(huán)境就配制完成了。 濰 坊 學(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)訪問(wèn)和改變類(lèi)里的私有 數(shù)據(jù)。 這一點(diǎn)完全體現(xiàn)了面向?qū)ο笏枷肜锏臄?shù)據(jù)封裝這一特性,但是這種方式需要不斷的調(diào)用方法,勢(shì)必對(duì)性能造成一 定的損失 (關(guān)于手機(jī)游戲的優(yōu)化的其中一項(xiàng)就是減少方法的調(diào)用 )。因?yàn)槊看握{(diào)用方法都會(huì)消耗部分 CPU時(shí)間,所以如果是經(jīng)常被修改或訪問(wèn)的數(shù)據(jù)我們需要將其訪問(wèn)權(quán)限設(shè)置為 public,通過(guò)“對(duì)象 .數(shù)據(jù)”的方式訪問(wèn)以節(jié)約 CPU時(shí)間。 初步構(gòu)思 根據(jù)面向?qū)ο蟮某绦蛟O(shè)計(jì)思想 (OOP),此程序 劃分了 6個(gè)類(lèi)。 類(lèi)的劃分 對(duì)象 (Object):思維、感受和 動(dòng)作所作用的物件 或精神體玩家為一種對(duì)象。 玩家是一種物件;敵機(jī)是一種對(duì)象,不過(guò)這種物件有多中形態(tài); BOSS和地圖也是一種物件。 撇開(kāi) MIDlet和 Canvas類(lèi),其它由 自己創(chuàng)建的類(lèi)有 4個(gè), Map地圖類(lèi)、 Plane敵機(jī)類(lèi)、BOSS關(guān)底 BOSS類(lèi)(繼承自 Plane)、 PlayerPlane玩家飛機(jī)類(lèi)。 各個(gè)類(lèi)之間的關(guān)系 KJAVA程序的入口都是 MIDlet類(lèi)的 startApp()方法,所以在 MIDlet類(lèi)中實(shí)例化 Canvas類(lèi)。 由于 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)和控制。 游戲基本框架 1. Map地 圖 類(lèi): 地圖類(lèi)是一個(gè)比較簡(jiǎn)單的類(lèi),使用一張背景圖片循環(huán)滾動(dòng)就完成了。所以最主要的濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 14 兩個(gè)方法就是 moveMap()和 drawMap(),另外為了切換關(guān)卡的時(shí)候換地圖還需要個(gè)更換地圖的方法 changeMap()。 public class Map{ public Map(int gate) { //根據(jù)關(guān)卡來(lái)構(gòu)建地圖 } public void drawMap(Graphics g) { //繪制地圖 } public void moveMap(){ //計(jì)算繪制地圖需要的數(shù)據(jù) } public void changeMap(int gate){ //根據(jù)關(guān)卡更換地圖 }} 2. Plane敵機(jī)類(lèi): 由于 Plane敵機(jī)類(lèi)需要派生出 BOSS類(lèi),所以先要找出 BOSS和普通敵機(jī)之間的共同之處。 由于 BOSS和普通敵機(jī)有很多共同屬性例如:生命值、幀尺寸、碰撞范圍等,還有一個(gè)比較重要的共同方法,就是發(fā)射子彈。所以敵機(jī)類(lèi)在計(jì)劃的時(shí)候需要考慮到子類(lèi)屬性和代碼的復(fù)用性。 敵機(jī)子彈使用具有 static屬性的子彈數(shù)組來(lái)做,這表示所有實(shí)例化的敵機(jī)對(duì)象和BOSS對(duì)象都使用的一個(gè)子彈數(shù)組(子彈池)。 由于敵機(jī)發(fā)射子彈 的方式和 BOSS不一樣,默認(rèn)發(fā)射子彈方法的訪問(wèn)權(quán)限為 private子類(lèi)無(wú)法訪問(wèn),所以重載了發(fā)射子彈方法供子類(lèi)使用,訪問(wèn)權(quán)限為 protected。 敵機(jī)將使用類(lèi)似子彈的方法來(lái)實(shí)現(xiàn),實(shí)例化五個(gè)敵機(jī)對(duì)象作為一個(gè)對(duì)象池,每次需要刷新敵機(jī)的時(shí)候就遍歷對(duì)象池中是否有空閑對(duì)象。普通敵機(jī)有很多種類(lèi)型,類(lèi)型不同的敵機(jī)生命值和飛行方式都不同,所以使用一個(gè)初始化方法 initPlane(),根據(jù)隨機(jī)數(shù)來(lái)隨機(jī)生成敵機(jī)。敵機(jī)被擊爆或者飛出邊界時(shí)需要重新放回對(duì)象池,需要一個(gè)消失敵機(jī)的方法 dispearEnemy()。 主要機(jī)構(gòu)還是和地圖 類(lèi)一樣,計(jì)算再繪制。需要計(jì)算敵機(jī)方法 pute()和計(jì)算子彈方法 putBullet(),然后繪制到屏幕 drawEnemy()和 drawBullet()。 public class Plane{ public Plane(){ //構(gòu)造 } public void drawEnemy(Graphics g){ //畫(huà)敵機(jī) 濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 15 } static void drawBullet(Graphics g){ //畫(huà)子彈 } public void dispearEnemy()( //消失敵機(jī) } public static void putBullet(){ //計(jì)算子彈坐標(biāo) } private void shoot(int player_X, int player_Y){ //敵機(jī)發(fā)射子彈 } protected void shoot(int player_X, int player_Y, int gate){ //重載發(fā)射子彈方法 } public void pute(int type, int player_X, int player_Y){ //計(jì)算敵機(jī)的數(shù)據(jù) } public void initPlane(int type, int num){ //初始化敵機(jī) } } 3. BOSS 類(lèi) : 繼承自 Plane 類(lèi),使用 Plane 類(lèi)的子彈池和子彈方法,還使用 Plane 類(lèi)的一些屬性。BOSS 還有一些特殊子彈,比如散彈和激光。繪制激光方法 Laser()和發(fā)射散彈方法shoot_Boss(),發(fā)射普通子彈的話直接調(diào)用父類(lèi)的 shoot()方法。 BOSS 生命值較大,所以需要畫(huà)一個(gè)血條 bossLife() BOSS 人工智能,需要判斷 BOSS 的移動(dòng)方向和什么時(shí)候發(fā)射什么樣式的子彈,bossAi()方法。 每一關(guān)都會(huì)初始化一個(gè)新的 BOSS 出來(lái)需要初始化方法 initBoss() 計(jì)算數(shù)據(jù)然后繪制, pute()和 drawBoss() 。 public class Boss extends Plane{ public Boss(){ //構(gòu)造 } private void bossLife(Graphics g) { //畫(huà) BOSS 血條 } public void drawBoss(Graphics g, int gate) { //畫(huà) BOSS } public void initBoss(int newGate) { //初始化 BOSS 濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 16 } private void Laser(Graphics g, boolean turn) { //繪制激光 } private void shoot_Boss(int playerX, int playerY){ //不同類(lèi)型子彈射擊 } private void pute(){ //計(jì)算數(shù)據(jù) } public void bossAi(int playerX, int playerY){ //BOSS 人工智能 } } 4. PlayerPlane玩家飛機(jī)類(lèi): 此類(lèi)實(shí)現(xiàn)了玩家對(duì)飛機(jī)的控制和飛機(jī)移動(dòng)過(guò)程中的動(dòng)畫(huà)??刂瓢ㄒ苿?dòng)和射擊,動(dòng)畫(huà)包括飛機(jī)左翻滾和飛機(jī)右翻滾動(dòng)畫(huà)。玩家飛機(jī)有自己的子彈池,通過(guò)射擊敵機(jī)和子彈出屏幕來(lái)回收發(fā)射的子彈。通過(guò) addBullet()遍歷子彈池找到空閑子彈,將子彈添加到屏幕上去。 action()方法實(shí)現(xiàn)了對(duì)飛機(jī)的控制,調(diào)用 planeFram()方法實(shí)現(xiàn)游戲幀動(dòng)畫(huà)的播放。puteBullet()計(jì)算每顆 子彈的當(dāng)前數(shù)據(jù)。 根據(jù)上邊幾個(gè)方法計(jì)算出的 數(shù)據(jù) 在 Canvas里調(diào)用 drawPlane(),在 drawPlane()里調(diào)用drawBullet()繪制飛機(jī)和子彈。 關(guān)卡開(kāi)始對(duì)玩家飛機(jī)進(jìn)行初始化 init()。包括飛機(jī)的初識(shí)坐標(biāo)、當(dāng)前生命值、等級(jí)和屏幕上子彈的回收。 public class PlayerPlane { public PlayerPlane(){ //構(gòu)造 } public void action(boolean mode) { //飛機(jī)控制和動(dòng)作 } public void drawPlane(Graphics g) { //畫(huà)飛機(jī) } private void planeFram(){ //實(shí)現(xiàn)飛機(jī)幀動(dòng)畫(huà) } private void addBullet(){ //為子彈序列上添加子彈 } 濰 坊 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì) 17 private void drawBullet(Graphics g) { //畫(huà)子彈 } public void init(int gate){ //初始化游戲 } private void puteBullet(){ //計(jì)算子彈 } } 5. Canvas類(lèi): Canvas類(lèi)在整個(gè)游戲中十分重要,它不僅實(shí)現(xiàn)了整個(gè)游戲需要的線程,還需要對(duì)整個(gè)游戲進(jìn)行協(xié)調(diào),在相應(yīng)的時(shí)刻正確的調(diào)用其它類(lèi)相應(yīng)的方法,最后把圖片正確的化到屏幕上。 在這個(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è)單線程進(jìn)行控制。這樣做的好處是每一次通過(guò)循環(huán)體, repaint()方法被用來(lái)刷新屏幕。系統(tǒng)把按鍵事件傳送給 KeyPressed(),它能適當(dāng)?shù)厮⑿掠螒驙顟B(tài)。 Canvas類(lèi)實(shí)現(xiàn)游戲主要狀態(tài)的控制,例如游戲開(kāi)始、暫停。在不 同的狀態(tài)繪制不同的
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1