Dans le chapitre précédent, nous avons utilisé les tables comme des listes numérotées mais nous pouvons stocker des valeurs d’une manière différente à savoir avec des chaînes de caractères :
|
|
“width” est appelé une clef ou une propriété. La table rectangle a maintenant une propriété “width” avec une valeur de 100. Nous n’avons pas besoin d’utiliser les chaînes dès que nous voulons créer une propriété. Un point (.) est le raccourci pour table_name[“propriété”]. Ajoutons quelques propriétés :
|
|
Maintenant que nous avons nos propriétés nous pouvons commencer à dessiner le rectangle :
|
|
Faisons le bouger !
|
|
Maintenant, nous avons un rectangle qui bouge de nouveau mais pour montrer la puissance des tables je vais créer de multiples rectangles qui bougent.
Pour ce faire, nous allons utiliser une table comme liste et nous aurons une liste de rectangles. Déplacez le code de love.load dans une nouvelle fonction et créez une nouvelle table pour love.load :
|
|
Maintenant, à chaque fois que nous appelons creatRect, un nouveau objet rectangle sera ajouté à notre liste. C’est bien une table remplie de table.
Faisons qu’à chaque appuie sur la touche espace, nous appelons createRect. Nous pouvons faire ça avec le callback love.keypressed :
|
|
Dès que nous appuyons sur une touche, LÖVE appellera love.keypressed et passera la touche pressée en argument. Si la touche est « espace », cela appellera createRect.
La dernière chose à faire est de changer nos fonctions update et draw. Nous devons itérer où afficher la liste des rectangles :
|
|
Et maintenant, si nous exécutons le jeu, un nouveau rectangle qui bouge apparaît à chaque fois que la touche espace est appuyée.
Encore une chose ?
Il y avait beaucoup de code dans ce petit chapitre. Je peux imaginer que vous soyez un peu dérouté alors passons en revu le code une fois de plus :
- Dans la fonction love.load nous créons une table appelée listOfRectangles
- Quand nous pressons la touche space (espace), LÖVE appelle love.keypressed et dans la fonction, nous vérifions si la touche est « space ». Si c’est le cas, nous appelons la fonction createRect.
- Dans createRect nous créons une nouvelle table. Nous lui donnons des propriétés comme x et y et nous la stockons dans la liste listOfRectangles
- Dans love.update et love.draw nous itérons cette liste de rectangles pour la mettre à jour et dessiner chaque rectangle.
Les fonctions
Un objet peut aussi avoir des fonctions. Vous créez une fonction pour un objet comme ceci :
|
|
Résumé
Nous pouvons stocker des valeurs dans une table mais pas seulement. Il est aussi possible de stocker des chaînes. Nous appelons ces types de table des objets.
Avoir des objets nous permets d’économiser de nombreuses variables en plus d’être plus facile à lire.