复制lua表时不匹配

时间:2013-04-13 19:06:26

标签: lua nested compare hex lua-table

我正在使用Lua和Love2d编写游戏,但在处理嵌套表时遇到了麻烦。

我有一个功能,它贯穿一个包含与墙壁,按钮等对应的数字的表格,并根据键打印彩色块。其中一个表的示例如下所示:

map = {
    { 1, 1, 1, 1, 1, 1, 1, 1, 1 }
    { 1, 0, 0, 0, 0, 0, 0, 0, 1 } 
    { 1, 0, 1, 1, 2, 0, 0, 0, 1 } 
    { 1, 0, 0, 0, 0, 0, 0, 0, 1 } 
    { 1, 1, 1, 1, 1, 1, 1, 1, 1 } 
}

渲染时效果很好。但是,当我尝试使用从文本文件中读取此数据的函数创建此相同的表时,如下所示:

    111111111
    100000001 
    101120001 
    100000001 
    111111111

它会创建一个似乎相同的表,但是当我尝试渲染它时它根本不起作用。

所以我尝试使用一些打印出表内容的代码进行调试,虽然内容相同,但描述嵌套表的十六进制位是不同的。例如:

读取地图文件的第一个嵌套表:

1   table: 0x106c5a720
1   1
2   1
3   1
4   1
5   1
6   1
7   1
8   1
9   1

读取手动创建的表的第一个嵌套表:

1   table: 0x106c64120
1   1
2   1
3   1
4   1
5   1
6   1
7   1
8   1
9   1

这里发生了什么?这些值都是相同的,但发生了一些奇怪的事情。

编辑:这是渲染地图以供参考的代码:

for y=1, #map do
    for x=1, #map[y] do
      if map[y][x] == 1 then
        print("found a wall")
        love.graphics.rectangle("fill", x * 30, y * 30, 30, 30)
      elseif map[y][x] == 2 then
        print("found a button")
        love.graphics.setColor(255, 0, 0)
        love.graphics.rectangle("fill", x * 30, y * 30, 30, 30)
        love.graphics.setColor(0, 0, 255)
      end
    end
end

1 个答案:

答案 0 :(得分:2)

从文本文件中读取数据时,您将获得字符串 在原始map表格中,您有数字 数字不等于字符串。

assert(1 ~= '1')