Vous lisez 2 fils de discussion
  • Auteur
    Messages
    • #70634
      hbx
      Participant

      Bonjour, j’ai un soucie avec la table.insert, j’ai ce code ci :

      
      brique = {}
      brique.w = 40
      brique.h = 20
      brique.x = 0
      brique.y = 0
      brique.exist = true
      
      listBriques = {}
      for j=1, nbBriques_lg, 1 do
            brique.x = (j-1) * brique.w
            brique.y = (1-1) * brique.h + 30
            table.insert(listBriques, brique) 
            print("listBriques[", j,"].x : ", listBriques[j].x)
      end
      

      et print m’affiche :
      listBriques[1].x : 0
      listBriques[2].x : 40
      listBriques[3].x : 80
      listBriques[4].x : 120
      listBriques[5].x : 160
      listBriques[6].x : 200
      listBriques[7].x : 240
      listBriques[8].x : 280
      listBriques[9].x : 320
      listBriques[10].x : 360
      listBriques[11].x : 400
      listBriques[12].x : 440
      listBriques[13].x : 480
      listBriques[14].x : 520
      listBriques[15].x : 560
      listBriques[16].x : 600
      Mais quand la boucle est fini et que j’affiche donc en dehors de ma boucle le premier indice donc 1 comme ceci : print(« listBriques[« 1 »].x : « , listBriques[1].x) j’obtient
      listBriques[1].x : 600 et si j’affiche le dernier listBriques[16].x et bien j’obtient aussi 600 donc je n’y comprends rien si quelqu’un avait la solution ? Merci par avance.

    • #70637
      duruti
      Participant

      ton code ne va pas car tu écrase ta variable brique qui elle est globale
      Or en Lua les tables sont transmise par reference, c’est a dire que l’on stocke l’adresse où est stocké la variable, Avec ton print, tu as en faite la reference à ta dernière modification de brique ce qui impact tous les autres.
      Pour régler ça il faut mettre une variable en local dans ta boucle

      listBriques = {}
      for j=1, 10, 1 do
          local brique = {}
            brique.w = 40
            brique.h = 20
            brique.x = 0
            brique.y = 0
            brique.exist = true
            brique.x = (j-1) * brique.w
            brique.y = (1-1) * brique.h + 30
            table.insert(listBriques, brique) 
            print("listBriques[", j,"].x : ", listBriques[j].x)
      end
      
      print("j'affiche ma listBriques[",1,"].x : " , listBriques[1].x)

      Voilà en espérant t’avoir aidé

    • #70638
      hbx
      Participant

      Oui merci pour ton aide.

Vous lisez 2 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.