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