我有以下代码
tile_width = 64;
tile_height = 64;
tile_map = {
{1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,3,1,1,1,1,1,1},
{1,1,1,1,1,3,1,1,1,1,1,1},
{1,1,1,1,1,3,1,1,1,1,1,1},
{1,1,1,1,1,3,1,1,1,1,1,1},
{1,1,1,1,1,1,2,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,2,1,1,1,1,1}
}
i=1;
j=1;
while i<table.getn(tile_map) do
while j<table.getn(tile_map[i]) do
print(tile_map[i][j]);
x = (j * tile_width / 2) + (i * tile_width / 2)
y = (i * tile_height / 2) - (j * tile_height / 2)
print(x);
print(y);
j = j+1;
end
i = i+1;
end
Run Code Online (Sandbox Code Playgroud)
并且它可以工作,但它只显示第一行值,而不会进入第二行,第三行等.
我想用另一种语言做什么
for (i = 0; i < tile_map.size; i++):
for (j = 0; j < tile_map[i].size j++):
draw(
tile_map[i][j],
x = (j * tile_width / 2) + (i * tile_width / 2)
y = (i * tile_height / 2) - (j * tile_height / 2)
)
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?
谢谢!
这是代码的清理版本.
注意变化:
local变量而不是全局变量.#的表的大小,而不是table.getn().for循环而不是while.如果您取消注释io.write()并注释掉prints,您将以可读的方式打印出您的地图.
local tile_width = 64
local tile_height = 64
local tile_map = {
{1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,3,1,1,1,1,1,1},
{1,1,1,1,1,3,1,1,1,1,1,1},
{1,1,1,1,1,3,1,1,1,1,1,1},
{1,1,1,1,1,3,1,1,1,1,1,1},
{1,1,1,1,1,1,2,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,2,1,1,1,1,1}
}
for i = 1, #tile_map do
local row = tile_map[i]
for j = 1, #row do
--io.write(row[j])
print(row[j])
local x = (j * tile_width / 2) + (i * tile_width / 2)
local y = (i * tile_height / 2) - (j * tile_height / 2)
print(x)
print(y)
end
--io.write("\n")
end
Run Code Online (Sandbox Code Playgroud)
PS确保您已阅读Lua第2版中的编程.请注意,在线提供的版本是第一版,它描述了较旧的Lua 5.0.