• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Cocos2D—x引擎的Lua消除游戲設(shè)計(jì)與實(shí)現(xiàn)

      2014-04-29 07:38:39胡祝華左江洋趙瑤池
      電子世界 2014年19期

      胡祝華 左江洋 趙瑤池

      【摘要】為了實(shí)現(xiàn)一個(gè)消除類手機(jī)游戲,以Cocos2D-x作為游戲引擎,通過Lua腳本語(yǔ)言調(diào)用Cocos2D-x引擎接口,利用table結(jié)構(gòu)及重寫的touch函數(shù)來(lái)實(shí)現(xiàn)游戲的核心模塊。測(cè)試結(jié)果表明:游戲運(yùn)行流暢,響應(yīng)用戶觸碰及時(shí)準(zhǔn)確,達(dá)到了設(shè)計(jì)目標(biāo)。

      【關(guān)鍵詞】Cocos2D-x;Lua;消除游戲

      1.引言

      近年來(lái)基于Android的游戲軟件層出不窮,例如耳熟能詳?shù)牟遏~達(dá)人2,龍之力量以及三國(guó)群毆傳等。發(fā)布在全球各大應(yīng)用商城,累計(jì)下載量超過5億次。這些游戲的普遍共性是:操作簡(jiǎn)單,娛樂性強(qiáng)[1]。

      在基于Android的2D游戲開發(fā)中,Cocos2D-x是移動(dòng)平臺(tái)中使用最普遍、功能非常強(qiáng)大的游戲引擎[2]。在國(guó)內(nèi)基于Cocos2D-x引擎開發(fā)的游戲有很多[3,4],也有基于Cocos2D-x的二次開發(fā)工作[5]。本文基于Cocos2D-x引擎利用Lua腳本語(yǔ)言[6]設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)消除類游戲,游戲中將800*480的屏幕分為了60個(gè)80*80的小方格子。每個(gè)格子都有一只會(huì)跳動(dòng)的地鼠并且身上會(huì)標(biāo)有1-8中的任意數(shù)字,玩家可以通過記憶地鼠身上的數(shù)字來(lái)依次的將地鼠消除。通過測(cè)試,該游戲具有簡(jiǎn)易、好玩、消除動(dòng)作執(zhí)行準(zhǔn)確及時(shí)等特點(diǎn)。

      2.Cocos2D-x框架及Lua語(yǔ)言

      Cocos2D-x引擎十分強(qiáng)大,里面集成了很多2D手機(jī)游戲需要的接口。例如渲染框架,動(dòng)作功能,用戶交互,內(nèi)存管理機(jī)制等等,通過這些接口可以實(shí)現(xiàn)場(chǎng)景的跳轉(zhuǎn),精靈的控制和特效的添加等,這為游戲開發(fā)提供了十分便利的條件,Cocos2D-x引擎封裝模塊及調(diào)用關(guān)系[7]如圖1所示。Cocos2D-x引擎中有四個(gè)重要的角色:導(dǎo)演,場(chǎng)景,層和精靈。這些角色完成自己的工作從而展現(xiàn)給玩家完美的游戲體驗(yàn)。Cocos2D-x引擎里面的運(yùn)行機(jī)制和拍電影有很大的類似之處。導(dǎo)演統(tǒng)領(lǐng)全局,控制了多個(gè)場(chǎng)景的切換,每個(gè)場(chǎng)景上面可能又會(huì)有多個(gè)層,而演員(也就是精靈)工作在層上面,展現(xiàn)出自己的動(dòng)作。這樣的流程會(huì)使得設(shè)計(jì)井然有序、分工明確。

      圖1 引擎封裝模塊及調(diào)用關(guān)系

      隨著Lua腳本語(yǔ)言的發(fā)展,Lua在游戲開發(fā)中展現(xiàn)出了自己鮮明的特點(diǎn),比如語(yǔ)法簡(jiǎn)單、易于移植和易于使用等。在Cocos2D-x游戲開發(fā)中通過Lua調(diào)用引擎中的c++接口函數(shù),二者結(jié)合來(lái)開發(fā)手機(jī)游戲即可以大大縮短開發(fā)周期,也可以達(dá)到預(yù)期的游戲開發(fā)效果。

      3.消除小游戲設(shè)計(jì)

      3.1 流程設(shè)計(jì)

      利用Cocos2D-x的框架,在一個(gè)場(chǎng)景中利用Lua寫的邏輯實(shí)現(xiàn)地鼠的消除。當(dāng)用戶進(jìn)入游戲中時(shí),系統(tǒng)會(huì)創(chuàng)建場(chǎng)景和層,加載地鼠精靈,然后便是等待用戶實(shí)施touch事件,游戲操作流程圖2所示。

      當(dāng)用戶進(jìn)入游戲,呈現(xiàn)在用戶眼前的就是標(biāo)有數(shù)字的能夠跳動(dòng)的八只地鼠,當(dāng)用戶點(diǎn)擊標(biāo)有數(shù)字1的地鼠后,表明用戶已經(jīng)將8只地鼠的位置記住,此時(shí),將地鼠精靈身上的數(shù)字去掉。然后,當(dāng)用戶每次觸摸屏幕時(shí)候,touch函數(shù)就要獲取手指的坐標(biāo),通過這個(gè)坐標(biāo)來(lái)做出判斷用戶是否點(diǎn)擊到了地鼠精靈上,并且點(diǎn)擊的順序是否正確。最終給出地鼠精靈是否被消除的響應(yīng)。

      圖2 游戲流程圖

      3.2 關(guān)鍵技術(shù)細(xì)節(jié)

      (1)地鼠消除流程

      在這個(gè)游戲中,用Lua語(yǔ)言基于Cocos2D-x引擎實(shí)現(xiàn)了游戲的整個(gè)邏輯,其中導(dǎo)演、場(chǎng)景、層和精靈依次被創(chuàng)建出來(lái)。這里所用的touch并沒有調(diào)用引擎自身提供的Touch事件,而是重新開發(fā)了一個(gè)函數(shù)。其中除了業(yè)務(wù)邏輯外,也運(yùn)用了Lua里面的table來(lái)存儲(chǔ)數(shù)據(jù)。

      (2)地鼠消除算法

      游戲中精靈的消除步驟如下:

      1)當(dāng)用戶進(jìn)行消除操作時(shí),獲得用戶此時(shí)點(diǎn)擊的坐標(biāo),用這個(gè)坐標(biāo)和精靈的坐標(biāo)進(jìn)行比較,精靈的坐標(biāo)存儲(chǔ)在table表中。

      2)將屏幕分為60塊,用來(lái)隨機(jī)的放置8個(gè)地鼠精靈,當(dāng)精靈全部顯示出來(lái)后,用table紀(jì)錄下精靈的x,y坐標(biāo)。當(dāng)用戶點(diǎn)擊了第一只地鼠后,其余地鼠身上的數(shù)字被覆蓋掉。

      3)用戶憑記憶消除其他地鼠。當(dāng)用坐標(biāo)確認(rèn)了用戶點(diǎn)中地鼠精靈后,還需要做出一個(gè)點(diǎn)擊順序的判斷,即是否是按著1至8的順序依次點(diǎn)擊的地鼠,如若不滿足這個(gè)條件,地鼠當(dāng)然也不能夠被消除。也就是說(shuō)在touch里面設(shè)定了兩個(gè)條件,首先,用戶需要點(diǎn)擊到地鼠精靈。其次,用戶要按照正確的順序點(diǎn)擊才能夠消除地鼠,二者缺一不可。當(dāng)這兩個(gè)條件均已達(dá)到時(shí),我們先將地鼠從table表中刪除掉,再將這個(gè)精靈從當(dāng)前層中去掉,如此,則達(dá)到了消除的效果。

      (3)游戲界面設(shè)計(jì)

      Cocos2D-x以O(shè)penglES為圖形庫(kù),因此使用OpenglES坐標(biāo)系。GL坐標(biāo)系原點(diǎn)在屏幕左下角,x軸向右,y軸向上。本游戲?qū)⑵聊辉O(shè)置為800*480大小。(0,0)坐標(biāo)為左下角,設(shè)置每個(gè)單元格大小為(80*80),用Lua中的table結(jié)構(gòu)來(lái)保存位置信息。屏幕分格如圖3所示。

      圖3 游戲屏幕分格及坐標(biāo)示意圖

      4.開發(fā)環(huán)境與配置

      軟,硬件環(huán)境及必要的設(shè)置包括以下幾點(diǎn):

      (1)硬件環(huán)境:PC(Inter(R),Core(TM)i5

      -3230M CPU @2.60GHZ,2.56GB內(nèi)存),Andorid手機(jī)。

      (2)軟件環(huán)境:操作系統(tǒng)選用Win7 64位,開發(fā)平臺(tái)為Visio studio 2013,android ? ? 4.2 SDK,Cocos2D-x 3.2,python 2.7。

      (3)開發(fā)環(huán)境配置:在Cocos2D-x 3.2的版本中取消了Visio studio 2013模板創(chuàng)建項(xiàng)目的方法,而是使用python腳本創(chuàng)建項(xiàng)目,因此需要在計(jì)算機(jī)中配置python環(huán)境。

      5.游戲測(cè)試效果

      游戲開發(fā)項(xiàng)目打包成apk文件,安裝到真機(jī)上測(cè)試效果如圖4、圖5、圖6、圖7所示。

      圖4 游戲開始狀態(tài) ? ? ? ?圖5 游戲進(jìn)行中狀態(tài)a

      圖6 游戲進(jìn)行中狀態(tài)b ? ? ? ?圖7 游戲結(jié)束狀態(tài)

      6.結(jié)語(yǔ)

      本文通過Cocos2D-x與Lua結(jié)合設(shè)計(jì)并開發(fā)的消除小游戲,展現(xiàn)了Android 2D游戲開發(fā)的基本流程,詳細(xì)介紹了其中的關(guān)鍵技術(shù)。這類記憶消除游戲?qū)τ陂_發(fā)青少年智力,增添生活樂趣都很有意義,本游戲?qū)崿F(xiàn)了主要的消除功能。

      參考文獻(xiàn)

      [1]夏志海.基于Cocos2d-x的手機(jī)游戲坦克大戰(zhàn)的設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱工業(yè)大學(xué),2013.

      [2]劉劍卓.cocos2d-x游戲開發(fā)技術(shù)精解[M].2013.

      基金項(xiàng)目:海南省教育廳基金資助項(xiàng)目(項(xiàng)目編號(hào):Hjkj2013-14、HNKY2014-18)。

      作者簡(jiǎn)介:胡祝華(1979—),男,湖南桃江人,講師,研究方向:智能嵌入式技術(shù)、人機(jī)交互技術(shù)。

      通訊作者:趙瑤池,女,講師。

      江源县| 叙永县| 保康县| 英山县| 绩溪县| 常宁市| 宁陵县| 平陆县| 桐梓县| 沛县| 佛坪县| 台前县| 行唐县| 兴文县| 呼伦贝尔市| 托里县| 峡江县| 洛宁县| 商洛市| 怀仁县| 峨眉山市| 德安县| 顺昌县| 十堰市| 年辖:市辖区| 科尔| 普安县| 祁阳县| 灵宝市| 太康县| 林周县| 通许县| 宁乡县| 定远县| 马鞍山市| 高台县| 双柏县| 静乐县| 山西省| 宜都市| 嵊州市|