La condition if avec love2d

Info
Nous utiliserons le code du chapitre précédent

Avec la condition if, nous pouvons autoriser l’exécution de morceaux de codes seulement lorsqu’une condition est remplie.

Pour créer une condition avec if, faites comme ceci :

1
2
3
if condition then
  -- code
end

Une condition ou une déclaration est quelque chose qui est vrai ou faux.

Par exemple : $5>9$
Le signe $>$ signifie plus grand que, donc la déclaration est que 5 est supérieur à 9, ce qui est faux.

Mettez une condition if autour du code qui incrémente x :

1
2
3
4
5
function love.update(dt)
  if 5 > 9 then
    x = x + 100 * dt
  end
end

Lorsque vous lancez le jeu, vous remarquerez que notre rectangle ne bouge pas. C’est parce que la déclaration est fausse. Si nous la changeons en $5<9$ (5 est plus petit que 9), alors la déclaration est vrai et le code à l’intérieur de la déclaration sera exécuté.

Avec ça, nous pouvons par exemple augmenter x jusqu’à 600 et quand il y arrive, l’arrêter avec $x<600$

Déplacement du rectangle sous condition
Déplacement du rectangle sous condition

Si nous voulons vérifier qu’une valeur est égale à une autre, nous devons utiliser 2 signes égale (==). Par exemple : $4==7$. Attention à bien faire la distinction entre = et == :

1
2
x = 10 -- Assigne 10 à x
x == 100 -- Compare 10 à x

Nous pouvons aussi utiliser $≥≥$ (>=) et $≤≤$ (<=) pour vérifier si la valeur est supérieur ou égale ou inférieur et égale à une autre.

1
2
10 <= 10 -- true (vrai) 10 est bien égal à
15 >= 4 -- true car 15 est bien plus grand que 4

Les booléens

Une variable peut être soit true (vrai) soit false (fausse). Ce type de variable est ce qu’on appelle un booléen.

Créons une nouvelle variable que nous appelons move avec une valeur à true et vérifions que move est à true dans notre déclaration :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
function love.load()
  x = 100
  move = true
end

function love.update(dt)
-- Souvenez-vous 2 signes égale
  if move == true then
    x = x + 100 * dt
  end
end

move est vrai donc notre rectangle bouge. Pour une meilleure lisibilité du code, il faudrait écrire la condition comme ceci :

1
2
3
if move then
  x = x + 100 * dt
end

Si nous voulons vérifier si move est faux, nous pouvons mettre not devant celui-ci :

1
2
3
if not move then
  x = x + 100 * dt
end

Si nous voulons vérifier qu’un nombre n’est PAS égal à un autre nous utilisons un tilde (~) :

1
2
3
if 4 ~= 5 then
  x = x + 100 * dt
end

Nous pouvons aussi assigner true ou false à une variable comme ceci :

1
move = 6 > 3

Si nous vérifions que move est à true pour ensuite le mettre à false dans l’instruction. Le code ne sera exécuté qu’une seule fois :

1
2
3
4
5
if move then
  move = false
  print("Ceci ne sera exécuté qu'une seule fois")
  x = x + 100 * dt
end

Les flèches et les touches

Faisons en sorte que le rectangle se déplace en fonction du maintien de la flèche droite. Pour cela, nous utilisons la fonction love.keyboard.isDown.

Remarquez comment le D de Down (enfoncé) est en majuscule. C’est le type de casse que nous appelons camelCasing. Nous commençons avec le premier mot tout en minuscule puis le premier caractère de chaque mot sera en majuscule.

Nous passons la chaîne « right » comme premier argument pour vérifier si la flèche droite est enfoncée :

1
2
3
if love.keyboard.isDown("right") then
  x = x + 100 * dt
end

Alors maintenant quand nous tenons enfoncé la flèche droite, notre rectangle bouge.

Déplacement du rectangle quand on appuie sur une touche
Déplacement du rectangle quand on appuie sur une touche

Nous pouvons également utiliser autre chose pour dire à notre jeu quoi faire lorsque la condition est fausse. Faisons déplacer notre rectangle vers la gauche, lorsque nous n’appuyons pas à droite.

1
2
3
4
5
if love.keyboard.isDown("right") then
  x = x + 100 * dt
else
  x = x - 100 * dt -- Nous décrémentons la valeur de x
end

Nous pouvons également vérifier si une autre déclaration est vraie après que la première soit fausse en utilisant elseif. Faisons le après avoir vérifié si la flèche droite est enfoncée et si ce n’est pas le cas, nous verrons si la flèche gauche l’est :

1
2
3
4
5
if love.keyboard.isDown("right") then
  x = x + 100 * dt
elseif love.keyboard.isDown("left") then
  x = x - 100 * dt
end

Essayez de faire bouger le rectangle en haut et en bas en modifiant le code.

and et or

Avec and nous pouvons vérifier si plusieurs instructions sont vraies :

1
2
3
if 5 < 9 and 14 > 7 then
  print("Les 2 instructions sont vraies")
end

Avec or la condition if sera exécutée si une des deux est vraie :

1
2
3
if 20 < 9 or 14 > 7 or 5 == 10 then
  print("Une de ces instructions est vraie")
end

Encore une chose

Pour être plus précis, la condition if vérifie si la déclaration n’est pas fausse ou nil. (Les exemples suivants sont sur une seule ligne mais peuvent être écrit sur plusieurs lignes) :

1
2
3
4
5
6
if true then print(1) end -- Not false or nil, est exécuté.
if false then print(2) end -- False, n'est pas exécuté.
if nil then print(3) end -- Nil, n'est pas exécuté.
if 5 then print(4) end -- Not false or nil, est exécuté.
if "hello" then print(5) end -- Not false or nil, est exécuté.
-- Output: 1, 4, 5

Résumé

Avec if, nous pouvons autoriser certains morceaux de codes à être exécutés quand la condition est remplie. Nous pouvons vérifier si un nombre est plus grand, plus petit, égal à un autre nombre ou à une autre valeur. Une variable peut être à true ou false. Ce type de variable est ce qu’on appelle un booléen. Nous pouvons utiliser else pour dire à notre jeu quoi exécuter quand la condition est fausse ou elseif pour faire d’autres vérifications.