版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄摘要1關(guān)鍵詞1abstract1key words11 引言21.2 發(fā)展趨勢(shì)21.3 研究意義22 cocos2d技術(shù)分析32.1 cocos2d-x平臺(tái)技術(shù)介紹32.2 cocos2d-x 主要功能32.3 cocos2d-x 特點(diǎn)32.4 cocos2d-x結(jié)構(gòu)33 游戲系統(tǒng)分析與設(shè)計(jì)43.1 游戲介紹43.2 系統(tǒng)需求分析43.2.1 可行性分析43.2.2 功能分析53.3 系統(tǒng)設(shè)計(jì)分析73.3.1 游戲功能模塊73.3.2 游戲目錄結(jié)構(gòu)例圖94 游戲系統(tǒng)實(shí)現(xiàn)94.1 實(shí)體邏輯模塊104.2 ui功能模塊的設(shè)計(jì)114.3 推圖模塊124.4 戰(zhàn)斗功能模塊145 結(jié)論16致謝16參
2、考文獻(xiàn)17基于cocos2dx的手機(jī)游戲設(shè)計(jì)摘要:cocos2dx是一個(gè)開(kāi)源的移動(dòng)2d游戲框架,在國(guó)內(nèi)手機(jī)游戲開(kāi)發(fā)使用的份額接近70%。隨著手機(jī)等智能移動(dòng)設(shè)備的高速發(fā)展,手機(jī)游戲在中國(guó)游戲市場(chǎng)也快速崛起。論文以軟件工程思想為指導(dǎo),分析了游戲策劃方案,以時(shí)下流行的三消玩法為游戲依托,采用觀察者模式和工廠模式等設(shè)計(jì)模式,設(shè)計(jì)并實(shí)現(xiàn)了一款基于cocos2dx引擎的休閑消除游戲。論文主要工作包括完成了游戲程序結(jié)構(gòu)設(shè)計(jì)和資源文件結(jié)構(gòu)設(shè)計(jì),以及功能模塊的開(kāi)發(fā)。游戲的界面制作美觀,運(yùn)行流暢,功能設(shè)計(jì)基本達(dá)到了預(yù)期目標(biāo)。關(guān)鍵詞:寶石精靈 消除 cocos2dx the design of mobile pho
3、ne game based on cocos2dxstudent majoring in software engineering dongqiangtutor yanchaoabstract:cocos2dx is an open source 2d game frameworks share of the domestic mobile phone game developed using close to 70%.with the rapid development of smart mobile devices such as cell phones, mobile gaming in
4、 chinas game market is also rising quickly.thesis under the guidance of software engineering, analyzes the game plan, with popular three elimination games as the game relies on using design patterns such as the observer pattern and factory patterns, designs and implements a cocos2dx engine and casua
5、l elimination game.paper work included the completion of a game program structure design and structural design of resource files and modules development.interface of the game making beautiful, run smoothly and function design can achieve the desired objectives.key words: jewels spirit;elimination;co
6、cos2dx;1 引言1.1 選題背景隨著社會(huì)的發(fā)展,手機(jī)已經(jīng)成為人們?nèi)粘I?,學(xué)習(xí)辦公中不可缺少的一部分,并在各個(gè)領(lǐng)域發(fā)揮著越來(lái)越重要的作用。手機(jī)游戲作為手機(jī)發(fā)展和普及過(guò)程中的一個(gè)產(chǎn)物,有著廣泛的發(fā)展前景,它的出現(xiàn)不僅可以豐富人們的業(yè)務(wù)生活,而且為國(guó)家信息產(chǎn)業(yè)的發(fā)展發(fā)揮了不可替代的作用。特別是當(dāng)中國(guó)加入世界貿(mào)易組織以后,國(guó)外大量的娛樂(lè)游戲、游戲迅速進(jìn)入中國(guó)市場(chǎng),并獲得巨大成功,給中國(guó)信息產(chǎn)業(yè)和國(guó)內(nèi)游戲企業(yè)帶來(lái)了前所未有的挑戰(zhàn)和機(jī)遇。國(guó)家為了適應(yīng)市場(chǎng)的需要,大力提倡和幫扶國(guó)內(nèi)游戲產(chǎn)業(yè),給游戲企業(yè)提供了大量的政策支持,大大提高了我國(guó)游戲策劃、游戲制作的實(shí)力。隨著我國(guó)經(jīng)濟(jì)實(shí)力和信息產(chǎn)業(yè)的不斷發(fā)展,
7、游戲必將為豐富人們娛樂(lè)生活、我國(guó)信息化建設(shè)發(fā)揮越來(lái)越重要的作用。1.2 發(fā)展趨勢(shì)近年來(lái),隨著智能機(jī)的普及以及3g、4g的覆蓋率增加,手機(jī)網(wǎng)游日益興起,現(xiàn)已經(jīng)有近兩千萬(wàn)的手機(jī)網(wǎng)游玩家了。2014年,國(guó)內(nèi)移動(dòng)互聯(lián)網(wǎng)競(jìng)爭(zhēng)格局未定,運(yùn)營(yíng)商拒絕管道化欲謀更多話(huà)語(yǔ)權(quán),轉(zhuǎn)型力度、資源投入日趨加大;在部分細(xì)分領(lǐng)域,圍繞運(yùn)營(yíng)商轉(zhuǎn)型的業(yè)務(wù)和渠道價(jià)值驟然放大,引發(fā)產(chǎn)業(yè)整合日趨頻繁。在此背景下,國(guó)內(nèi)移動(dòng)互聯(lián)龍頭拓維信息通過(guò)多年技術(shù)積累及運(yùn)營(yíng)商渠道優(yōu)勢(shì),確定以手機(jī)動(dòng)漫與游戲業(yè)務(wù)為兩大核心發(fā)展方向之一。1.3 研究意義全球在使用的移動(dòng)電話(huà)已經(jīng)超過(guò)10億部,而且這個(gè)數(shù)字每天都在不斷增加。在除美國(guó)外的各個(gè)發(fā)達(dá)國(guó)家,手機(jī)用戶(hù)都
8、比計(jì)算機(jī)用戶(hù)多。手機(jī)游戲潛在的市場(chǎng)比其他任何平臺(tái),比如playstation和gameboy都要大。在控制臺(tái)游戲時(shí)代,gameboy熱銷(xiāo)的一個(gè)原因就是便攜性人們可以隨時(shí)隨地沉浸在自己喜歡的游戲中,還可以隨時(shí)隨地?fù)屬?gòu)自己喜歡的裝備或?qū)櫸铩:陀螒蚩刂婆_(tái)或者pc相比,手機(jī)雖然可能不是一個(gè)理想的游戲設(shè)備,但畢竟人們總是隨時(shí)隨身攜帶,這樣手機(jī)游戲很可能成為人們消遣時(shí)間的首選。手機(jī)便攜性、移動(dòng)性的特征更能滿(mǎn)足用戶(hù)隨時(shí)隨地玩游戲的需求,用戶(hù)利用排隊(duì)、等車(chē)的時(shí)間進(jìn)行游戲,手機(jī)游戲碎片化的特性凸顯。調(diào)查顯示,29.8%的用戶(hù)在用手機(jī)玩游戲以后電腦端玩游戲的時(shí)間減少,手機(jī)游戲已經(jīng)開(kāi)始搶奪電腦游戲時(shí)間。22.4%的
9、 用戶(hù)手機(jī)游戲時(shí)間越來(lái)越長(zhǎng),僅有10%的用戶(hù)時(shí)間變短,手機(jī)游戲已逐漸成為一種普遍的娛樂(lè)方式。因?yàn)槭謾C(jī)是網(wǎng)絡(luò)設(shè)備,在一定限制因素下可以實(shí)現(xiàn)多人在線游戲。隨著移動(dòng)網(wǎng)絡(luò)的發(fā)展,移動(dòng)游戲也越來(lái)越多的被大家接受,對(duì)于之前長(zhǎng)期通知市場(chǎng)的掌機(jī)來(lái)說(shuō)造成了不少的沖擊。市場(chǎng)研究公司idc和app annie報(bào)告顯示2013年第一季度ios和android平臺(tái)游戲業(yè)務(wù)營(yíng)收是掌機(jī)的3倍。手機(jī)游戲市場(chǎng)潛力大,投入資金少,吸引了很多市場(chǎng)進(jìn)入者,但中小sp在激烈的競(jìng)爭(zhēng)中生存問(wèn)題是需要考慮的主要問(wèn)題。手機(jī)游戲開(kāi)發(fā)商、游戲應(yīng)及服務(wù)提供商不重視市場(chǎng)宣傳和推廣工作,忽視對(duì)于游戲產(chǎn)品,用戶(hù)的體驗(yàn)和習(xí)慣培養(yǎng)重要性。手機(jī)游戲市場(chǎng)競(jìng)爭(zhēng)激烈
10、,該競(jìng)爭(zhēng)涉及國(guó)內(nèi),也涉及國(guó)外游戲開(kāi)發(fā)商。追求低成本和短期利益,現(xiàn)游戲產(chǎn)品的質(zhì)量粗糙。手機(jī)游戲的同質(zhì)化也越來(lái)越嚴(yán)重,創(chuàng)新力不足。論文基于cocos2d技術(shù),以設(shè)計(jì)并實(shí)現(xiàn)了一款三消游戲?yàn)檠芯磕繕?biāo),首先學(xué)習(xí)研究cocos2d引擎的基本使用,然后設(shè)計(jì)游戲策劃方案和三消算法,最后實(shí)現(xiàn)游戲功能。2 cocos2d技術(shù)分析 cocos2d最初的版本是用python寫(xiě)的,之后被改成objectivec,應(yīng)用于iphone上,之后國(guó)內(nèi)某人又根據(jù)該設(shè)計(jì)理念,將其改為c+版本cocos2dx,該版本可以在iphone,widnows,andriod三個(gè)平臺(tái)上運(yùn)行.最新的版本是1.0.0,該引擎c+的版本還引入了lu
11、a腳本系統(tǒng).cocos2d是完全開(kāi)源的引擎,開(kāi)發(fā)者可以任意使用該代碼而不用公開(kāi)源代碼.cocos2d被廣泛的使用,其中包括zynga,南宮夢(mèng)等知名游戲公司.cocos2d不僅僅只是一個(gè)2d圖形引擎庫(kù),他還提供了一些對(duì)游戲邏輯支持的系統(tǒng).cocos2d提供了一個(gè)簡(jiǎn)單的聲音引擎,支持播放mp3,wave,ogg等文件格式的音樂(lè).cocos2d可以和物理引擎box2d配合使用,實(shí)現(xiàn)碰撞等物理效果.cocos2d引擎的結(jié)構(gòu)清晰,文檔和實(shí)例比較豐富.易學(xué)易用.2.1 cocos2d-x平臺(tái)技術(shù)介紹cocos2d是一個(gè)基于mit協(xié)議的開(kāi)源框架,用于構(gòu)建游戲、應(yīng)用程序和其他圖形界面交互應(yīng)用。這是一個(gè)c+ c
12、ocos2d-iphone項(xiàng)目的版本。cocos2d-x發(fā)展的重點(diǎn)是圍繞cocos2d跨平臺(tái),cocos2d-x提供的框架。手機(jī)游戲,可以寫(xiě)在 c+或者lua中,使用api是cocos2d-iphone完全兼容。cocos2d-x項(xiàng)目可以很容易地建立和運(yùn)行在ios,android,黑莓 blackberry等操作系統(tǒng)中。cocos2d-x還支持windows、mac和linux等桌面操作系統(tǒng),因此,開(kāi)發(fā)者編寫(xiě)的源代碼很容易在桌面操作系統(tǒng)中編輯和調(diào)試。2.2 cocos2d-x 主要功能cocos2d-x主要功能:流程控制(flow control):非常容易地管理不同場(chǎng)景(scenes)之間的
13、流程控制;精靈(sprites):快速而方便的精靈;動(dòng)作(actions):告訴精靈們?cè)撟鍪裁?。可組合的動(dòng)作如移動(dòng)(move)、旋轉(zhuǎn)(rotate)和縮放(scale)等更多;特效(effects):特效包括波浪(waves)、旋轉(zhuǎn)(twirl)和透鏡(lens)等更多;平面地圖(tiled maps):支持包括矩形和六邊形平面地圖;轉(zhuǎn)換(transitions):從一個(gè)場(chǎng)景移動(dòng)到另外一個(gè)不同風(fēng)格的場(chǎng)景;菜單(menus):創(chuàng)建內(nèi)部菜單;文本渲染(text rendering):支持標(biāo)簽和html標(biāo)簽動(dòng)作;文檔(documents):編程指南 + api參考 + 視頻教學(xué) + 很多教用戶(hù)如何使
14、用的簡(jiǎn)單測(cè)試?yán)?;mit許可:盡管用就是了;基于pyglet:沒(méi)有外部的依賴(lài);基于opengl:支持硬件加速;3d對(duì)象:md2模型支持;腳本語(yǔ)言:支持lua,javascript語(yǔ)言。2.3 cocos2d-x 特點(diǎn)易于使用:游戲開(kāi)發(fā)者可以把關(guān)注焦點(diǎn)放在游戲設(shè)置本身,而不必消耗大量時(shí)間學(xué)習(xí)晦澀難懂的opengl es,此外,cocos2d還提供了大量的規(guī)范。高效:cocos2d基于opengl es進(jìn)行圖形渲染,從而讓移動(dòng)設(shè)備的gpu性能發(fā)揮到極致。靈活:方便擴(kuò)展,易于集成第三方庫(kù)。免費(fèi):基于mit協(xié)議的免費(fèi)開(kāi)源框架,用戶(hù)可以放心使用,不用擔(dān)心商業(yè)授權(quán)的問(wèn)題。社區(qū)支持:關(guān)心cocos2d的開(kāi)發(fā)
15、者自發(fā)建立了多個(gè)社區(qū)組織,可以方便的查閱各類(lèi)技術(shù)資料。2.4 cocos2d-x結(jié)構(gòu)cocos2d采用場(chǎng)景樹(shù)結(jié)構(gòu)來(lái)管理游戲?qū)ο?把一個(gè)游戲劃分為不同的場(chǎng)景,場(chǎng)景又可以分為不同的層,一個(gè)層又可以擁有任意個(gè)可見(jiàn)的游戲?qū)ο?游戲?qū)ο笥挚梢詧?zhí)行action來(lái)修改其屬性.每一個(gè)時(shí)刻都有一個(gè)場(chǎng)景在獨(dú)立運(yùn)行,通過(guò)切換不同的場(chǎng)景來(lái)完成一個(gè)游戲流程.cocos2d還采用了引用計(jì)數(shù)的方式來(lái)管理內(nèi)存,基本上所有的類(lèi)都派生于擁有引用計(jì)數(shù)的機(jī)制的ccobject.其基本框架類(lèi)圖如下: 圖2.1 cocos2d-x基本框架類(lèi)圖3 游戲系統(tǒng)分析與設(shè)計(jì)3.1 游戲介紹寶石精靈是一款策略、戰(zhàn)斗型三消游戲。玩家通過(guò)自身養(yǎng)成,技能
16、升級(jí),然后推圖打怪進(jìn)行整個(gè)游戲體驗(yàn)。在自身養(yǎng)成系統(tǒng)中,玩家通過(guò)推圖戰(zhàn)斗,獲取金幣,使用金幣轉(zhuǎn)化鉆石,利用鉆石進(jìn)行玩家技能升級(jí),在戰(zhàn)斗中可以獲得相應(yīng)的經(jīng)驗(yàn)獎(jiǎng)勵(lì),來(lái)對(duì)玩家自身攻擊力進(jìn)行升級(jí)。游戲主要核心玩法是玩家同npc進(jìn)行三消對(duì)打,玩家通過(guò)消除攻擊寶石攻擊npc、通過(guò)消除不同顏色的寶石,積攢怒氣去觸發(fā)釋放技能,來(lái)達(dá)到攻擊或者防御npc的效果,npc同上。游戲本身含有24個(gè)技能,技能又分為“土系”、“風(fēng)系”、“火系”和“地系”。在每個(gè)系列技能里邊又有主動(dòng)技能和被動(dòng)技能。讓玩家在游戲中可根據(jù)關(guān)卡難度來(lái)選擇合適的技能。3.2 系統(tǒng)需求分析 在游戲開(kāi)發(fā)之前,我們必須充分的了解該游戲的特點(diǎn)、適應(yīng)性,并以此
17、作為基礎(chǔ)為開(kāi)發(fā)系統(tǒng)精準(zhǔn)的定位,然后對(duì)使用者所需要實(shí)現(xiàn)的功能和玩法進(jìn)行分析,并根據(jù)使用者實(shí)際要求來(lái)給該游戲系統(tǒng)設(shè)計(jì)一個(gè)開(kāi)始的方案。3.2.1 可行性分析本游戲是三消策略型游戲,具體指的是一類(lèi)基于三消玩法的基礎(chǔ)上進(jìn)行玩法上的創(chuàng)新,玩家可以通過(guò)三消寶石與守關(guān)npc進(jìn)行對(duì)抗攻擊,玩家想要順利過(guò)關(guān)必須攜帶合適技能的策略性游戲。游戲核心玩法目前在手游市場(chǎng)上還未出現(xiàn)類(lèi)似產(chǎn)品,所以游戲的市場(chǎng)是很大的。下面從各個(gè)方面簡(jiǎn)要分析制作該類(lèi)游戲的可行性。操作可行性:“寶石精靈”的每個(gè)關(guān)卡都經(jīng)過(guò)了精心的設(shè)計(jì),游戲難度逐漸增加,游戲時(shí)間逐漸增長(zhǎng),因而在這樣的設(shè)計(jì)下,玩家可以感受到游戲的可玩性,同時(shí)也可以享受到完成游戲的成就
18、感。而且該游戲操作簡(jiǎn)單靈活,比如玩家只要會(huì)簡(jiǎn)單的三消就可以很容易上手。技術(shù)可行性:“寶石精靈”技術(shù)的實(shí)現(xiàn)使用的是c+語(yǔ)言開(kāi)發(fā),用java語(yǔ)音進(jìn)行sdk接入,當(dāng)前普通的計(jì)算機(jī)在硬件配置方面完全滿(mǎn)足開(kāi)發(fā)的需求,所以在技術(shù)上絕對(duì)是可行的。在軟件方面:cocos2d游戲引擎是一個(gè)讓你輕松開(kāi)發(fā)游戲的工具,是一個(gè)全面開(kāi)發(fā)游戲的專(zhuān)業(yè)引擎。因此在軟件開(kāi)發(fā)平臺(tái)也是成熟可行的。不同android平臺(tái)的sdk接入都是使用java語(yǔ)言開(kāi)發(fā)接入,而且方式方法大同小異,因此接入技術(shù)可行的。游戲數(shù)據(jù)統(tǒng)計(jì)是通過(guò)jni借口進(jìn)行c+與java的交互,使用友盟工具進(jìn)行數(shù)據(jù)統(tǒng)計(jì),因此統(tǒng)計(jì)技術(shù)也是成熟可行的。 社會(huì)可行性:本游戲有豐富
19、技能的加入,大大增加了游戲可玩性。多種樣式變化的地圖,使玩家在各個(gè)時(shí)間段和關(guān)卡都能尋找到自己挑戰(zhàn)的目標(biāo),這會(huì)使得玩家長(zhǎng)期保持對(duì)游戲的新鮮感。3.2.2 功能分析“三消”這類(lèi)的游戲,人機(jī)交互性好,操作性強(qiáng),耐玩性強(qiáng)。這種游戲在手機(jī)游戲的市場(chǎng)上不會(huì)過(guò)時(shí),我們?cè)黾油婕覍?duì)戰(zhàn)的戰(zhàn)斗玩法,增加酷炫技能特效是游戲具有很好的可玩性和耐玩性對(duì)。如果能實(shí)現(xiàn)多人同時(shí)在線的時(shí)時(shí)對(duì)戰(zhàn)類(lèi)的游戲,相信一定會(huì)受到玩家的認(rèn)可與喜愛(ài)。下面從主要功能和關(guān)鍵功能方面來(lái)分析游戲的主要功能和關(guān)鍵功能,從而更好的設(shè)計(jì)出此游戲。(1)主要功能分析本游戲的主界面功能包括開(kāi)始游戲、游戲商城、設(shè)置、個(gè)人信息。其中在點(diǎn)擊開(kāi)始游戲之后進(jìn)入模式選擇界面
20、,現(xiàn)在暫時(shí)開(kāi)發(fā)出的是冒險(xiǎn)模式,點(diǎn)擊進(jìn)入冒險(xiǎn)模式后進(jìn)入推圖場(chǎng)景。推圖場(chǎng)景第一次進(jìn)入只有一個(gè)章節(jié),完成第一章節(jié)的任務(wù)(比如本章節(jié)所有管卡必須有8關(guān)成績(jī)超過(guò)2星)才會(huì)開(kāi)啟后續(xù)章節(jié)。玩家打過(guò)每一個(gè)關(guān)卡,游標(biāo)會(huì)游動(dòng)到下一關(guān)卡,彈出下一關(guān)卡的進(jìn)入提示,挑戰(zhàn)失敗則會(huì)繼續(xù)彈出本關(guān)卡的開(kāi)始游戲彈框。選擇了關(guān)卡之后會(huì)彈出技能選擇框,要自己選擇技能之后點(diǎn)擊開(kāi)始才可以進(jìn)入游戲界面。游戲控制模塊包含了游戲的一些基本控制,在游戲中又暫停,繼續(xù)游戲,重新開(kāi)始和退出游戲,其主要原理就是通過(guò)按鍵的狀態(tài)的改變,來(lái)改變游戲的狀態(tài)用來(lái)達(dá)到游戲的整體控制。其中技能升級(jí)系統(tǒng)是本游戲的一大特色,玩家可以通過(guò)過(guò)關(guān)來(lái)獲得金幣,每收集1000金
21、幣會(huì)自動(dòng)折算成1個(gè)鉆石,通過(guò)鉆石進(jìn)行對(duì)技能的升級(jí)和攜帶。游戲一共有“水系”、“火系”、“風(fēng)系”和“地系”四種類(lèi)別的技能,有四種不同的技能風(fēng)格,沒(méi)種技能又分為四個(gè)主動(dòng)技能和兩個(gè)被動(dòng)技能。集滿(mǎn)怒氣,釋放技能不僅會(huì)對(duì)敵方造成物理傷害,還會(huì)有一定概率觸發(fā)“眩暈”、“流血”、“回血”“金幣翻倍”等buff。升級(jí)技能會(huì)增加技能的影響值和提高觸發(fā)buff的概率。游戲運(yùn)行方面主要包含開(kāi)始游戲場(chǎng)景、推圖場(chǎng)景、和戰(zhàn)斗場(chǎng)景。其中游戲的每一章節(jié)都有不同的地圖背景,每一關(guān)都有不同的怪物,每一種怪物都有不同的血量、攻擊力和技能。玩家可以針對(duì)每一關(guān)的守關(guān)boss攜帶不同技能,來(lái)順利過(guò)關(guān)。當(dāng)怪物消除攻擊寶石或者釋放技能,玩家
22、會(huì)損失自己的生命值,當(dāng)生命值變成零,游戲結(jié)束,當(dāng)怪物被消滅,玩家就可以通過(guò)此關(guān)卡,進(jìn)入下一關(guān)。游戲功能流程圖如圖3-1所示:?jiǎn)?dòng)游戲游戲商城個(gè)人信息主界面退出游戲判斷游戲結(jié)束類(lèi)型游戲結(jié)束釋放技能消除寶石技能購(gòu)買(mǎi)升級(jí)戰(zhàn)斗場(chǎng)景推圖場(chǎng)景模式選擇圖3.1 游戲功能流程圖(2)關(guān)鍵功能分析三消類(lèi)游戲主要功能點(diǎn)是戰(zhàn)斗系統(tǒng),三個(gè)相同顏色的寶石消除,四個(gè)相同寶石的消除產(chǎn)生一個(gè)特殊寶石,五個(gè)相同顏色寶石消除產(chǎn)生一個(gè)多彩寶石。核心玩法是三消,三消邏輯也是游戲開(kāi)發(fā)的重點(diǎn)和難點(diǎn)。ui窗口的管理,跨系統(tǒng)彈框,場(chǎng)景用2d技術(shù)制作3d效果也是游戲重難點(diǎn)之一。關(guān)于寶石矩陣管理器,對(duì)寶石的管理是戰(zhàn)斗核心。寶石消除后的掉落是利用
23、矩陣管理器對(duì)當(dāng)前寶石矩陣的比較分析后隨機(jī)產(chǎn)生。寶石交換判斷器,監(jiān)聽(tīng)玩家交換動(dòng)作后對(duì)操作寶石進(jìn)行三消邏輯判斷,滿(mǎn)足條件執(zhí)行消除邏輯播放消除動(dòng)畫(huà),掉落隨機(jī)寶石,不滿(mǎn)足條件播放會(huì)彈動(dòng)畫(huà)。矩陣出現(xiàn)死局時(shí)對(duì)矩陣重新刷新。戰(zhàn)斗系統(tǒng)調(diào)用ui系統(tǒng)彈框,由于跨系統(tǒng)的頭文件補(bǔ)課相互引用。ui系統(tǒng)必須提供全局借口,將所有彈框交給全局都可拿到的窗口管理器。ai算法,根據(jù)關(guān)卡難度要逐漸提升npc的智能化,npc根據(jù)智能系數(shù)對(duì)寶石矩陣進(jìn)行選擇消除。3.3 系統(tǒng)設(shè)計(jì)分析本系統(tǒng)主要實(shí)現(xiàn)的功能有“ui系統(tǒng)”、“數(shù)據(jù)中心” 、“技能升級(jí)系統(tǒng)”、“推圖選關(guān)系統(tǒng)”、“戰(zhàn)斗系統(tǒng)”。在游戲控制實(shí)現(xiàn)方面包含了一般游戲的“開(kāi)始”,“繼續(xù)”和
24、“暫?!?,還有“退出”。為了增加游戲的可玩性還特別設(shè)置了技能升級(jí)、購(gòu)買(mǎi)功能。并在游戲的運(yùn)行方面做了各種不同的背景地圖、各種不同的敵怪、不同類(lèi)型的npc等等。3.3.1 游戲功能模塊游戲的功能模塊分為ui功能模塊、推圖功模塊、數(shù)據(jù)中心模塊、戰(zhàn)斗模塊、sdk接入。(1) ui功能模塊ui系統(tǒng)為游戲客戶(hù)端顯示層的表現(xiàn)模塊,該模塊主要設(shè)計(jì)思路是在監(jiān)聽(tīng)到系統(tǒng)啟動(dòng)完畢事件后將所有窗口創(chuàng)建并放到窗口管理器中。主要功能要點(diǎn)如下:1.主場(chǎng)景顯示ui(利用五個(gè)層級(jí)結(jié)構(gòu)讓2d圖片凸顯顯示效果)。2.攝像機(jī)(封裝攝像機(jī)概念,通過(guò)移動(dòng)層達(dá)到移動(dòng)攝像機(jī)的特點(diǎn))。3.彈框ui(封裝彈框動(dòng)畫(huà))。4.開(kāi)場(chǎng)動(dòng)畫(huà)5.新手引導(dǎo)6.播
25、放特效(2)推圖功模塊推圖系統(tǒng)模塊是控制控制整個(gè)游戲流程和生命周期的模塊。該模塊的主要設(shè)計(jì)思路是通過(guò)推圖部件對(duì)章節(jié)和關(guān)卡進(jìn)行管理。主要功能要點(diǎn)如下:1.推圖場(chǎng)景(利用pageview實(shí)現(xiàn)章節(jié)切換)。2.選關(guān)推圖邏輯。3.推圖解鎖動(dòng)畫(huà)。(3)數(shù)據(jù)中心模塊數(shù)據(jù)中心模塊是加載所有游戲涉及的配置表。加載進(jìn)來(lái)后放到各自的加載器里邊,供所有模塊訪問(wèn)使用。主要功能要點(diǎn)如下:1.csv表加載2.xml配置加載3.ni常量表加載4.數(shù)據(jù)加密(4)戰(zhàn)斗模塊戰(zhàn)斗模塊是游戲的核心模塊,主要功能是處理三消邏輯,npc對(duì)戰(zhàn),炫酷技能釋放,讓玩家有更好的游戲體驗(yàn)。主要功能要點(diǎn)如下:1. 玩家模塊2. npc模塊3. 三消功
26、能邏輯4. 怒氣收集,技能釋放5.技能購(gòu)買(mǎi)6.技能升級(jí)7.戰(zhàn)斗技能釋放8.buff影響9.技能動(dòng)畫(huà)(4)sdk接入 sdk接入是游戲開(kāi)發(fā)完成后,進(jìn)行市場(chǎng)推廣和上線準(zhǔn)備。主要功能要點(diǎn)如下:1.android平臺(tái)sdk(移動(dòng)mm)接入2.友盟數(shù)據(jù)統(tǒng)計(jì)的接入3.接入代碼混淆3.3.2 游戲目錄結(jié)構(gòu)例圖圖4-1游戲結(jié)構(gòu)目錄例圖 4 游戲系統(tǒng)實(shí)現(xiàn)通過(guò)全局對(duì)象clientglobal創(chuàng)建每個(gè)系統(tǒng)模塊。系統(tǒng)之間也是通過(guò)獲取clientglobal接口,去獲取各個(gè)系統(tǒng)模塊的接口,從而實(shí)現(xiàn)系統(tǒng)間數(shù)據(jù)的訪問(wèn)。游戲啟動(dòng)后將所有系統(tǒng)進(jìn)行創(chuàng)建,每個(gè)系統(tǒng)模塊通過(guò)全局進(jìn)行管理。本章主要從實(shí)體邏輯模塊,ui系統(tǒng)模塊,推圖模塊
27、還有游戲的戰(zhàn)斗模塊幾個(gè)方面,對(duì)游戲的設(shè)計(jì)與實(shí)現(xiàn)做了詳細(xì)的說(shuō)明。同時(shí)cocos2d是一個(gè)封裝了很好的動(dòng)畫(huà)系統(tǒng)和gui系統(tǒng),并提供了相對(duì)完善的功能,大大縮短了游戲開(kāi)發(fā)的周期,更好的實(shí)現(xiàn)了游戲的功能,因此本節(jié)也對(duì)cocos2d的一個(gè)重要的知識(shí)點(diǎn)進(jìn)行了簡(jiǎn)要的說(shuō)明與理解,使得自己更好的實(shí)現(xiàn)游戲。4.1 實(shí)體邏輯模塊實(shí)體系統(tǒng)包含玩家整個(gè)游戲世界所有的現(xiàn)場(chǎng)邏輯和現(xiàn)場(chǎng)數(shù)據(jù)。實(shí)體系統(tǒng)主要有玩家實(shí)體player和怪物實(shí)體monster。游戲從啟動(dòng)開(kāi)始,玩家實(shí)體從存盤(pán)數(shù)據(jù)讀取相關(guān)信息創(chuàng)建玩家,游戲世界全局都可獲取玩家,獲取玩家部件。玩家現(xiàn)場(chǎng)數(shù)據(jù)存盤(pán)的讀取設(shè)計(jì)是實(shí)體模塊的核心要點(diǎn)。存盤(pán)數(shù)據(jù)我們采用順序存儲(chǔ)分配空間。v
28、oid cplayerdbloader:savedbdata(cplayer* pplayer)splayer_db * pdb = new splayer_db();if (pplayer != nullptr)if(false=pplayer-exportdbcontext(lpcstr)pdb,sizeof(splayer_db)cclogerror(玩家存盤(pán)導(dǎo)出數(shù)據(jù)失敗);delete pdb;return ;pdb-nverson = 1;setbuffer(char*)pdb, sizeof(splayer_db);writefile(playerdata.data,true);c
29、lear();delete pdb;通過(guò)該函數(shù)將所有存盤(pán)數(shù)據(jù)存入playerdata.data。在玩家實(shí)體的exportdbcontext(lpcstr pszcontext, int nlen)函數(shù)中訪問(wèn)玩家自身的存盤(pán)數(shù)據(jù)和掛載到玩家身上所有部件的存盤(pán)數(shù)據(jù)。在setbuffer(char* buf, int nlen)函數(shù)中進(jìn)行對(duì)data進(jìn)行加密處理。實(shí)體部件的設(shè)計(jì)是實(shí)體模塊設(shè)計(jì)的一個(gè)創(chuàng)新型的設(shè)計(jì)。之前設(shè)計(jì)實(shí)體系統(tǒng)的時(shí)候,往往會(huì)將實(shí)體定義成現(xiàn)場(chǎng)數(shù)據(jù)中心,只是管理玩家自身的一些信息數(shù)據(jù)。這樣做的話(huà)實(shí)體的概念會(huì)很大,所有的現(xiàn)場(chǎng)數(shù)據(jù)都會(huì)寫(xiě)到實(shí)體私有的成員變量里邊,會(huì)使得實(shí)體類(lèi)很難管理。我提出了實(shí)體
30、部件的概念,也就說(shuō)每個(gè)功能模塊都跟隨一個(gè)相應(yīng)的實(shí)體部件,實(shí)體需要這個(gè)部件就會(huì)掛載到身上。實(shí)體部件存放相應(yīng)功能的現(xiàn)場(chǎng)存盤(pán)數(shù)據(jù),并提供讀取數(shù)據(jù)的接口供功能模塊使用,每個(gè)部件都有自身的統(tǒng)一的讀取存盤(pán)數(shù)據(jù)的操作減輕實(shí)體類(lèi)的壓力,這樣也提高了代碼可維護(hù)性和拓展性。玩家部件也會(huì)承擔(dān)一下功能邏輯的處理,將有用的數(shù)據(jù)提供該功能模塊。以下是實(shí)體部件向外部提供的公共繼承接口:struct ientitypart virtual bool create(isl_object* pmaster, void* pszdata, int nlen) = 0;virtual void release() = 0;virtu
31、al bool active(lpcstr pszcontext, int nlen) = 0;virtual isl_object* getentity()=0;virtual bool onsetdbcontext(lpcstr pszcontext, int nlen) = 0;virtual bool exportdbcontext(lpcstr pszcontext, int nlen) = 0;virtual int gettype()=0;4.2 ui功能模塊的設(shè)計(jì)ui模塊主要包含所有界面顯示、ui彈框、動(dòng)畫(huà)特效播放等所有視圖表現(xiàn)模式。在之前設(shè)計(jì)視圖層的時(shí)候總是每一個(gè)模塊單獨(dú)設(shè)計(jì)
32、一個(gè)ui顯示,但是遇到跨平臺(tái)彈窗的時(shí)候總是很難處理,然而視圖顯示往往在很多地方都需要表現(xiàn),所以我將ui模塊寫(xiě)成一個(gè)系統(tǒng)獨(dú)立出來(lái)。將所有的窗口放入一個(gè)窗口管理器里邊,在收到系統(tǒng)啟動(dòng)完畢事件后,進(jìn)行窗口加載并插入到窗口管理器,等到需要訪問(wèn)該窗口時(shí)直接去窗口管理器里邊訪問(wèn)出來(lái),然后對(duì)窗口進(jìn)行顯示和隱藏操作。獲取窗口代碼如下:iuibase* cwndmanager:getwnd(std:string szwndname)std:map:iterator it =m_mapwnd.find(szwndname);if (it != m_mapwnd.end()return it-second;else
33、 return createwnd(szwndname);return null; 根據(jù)窗口名字szwndname去窗口管理器m_mapwnd里邊去查找出對(duì)應(yīng)的窗口,然后對(duì)窗口進(jìn)行操縱。窗口的設(shè)計(jì)也是本系統(tǒng)一個(gè)重要設(shè)計(jì)創(chuàng)新,窗口本身是繼承cocos2dx的ccnode組件,掛載一個(gè)m_pwidget,后通過(guò)ui json名字加載ui文件guireader:sharereader()-widgetfromjsonfile(m_szwndconfigjson.c_str();然后隱藏和顯示操作根據(jù)node的特性可以設(shè)置m_pwidget的viseable屬性。設(shè)置zorder屬性來(lái)控制控件的層級(jí)顯
34、示。窗口創(chuàng)建函數(shù)/ 窗口名字if (szwndname.length() != 0)m_szwndname = szwndname;/ 配置文件if (szwndconfigjson.length() != 0)m_szwndconfigjson = szwndconfigjson;/ 安全判斷if (m_szwndname = | m_szwndconfigjson = )cclogerror(窗口名或者配置文件名字未定義);return false;/ 掛載父節(jié)點(diǎn)if (pfather = nullptr)/ 如果父節(jié)點(diǎn)為空的話(huà),訪問(wèn)獲取當(dāng)前場(chǎng)景作為父節(jié)點(diǎn)ccnode*player=get
35、clientglobal()-getuisystem()-getwndmanager()-getcurscene();if (player = null)return false;player-addchild(this);elsepfather-addchild(this);this-setvisible(false);/ 插入窗口管理器return getclientglobal()-getuisystem()-getwndmanager()-insertwnd(this,getname();我們?cè)趗ibase基類(lèi)封裝了對(duì)窗口基本操作的方法,最常用的是show()和hide()來(lái)控制窗口顯
36、示。下面是調(diào)用彈出設(shè)置窗口的代碼:cuibase*pcuibase=getclientglobal()-getuisystem()-getwndmanager()-getwnd(ui_star_setting);pcui_start_setting-setzorder(255);pcui_start_setting-show();4.3 推圖模塊玩家通過(guò)推圖系統(tǒng)進(jìn)行章節(jié)解鎖,關(guān)卡推圖。我們用cocos2d的pageview控件進(jìn)行章節(jié)切換,利用骨骼動(dòng)畫(huà)實(shí)現(xiàn)關(guān)卡解鎖后的游標(biāo)移動(dòng)特效。推圖自身玩家數(shù)據(jù)是存放在實(shí)體系統(tǒng)中的推圖部件里。下面針對(duì)關(guān)卡設(shè)置和游標(biāo)移動(dòng)做詳細(xì)介紹。關(guān)卡節(jié)點(diǎn)加載是推圖系統(tǒng)的一大
37、特點(diǎn)。遍歷本章地圖所有關(guān)卡信息,根據(jù)關(guān)卡id從數(shù)據(jù)中心貨的對(duì)應(yīng)button信息,設(shè)置星級(jí)。實(shí)現(xiàn)代碼如下:void cselectlevellayer:setwaypoint( int nmapid )/獲取路點(diǎn)配置iselectlevelscenewaypointconfig* pselectlevelscenewaypointconfig=getclientglobal()-getgamedatacenter()-getselectlevelscenewaypointconfig();if (pselectlevelscenewaypointconfig)std:vector vec;pse
38、lectlevelscenewaypointconfig-getwaypointidbymapid(vec,nmapid);for (int i=0;igetwaypointconfig(id);if (plevelconfig)/根據(jù)玩家信息判斷狀態(tài) 已通關(guān) 待通關(guān) 未通關(guān)std:string levelimg=plevelconfig-spasssourcepath;/根據(jù)玩家信息if(piselectleveldepart-getlevelstate(id)=e_levellayer_state_pass)levelimg=plevelconfig-spasssourcepath;els
39、e if(piselectleveldepart-getlevelstate(id)=e_levellayer_state_passing)levelimg=plevelconfig-spasssourcepath;m_ncurrentlevelid=plevelconfig-nid;elselevelimg=plevelconfig-sunpassingsourcepath;button*pbt_level=button:create(levelimg,levelimg,guanka.png);pbt_level-gettouchmovepos();pbt_level-settag(id);
40、pbt_level-setanchorpoint(vec2(0.5,0.5);pbt_level-setname(plevelconfig-sname);mlevelmanagerplevelconfig-nid=pbt_level;pbt_level-addtoucheventlistener(&(ref* widget,widget:toucheventtype eventtype)widget* pwidget = (widget*) widget;pwidget-gettouchmovepos(); if(eventtype = widget:toucheventtype:ended)
41、/響應(yīng)事件enterlevel(pwidget-gettag(););pbt_level-setposition(vec2(plevelconfig-npotionx,plevelconfig-npotiony);pmapview-addwidgettopage(pbt_level,nmapid-1,true);if(piselectleveldepart-getlevelstate(id) != e_levellayer_state_unpass)/星星顯示圖片int levelstarnum=piselectleveldepart-getlevelstarnum(id);setstar(p
42、bt_level,levelstarnum);/設(shè)置游標(biāo)if(piselectleveldepart-getlevelstate(id)=e_levellayer_state_passing )movewaypoint(m_ncurrentlevelid);游標(biāo)的實(shí)現(xiàn)應(yīng)該考慮很多中情況,正常游標(biāo)移動(dòng)即玩家通關(guān)游標(biāo)移動(dòng)到下一關(guān)卡,當(dāng)所通關(guān)關(guān)卡為本章地圖的最后一個(gè)關(guān)卡的時(shí)候又要考慮到下一章地圖能不能自動(dòng)解鎖,如果滿(mǎn)足條件,自動(dòng)解鎖游標(biāo)將移動(dòng)到下一章地圖的第一關(guān)卡。4.4 戰(zhàn)斗功能模塊整個(gè)游戲核心模塊,下面我們針對(duì)寶石矩陣,和消除方案來(lái)做詳細(xì)介紹。寶石矩陣的管理是三消游戲的關(guān)鍵算法,通過(guò)7x7矩陣管
43、理寶石,每個(gè)寶石都是一個(gè)獨(dú)立的對(duì)象,從創(chuàng)建到消亡都又矩陣管理器來(lái)進(jìn)行管理。節(jié)點(diǎn)對(duì)象基類(lèi)函數(shù)借口如下:/ 重載 =virtual bool compare(celiminatenode* pnode)if (pnode-gettype() = eeliminateunit_pk_node_colourfulgem)return true;return (gettype() = pnode-gettype(); virtual void release();/ 死亡邏輯/virtual void exdeadlogic();/ 輪次邏輯virtual void exturnlogic();/ 執(zhí)行
44、選擇virtual void exselectedaction();/ 執(zhí)行死亡動(dòng)作virtual void exdeadaction(cccallbackfun fun);/ 死亡動(dòng)畫(huà)結(jié)束virtual void deadactionend();/ 移動(dòng)到vecvirtual void spritemovetovec2(vec2 vec,int speed = 1.0f,cccallbackfun fun = nullptr);/ 移動(dòng)virtual void spritemovetocoord(scoord,int speed = 1.0f,cccallbackfun fun = null
45、ptr);/ 向下抖動(dòng)一次virtual void spritedownandshake(vec2 vec,int amplitudedown,int amplitudeup,int speed = 1.0f,cccallbackfun fun = nullptr);/ 直接設(shè)置坐標(biāo)void setspritetovec2(vec2 vec2);virtual int gettype()return m_etype;/ 設(shè)置類(lèi)型virtual void settype(eeliminateunit_pk_node etype)m_etype = etype;virtual int getnod
46、eclass()return eeliminateunit_pk_nodeclass_normal;/ 設(shè)置選擇狀態(tài)virtual void setselectedstated(bool bstate)m_bselectedstate = bstate;/ 獲取外觀精靈virtual ccsprite* getsprite()return pbaceface;virtual void initface(ccnode* pfather);消除方案結(jié)構(gòu)體設(shè)計(jì)代碼如下:/ 消除方案struct seliminateschemeceliminatenode * pswapnodea;/ 交換節(jié)點(diǎn)aceliminatenode * pswapnodeb;/ 交換節(jié)點(diǎn)bstd
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園籃球培訓(xùn)
- 思科交換機(jī)培訓(xùn)
- (基礎(chǔ)卷)第一單元 圓和扇形(單元測(cè)試)數(shù)學(xué)六年級(jí)上冊(cè)單元速記巧練系列(冀教版)教師版
- 河北省唐山市灤州市2024-2025學(xué)年七年級(jí)上學(xué)期11月份期中考試生物試題(無(wú)答案)
- T-YNZYC 0085-2023 綠色藥材 云黃連產(chǎn)地加工規(guī)程
- T-TSSP 029-2023 鮮筍漿(粉)加工技術(shù)規(guī)程
- 河北省邯鄲市部分校2024-2025學(xué)年高三上學(xué)期第二次聯(lián)考生物試題 含解析
- 河北省邢臺(tái)市邢襄聯(lián)盟2024-2025學(xué)年高三上學(xué)期10月份期中聯(lián)考數(shù)學(xué)試題 含解析
- Windows Server網(wǎng)絡(luò)管理項(xiàng)目教程(Windows Server 2022)(微課版)課件項(xiàng)目2 活動(dòng)目錄的配置與管理
- 浙江大學(xué)《現(xiàn)代漢語(yǔ)語(yǔ)法修辭》在線作業(yè)及答案
- 快消品行業(yè)新零售整體解決方案
- 浙教版小學(xué)二年級(jí)下冊(cè)《綜合實(shí)踐活動(dòng)》我的課間活動(dòng)-課件
- 全國(guó)職業(yè)院校技能大賽中職組法律實(shí)務(wù)比賽試題附答案
- 《耳鼻咽喉-頭頸外科學(xué)》見(jiàn)習(xí)教學(xué)大綱(五官)
- 第3課中國(guó)特色社會(huì)主義進(jìn)入新時(shí)代(高教版2023基礎(chǔ)模塊)
- 危重癥常見(jiàn)的管道護(hù)理
- 《一匹出色的馬》說(shuō)課課件
- 生物的多樣性及其保護(hù) 單元作業(yè)設(shè)計(jì)
- 村級(jí)財(cái)務(wù)培訓(xùn)課件
- 二級(jí)安全教育考試卷及答案
- 綠色物流階段測(cè)試試題及答案
評(píng)論
0/150
提交評(píng)論