【发布时间】:2015-11-21 01:07:08
【问题描述】:
我正在通过一个简单的蛇游戏来试验 lua,但我不断收到这个错误,我被困住了。
代码:
function love.load()
width, height = love.window.getDimensions()
start= {x= width/2, y = height/2}
snake = {}
snake.dir = 0
snake.speed = 300
snake.body = {}
for i = 0, 5, 1 do
table.insert(snake.body,{x=start.x,y=start.y + i })
end
end
function love.keypressed(key)
if key == "left" and snake.dir ~= 1 then
snake.dir = 0
end
if key == "right" and snake.dir ~= 0 then
snake.dir = 1
end
if key == "up" and snake.dir ~= 3 then
snake.dir = 2
end
if key == "down" and snake.dir ~= 2 then
snake.dir = 3
end
end
function love.update(dt)
head = snake.body[0]
if snake.dir == 0 then
head = {head.x - snake.speed*dt, head.y}
end
if snake.dir == 1 then
head = {head.x + snake.speed*dt, head.y}
end
if snake.dir == 2 then
head = {head.x, head.y - snake.speed*dt}
end
if snake.dir == 3 then
head = {head.x, head.y + snake.speed*dt}
end
table.insert(snake.body,0,head)
table.remove(snake.body,#snake.body)
end
function love.draw()
end
错误是在函数更新中。
另外,我将如何遍历每个蛇的部分?就像 lua 中的 foreach 等价物是什么?感谢您的帮助
【问题讨论】:
-
Lua 表索引是从 1 开始的。在这些行中将最小索引从 0 更改为 1:
for i = 0, 5, 1 do、head = snake.body[0]和table.insert(snake.body,0,head) -
也将
head = {head.x - snake.speed*dt, head.y}改为head = {x = head.x - snake.speed*dt, y = head.y}