許燕
摘要:該文設(shè)計(jì)的進(jìn)階版俄羅斯方塊手機(jī)游戲,開發(fā)語(yǔ)言是lua,開發(fā)框架是corona。所開發(fā)的游戲基于俄羅斯方塊的玩法之上,融入了屬于自己的創(chuàng)新元素和玩法,讓原本黑白的俄羅斯方塊變得鮮活有趣了起來(lái)。
關(guān)鍵詞:lua;corona;手機(jī)游戲
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)25-0047-03
隨著現(xiàn)代生活節(jié)奏的加快,人們需要隨時(shí)隨地獲取與處理信息,由于移動(dòng)通信技術(shù)的發(fā)展,現(xiàn)在的手機(jī)等嵌入式設(shè)備的計(jì)算處理能力得到極大的增強(qiáng),因此手機(jī)成為了最佳的終端工具。目前很多大型游戲、手機(jī)游戲和應(yīng)用項(xiàng)目都用lua作為腳本來(lái)完成,在南美家庭中幾乎每天都在使用的互動(dòng)電視是由lua驅(qū)動(dòng)的。一些大學(xué)在他們的研究中使用lua來(lái)進(jìn)行快速處理并獲得結(jié)果。而且在游戲開發(fā)團(tuán)隊(duì)中的不同角色的人員使用中都起到重要作用?;谑謾C(jī)的移動(dòng)應(yīng)用開發(fā)成為未來(lái)軟件開發(fā)的發(fā)展方向。
1 手機(jī)游戲開發(fā)環(huán)境
1.1 移動(dòng)開發(fā)跨平臺(tái)工具Corona SDK簡(jiǎn)介
Corona SDK是Corona Labs旗下的一款專門用于跨平臺(tái)移動(dòng)應(yīng)用開發(fā)的Lua語(yǔ)言SDK庫(kù),不僅容易入手,無(wú)門檻,而且效率也相當(dāng)高。Corona SDK提供了跨平臺(tái)能力,所以開發(fā)者的應(yīng)用或游戲可兼容iOS、Android、Kindle Fire和Nook平臺(tái)。Corona支持硬件加速、GPS、照相機(jī)等,并集成了Box2D物理引擎。
1.2 腳本語(yǔ)言Lua介紹
lua小巧高效,作為C的擴(kuò)展,能與C自然的結(jié)合與交互,所以常被用于寫游戲邏輯。以快速小巧著稱的Lua擁有在目前所有腳本引擎中最快的運(yùn)行速度,這樣的特性讓Lua成為用作嵌入式腳本的最佳選擇。在當(dāng)前的游戲開發(fā)行業(yè)中,除了《魔獸世界》和網(wǎng)易經(jīng)典“西游系列”都使用了腳本外,現(xiàn)在大多數(shù)比較流行的程序也都使用了腳本,如騰訊的(QQgame))和搜狐的《天龍八部》等。不僅如此,現(xiàn)今的游戲引擎也都提供了腳本接口,無(wú)論是商業(yè)的unreal引擎還是開源的0一GRE,無(wú)一例外。但是,Lua語(yǔ)言被人們所熟知還要追述到2010年喬布斯的蘋果將Lua語(yǔ)言引進(jìn)iOS平臺(tái),直到現(xiàn)在已經(jīng)有很多iPhone的應(yīng)用寫入到Lua中。而Lua語(yǔ)言憑借其代碼幾乎能在所有操作系統(tǒng)和移動(dòng)終端上編譯運(yùn)行的這一特性,不但可以在iOS這一移動(dòng)平臺(tái)開發(fā),同樣也可以在Android等其它平臺(tái)上開發(fā)。有了Corona SDK以后Lua語(yǔ)言不但可以支持iOS,還可以支持Android平臺(tái)。
2 趣味手機(jī)游戲的設(shè)計(jì)
本文設(shè)計(jì)的進(jìn)階版俄羅斯方塊手機(jī)游戲,開發(fā)語(yǔ)言是lua,開發(fā)框架是corona。所開發(fā)的游戲基于俄羅斯方塊的玩法之上,融入了屬于自己的創(chuàng)新元素和玩法,讓原本黑白的俄羅斯方塊變得鮮活有趣了起來(lái)。
1)游戲界面設(shè)計(jì)
該游戲畫面走著輕松、愉快的小清新路線,采用色彩明快的七彩方塊組合而成,讓人眼前一亮的同時(shí),色彩艷麗的界面也容易令人心情不禁跟著愉悅起來(lái),Q版的小方塊們,設(shè)計(jì)感強(qiáng)烈,看起來(lái)并不平面,非常具有質(zhì)感。游戲開始界面如圖1所示,游戲運(yùn)行效果如圖2所示。
實(shí)現(xiàn)界面初始化的函數(shù):
function kian()
bj=display.newRect(160,240,480,580)
ks=display.newImage("im/b.png",160,240)
ksan=display.newImage("im/an.png",160,240)
ksan:addEventListener("tap",dong)
end
開始游戲函數(shù):
function kais()
display.remove(bj)
display.remove(ks)
display.remove(ksan)
chu()
for i=1,10 do
for k=1,10 do
t[i][k]:addEventListener("touch",ss)
end
end
Runtime:addEventListener("touch",ww)
display.remove()
end
加載圖片,合成統(tǒng)一顏色不同形狀的方塊組合。有一個(gè)、兩個(gè)、多個(gè)方塊組成的形狀。
function one()
ge2=display.newImage("im/3.png",0,0)
ge2.xScale=0.4
ge2.yScale=0.4
ge2.x=ddd
ge2.y=400
ge2:addEventListener("touch",xx2)
end
function two()
ge3=display.newGroup()
for i=1,2 do
ge1=display.newImage("im/4.png",i*28-28-28,0)
ge1.xScale=0.65
ge1.yScale=0.65
ge3:insert(ge1)
end
ge3.x=ddd
ge3.y=400
ge3.xScale=0.6
ge3.yScale=0.6
ge3:addEventListener("touch",xx3)
end
function three()
ge4=display.newGroup()
for i=1,2 do
ge1=display.newImage("im/5.png",i*28-28-28,0)
ge1.xScale=0.65
ge1.yScale=0.65
ge4:addEventListener("touch",xx4)
end
…
不同形狀的組合體,可防止的范圍不一樣,所以通過(guò)XX1~XX19函數(shù)來(lái)限制x,y軸的位置。如XX2函數(shù)代碼:
function xx2(event)
if event.phase=="began" then
l=2
if event.x<60+50 then
ddd=60
v=1
elseif event.x>=60+40 and event.x<=160+50 then
ddd=160
v=2
elseif event.x>160+50 then
ddd=260
v=3
end
end
end
function shuu()
if ls==1 then
sf=1
for i=1,10 do
for k=1,10 do
if di[i][k]==1 then
if shus[1]==1 then
if k<7 then
if di[i][k+1]==1 and di[i][k+2]==1 and di[i][k+3]==1 and di[i][k+4]==1 then
sf=2
end
end
elseif shus[1]==2 then
sf=2
end
…
本程序主要使用的Corona SDK API里的顯示圖片函數(shù)、群組函數(shù)、偵聽(tīng)函數(shù)、過(guò)渡函數(shù)等。相關(guān)函數(shù)的用法可以到https://docs.coronalabs.com/api/ 查找,如圖3所示。如過(guò)渡函數(shù)transition語(yǔ)法,如下圖4所示。
3 總結(jié)
游戲開發(fā)是一個(gè)創(chuàng)意性的工作,需要通過(guò)快速開發(fā)原型、測(cè)試和修改來(lái)驗(yàn)證游戲性。因此,需要一個(gè)具有良好兼容性、簡(jiǎn)單而高效的編程語(yǔ)言來(lái)幫助游戲設(shè)計(jì)師完成他們的工作。近年來(lái),許多大型游戲都采用了Lua作為自己的嵌入式腳本語(yǔ)言,以此來(lái)實(shí)現(xiàn)可配置性和可擴(kuò)展性。Lua改變了開發(fā)者為移動(dòng)設(shè)備編寫應(yīng)用的方式,目前蘋果App Store中已經(jīng)有很多用lua開發(fā)的應(yīng)用和游戲。
通過(guò)本文提供的基于lua和corona框架的趣味手機(jī)游戲的設(shè)計(jì)與實(shí)現(xiàn),可以看到通過(guò)緊跟技術(shù)發(fā)展腳步,運(yùn)用移動(dòng)應(yīng)用開發(fā)框架搭建適合游戲開發(fā)的環(huán)境設(shè)計(jì)一個(gè)游戲的過(guò)程,。
參考文獻(xiàn):
[1] 李廣松,陳蓉征.基于Lua的網(wǎng)絡(luò)游戲腳本系統(tǒng)設(shè)計(jì)[J].現(xiàn)代計(jì)算機(jī),2009(12).
[2] 楊 杰.Lua——以總統(tǒng)為名的移動(dòng)開發(fā)語(yǔ)言新貴[J].軟件技術(shù)與研究,2014(4).
[3] 張德富,鄭捷敏.人機(jī)丈棋游戲算法研[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2008(11).