在多维数组元素内创建表格并绘制它。

我正在尝试创建敌人数组并进行绘制,但一直出现错误,如果不是关于数组本身,就是关于绘制函数中的错误参数:main.lua:38: 参数#2 为 'rectangle'(期望数字,得到 'nil') 请问有人可以解释一下我在这里做错了什么吗?是泛型 for 的使用方式吗?

数组代码:

enemies = {}
for i=0,7 do
    enemies[i] = {}
    for j=0,2 do
        enemy = {}
        enemy.width = 40
        enemy.height = 20
        enemy.x = i * (enemy.width + 60) + 100
        enemy.y = enemy.height + 100
        table.insert(enemies[i],enemy)
    end

end
end

绘制函数:

--enemy
love.graphics.setColor(0,255,255,255)
for i,v in ipairs(enemies) do
    love.graphics.rectangle("fill", v.x, v.y, v.width, v.height)
end
点赞
用户2198692
用户2198692
enemies = {}
for i=1,8 do
    for j=1,3 do
        local enemy = {}
        enemy.width = 40
        enemy.height = 20
        enemy.x = i * (enemy.width + 60) + 100
        enemy.y = enemy.height + 100
        table.insert(enemies, enemy)
    end
end

我不知道这是否是您打算的,不过无论如何,您得到nil的原因是您的代码中,ipairs 返回了另一个包含三个enemy实例的表。为了让您的代码生效,您必须添加一个额外的ipairs:

for i,v in ipairs(enemies) do
    for _,e in ipairs(v) do
        love.graphics.rectangle("fill", e.x, e.y, e.width, e.height)
    end
end

请记住使用local来声明函数的临时变量。Lua数组从1开始而不是0。

2013-05-20 19:46:48