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

正文內(nèi)容

基于j2me的益智游戲設(shè)計(jì)畢業(yè)論文設(shè)計(jì)-在線瀏覽

2025-08-09 01:06本頁面
  

【正文】 效果,積累開發(fā)經(jīng)驗(yàn),為以后的學(xué)習(xí)和工作打下堅(jiān)實(shí)的基礎(chǔ)。如果沒有物理引擎,游戲中的一些物理效果就只能通過硬編碼的方式寫入到程序中、增加了模塊之間的耦合性,降低了軟件的可擴(kuò)展性,為以后軟件的擴(kuò)展和維護(hù)增加了難度。 論文的組織安排緒論主要介紹了手機(jī)益智類游戲開發(fā)背景、應(yīng)用現(xiàn)狀以及開發(fā)意義,論文的組織安排。需求分析主要是根據(jù)游戲的策略和游戲規(guī)則得出系統(tǒng)的功能需求。系統(tǒng)的詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)主要從功能模塊的詳細(xì)設(shè)計(jì)和系統(tǒng)架構(gòu)層次的實(shí)現(xiàn)做了詳細(xì)說明。最后對(duì)本游戲的應(yīng)用展望未來。進(jìn)而發(fā)現(xiàn)了當(dāng)前一些游戲的弊端,因此提出了綠色健康的益智游戲這個(gè)論題。72 相關(guān)技術(shù)與工具介紹 J2ME簡介 J2ME在Java體系中的地位JAVA是一門優(yōu)秀的編程語言,具有面向?qū)ο?、與平臺(tái)無關(guān)、安全、穩(wěn)定、和多線程等特點(diǎn),是目前軟件設(shè)計(jì)中最為流行的編程語言之一。Java SE的目標(biāo)是個(gè)人計(jì)算機(jī)和服務(wù)器的應(yīng)用;Java EE的目標(biāo)是企業(yè)計(jì)算機(jī)和服務(wù)器的應(yīng)用;Java ME的目標(biāo)是便攜式計(jì)算機(jī)和嵌入式設(shè)備的應(yīng)用[4][5] 。 J2ME技術(shù)框架由于移動(dòng)設(shè)備這個(gè)概念涵蓋了廣泛的領(lǐng)域,包括智能手機(jī)、普通手機(jī)、掌上電腦、傳呼機(jī)等,他們都具有各個(gè)不同的硬件配置,而這些硬件特性如內(nèi)存大小、浮點(diǎn)運(yùn)算能力等都嚴(yán)重限制了手機(jī)應(yīng)用程序的可移植性。但是,這個(gè)規(guī)范同樣需要靈活性和較高的適應(yīng)性,這樣才能使規(guī)范更有意義。J2ME定義的移動(dòng)平臺(tái)分為四層:主機(jī)操作系統(tǒng)、配置、簡表和廠商可選包,如圖22所示。廠商可選包簡表配置JVM主機(jī)操作系統(tǒng)圖22 Java 應(yīng)用運(yùn)行環(huán)境配置是針對(duì)某一類設(shè)備的最小Java平臺(tái),它包括滿足該類設(shè)備的虛擬機(jī),運(yùn)行的最小子集和針對(duì)該類設(shè)備的核心庫的最小子集。從庫文件的角度來分析CDC和CLDC可知,CLDC是CDC的子集。簡表是架構(gòu)在配置之上的規(guī)范,因此每種簡表都會(huì)聲明它是基于哪種配置。SUN公司定義了兩種可用的參考J2ME簡表:基礎(chǔ)簡表和MIDP。MIDP和性能較低的CLDC配置一起為開發(fā)移動(dòng)設(shè)備應(yīng)用程序提供了完整的Java平臺(tái)。廠商可選包是由廠商提供給程序開發(fā)人員一組與其它規(guī)范(或API)沒有任何依存性的類庫,開發(fā)人員可以利用這一類庫可以開發(fā)出具有特定的功能應(yīng)用程序。綜上,J2ME的體系結(jié)構(gòu)如圖23所示:CLDCMIDPKVMHost Operation SystemsPersonal ProfileFoundation ProfileCDCCVMCard VMJava Card API圖23 J2ME體系結(jié)構(gòu) MIDLET 應(yīng)用程序簡介MIDlet是在支持MIDP規(guī)范的移動(dòng)信息設(shè)備上運(yùn)行的應(yīng)用程序。這三種狀態(tài)間的轉(zhuǎn)換是應(yīng)用程序管理器通過調(diào)用MIDlet的三個(gè)回調(diào)方法startApp()、pauseApp()和destroyApp()來實(shí)現(xiàn)的。然后應(yīng)用程序管理器將它轉(zhuǎn)換到激活狀態(tài)并調(diào)用startApp()方法。MIDlet的生命周期完全由應(yīng)用程序管理器調(diào)用對(duì)應(yīng)的回調(diào)函數(shù)(即MIDlet 類定義的三個(gè)抽象方法)實(shí)現(xiàn)。這三個(gè)方法分別通知應(yīng)用程序管理器轉(zhuǎn)換到暫停狀態(tài)、銷毀狀態(tài)或者激活狀態(tài)。 Emini Physics Engine 簡介 Emini Physics Engine的基本概念物理引擎通過為剛性物體賦予真實(shí)的物理屬性的方式來實(shí)現(xiàn)運(yùn)動(dòng)、旋轉(zhuǎn)和碰撞反應(yīng)的模擬。比如:重力下降、摩擦力、彈性碰撞、非彈性碰撞、快速物體的碰撞等物理現(xiàn)象的模擬。Emini Physics Engine是一個(gè)二維物理引擎庫,使用這個(gè)引擎可以創(chuàng)建逼真的物理模擬。Emini物理引擎的常見概念如下:(1) Body: 剛體,物理模擬中的基本元素,物理模擬中的所有相互作用的對(duì)象都是以Body的形式存在。(2) Shape: 形狀,每一個(gè)剛體都有一個(gè)形狀。(3) World:世界,包括物理系統(tǒng)中所有的剛體、形狀、外力和模擬物理系統(tǒng)的參數(shù)。所有不是來自物理模擬系統(tǒng)的且作用于系統(tǒng)內(nèi)部剛體的力都屬于外力??梢酝ㄟ^實(shí)現(xiàn)External Forces接口,方便的加入外力。剛體和剛體之間真實(shí)的接觸被抽象為兩種情況,第一種是一個(gè)剛體的一角和另一個(gè)剛體相交,抽象為點(diǎn)在平面上;第二種情況是兩個(gè)剛體的平面重合,抽象為兩個(gè)點(diǎn)在重合的平面上。物理引擎首先檢測(cè)所有剛體的碰撞。(7) ShapeSet: 形狀集合。 Emini Physics Engine所有包的層次結(jié)構(gòu)簡介Emini物理引擎的大部分實(shí)現(xiàn)類都是Object類的子類,這種實(shí)現(xiàn)方式提高了程序的運(yùn)行效率,簡化了類層次且易于理解。在使用FixPoint類型時(shí),單精度數(shù)可表示的最小的數(shù)為。FixPoint數(shù)據(jù)類型的數(shù)據(jù)在內(nèi)存中仍然是以整型數(shù)據(jù)或者長整型數(shù)據(jù)存儲(chǔ),只是在使用的時(shí)候?qū)?shù)據(jù)乘以對(duì)應(yīng)位所表示的權(quán)重,就是所用的數(shù)據(jù)。例如,一個(gè)FixPoint類型的數(shù)據(jù)如4096表示的是十進(jìn)數(shù)據(jù)1。那么內(nèi)存中存儲(chǔ)的就是2048。表21 FixPoint 代表的數(shù)0110表示的數(shù)210110= 2*0+1*1+*1+*0 = 開發(fā)平臺(tái)與運(yùn)行環(huán)境簡介(1) JDKJDK是Java開發(fā)工具包(Java Development Kit),Java應(yīng)用程序的基礎(chǔ)。(2) Eclipse開發(fā)平臺(tái)Eclipse是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。在Eclipse中幾乎每樣?xùn)|西都是插件,實(shí)際上正是運(yùn)行在Eclipse平臺(tái)上的種種插件提供我們開發(fā)程序的各種功能。WTJ是一個(gè)用于J2ME開發(fā)的Eclipse插件。本系統(tǒng)的開發(fā)工具首選開源工具Eclipse Helios 。運(yùn)行環(huán)境:J2ME SDK 。,應(yīng)用程序限制大小大于800K、屏幕分辨率為240*3支持混音的Nokia真機(jī)上運(yùn)行。最后介紹了開發(fā)工具、開發(fā)平臺(tái)和運(yùn)行環(huán)境。需求分析就是基于用戶的需求并且結(jié)合現(xiàn)有技術(shù)能力通過分析游戲策略和規(guī)則進(jìn)而得出系統(tǒng)的擬實(shí)現(xiàn)的功能需求。 游戲規(guī)則簡介鵝城之戰(zhàn)以后,鵝城人民過了一段沒有馬匪的好日子。鵝城人民生活在水深火熱之中。玩家開始游戲以后,可以控制游戲中的主角張牧之,通過點(diǎn)擊觸摸屏發(fā)射子彈,子彈會(huì)在空中飛行,飛行的過程中會(huì)擊中在飛行路線上的馬匪。玩家經(jīng)過不斷挑戰(zhàn)各種關(guān)卡,最終奪回鎮(zhèn)長之位。如果被砸中就會(huì)導(dǎo)致主角死亡,玩家闖關(guān)失敗。系統(tǒng)在玩家游戲過程中還會(huì)適當(dāng)?shù)慕o予玩家獎(jiǎng)勵(lì)如提供更多的子彈,以便平衡游戲的難度,鼓勵(lì)玩家繼續(xù)游戲。 游戲設(shè)計(jì)目標(biāo)本游戲的主要目的是讓玩家體會(huì)到益智游戲的樂趣,通過思考子彈的碰撞路徑進(jìn)而讓子彈消滅麻匪,消滅完所有馬匪后,玩家就可通過這一關(guān)。因此,本游戲要實(shí)現(xiàn)部分物理效果,慣性、重力下降、摩擦力、彈性碰撞等。玩家也可以刪除所通過關(guān)卡的信息。用例圖的主要作用是描述參與者和用例之間的關(guān)系,幫助開發(fā)人員可視化的了解系統(tǒng)的功能。玩家的操作有設(shè)置播放背景音樂、設(shè)置播放音效、關(guān)閉音效、關(guān)閉背景音樂、點(diǎn)擊觸摸屏、選擇菜單項(xiàng)?;臼录鳎翰榭磾?shù)據(jù):玩家在游戲主畫布上選擇開始游戲選項(xiàng)。刪除數(shù)據(jù):用戶選擇清除數(shù)據(jù)選項(xiàng)。用例終止其他事件流:當(dāng)用戶沒有通過任何一關(guān)時(shí),不顯示該內(nèi)容。下面開始介紹各個(gè)功能模塊的需求。子彈的速度大小不變。范圍私有參與者:子彈前置條件:玩家開始游戲后點(diǎn)擊觸摸屏并且玩家還有子彈后置條件:子彈數(shù)減少一個(gè),子彈開始運(yùn)動(dòng)。用戶還有子彈,繪制一枚子彈并且子彈開始運(yùn)動(dòng)。子彈發(fā)送碰撞。用例終止。異常事件流:無后置條件:無(2) 動(dòng)畫管理動(dòng)畫就是根據(jù)時(shí)間而發(fā)生連續(xù)變化的圖畫。動(dòng)畫管理模塊負(fù)責(zé)將游戲中的場(chǎng)景、精靈、道具繪制到畫布中。通過動(dòng)畫的繪制操作才能讓游戲更真實(shí)更具有吸引力。游戲開始后必須要有背景音樂,游戲開始頁面和游戲過程中玩家的操作要有提示音樂,英雄發(fā)射子彈后要播放發(fā)射子彈的聲音,英雄打光子彈以后要播放扣動(dòng)扳機(jī)而沒有子彈的聲音,子彈碰撞墻壁等要有音效并且玩家可以設(shè)置是否播放音樂或音效。例如:動(dòng)畫管理模塊需要圖片資源進(jìn)行繪制操作,資源管理模塊就會(huì)提供圖片。(5) 游戲狀態(tài)管理判斷游戲的狀態(tài)是繼續(xù)游戲、玩家勝利或是玩家失敗。(6) RMS管理。關(guān)卡信息里還要保存關(guān)卡ID、關(guān)卡獎(jiǎng)勵(lì)的子彈數(shù)。 小結(jié)本章針對(duì)讓子彈飛這款益智游戲擬實(shí)現(xiàn)的功能,分析得出本游戲的操作流程。414 系統(tǒng)總體設(shè)計(jì) 功能設(shè)計(jì)在需求分析階段獲取了系統(tǒng)擬實(shí)現(xiàn)的功能模塊后為了將所有的功能模塊組裝成一個(gè)系統(tǒng),就需要一個(gè)模型即框架來組織這些模塊。 游戲框架設(shè)計(jì)一般基于J2ME的手機(jī)應(yīng)用程序都必須是MIDlet的子類,并且子類必須重寫父類的startApp()、pauseApp()和destroyApp()。游戲類型的應(yīng)用程序還額外需要一個(gè)或者幾個(gè)畫布并重寫畫布類的paint()方法以便實(shí)現(xiàn)游戲的邏輯處理和繪制游戲中的場(chǎng)景、精靈、道具等游戲元素。根據(jù)交互的方式不同可以選擇要實(shí)現(xiàn)CommandListener接口或者實(shí)現(xiàn)觸摸屏事件的響應(yīng)。如果游戲還需要響應(yīng)玩家觸摸屏事件或者按鈕事件還必須根據(jù)系統(tǒng)和玩家的交互需求重寫畫布類keyPressed()、keyRepeated()、keyReleased()、pointerPressed()、pointerDragged()或pointerReleased()方法[8]。這就讓本游戲的框架與傳統(tǒng)的框架有些不同。傳統(tǒng)框架中游戲中出現(xiàn)的角色比如精靈、怪獸、建筑物等是直接繪制在畫布的。然后由這個(gè)GraphicWord類將所有元素繪制到畫布中。只需由所有元素的父類即Body類實(shí)現(xiàn)繪制方法。tick()方法的作用是在物理模擬的每一個(gè)周期內(nèi),處理游戲的物理方面的邏輯請(qǐng)求和物理模擬請(qǐng)求。第二種情況是馬匪被道具砸中,本游戲中就認(rèn)為馬匪被砸死,所以要設(shè)置馬匪的isAlive屬性為false。最后,本系統(tǒng)將游戲分為四個(gè)層次。數(shù)據(jù)訪問層有兩個(gè)模塊第一個(gè)是對(duì)使用RMS存儲(chǔ)的數(shù)據(jù)和對(duì)以文件形式存儲(chǔ)的游戲資源地管理??刂茖又饕怯捎螒驙顟B(tài)模塊組成,同時(shí)還要接受視圖層傳送的用戶輸入處理后返回處理結(jié)果。 功能模塊設(shè)計(jì)根據(jù)需求分析得出的系統(tǒng)擬實(shí)現(xiàn)的功能,可以進(jìn)而設(shè)計(jì)各個(gè)模塊中所包含的類。根據(jù)面向?qū)ο蟮乃枷耄梢猿橄蟪鲆陨纤袑?duì)象的共性符合Body類的屬性。又因?yàn)橹鹘?、馬匪和子彈的特殊性,所以定義MySprite類和Bullet類為Body類的子類。GraphicWord是Word類的子類,該類作為所有Body類的容器。(2) 動(dòng)畫管理模塊主要涉及到如何向用戶呈現(xiàn)出精彩的游戲畫面。(3) 聲音管理模塊主要是管理背景音樂、前景音效的。由于音樂播放服務(wù)具有同步性所以BackMusic和ForeMusic是Thread類的子類。所以,涉及到文件的加載類LoadResource類。主要由Main類完成此功能。為了完成對(duì)關(guān)卡數(shù)據(jù)的管理和游戲的保存操作結(jié)合RMS存儲(chǔ)格式的特殊性,數(shù)據(jù)庫操作的基類為BaseDao,Guan和SaveGame是它的子類。玩家實(shí)體的屬性包括:最大子彈數(shù)、消耗的子彈數(shù)、關(guān)卡ID,主鍵是關(guān)卡ID。保存的游戲是指,玩家正在玩一個(gè)游戲,因?yàn)槟撤N原因(接電話、查看短信等)游戲中斷了,系統(tǒng)自動(dòng)保存玩家現(xiàn)在的游戲狀態(tài)。RMS本質(zhì)上就是一個(gè)小型數(shù)據(jù)庫管理系統(tǒng),它以一種簡單的、類似于普通數(shù)據(jù)的表格的形式組織信息,并將信息持久化存儲(chǔ),以供應(yīng)用程序在重新啟動(dòng)以后繼續(xù)使用。一個(gè)Records Stores存儲(chǔ)的數(shù)據(jù),如表41所示:表41 Records Store 存儲(chǔ)數(shù)據(jù)Record ID數(shù) 據(jù)1字節(jié)數(shù)組2字節(jié)數(shù)組3字節(jié)數(shù)組(2) 數(shù)據(jù)存儲(chǔ)格式玩家通過某一關(guān)卡,需要保存通過此關(guān)卡的信息到RMS中。例如:“040810”表示第四關(guān)用了8發(fā)子彈,系統(tǒng)給玩家10發(fā)子彈。關(guān)卡的數(shù)據(jù)格式為關(guān)卡ID獎(jiǎng)勵(lì)子彈數(shù),如“0101”,第一關(guān)獎(jiǎng)勵(lì)一發(fā)子彈。說明:游戲的基本單位是Body(剛體),而剛體的創(chuàng)建必須基于Shape(形狀)對(duì)象。然后存儲(chǔ)Body對(duì)象。 接口設(shè)計(jì)根據(jù)以上分析,新的游戲框架整合了Emini物理引擎并且將游戲的各個(gè)模塊組裝成了一個(gè)完整的游戲。Bullet是子彈類,該類在主角發(fā)射子彈以后出現(xiàn)在畫布上。當(dāng)子彈發(fā)生碰撞以后,子彈的飛行方向發(fā)生適當(dāng)?shù)淖兓=?jīng)過以上描述,可以得出Bullet類是Body類的子類、具有Body類的所有屬性和方法,同時(shí)具有自身的特殊性例如:速度大小、速度方向、生命值屬性、是否顯示、位置屬性等屬性和改變速度方向、獲取子彈出現(xiàn)位置、改變速度大小、獲取子彈生命值等方法。本章還根據(jù)游戲的實(shí)際需要設(shè)計(jì)了系統(tǒng)數(shù)據(jù)庫的概念模型和邏輯模型。5 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 功能模塊詳細(xì)設(shè)計(jì) 物理模擬模塊物理模擬模塊的實(shí)現(xiàn)主要是基于Emini物理引擎,通過調(diào)用、重寫或?qū)崿F(xiàn)新的方法完成碰撞檢測(cè)和處理、滿足動(dòng)量定理的碰撞后的反應(yīng)、物體運(yùn)動(dòng)過程中在摩擦力的作用下物體能靜止;物體在空中時(shí)能夠在重力作用下自由下落。上述需求都可以通過實(shí)現(xiàn)Emini物理引擎所提供的接口來實(shí)現(xiàn)。首先介紹子彈飛行之前的初始化工作即確定子彈的出現(xiàn)位置和子彈的速度大小。 表示子彈出現(xiàn)的位置和水平方向(逆時(shí)針)的角度。(1) 求直線 的斜率??汕蠼獬鯟和的坐標(biāo)。子彈的出現(xiàn)位置確定以后,下一步要確定子彈的初始速度,根據(jù)上一步求出的斜率k利用反正切方法可求解出的大小。在介紹子彈碰撞處理算法之前,首先定義方向向量:我們約定1表示X軸、Y軸正方向,1表示負(fù)方向。其次介紹子彈飛行過程中碰撞的處理算法。通過設(shè)置子彈的彈性系數(shù)可使子彈進(jìn)行不改變運(yùn)動(dòng)方向的(子彈穿過馬匪)碰撞,算法結(jié)束。(2) 第二種情況是子彈和建筑層發(fā)生了碰撞,它要改變速度方向。若子彈發(fā)生碰撞的情況如圖52或者圖53所示,則執(zhí)行第3步。(3) 判斷子彈和物體的相對(duì)位置如圖:Q(x5,y5)圖55 子彈和碰撞物體的相對(duì)位置示意圖E點(diǎn)表示子彈的位置,A、B、C、D四個(gè)點(diǎn)表示剛體的四個(gè)頂點(diǎn)。若,根據(jù)平面
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1