我試圖把我的頭圍繞邏輯,我想不出做到這一點的最佳方式。2維陣列上的珠光寶石類型邏輯
我有一個2d數組[10] [6] 10是列數,6是行數。我想檢查數組中的3個或更多匹配項。有沒有人知道一個很好的例子或有解決方案的想法?我在網上查看了一些資源,但是我看到的所有資源都很缺乏評論,很難閱讀。
如果行中有3個或更多的並排或3個在列中彼此重疊,則這些項目將創建匹配項。
我試圖把我的頭圍繞邏輯,我想不出做到這一點的最佳方式。2維陣列上的珠光寶石類型邏輯
我有一個2d數組[10] [6] 10是列數,6是行數。我想檢查數組中的3個或更多匹配項。有沒有人知道一個很好的例子或有解決方案的想法?我在網上查看了一些資源,但是我看到的所有資源都很缺乏評論,很難閱讀。
如果行中有3個或更多的並排或3個在列中彼此重疊,則這些項目將創建匹配項。
這是相同的思路@戴夫,也許更容易理解(t
是你的二維數組):
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的增加。
編輯:我沒有意識到戴夫是OP :)所以是的,該方法的作品。
這更清潔,我將在我的代碼中使用它。 x和y更有意義。 – Dave
我不確定這是否是最好的方式,但這是我的工作。這是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
只是*他們會怎麼匹配?按行,按列,還是按m?n框? – Makoto
他們將能夠匹配的行或列。如果在排中有3個或更多的並排,那麼它會在列中算作一場比賽或3場比賽,這將是一場比賽。 – Dave