二维阵列上的宝石迷阵型逻辑

时间:2013-10-22 04:37:50

标签: lua logic

我试图绕过逻辑,我想不出最好的做法。

我有一个二维数组[10] [6] 10是列数,6是行数。我想检查数组中的3个或更多匹配项。有没有人知道一个好的例子或有解决方案的想法?我在线查看了一些资源,但我看到的所有资源都缺乏评论,很难阅读。

如果行中并排有3个或更多,或者列中有3个,则这些项会创建匹配。

2 个答案:

答案 0 :(得分:1)

我不确定这是否是最佳方式,但这就是我的工作方式。这是lua代码

function checkWinningsFunction()
    --Check x axis for matches
    for i=1,6 do
        for n=1,8 do

            if(reelImages[n][i].value == reelImages[n+1][i].value and reelImages[n+1][i].value == reelImages[n+2][i].value) then
                --Match
            end

        end
    end

    --Check y axis for matches
    for i=1,4 do
        for n=1,10 do

            if(reelImages[n][i].value == reelImages[n][i+1].value and reelImages[n][i+1].value == reelImages[n][i+2].value) then
                --Match
            end

        end
    end
end

答案 1 :(得分:1)

这与@Dave的想法相同,可能更容易理解(t是您的2D数组):

for y=1,6 do -- for each row
  for x=1,10-2 do -- for each possible horizontal triplet
    if t[x+1][y] == t[x][y] and t[x+2][y] == t[x][y] then
      -- match
    end
  end
end

for x=1,10 do -- for each column
  for y=1,6-2 do -- for each possible vertical triplet
    if t[x][y+1] == t[x][y] and t[x][y+2] == t[x][y] then
      -- match
    end
  end
end

它可能不是最快的算法,但它是最简单的算法,其他任何东西的潜在性能提升都不值得增加IMO的复杂性。

编辑:我没有意识到Dave是OP :)所以是的,这种方法有效。