我正在使用 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