2016-03-28 12 views
2

Ich benutze/lerne Corona SDK und versuche, ein Kartenspiel zu erstellen. Ein Spieler hat eine Reihe einzigartiger Karten, die aus seiner Hand gezogen werden. Diese gezogenen Karten sollten vom Deck entfernt werden. Ich benutze dafür eine Tabelle mit Tabellen. Ich habe Probleme, die gezeichneten Karten zu entfernen. Ich versuche, die folgenden:So entfernen Sie eine Tabelle aus einer Tabelle mit ihrem Index

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 

Die cardTable auf die folgenden ähnelt:

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

Dies ist innerhalb einer for-Schleife, die 5 mal für eine Hand von 5 Karten iteriert.

bearbeiten

erkannte ich, dass ich einen Fehler gemacht, während die Karten in den cardTable einlegen. Ich habe mehrere Kopien von jeder Karte eingefügt, so dass es scheint, dass sie nicht entfernt wurde. Ich hätte das ursprünglich überprüfen sollen.

+0

remove 'handTable' Element mit seinem Index? – Albert

+1

Sieht vernünftig aus. Was * ist * dein Ärger? – siffiejoe

Antwort

0

Ich versuchte dies und ich nicht irgendein Problem haben, obwohl es ähnlich wie bei Ihnen ist:

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

Sie Code sieht gut aus, so dass ich davon ausgehen, es einige Tippfehler ist oder aufgebaut Fehler. Sie tun jedoch zu viel unnötige Arbeit. Sie brauchen den Index nicht wirklich zu finden - Sie haben ihn gerade selbst erstellt/erhalten. Warum suchst du etwas, das du bereits kennst? Sie müssen den Wert auch nicht separat abrufen, da den Wert zurückgibt, den es entfernt hat. Entfernen Sie einfach von cardTable und fügen Sie das, was Sie entfernt haben, sofort zu handTable.

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

Ich habe einen Tippfehler, es war mit dem Hinzufügen der Elemente zu meinem Tisch. Ich füge mehrere Kopien derselben Karte ein, um damit zu beginnen. –