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

正文內(nèi)容

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

2025-01-12 11:56本頁面
  

【正文】 數(shù)量減一 。 ( 4)累加當(dāng)前幀中所有敵機(jī)相應(yīng)的分?jǐn)?shù),當(dāng)前幀中所有的戰(zhàn)機(jī)執(zhí)行爆炸效果,敵機(jī)數(shù)組中移除畫面中所有的敵機(jī),最后更新積分。 游戲類型模塊的設(shè)計(jì) 游戲分為無盡模式和闖關(guān)模式,闖關(guān)模式相對(duì)于無盡模式,不同之處在于闖關(guān)模式會(huì)有三個(gè)關(guān)卡。闖過第一關(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è)能容納下該紋理的最小矩形包圍起來,所以碰撞檢測(cè)的實(shí)質(zhì)就是檢測(cè)兩個(gè)矩形是否有交集。如果兩個(gè)矩形有交集 , 則判斷兩物體發(fā)生了碰撞,并執(zhí)行相應(yīng)的碰撞事件。 圖 碰撞檢測(cè)原理圖 音樂播放模塊的設(shè)計(jì) 若玩家選擇了打開背景音樂和游戲音效,當(dāng)游戲開始時(shí),音樂模塊需要把音樂資源載入程序并且播放。 游戲簡(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é) 2022 屆本科生畢業(yè)設(shè)計(jì)(論文) 第 17 頁 紋理的優(yōu)化 由于 Cocos2dx 使用 OpenGL ES 進(jìn)行繪圖, OpenGL ES 對(duì)紋理的渲染有特殊規(guī)則,即 每張紋理的 長(zhǎng)和寬 的像素個(gè)數(shù)必須 為 二次冪數(shù)。比如 本身是 400*300,載入內(nèi)存后它就會(huì)變成 512*512 的紋理。如果用 RGBA8888 格式來表示一個(gè)像素點(diǎn),既 4byte來表示一個(gè)像素點(diǎn)。 經(jīng)過加載后需要 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)過打包的紋理圖,可以大大減少紋理所占內(nèi)存以及紋理切換所帶來的開銷。 經(jīng)過分析,決定使用 TexturePacker 紋理打包軟件對(duì)紋理進(jìn)行打包來提高效率。 分?jǐn)?shù)存儲(chǔ)的優(yōu)化 由于游戲所需存儲(chǔ)的數(shù)據(jù)并不多,所以我們不用諸如 sql server、 MySQL 之類的數(shù)據(jù)庫(kù),因?yàn)樗鼈儠?huì)為我們游戲的開 發(fā)帶來不必要的消耗。在這里,我們使用 Cocos2dx 提供的 CCUserDefault 類, CCUserDefault 采用 XML 存儲(chǔ)技術(shù),通過 shareUserDefault()函數(shù)來獲取實(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é) 2022 屆本科生畢業(yè)設(shè)計(jì)(論文) 第 18 頁 由于有些類是使用游戲引擎所必須定義的,所以本游戲的 類 會(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é)加載無盡模式中的背景、音樂、飛機(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 類,玩家選擇無盡模式或闖關(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ī)沒有獲得道具對(duì)道具進(jìn)行回收。 歡迎層類:繼承 CCLayer 類,主要負(fù)責(zé)在玩家選擇無盡模式或闖關(guān)模式后進(jìn)入游戲時(shí),加載換場(chǎng)動(dòng)畫、判斷積分存檔是否存在、獲取積分存檔。 歡迎場(chǎng)景類:繼承 CCScene 類,游戲引擎思想中的必備部分,主要用于加載歡迎層類。 設(shè)置類:繼承 CCLayer 類,主要負(fù)責(zé)對(duì)游戲背景音樂、音效的設(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é)無盡模式游戲結(jié)束時(shí),對(duì)積分的統(tǒng)計(jì)、判斷是否加入歷史最高分。 闖關(guān)游戲結(jié)束場(chǎng)景類 :繼承 CCScene 類,主要負(fù)責(zé)容納闖關(guān)游戲結(jié)束層。 中國(guó)礦業(yè)大學(xué) 2022 屆本科生畢業(yè)設(shè)計(jì)(論文) 第 19 頁 闖關(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ù)加載音樂及音效。 圖 飛機(jī)大戰(zhàn)類圖 如圖 所示,由于類比較多空間有限 , 所以就不一一列舉類中的參數(shù)及函數(shù)。下面對(duì)游戲中重 要 的主要類的屬性和方法加以說明。 ( 1) 游戲?qū)宇?GameLayer,如表 、表 所示。 表 GameLayer 類屬性 屬性 類型 說明 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é) 2022 屆本科生畢業(yè)設(shè)計(jì)(論文) 第 20 頁 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 類的方法 方法 返回類型 說明 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) bool 判斷手指是否觸摸到手機(jī)屏幕 ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent) void 若手指觸摸到手機(jī)屏幕且在飛機(jī)有效范圍移動(dòng)飛機(jī) ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) void 手指拿開屏幕 registerWithTouchDispatcher() void 設(shè)置觸摸屏可用 update(float dt) void 每一幀所要完成的操作 menuBigBoomCallback(CCObject* pSender) void 全屏炸彈的操作 updateBigBoomItem(int bigBoomCount) void 更新全屏炸彈的數(shù)量 keyBackClicked() void 當(dāng)玩家點(diǎn)擊返回鍵時(shí)結(jié)束游戲 getCurLevel() Level 獲取游戲難度 中國(guó)礦業(yè)大學(xué) 2022 屆本科生畢業(yè)設(shè)計(jì)(論文) 第 21 頁 ( 2)敵機(jī)層類 EnemyLayer。如表 、表 所示。 表 EnemyLayer 類的屬性 屬性 類型 說明 ENEMY1_SCORE int 敵機(jī)一生命值 ENEMY2_SCORE int 敵機(jī)二生命值 ENEMY3_SCORE int 敵機(jī)三生命值 AIRBOSS1 int 闖關(guān)模式中 BOSS1 標(biāo)記 AIRBOSS2 int 闖關(guān)模式中 BOSS2 標(biāo)記 m_pAllEnemy1 CCArray* 管理敵機(jī)一的數(shù)組 m_pAllEnemy2 CCArray* 管理敵機(jī)二的數(shù)組 m_pAllEnemy3 CCArray* 管理敵機(jī)三的數(shù)組 m_pAllBoss1 CCArray* 管理 BOSS1 的數(shù)組 m_pAllBoss2 CCArray* 管理 BOSS2 的數(shù)組 sharedBoss EnemyLayer* 分配 BOSS enemy1SpriteFrame CCSpriteFrame* 存儲(chǔ)敵機(jī)一的紋理 enemy2SpriteFrame CCSpriteFrame* 存儲(chǔ)敵機(jī)二的紋理 enemy3SpriteFrame_1 CCSpriteFrame* 存儲(chǔ)敵機(jī)三的紋理一 enemy3SpriteFrame_2 CCSpriteF
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1