我正在使用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
答案 0 :(得分:2)
从文本文件中读取数据时,您将获得字符串
在原始map
表格中,您有数字
数字不等于字符串。
assert(1 ~= '1')