【发布时间】:2014-05-15 10:09:31
【问题描述】:
我正在尝试制作一个游戏并且我有一个二维数组
所以它是这样的:
Grid[x][y]
让我们假装这些值在其中:
Column 1 Column 2 Column 3 Column 4 Column 5
1 2 5 2 5
2 2 3 1 1
1 4 3 4 5
1 3 3 3 5 <-- match this row
3 5 3 4 5
2 4 3 4 5
2 4 4 4 5
在中间(索引 4)我想检查是否有至少 3 次相同的数字,如果有 4 次或什至 5 次呢。
你如何检查这个?什么是找到相同内容并删除相同内容的好方法......我一直想弄清楚制作这样的东西的逻辑
这是我尝试过的:
grid = {}
for x = 1, 5 do
grid[x] = {finish = false}
for y = 1, 7 do
grid[x][y] = {key= math.random(1,4)}
end
end
function check(t)
local tmpArray = {}
local object
for i = 1,5 do
object = t[i][1].key
if object == t[i+1][1].key then
table.insert( tmpArray, object )
else
break
end
end
end
print_r(grid)
check(grid)
print_r(grid)
print_r 打印网格的位置:
function print_r ( t )
local print_r_cache={}
local function sub_print_r(t,indent)
if (print_r_cache[tostring(t)]) then
print(indent.."*"..tostring(t))
else
print_r_cache[tostring(t)]=true
if (type(t)=="table") then
for pos,val in pairs(t) do
if (type(val)=="table") then
print(indent.."["..pos.."] => "..tostring(t).." {")
sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
print(indent..string.rep(" ",string.len(pos)+6).."}")
else
print(indent.."["..pos.."] => "..tostring(val))
end
end
else
print(indent..tostring(t))
end
end
end
sub_print_r(t," ")
end
它没那么好用,因为我检查了那个索引之后的索引,如果不一样,它不会添加最后一个.. 我不知道这是否是最好的方式......
如果我“删除”匹配的索引,我的计划是将其上方或下方的索引行移动到 4 个索引行中......但首先要做的是
【问题讨论】:
-
您的意思是要删除至少有两个相同值字段的行吗?此外,您应该尝试 something 并发布您尝试过的内容,否则您可能会遇到关闭此问题的风险。
-
@Schollii 我不好意思把我的解决方案贴在这里。我尝试了分配 if else 语句。
-
您只对上/下和左/右匹配感兴趣吗?还是对角线匹配?
-
@Mike Corcoran 我只想检查 4 的索引是否匹配..
-
@MichaelAngelo 找到相同并删除它们是非常不同的操作;如果您删除条目,您的表格将不再是网格。请澄清,也许显示删除后网格应该是什么样子。说真的,你应该把尴尬放在一边,这是一个学习的论坛,适合所有经验水平的人。唯一的尴尬是不表现出任何努力自己解决它;)
标签: arrays lua matching lua-table