使用Lua表格作为二维数组

我是一个Lua初学者,尝试使用Love2D库在Lua中创建某些内容。

在加载功能中,我创建一个表并上传它,其中包含元素(这些元素是数字),以便稍后使用它作为多维数组。

然后我创建一个函数来更改表中的内容,因为我只是试验表格,所以只有一个更改的值。

之后,我在32个列和16个行的矩阵中打印出表的元素。

显然,这意味着'Table [posX * posY]'也不起作用,因为乘法的结果是一个数字,如“4”,该操作将更改每个元素,其中“X坐标+ Y坐标= posX * posY”是真实的。在示例代码中,该方程的右侧是4。

一个小问题:为什么会这样?

主要问题是:如何精确识别'MapTable'的元素?如何向Lua表格实现X和Y维度?使用它们作为二维数组?可能是表的表?

点赞
用户2320153
用户2320153

Alex展示的,问题不在于表格的工作方式,而是我错误地显示了数字。表格可以用作一维数组,当这样使用时一切都很好。

尽管这不是将它们用作二维数组的解决方案,但主要问题已经解决了。

2013-08-13 14:57:18
用户2279620
用户2279620

你也可以使用多维表格。像这样:

local MapTable = {}
local Maximum_X, Maximum_Y = 32, 16
local Start_X, Start_Y = 64, 32

function love.load()
    for y = 1, Maximum_Y do
        local row = {}
        for x = 1, Maximum_X do
            table.insert(row, 2)
        end
        table.insert(MapTable, row)
    end
end

function love.draw()
    for y, row in ipairs(MapTable) do
        for x, idx in ipairs(row) do
            love.graphics.draw(Tileset[idx], Start_X + 32*(x-1), Start_Y + 32*(y-1))
        end
    end
end
2013-08-13 15:17:06