胡祝華 左江洋 趙瑤池
【摘要】為了實現一個消除類手機游戲,以Cocos2D-x作為游戲引擎,通過Lua腳本語言調用Cocos2D-x引擎接口,利用table結構及重寫的touch函數來實現游戲的核心模塊。測試結果表明:游戲運行流暢,響應用戶觸碰及時準確,達到了設計目標。
【關鍵詞】Cocos2D-x;Lua;消除游戲
1.引言
近年來基于Android的游戲軟件層出不窮,例如耳熟能詳的捕魚達人2,龍之力量以及三國群毆傳等。發(fā)布在全球各大應用商城,累計下載量超過5億次。這些游戲的普遍共性是:操作簡單,娛樂性強[1]。
在基于Android的2D游戲開發(fā)中,Cocos2D-x是移動平臺中使用最普遍、功能非常強大的游戲引擎[2]。在國內基于Cocos2D-x引擎開發(fā)的游戲有很多[3,4],也有基于Cocos2D-x的二次開發(fā)工作[5]。本文基于Cocos2D-x引擎利用Lua腳本語言[6]設計和實現了一個消除類游戲,游戲中將800*480的屏幕分為了60個80*80的小方格子。每個格子都有一只會跳動的地鼠并且身上會標有1-8中的任意數字,玩家可以通過記憶地鼠身上的數字來依次的將地鼠消除。通過測試,該游戲具有簡易、好玩、消除動作執(zhí)行準確及時等特點。
2.Cocos2D-x框架及Lua語言
Cocos2D-x引擎十分強大,里面集成了很多2D手機游戲需要的接口。例如渲染框架,動作功能,用戶交互,內存管理機制等等,通過這些接口可以實現場景的跳轉,精靈的控制和特效的添加等,這為游戲開發(fā)提供了十分便利的條件,Cocos2D-x引擎封裝模塊及調用關系[7]如圖1所示。Cocos2D-x引擎中有四個重要的角色:導演,場景,層和精靈。這些角色完成自己的工作從而展現給玩家完美的游戲體驗。Cocos2D-x引擎里面的運行機制和拍電影有很大的類似之處。導演統(tǒng)領全局,控制了多個場景的切換,每個場景上面可能又會有多個層,而演員(也就是精靈)工作在層上面,展現出自己的動作。這樣的流程會使得設計井然有序、分工明確。
圖1 引擎封裝模塊及調用關系
隨著Lua腳本語言的發(fā)展,Lua在游戲開發(fā)中展現出了自己鮮明的特點,比如語法簡單、易于移植和易于使用等。在Cocos2D-x游戲開發(fā)中通過Lua調用引擎中的c++接口函數,二者結合來開發(fā)手機游戲即可以大大縮短開發(fā)周期,也可以達到預期的游戲開發(fā)效果。
3.消除小游戲設計
3.1 流程設計
利用Cocos2D-x的框架,在一個場景中利用Lua寫的邏輯實現地鼠的消除。當用戶進入游戲中時,系統(tǒng)會創(chuàng)建場景和層,加載地鼠精靈,然后便是等待用戶實施touch事件,游戲操作流程圖2所示。
當用戶進入游戲,呈現在用戶眼前的就是標有數字的能夠跳動的八只地鼠,當用戶點擊標有數字1的地鼠后,表明用戶已經將8只地鼠的位置記住,此時,將地鼠精靈身上的數字去掉。然后,當用戶每次觸摸屏幕時候,touch函數就要獲取手指的坐標,通過這個坐標來做出判斷用戶是否點擊到了地鼠精靈上,并且點擊的順序是否正確。最終給出地鼠精靈是否被消除的響應。
圖2 游戲流程圖
3.2 關鍵技術細節(jié)
(1)地鼠消除流程
在這個游戲中,用Lua語言基于Cocos2D-x引擎實現了游戲的整個邏輯,其中導演、場景、層和精靈依次被創(chuàng)建出來。這里所用的touch并沒有調用引擎自身提供的Touch事件,而是重新開發(fā)了一個函數。其中除了業(yè)務邏輯外,也運用了Lua里面的table來存儲數據。
(2)地鼠消除算法
游戲中精靈的消除步驟如下:
1)當用戶進行消除操作時,獲得用戶此時點擊的坐標,用這個坐標和精靈的坐標進行比較,精靈的坐標存儲在table表中。
2)將屏幕分為60塊,用來隨機的放置8個地鼠精靈,當精靈全部顯示出來后,用table紀錄下精靈的x,y坐標。當用戶點擊了第一只地鼠后,其余地鼠身上的數字被覆蓋掉。
3)用戶憑記憶消除其他地鼠。當用坐標確認了用戶點中地鼠精靈后,還需要做出一個點擊順序的判斷,即是否是按著1至8的順序依次點擊的地鼠,如若不滿足這個條件,地鼠當然也不能夠被消除。也就是說在touch里面設定了兩個條件,首先,用戶需要點擊到地鼠精靈。其次,用戶要按照正確的順序點擊才能夠消除地鼠,二者缺一不可。當這兩個條件均已達到時,我們先將地鼠從table表中刪除掉,再將這個精靈從當前層中去掉,如此,則達到了消除的效果。
(3)游戲界面設計
Cocos2D-x以OpenglES為圖形庫,因此使用OpenglES坐標系。GL坐標系原點在屏幕左下角,x軸向右,y軸向上。本游戲將屏幕設置為800*480大小。(0,0)坐標為左下角,設置每個單元格大小為(80*80),用Lua中的table結構來保存位置信息。屏幕分格如圖3所示。
圖3 游戲屏幕分格及坐標示意圖
4.開發(fā)環(huán)境與配置
軟,硬件環(huán)境及必要的設置包括以下幾點:
(1)硬件環(huán)境:PC(Inter(R),Core(TM)i5
-3230M CPU @2.60GHZ,2.56GB內存),Andorid手機。
(2)軟件環(huán)境:操作系統(tǒng)選用Win7 64位,開發(fā)平臺為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)建項目的方法,而是使用python腳本創(chuàng)建項目,因此需要在計算機中配置python環(huán)境。
5.游戲測試效果
游戲開發(fā)項目打包成apk文件,安裝到真機上測試效果如圖4、圖5、圖6、圖7所示。
圖4 游戲開始狀態(tài) ? ? ? ?圖5 游戲進行中狀態(tài)a
圖6 游戲進行中狀態(tài)b ? ? ? ?圖7 游戲結束狀態(tài)
6.結語
本文通過Cocos2D-x與Lua結合設計并開發(fā)的消除小游戲,展現了Android 2D游戲開發(fā)的基本流程,詳細介紹了其中的關鍵技術。這類記憶消除游戲對于開發(fā)青少年智力,增添生活樂趣都很有意義,本游戲實現了主要的消除功能。
參考文獻
[1]夏志海.基于Cocos2d-x的手機游戲坦克大戰(zhàn)的設計與實現[D].哈爾濱工業(yè)大學,2013.
[2]劉劍卓.cocos2d-x游戲開發(fā)技術精解[M].2013.
基金項目:海南省教育廳基金資助項目(項目編號:Hjkj2013-14、HNKY2014-18)。
作者簡介:胡祝華(1979—),男,湖南桃江人,講師,研究方向:智能嵌入式技術、人機交互技術。
通訊作者:趙瑤池,女,講師。