[Lua] utilisation de tables avancée
Bonjour tout le monde je suis nouveau ici.
Je m'appelle Max et je programme en lua depuis 5 ans et c++ depuis 2 ans.
:roll:
Ayant suivit votre tuto (assez complexe mais compréhensible) sur le lua et le c++ (partie 1)
je souhaitais pouvoir récupérer une table au lieu de la "table[2]" de votre exemple, une table par exemple :
matable = {}
for a = 1, 16 do
matable[a] = {x = 0, y = 0, id = 0}
end
voila :) merci se serrait gentil !
ps : le code suivant que jutilise ne me permet que de faire ceci :
maptable = {}
for a = 1, 16 do
matable[a] = {}
end
et le fameux code c++ que j'aimerais que vous m'aidiez à modifier ^^
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
for(int i = 0; i < 16; i ++)
{
//récupération du contenu d'un tableau Lua depuis le code C
lua_settop(state,0);
lua_getglobal(state,"matable");
if (!lua_istable(state,1))
{
fprintf(stderr,"la variable tableau n'est pas un tableau\n");
lua_pop(state,1);
}
else
{
// on veut adresser la variable d'indice 2
lua_pushnumber(state,i);
// maintnenant on a dans la pile l'indice à la place 1 et le tableau
// à la place 2 (car on a empilé l'indice par dessus)
// on demande à Lua de remplacer le haut de la pile (donc notre indice)
// par le contenu de la case du tableau en lui donnant l'adresse du tableau
lua_gettable(state,-2); //ne pas changer le 2
// on vérifie la donnée recuperée
if (lua_isstring(state,-1))
{
perso[i].value = lua_tostring(state,-1);
//Ici jaimerai recup genre
//Perso[i].x = matable[i].x
//Perso[i].y = matable[i].y
//etc...
}
// on dépile les deux éléments (la valeur de la case et le nom
// du tableau)
lua_pop(state,i);
}
} |
Je vous remercie ! :D