如何使用索引从表中删除表

时间:2016-03-28 00:36:19

标签: lua corona

我目前正在使用/学习Corona SDK,我正在尝试制作纸牌游戏。玩家拥有一套从他们手中抽出的独特牌。这些卡片应从甲板上移除。我正在使用一张桌子。我在删除抽出的卡片时遇到问题。我正在尝试以下内容:

local tbl = cardTable[math.random(#cardTable)]  --tbl = random card drawn
table.insert(handTable, tbl)  --insert the table into a hand table
local indx = table.indexOf(cardTable, tbl) --get the index of the removed
table.remove(cardTable,indx) --remove that index

cardTable类似于以下内容:

cardTable = {{a,b,c},{d,e,f},{g,h,i},...}

这是针对5张牌的一次for循环迭代5次。

修改

我意识到在将卡插入cardTable时我犯了一个错误。我插入了每张卡的多个副本,使它看起来没有被删除。我本来应该检查过这个。

2 个答案:

答案 0 :(得分:1)

你的代码看起来很好,所以我认为它是一些拼写错误或设置错误。但是你做了太多不必要的工作。你真的不需要找到索引 - 你只是自己从用户那里生成/获得它。为什么去寻找你已经知道的东西?您也不需要单独检索值,因为table.remove返回它删除的值。只需从cardTable中删除,然后立即将您删除的内容插入handTable

local indx = math.random(#cardTable) -- obtain draw and remove index in any way
table.insert(handTable, table.remove(cardTable, indx))

答案 1 :(得分:0)

我试过这个,即使它与你的相似,我也没有任何问题:

local t = { {"a","b","c"}, {d,e,f}, {g,h,i}}

local tbl = t[math.random(#t)]  --tbl = random card drawn
print(tbl)
local indx = table.indexOf(t, tbl) --get the index of the removed
print(indx)
table.remove(t,indx) --remove that index
print(t[indx])