← Retour LearnBloxLearnBlox

Conditions & Boucles

Modules 3–4

Les conditions et les boucles sont ce qui rend un jeu vivant. Une condition (if) permet à ton code de prendre des décisions : ouvrir une porte si le joueur a la clé, donner un bonus si le score dépasse 100. Une boucle (for, while) répète une action : faire apparaître 10 ennemis, vérifier l'état du jeu chaque seconde.

La clé est de bien comprendre la différence entre for (quand tu connais le nombre de répétitions) et while (quand tu répètes tant qu'une condition est vraie). Mal maîtrisées, les boucles while peuvent figer ton jeu : c'est pourquoi task.wait() à l'intérieur est presque toujours indispensable.

🔀 if / elseif / else
local pts = 85

if pts >= 90 then
    print("Excellent !")
elseif pts >= 70 then
    print("Bien !")
elseif pts >= 50 then
    print("Passable")
else
    print("Insuffisant")
end
⚖️ Opérateurs de comparaison
OpérateurSignification
==Égal à
~=Différent de (pas !=)
< / >Inférieur / Supérieur
<= / >=Inf. ou égal / Sup. ou égal
andET logique
orOU logique
notNON logique
⚠️ En Luau : 0 et "" sont truthy ! Seuls false et nil sont falsy.
🔁 Boucle for numérique
-- for i = début, fin, pas
for i = 1, 5 do
    print(i)  -- 1 2 3 4 5
end

-- Pas négatif (compte à rebours)
for i = 10, 1, -1 do
    print(i)  -- 10 9 8 ... 1
end

-- Pas de 2
for i = 0, 10, 2 do
    print(i)  -- 0 2 4 6 8 10
end
🔄 while & repeat
-- while : vérifie AVANT
local n = 0
while n < 5 do
    n = n + 1
    task.wait(1)
end

-- repeat : vérifie APRÈS (s'exécute au moins 1 fois)
repeat
    n = n + 1
until n >= 10

-- Boucle infinie propre
while true do
    task.wait(1)  -- TOUJOURS un wait !
end
⏹️ break & continue
-- break : sort de la boucle
for i = 1, 10 do
    if i == 5 then
        break  -- s'arrête à 4
    end
    print(i)
end

-- continue : passe à l'itération suivante
for i = 1, 5 do
    if i == 3 then
        continue  -- saute le 3
    end
    print(i)  -- 1 2 4 5
end
⏱️ task.wait() & modulo
-- Pause l'exécution (en secondes)
task.wait()     -- attend 1 frame
task.wait(1)   -- attend 1 seconde
task.wait(0.5) -- attend 500ms

-- Modulo : reste de la division
10 % 3  -- → 1
6  % 2  -- → 0 (pair)

-- Pattern : action toutes les N itérations
for i = 1, 100 do
    if i % 10 == 0 then
        print("Multiple de 10 !")
    end
end
⚠️ Ne jamais faire de boucle while true do sans task.wait() — ça freeze Studio !
✅ Bonnes pratiques & erreurs fréquentes
  • Toujours un task.wait() dans une boucle while true do : sans pause, la boucle s'exécute des millions de fois par seconde et gèle le serveur.
  • Préfère elseif aux if imbriqués : c'est plus lisible et plus rapide quand tu testes plusieurs cas.
  • Attention aux comparaisons : = affecte une valeur, == compare. Une erreur classique du débutant.
  • Sors d'une boucle avec break dès que tu as trouvé ce que tu cherchais, plutôt que de continuer inutilement.