Les librairies avec love2d

Une librairie est un code que tout le monde peut utiliser pour ajouter certaines fonctionnalités à son projet.

Essayons une bibliothèque. Nous allons utiliser la lib tick faite par rxi. Vous pouvez la trouver sur GitHub.

Cliquez sur tick.lua puis sur Raw et copier tout le code.

Allez dans votre éditeur de texte, créez un nouveau fichier appelé tick.lua et coller le code.

Maintenant, nous allons suivre les instructions sur la page GitHub. Premièrement nous devons charger le code avec require :

1
2
3
function love.load()
  tick = require "tick"
end

Notez que nous n’avons pas mis les parenthèses pour require. C’est parce que nous n’avons passé qu’un seul argument et vous n’avez pas à les mettre. Maintenant, je vous recommande de toujours les utiliser pour toutes autres fonctions mais il est nécessaire de les mettre en évidence. En fin de compte ça n’a pas d’importance.

Ensuite nous devons mettre tick.update(dt) dans la partie mise à jour de notre programme :

1
2
3
function love.update(dt)
  tick.update(dt)
end

Maintenant nous sommes prêt à utiliser la librairie. Faisons en sorte de dessiner un rectangle après 2 secondes :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
function love.load()
  tick = require "tick"

  -- Créons un booléen
  drawRectangle = false

  -- Le premier argument est une fonction
  -- Le second argument est le temps d'attente avant d'appeler notre fonction
  tick.delay(function () drawRectangle = true end, 2)
end

function love.draw()
  -- Si drawRectangle est vrai alors on dessine le rectangle
  if drawRectangle then
    love.graphics.rectangle("fill", 100, 100, 300 200)
  end
end

Est-ce que nous avons passé une fonction comme argument ?
Bien sûr. Pourquoi ce ne serait pas possible ?
Une fonction est un type de variable après tout. Comme vous pouvez le voir, avec cette lib, nous pouvons mettre un retard / délai sur les choses.

Il y a des tonnes de lib avec toutes sortes de fonctionnalités comme ça !

Ne vous sentez pas coupable d’utiliser une bibliothèque. À moins d’être intéresser d’apprendre comment faire, pourquoi réinventer la roue ?
J’utilise personnellement une dizaine de lib dans mes projets. Elles me fournissent des fonctionnalités que je ne comprends pas forcément ou tout simplement, je ne suis pas intéressé de savoir comment le travail est fait.

Les lib ne sont pas magique. C’est tout le code que vous et moi aurions pu écrire aussi. Nous en créerons une pour comprendre leur fonctionnement.

Les librairies standards

Lua possède des lib intégrées. Elles sont appelées les lib standard. Ce sont les fonctions qui sont construites dans Lua. print, par exemple, est une part de la lib standard comme le sont table.insert et table.remove.

Une lib standard importante que nous n’avons pas encore utilisé est la lib math. Elle fournit des fonctions mathématiques ce qui peut être très utile lors de la réalisation d’un jeu. Par exemple, math.ramdom nous donne un nombre aléatoire. Utilisons la pour placer un rectangle sur une position aléatoire chaque fois que vous appuyez sur la barre d’espace :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
function love.load()
  x = 30
  y = 50
end

function love.draw()
  love.graphics.rectangle("line", x, y, 100, 100)
end

function love.keypressed(key)
  -- Si la barre d'espace est appuyée alors …
  if key == "space" then
    -- x et y devienne un nombre aléatoire compris entre 100 et 500
    x = math.random(100, 500)
    y = math.random(100, 500)
  end
end

Maintenant que nous avons compris comment elles fonctionnent, nous pouvons commencer à utiliser une lib de classes.

Résumé

Les lib ou bibliothèque sont du code qui nous donne des fonctionnalités. N’importe qui peut faire une lib. Lua possède également des lib intégrées que nous appelons lib standards.