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

正文內(nèi)容

基于cocos2d-x的飛行射擊類游戲-畢業(yè)論文-資料下載頁(yè)

2024-12-01 22:20本頁(yè)面

【導(dǎo)讀】基于Cocos2d-x的飛行射擊類游戲——跨平臺(tái)手機(jī)游戲的設(shè)計(jì)與實(shí)現(xiàn)。此款軟件必須具有基本的飛行射擊類游戲的功能,如發(fā)射子彈功能、碰撞檢測(cè)功能等。在此基礎(chǔ)上還需加入自己創(chuàng)意,使游戲可玩性高。此外,游戲開發(fā)完成后需要移植到主流。的手機(jī)平臺(tái),所以還需熟練掌握Eclipse、Xcode等開發(fā)工具。決實(shí)際問(wèn)題的能力;③工作量的大??;④取得的主要成果及創(chuàng)新點(diǎn);⑤寫作的規(guī)范程度;目能夠在IOS、Android、WindowPhone等支持C++的平臺(tái)下創(chuàng)建和運(yùn)行。用C++進(jìn)行開發(fā),在Windows下調(diào)試成功后移植到主流的支持C++的智能手機(jī)平臺(tái)。系統(tǒng)需求分析、系統(tǒng)概要設(shè)計(jì)、系統(tǒng)詳細(xì)設(shè)計(jì)以及系統(tǒng)的編碼和測(cè)試等內(nèi)容。功能模塊;在測(cè)試中,對(duì)軟件成品進(jìn)行黑盒測(cè)試。

  

【正文】 家戰(zhàn)機(jī)子彈模塊與闖關(guān)模式中 BOSS 子彈模塊,下面以 玩家 戰(zhàn)機(jī) 子彈模塊為例。每一幀上子彈的數(shù)量很多,但每顆子彈的算法是一致的 ,分為以下幾步 : ( 1) 獲取戰(zhàn)機(jī)的世界坐標(biāo)位置 。 ( 2) 計(jì)算該坐標(biāo)距離手機(jī)屏幕的頂部的距離,再計(jì)算出子彈 運(yùn)行 的 時(shí)間 加入到子彈屬性 。 ( 3) 對(duì)存儲(chǔ)在緩存中的子彈圖片進(jìn)行渲染,并加到當(dāng)前場(chǎng)景中 。 ( 4) 子彈根據(jù)之前設(shè)置的屬性以一定的速度往屏幕頂部移動(dòng) 。 ( 5) 若子彈移動(dòng)的位置超出了屏幕并沒(méi)有擊中任何敵機(jī),則對(duì)其進(jìn)行回收。若子彈擊中敵機(jī)則執(zhí)行下一步 。 ( 6) 對(duì)擊中敵機(jī)的子彈進(jìn)行回收 。 敵機(jī)模塊設(shè)計(jì) 敵機(jī)一共有三種類型,它們的生命值如表 所示。 表 敵機(jī) 屬性 生命值 對(duì)應(yīng)分?jǐn)?shù) 敵機(jī)一 1 10 敵機(jī)二 5 50 敵機(jī)三 12 100 敵機(jī)每被一顆子彈擊中,生命值減一,當(dāng)生命值減到零時(shí)敵機(jī)滅亡。具體算法分為以下幾步 : ( 1) 對(duì)存儲(chǔ)在緩存中的敵機(jī)進(jìn)行渲染,添加到場(chǎng)景之中,并加入到敵機(jī)數(shù)組中。 ( 2) 敵機(jī)出現(xiàn)的位置在屏幕的頂部,具體的橫坐標(biāo)用隨機(jī)函數(shù)生成 。 ( 3) 敵機(jī)的飛行速度根據(jù)游戲難度的不同而不同 。 ( 4) 若敵機(jī)毀滅,執(zhí)行爆炸幀動(dòng)畫并在數(shù)組中刪除敵機(jī) 。 積分模塊的設(shè)計(jì) 積分模塊的算法主要分為以下幾步 : ( 1) 游戲開始時(shí)讀取 XML 文件中的歷史最高分,為游戲結(jié)束時(shí)比較當(dāng)前分?jǐn)?shù)做好準(zhǔn)備 。 ( 2) 在每輪游戲結(jié)束時(shí),比較當(dāng)前用 戶得分和歷史最高分。如果高于歷史最高分,就更新歷史最高分并存入到 XML 文件中,若果沒(méi)有超越歷史最高分,則不作任何處理 。 道具模塊的設(shè)計(jì) 道具分為兩種,分別為全屏炸彈和雙排子彈。道具會(huì)隨機(jī)的出現(xiàn)在屏幕的頂部,之后會(huì)往下掉,戰(zhàn)機(jī)需要接住道具才能使用相應(yīng)的特效。雙排子彈的算法與普通子彈類似,區(qū)別之處在于子彈發(fā)射的位置,普通子彈在戰(zhàn)機(jī)的中間,而雙排子彈的發(fā)射位置在飛機(jī)的兩個(gè)翅膀上。 全屏炸彈的算法主要分為以下幾步: ( 1) 判斷全屏炸彈的數(shù)量是否大于零 。 中國(guó)礦業(yè)大學(xué) 2020 屆本科生畢業(yè)設(shè)計(jì)(論文) 第 16 頁(yè) ( 2) 判斷玩家是否使用全屏炸彈,若使用全屏炸彈則執(zhí)行 3。 ( 3) 開啟全屏炸彈的音效,全屏炸彈的數(shù)量減一 。 ( 4) 累加當(dāng)前幀中所有敵機(jī)相應(yīng)的分?jǐn)?shù),當(dāng)前幀中所有的戰(zhàn)機(jī)執(zhí)行爆炸效果,敵機(jī)數(shù)組中移除畫面中所有的敵機(jī),最后更新積分。 游戲類型模塊的設(shè)計(jì) 游戲分為無(wú)盡模式和闖關(guān)模式,闖關(guān)模式相對(duì)于無(wú)盡模式,不同之處在于闖關(guān)模式會(huì)有三個(gè)關(guān)卡。闖過(guò)第一關(guān)后,每個(gè)關(guān)卡會(huì)有不同的 BOSS,它們會(huì)發(fā)射攻擊力不同的子彈,所以會(huì)增加一個(gè) BOSS 子彈層 ,在每一幀中會(huì)自動(dòng)檢測(cè)每顆子彈是否擊中玩家戰(zhàn)機(jī)。 碰撞檢測(cè)模塊的設(shè)計(jì) 碰撞檢測(cè)模塊會(huì)在每一幀中執(zhí)行,分別有玩家戰(zhàn)機(jī)子彈與敵機(jī)的碰撞檢測(cè)、 BOSS 子彈與玩家戰(zhàn)機(jī)的碰撞檢測(cè)、玩家戰(zhàn)機(jī)與敵機(jī)的碰撞檢測(cè)、玩家戰(zhàn)機(jī)與道具的碰撞檢測(cè)。由于渲染在屏幕上的每個(gè)紋理,系統(tǒng)都會(huì)將其用一個(gè)能容納下該紋理的最小矩形包圍起來(lái),所以碰撞檢測(cè)的實(shí)質(zhì)就是檢測(cè)兩個(gè)矩形是否有交集。如果兩個(gè)矩形有交集 , 則判斷兩物體發(fā)生了碰撞,并執(zhí)行相應(yīng)的碰撞事件。 圖 碰撞檢測(cè)原理圖 音樂(lè)播放模塊的設(shè)計(jì) 若玩家選擇了打開背景音樂(lè)和游戲音效,當(dāng)游戲開始時(shí),音樂(lè)模塊需要把音樂(lè)資源載入程序并且播放。 游戲簡(jiǎn)介模塊的設(shè)計(jì) 顯示相關(guān)的信息即可 。 子彈的優(yōu)化 在游戲每一幀中會(huì)出現(xiàn)上百顆子彈,若使用普通渲染機(jī)制,子彈的紋理將會(huì)被渲染上百次,大大影響了游戲的效果。比如正常情況下幀率為 60,使用普通渲染機(jī)制幀率可能在 30 以下。 Cocos2dx 游戲引擎中提供了批次渲染機(jī)制 CCSpriteBatchNode,這種機(jī)制能使出現(xiàn)在屏幕之上的眾多子彈只被渲染一次,大大提高了游戲的運(yùn)行效果 。 中國(guó)礦業(yè)大學(xué) 2020 屆本科生畢業(yè)設(shè)計(jì)(論文) 第 17 頁(yè) 紋理的優(yōu)化 由于 Cocos2dx 使用 OpenGL ES 進(jìn)行繪圖, OpenGL ES 對(duì)紋理的渲染有特殊規(guī)則,即 每張紋理的 長(zhǎng)和寬 的像素個(gè)數(shù)必須 為 二次冪數(shù)。比如 本身是 400*300,載入內(nèi)存后它就會(huì)變成 512*512 的紋理。如果用 RGBA8888 格式來(lái)表示一個(gè)像素點(diǎn),既 4byte來(lái)表示一個(gè)像素點(diǎn)。 經(jīng)過(guò)加載后需要 1MB( 512*512*4=1MB)的空間,遠(yuǎn)遠(yuǎn)大于原圖。另一方面, OpenGL ES 每切換 一個(gè)圖像會(huì) 調(diào)用一次 glDrawArray。對(duì)于我們這款飛 行射擊類游戲,需要使用到的紋理比較多,花費(fèi)在渲染上的時(shí)間將會(huì)比較多,所以會(huì)拖慢游戲整體的速度 從而 影響游戲的效果。 TexturePacker 是一款紋理打包軟件,它可以把所有的紋理以最小的存儲(chǔ)空間打包到一張圖里并生成一個(gè) plist 文件。此外 Cocos2dx 為開發(fā)者提供了使用 plist 文件的函數(shù),開發(fā)者使用經(jīng)過(guò)打包的紋理圖,可以大大減少紋理所占內(nèi)存以及紋理切換所帶來(lái)的開銷。 經(jīng)過(guò)分析,決定使用 TexturePacker 紋理打包軟件對(duì)紋理進(jìn)行打包來(lái)提高效率。 分?jǐn)?shù)存儲(chǔ)的優(yōu)化 由于游戲所需存儲(chǔ)的數(shù)據(jù)并不多,所以我們 不用諸如 sql server、 MySQL 之類的數(shù)據(jù)庫(kù),因?yàn)樗鼈儠?huì)為我們游戲的開發(fā)帶來(lái)不必要的 消耗 。在這里,我們使用 Cocos2dx 提供的 CCUserDefault 類, CCUserDefault 采用 XML 存儲(chǔ)技術(shù),通過(guò) shareUserDefault()函數(shù)來(lái)獲取實(shí)例。使用這個(gè)類會(huì)大大減少我們?cè)跀?shù)據(jù)存儲(chǔ)上所 花 費(fèi)的時(shí)間。 在這個(gè)游戲中使用的是 Cocos2dx 游戲引擎,所以設(shè)計(jì)思想需要與其保持一致。Cocos2dx 最主要有 4 個(gè)概念,分別是 Direct(導(dǎo)演)、 Scene(場(chǎng)景)、 Layer(層)、 Sprite(精靈)。其中一個(gè)游戲中只能有一個(gè)導(dǎo)演,導(dǎo)演用以場(chǎng)景調(diào)度。場(chǎng)景可以通俗的理 解為手機(jī)屏幕,它是有一個(gè)或多個(gè)層組成的。而游戲的主角或者地圖上 漂浮的云彩等都可以定義為精靈,精靈在定義完成后由開發(fā)者加到層上。具體調(diào)度如圖 所示 。 圖 Cocos2dx 設(shè)計(jì)思想 所以,在設(shè)計(jì)類時(shí)需要設(shè)計(jì)繼承場(chǎng)景的類,繼承圖層的類等等。 中國(guó)礦業(yè)大學(xué) 2020 屆本科生畢業(yè)設(shè)計(jì)(論文) 第 18 頁(yè) 由于有些類是使用游戲引擎所必須定義的,所以本游戲的 類 會(huì)比較多。在這里,我們只列舉飛機(jī)大戰(zhàn)最主要的幾個(gè)類,分別是:敵機(jī)類、敵機(jī)層類、游戲?qū)宇?、游戲?chǎng)景類、戰(zhàn)機(jī)層類、道具層類、歡迎層類、歡迎場(chǎng)景類、設(shè)置類、游戲簡(jiǎn)介類、開發(fā)者類、子彈層類、闖關(guān)歡迎場(chǎng)景類、闖關(guān)歡迎層類、游戲結(jié)束場(chǎng)景類、游戲結(jié)束層類、闖關(guān)游戲結(jié)束場(chǎng)景類、闖關(guān)游戲結(jié)束層類、控制層類、菜單層類。在這些類中最復(fù)雜最主要的是游戲?qū)宇?,因?yàn)樗?lián)系了戰(zhàn)機(jī)層、子彈層、雙排子彈層、控制層、道具層、敵機(jī)層等。 敵機(jī)類:繼承 CCNode 類,主要負(fù)責(zé)敵機(jī)創(chuàng)建的內(nèi)存管理、把相應(yīng)的生命值賦予給敵機(jī)精靈、返回精靈、敵機(jī)被子彈擊 中時(shí)生命值減一、獲取敵機(jī)紋理的矩形框。 敵機(jī)層類:繼承 CCLayer 類,主要負(fù)責(zé)三種敵機(jī)類型生命值的設(shè)定、闖關(guān)模式中 BOSS標(biāo)記符的設(shè)定、游戲難度的設(shè)定、加載三種敵機(jī)、移除三種敵機(jī)、三種敵機(jī)的爆炸效果、敵機(jī)數(shù)組的操作。 游戲?qū)宇?: 繼承 CCLayer 類,主要負(fù)責(zé)加載無(wú)盡模式中的背景、音樂(lè)、飛機(jī)層類、子彈層類、雙排子彈層類、敵機(jī)層類、控制層類、鍵盤監(jiān)聽。此外,游戲?qū)宇愂钦麄€(gè)游戲的核心。在此類中對(duì) CCLayer 中 update 函數(shù)進(jìn)行重寫,系統(tǒng)會(huì)在游戲執(zhí)行的每一幀 中 執(zhí)行這個(gè)函數(shù)。它主要負(fù)責(zé)戰(zhàn)機(jī)普通子彈與三種敵機(jī)的 碰撞檢測(cè)、戰(zhàn)機(jī)在獲得雙排子彈道具后雙排子彈與三種敵機(jī)的碰撞檢測(cè)、戰(zhàn)機(jī)與三種敵機(jī)的碰撞檢測(cè)、全屏炸彈使用后毀滅當(dāng)前幀中所有敵機(jī)、更新全屏炸彈的數(shù)量、內(nèi)存的管理、更新積分等等。 游戲場(chǎng)景類:繼承 CCScene 類,游戲引擎思想中的必備部分,主要用于游戲場(chǎng)景的初始化,容納游戲?qū)印? 戰(zhàn)機(jī)層類:繼承 CCLayer 類,玩家選擇無(wú)盡模式或闖關(guān)模式 后加入 到 游戲場(chǎng)景中。主要負(fù)責(zé)玩家戰(zhàn)機(jī)的創(chuàng)建、玩家對(duì)飛機(jī)位置的控制、判斷戰(zhàn)機(jī)是否生存、飛機(jī)的爆炸幀動(dòng)畫、移除飛機(jī)。 道具層類:繼承 CCLayer 類,主要負(fù)責(zé)雙排道具和全屏炸彈道具的初 始化、定義道具出現(xiàn)的概率及位置、雙排子彈的移除、道具使用后的效果、戰(zhàn)機(jī)沒(méi)有獲得道具對(duì)道具進(jìn)行回收。 歡迎層類:繼承 CCLayer 類,主要負(fù)責(zé)在玩家選擇無(wú)盡模式或闖關(guān)模式后進(jìn)入游戲時(shí),加載換場(chǎng)動(dòng)畫、判斷積分存檔是否存在、獲取積分存檔。 歡迎場(chǎng)景類:繼承 CCScene 類,游戲引擎思想中的必備部分,主要用于加載歡迎層類。 設(shè)置類:繼承 CCLayer 類,主要負(fù)責(zé)對(duì)游戲背景音樂(lè)、音效的設(shè)置。 游戲簡(jiǎn)介類:繼承 CCLayer 類,主要負(fù)責(zé)顯示游戲幫助及游戲背景。 開發(fā)者類:繼承 CCLayer 類,主要負(fù)責(zé)顯示開發(fā)者開發(fā)游戲 時(shí)的相關(guān)信息。 子彈層類:繼承 CCLayer 類,主要負(fù)責(zé)加載戰(zhàn)機(jī)子彈紋理、啟動(dòng)戰(zhàn)機(jī)子彈的射擊、停止戰(zhàn)機(jī)子彈射擊、諸如速度和起始位置的戰(zhàn)機(jī)屬性的設(shè)置、子彈的移除操作。 闖關(guān)歡迎場(chǎng)景類:繼承 CCScene 類,主要負(fù)責(zé)容納闖關(guān)歡迎層。 闖關(guān)歡迎層類:繼承 CCLayer 類,主要負(fù)責(zé)闖關(guān)模式的換場(chǎng)動(dòng)畫。 游戲結(jié)束場(chǎng)景類:繼承 CCScene 類,主要負(fù)責(zé)容納游戲結(jié)束層。 游戲結(jié)束層類:繼承 CCLayer 類,主要負(fù)責(zé)無(wú)盡模式游戲結(jié)束時(shí),對(duì)積分的統(tǒng)計(jì)、判斷是否加入歷史最高分。 闖關(guān)游戲結(jié)束場(chǎng)景類:繼承 CCScene 類,主要負(fù) 責(zé)容納闖關(guān)游戲結(jié)束層。 中國(guó)礦業(yè)大學(xué) 2020 屆本科生畢業(yè)設(shè)計(jì)(論文) 第 19 頁(yè) 闖關(guān)游戲結(jié)束層類:繼承 CCLayer 類,主要負(fù)責(zé)闖關(guān)模式游戲結(jié)束時(shí)的換場(chǎng)動(dòng)畫。 控制層類 : 繼承 CCLayer 類,用于加載到游戲場(chǎng)景之中。 主要 負(fù)責(zé)游戲暫停、更新分?jǐn)?shù)的操作。 菜單層類:繼承 CCLayer 類,主要負(fù)責(zé)把 plist 文件加入精靈幀緩沖、菜單界面及版權(quán)、加載菜單項(xiàng)及對(duì)應(yīng)事件、預(yù)加載音樂(lè)及音效。 圖 飛機(jī)大戰(zhàn)類圖 如圖 所示,由于類比較多空間有限 , 所以就不一一列舉類中的參數(shù)及函數(shù)。下面對(duì)游戲中重 要 的主要類的屬性和方法加以說(shuō)明。 ( 1) 游戲?qū)宇?GameLayer,如表 、表 所示。 表 GameLayer 類屬性 屬性 類型 說(shuō)明 MAX_BIGBOOM_COUNT int 全屏炸彈的最大數(shù)量 background1 CCSprite* 背景圖片一 background2 CCSprite* 背景圖片二 planeLayer PlaneLayer* 飛機(jī)層 bulletLayer BulletLayer* 子彈層 A bo u tC o n t r o lL a y e rB u lle t L a y e rE n e m yE n e m y L a y e rG a m e O v e r L a y e rG a m e O v e r Sc e n eG a m e Sc e n eI n t r o d u c eM e n u L a y e rM u t iB u lle t s L a y e rP la n e L a y e rSe tU F O L a y e rW e lc o m e L a y e rW e lc o m e Sc e n eC G G a m e Sc e n eC G G a m e L a y e rG a m e L a y e rA p p D e le g a t eC G W e lc o m e Sc e n eC G W e lc o m e L a y e rC G B u lle t L a y e rC G G a m e O v e r Sc e n eC G G a m e O v e r L a y e r 中國(guó)礦業(yè)大學(xué) 2020 屆本科生畢業(yè)設(shè)計(jì)(論文) 第 20 頁(yè) mutiBulletsLayer MutiBulletsLayer* 雙排子彈層 controlLayer ControlLayer* 控制層 ufoLayer UFOLayer* 道具層 enemyLayer EnemyLayer* 敵機(jī)層 menuBigBoom CCMenu* 全屏炸彈菜單 bigBoomCountItem CCLabelBMFont* 全屏炸彈菜單項(xiàng) score int 分?jǐn)?shù) bigBoomCount int 全屏炸彈數(shù)量 level int 游戲難度 表 GameLayer 類的方法 方法 返回類型 說(shuō)明 GameLayer() 構(gòu)造函數(shù) ~ GameLayer() 析構(gòu)函數(shù) CREATE_FUNC(GameLayer) 調(diào)用宏創(chuàng)建游戲?qū)? init() bool 初始化 backgroundMove(float dt) void 背景移動(dòng) ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) boo
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1