基于lua和corona框架的趣味手机游戏的设计与实现
2015-12-08许燕
许燕
摘要:该文设计的进阶版俄罗斯方块手机游戏,开发语言是lua,开发框架是corona。所开发的游戏基于俄罗斯方块的玩法之上,融入了属于自己的创新元素和玩法,让原本黑白的俄罗斯方块变得鲜活有趣了起来。
关键词:lua;corona;手机游戏
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)25-0047-03
随着现代生活节奏的加快,人们需要随时随地获取与处理信息,由于移动通信技术的发展,现在的手机等嵌入式设备的计算处理能力得到极大的增强,因此手机成为了最佳的终端工具。目前很多大型游戏、手机游戏和应用项目都用lua作为脚本来完成,在南美家庭中几乎每天都在使用的互动电视是由lua驱动的。一些大学在他们的研究中使用lua来进行快速处理并获得结果。而且在游戏开发团队中的不同角色的人员使用中都起到重要作用。基于手机的移动应用开发成为未来软件开发的发展方向。
1 手机游戏开发环境
1.1 移动开发跨平台工具Corona SDK简介
Corona SDK是Corona Labs旗下的一款专门用于跨平台移动应用开发的Lua语言SDK库,不仅容易入手,无门槛,而且效率也相当高。Corona SDK提供了跨平台能力,所以开发者的应用或游戏可兼容iOS、Android、Kindle Fire和Nook平台。Corona支持硬件加速、GPS、照相机等,并集成了Box2D物理引擎。
1.2 脚本语言Lua介绍
lua小巧高效,作为C的扩展,能与C自然的结合与交互,所以常被用于写游戏逻辑。以快速小巧著称的Lua拥有在目前所有脚本引擎中最快的运行速度,这样的特性让Lua成为用作嵌入式脚本的最佳选择。在当前的游戏开发行业中,除了《魔兽世界》和网易经典“西游系列”都使用了脚本外,现在大多数比较流行的程序也都使用了脚本,如腾讯的(QQgame))和搜狐的《天龙八部》等。不仅如此,现今的游戏引擎也都提供了脚本接口,无论是商业的unreal引擎还是开源的0一GRE,无一例外。但是,Lua语言被人们所熟知还要追述到2010年乔布斯的苹果将Lua语言引进iOS平台,直到现在已经有很多iPhone的应用写入到Lua中。而Lua语言凭借其代码几乎能在所有操作系统和移动终端上编译运行的这一特性,不但可以在iOS这一移动平台开发,同样也可以在Android等其它平台上开发。有了Corona SDK以后Lua语言不但可以支持iOS,还可以支持Android平台。
2 趣味手机游戏的设计
本文设计的进阶版俄罗斯方块手机游戏,开发语言是lua,开发框架是corona。所开发的游戏基于俄罗斯方块的玩法之上,融入了属于自己的创新元素和玩法,让原本黑白的俄罗斯方块变得鲜活有趣了起来。
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 总结
游戏开发是一个创意性的工作,需要通过快速开发原型、测试和修改来验证游戏性。因此,需要一个具有良好兼容性、简单而高效的编程语言来帮助游戏设计师完成他们的工作。近年来,许多大型游戏都采用了Lua作为自己的嵌入式脚本语言,以此来实现可配置性和可扩展性。Lua改变了开发者为移动设备编写应用的方式,目前苹果App Store中已经有很多用lua开发的应用和游戏。
通过本文提供的基于lua和corona框架的趣味手机游戏的设计与实现,可以看到通过紧跟技术发展脚步,运用移动应用开发框架搭建适合游戏开发的环境设计一个游戏的过程,。
参考文献:
[1] 李广松,陈蓉征.基于Lua的网络游戏脚本系统设计[J].现代计算机,2009(12).
[2] 杨 杰.Lua——以总统为名的移动开发语言新贵[J].软件技术与研究,2014(4).
[3] 张德富,郑捷敏.人机丈棋游戏算法研[J].科技情报开发与经济,2008(11).