2016-03-28 2 views
2

В настоящее время я использую/изучаю 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 = {{а, Ь, с}, {д, д, е}, {г, з, }, ...}

Это внутренняя петля для повторения 5 раз за руку из 5 карт.

Редактировать

я понял, что сделал ошибку при вставке карты в cardTable. Я вставлял несколько копий каждой карты, что казалось, что она не удаляется. Я должен был проверить это первоначально.

+0

удалить элемент 'handTable' с его индексом? – Albert

+1

Выглядит разумно. Что это * твоя проблема? – siffiejoe

ответ

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]) 
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)) 
+0

У меня есть опечатка, это было с добавлением элементов к моему столу. Сначала я вставляю несколько копий одной и той же карты. –