让方块移动

对象p代表player:

p={
  x=10,
  y=10,
  vx=0,
  vy=0,
  w=20,
  h=20,
  c=2,
  r="p" --role=player  
}

与之前的版本相比,这里多了vx与vy,代表一个向量,用来设置p的移动。

同时设置一个gos数组(lua里叫做table),并把player加进去:

gos={}
table.insert(gos,p)

如何让方块移动呢?只需要改变坐标即可,也就是p的x和y。

在input函数中,使用btn方法来处理键盘事件:

function input()
  if btn(0) then
     p.vy=-1
  elseif btn(1) then
     p.vy=1
  elseif btn(2) then
     p.vx=-1
  elseif btn(3) then
     p.vx=1
  else
     p.vx=0
     p.vy=0
  end
end

通过代码可知,0为上,1为下,2为左,3为右。

相应地,update变为:

function update()
  for i,v in ipairs(gos) do
    v.x=v.x+v.vx
    v.y=v.y+v.vy
  end
end

draw变为:

function draw()
  for i,v in ipairs(gos) do
    rect(v.x,v.y,v.w,v.h,v.c)
  end
end

这样,按上下左右键就实现了player的移动效果。

tic80的全部键盘事件,请阅读下一篇《键盘代码》。