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.
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érateur | Signification |
|---|---|
== | Égal à |
~= | Différent de (pas !=) |
< / > | Inférieur / Supérieur |
<= / >= | Inf. ou égal / Sup. ou égal |
and | ET logique |
or | OU logique |
not | NON logique |
0 et "" sont truthy ! Seuls false et nil sont falsy.-- 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 : 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 : 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
-- 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
while true do sans task.wait() — ça freeze Studio !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.elseif aux if imbriqués : c'est plus lisible et plus rapide quand tu testes plusieurs cas.= affecte une valeur, == compare. Une erreur classique du débutant.break dès que tu as trouvé ce que tu cherchais, plutôt que de continuer inutilement.