Objets en Lua #8

Pour stocker des valeurs, nous avons vu l’utilisation des tables mais nous pouvons également le faire avec les « strings », guillemets. On appellera ces tables, des Objets ce qui va nous permettre d’emmagasiner davantage encore de variables.

function love.load()
    rect = {}
    -- ces deux formes veulent dire la même chose
    rect["width"] = 100
    rect.width = 100
end

On pourra donc aussi utiliser le point pour donner des propriétés à cette table . Cette typographie sera d’ailleurs privilégiée parce que plus rapide et claire.

function love.load()
    -- faire attention à la casse employée
    listOfRectangles = {}
end

function createRect()
    rect = {}
    rect.x = 100
    rect.y = 100
    rect.width = 70
    rect.height = 90
    rect.speed = 100

    -- on insère le nouveau rectangle dans la table
    table.insert(listOfRectangles, rect)
end

function love.keypressed(key)
    -- les deux signes égal signifient une comparaison
    if key == "space" then
        createRect()
    end
end

function love.update(dt)
    for i,v in ipairs(listOfRectangles) do
        v.x = v.x + v.speed * dt
    end
end

function love.draw(dt)
    for i,v in ipairs(listOfRectangles) do
        love.graphics.rectangle("line", v.x, v.y, v.width, v.height)
    end
end

Donc en traduction :

Dans la fonction love.load ( ), nous avons crée une table qui s’appelle listOfRectangles puis une fonction createRect . On y a également inséré une nouvelle table rect et à cette table de nouvelles propriétés comme l’abscisse, l’ordonnée, la largeur, la hauteur et la vitesse à affecter à ce nouveau rectangle.
Puis dans la fonction love.keypressed nous donnons pour instruction de créer un nouveau rectangle à chaque fois que la touche « espace » sera pressée.
Dans la fonction love.update(dt) qui va mettre à jour votre programme à chaque itération on insère une boucle for ipairs (vu juste précédemment dans le #7) qui indique la vitesse à calculer pour chaque appel de la fonction listOfRectangle.
Dans la fonction love.draw(dt), on insère de la même manière une boucle for ipairs afin que chaque appel de la fonction listOfRectangle, un nouveau rectangle soit crée à l’écran. Ce qui donne ceci :

https://sheepolution.com/images/book/8/moving_rectangles.gif

Source : https://sheepolution.com/learn/book/8

Un rectangle mobile à chaque fois qu’espace est pressée !

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s