Les tables sont basiquement des listes dans lesquelles nous pouvons stocker des valeurs.
Vous créez des tables avec des accolades ({ }) :
|
|
Nous venons juste de créer une table nommée fruits. Maintenant, nous avons besoin de stocker des valeurs à l’intérieur. Il y a plusieurs façons de faire.
La première possibilité est de mettre des valeurs entre les parenthèses :
|
|
Nous pouvons aussi utiliser la fonction table.insert. Le premier argument de la fonction est la table et le second argument, la valeur que nous souhaitons enregistrer à l’intérieur de celle-ci :
|
|
Alors maintenant, après avoir exécuté love.load, notre table contient :
- « apple »
- « banana »
- « pear » Pour le prouver, affichons les données à l’écran. Pour ça, nous allons utiliser love.graphics.print :
|
|
Quand vous lancez le jeu, vous devriez voir le texte “test” d’écrit. Nous pouvons accéder aux valeurs de notre table en écrivant le nom de la table suivi de crochets ([ ]) (Pas des accolades ni des parenthèses mais bien des crochets). Dans ces crochets, nous écrivons le chiffre que nous voulons. Il indique la position dans le tableau et à quoi il correspond
Comme je l’ai dit, les tables sont une liste de valeurs. Nous avons mis “apple” puis “banana” donc ils sont en première et seconde position dans la liste. Ensuite nous avons ajouté “pear”. Il est donc placé à la 3ème position dans la liste. En position 4, il n’y a pas de valeur (pas encore) puisque nous n’avons que 3 valeurs. Donc si nous voulons afficher “apple”, nous devons donner la 3ème position de la liste :
|
|
Maintenant nous voulons dessiner les 3 fruits. Nous pouvons utiliser love.graphics.print 3 fois avec une entrée différente de la table … :
|
|
… mais imaginons si nous avons 100 valeurs de la table à afficher. Heureusement nous avons une solution pour ça : la boucle for !
La boucle for
La boucle for est une solution pour répéter une partie de code un certain nombre de fois. On crée une boucle for comme ceci :
|
|
Si vous exécutez le jeu vous devriez voir s’afficher hello 1, hello 2, hello 3 … jusqu’à 10.
Pour créer une boucle for, il faut écrire for en premier. Ensuite, vous devez écrire une variable et donner une valeur numérique. C’est là que la boucle for commence. La variable peut avoir n’importe quel nom mais il est commun de l’appeler i. La variable ne peut être utilisé qu’à l’intérieur de la boucle for (comme les fonctions et leurs paramètres). Ensuite, vous écrivez le nombre de fin de boucle.
Donc par exemple for i=6, 18 do commencera à 6 et bouclera jusqu’à ce que i ait la valeur 18.
Il y a aussi une 3ème valeur qui est un nombre facultatif. C’est la valeur d’incrémentation entre chaque boucle. for i=6, 18, 4 do donnera comme valeur de i : 6, 10, 14, 18. Avec ça, vous pouvez faire une boucle qui décrémente avec -1.
Notre tables commence à 1 et à 3 valeurs donc elle s’écrit :
|
|
Quand vous exécutez le jeu, vous allez voir s’afficher les 3 fruits. Dans la première boucle, le programme affiche fruits[1], puis dans la seconde fruits[2] et pour finir fruits[3].
Édition de table
Mais que faire si nous voulons ajouter ou supprimer une valeur de la table ?
Nous devrions changer le 3 par un autre nombre. Pour ça, nous allons utiliser #fruits.
Avec le signe #, nous obtenons la taille de la table :
|
|
Utilisons cette connaissance pour dessiner les 3 fruits non plus en console mais dans la fenêtre de jeu :
|
|
Si vous lancez le jeu, vous devriez voir les 3 noms dessinés, sauf qu’ils sont tous sur la même position! Nous pouvons résoudre ça en les affichant sur différentes hauteurs :
|
|
Maintenant, « apple » sera dessiné sur la position y $100+50×1=150$. Ensuite “banana” sera en 200 et “pear” en 250.
Si nous ajoutons un autre fruit, nous n’aurons rien besoin de changer. Le décalage vers le bas se fera automatiquement. Ajoutons « pineapple » pour essayer :
|
|
Maintenant que nous savons ajouter des éléments dans une table, il serait bon de pouvoir supprimer des valeurs de celle-ci. Pour cela, nous utilisons table.remove. Le premier argument est la table dans laquelle nous voulons enlever quelque chose et le second argument, la position de l’élément à supprimer donc, si nous voulons supprimer banana nous ferons comme suit :
|
|
Lorsque nous lancerons le jeu, nous verrons que banana n’est plus dessiné et que pear et pineapple ont été déplacés vers le haut.
Quand vous supprimer une valeur dans une table avec table.remove, tous les éléments de la table sont remontés donc ce qui était en position 3 sera en position 2 et se qui était en position 4 sera en 3 … .
Vous pouvez aussi ajouter ou changer des valeurs directement dans la table. Par exemple, nous pouvons changer “apple” en “tomato” :
|
|
ipairs
Revenons à la boucle for. Il y a une autre façon et un moyen plus simple de parcourir la table en utilisant ipairs :
|
|
Cette boucle for est ce que nous appelons une itération et elle se fait sur toute la table. La variables i nous donne la position et v la valeur à cette position. C’est essentiellement un raccourci au lieu de mettre fruits[i]. Par exemple, dans la première itération, les valeurs des variables i seraient 1 et v serait « apple ». Dans la deuxième itération, i et v seraient respectivement 2 et « pear ».
Mais comment ça fonctionne ?
Pourquoi la fonction ipairs permet-elle cela ?
C’est pour une autre fois. Pour l’instant, tout ce que vous devez savoir, c’est que ipairs est essentiellement un raccourci pour les éléments suivants :
|
|
Utilisons ipairs pour dessiner notre table :
|
|
Résumé
Les tables sont des listes dans lesquelles nous pouvons stocker des valeurs. Nous les stockons à la création, avec table.insert ou avec table_name[1] = “une valeur”. Nous pouvons obtenir la taille de la table avec le symbole # comme ceci : #table_name.
Avec des boucles for, nous pouvons répéter des morceaux de code un certain nombre de fois. Nous pouvons aussi utiliser une boucle for pour itérer (parcourir) une table.