LUAT实例教程:儿童手表小游戏开发
本教程目的:主要介绍小游戏的入口菜单,以及怎样在现有游戏的基础上添加新的小游戏。
小游戏界面图片
界面介绍
主菜单里有个小游戏菜单,点击一下进入游戏列表界面。每个界面可以显示3个游戏菜单。上下滑动显示不同的游戏菜单。点击相应的菜单,就可以进入相应的游戏去玩了。
游戏代码介绍
游戏菜单是在minigame.lua里实现的。
minigame() 入口函数
local items = {
'math', 'english', 'chinese', 'guessnumber', 'baicizhan', 'guessidiom','mysnake'
}
items 应用游戏列表图片名称,例如:math 对应图片是放在image文件夹下的math.png
local enters = {
quickmath, english100, hanzi140, guessnumber, baicizhan, guessidiom, mySnake
}
enters 放对应游戏的入口函数,例如:数学对应的入口函数为:quickmath,quickmath是在文件夹windows下quickmath.lua脚本里实现的。
ui.window 创建游戏窗口对象。
draw = function()
putimage()
disp.update()
end,
画出当前窗口界面。
local function putimage()
disp.setbkcolor(BLACK)
disp.clear()
disp.putimage(bg_image,0, 0)
local highlight2 = highlight*3
for i = 0,2 do
local item = (highlight2 % #items) + 1 + i
if item > #items then return end
disp.putimage(items[(highlight2 % #items) + 1 + i] .. '.png', 12, i*42+5)
end
end
每个游戏界面是有三个游戏菜单组成,disp.putimage(bg_image,0, 0)
画出游戏背景图。
for i = 0,2 do
local item = (highlight2 % #items) + 1 + i
if item > #items then return end
disp.putimage(items[(highlight2 % #items) + 1 + i] .. '.png', 12, i*42+5)
end
画出当前窗口对应的游戏列表,最多显示3个游戏。
pendown = function(x,y)
lasty = y
moved = nil
end,
触屏按下消息处理,主要记录按下时候的y坐标。
penup = function(x,y)
if not moved then
if y < 37 then
ui.enter(enters[highlight*3 + 1]())
elseif y > 47 and y < 79 then
ui.enter(enters[highlight*3 + 2]())
elseif y > 89 then
ui.enter(enters[highlight*3 + 3]())
end
return
end
if offset > -10 and offset < 10 then
offset = 0
disp.update()
return
end
local delta = offset > 0 and 1 or -1
offset = 0
highlight = (highlight - delta) % ((#items+2)/3)
putimage()
disp.update()
end,
手离开触屏上报的消息,会根据moved状态进行不同操作。上下滑动会切换不同游戏菜单。点击会进入相应的游戏操作。
if y < 37 then
ui.enter(enters[highlight*3 + 1]())
elseif y > 47 and y < 79 then
ui.enter(enters[highlight*3 + 2]())
elseif y > 89 then
ui.enter(enters[highlight*3 + 3]())
end
根据点击坐标y和highlight高亮菜单项来决定具体进入哪个游戏。
根据highlight高亮菜单项,来决定显示哪些菜单。
penmove = function(x,y)
moved = true
local movey = y -lasty
if movey > -10 and movey < 10 then return end
offset = offset + movey
if offset > 128 then offset = 128
elseif offset < -128 then offset = -128
end
lasty = y
end,
触屏上报移动消息,根据这个算出offset偏移量,然后在上报penup消息的时候根据这个offset算出当前的高亮菜单项highlight。
如何添加新游戏到当前菜单
1.在main.lua里require自已的游戏脚本。
例如:require"quickmath" 就是添加了实现数学游戏的quickmath.lua脚本。
2.在minigame.lua里的items表里添加对应游戏列表图片。注意图片是PNG格式。要用现有图片的格式。例如:'math'
3.在minigame.lua里的enters表里添加应用游戏的入口函数。例如:quickmath。
新游戏按要求放在上面2,3两项的表后之后,这个新游戏菜单就会添加到原来游戏的后面了。
4.如有铃声资源,则放在audio文件夹下。播放铃声直接调下面接口即可。
audio.play('/ldata/game_over.mp3')。/ldata/这个固定不变,game_over.mp3这个替换成自个铃声资源即可。
具体游戏开发就靠各位自个开动脑筋了,也可以参考现有游戏进行开发。
现有游戏为:数学,英语,语文,猜数列,百词斩,猜成语,贪吃蛇。
对应游戏脚本:quickmath.lua english100.lua hanzi140.lua
guessnumber.lua baicizhan.lua guessidiom.lua snake.lua