Objectif : Apprendre à ton jeu à prendre des décisions et à répéter des actions. Tu vas maîtriser les conditions et les boucles, le cur de tout programme !
Apprends à ton code à réfléchir
Jusqu'ici, ton code s'exécute ligne par ligne, de haut en bas, sans réfléchir. C'est comme un robot qui avance tout droit et se cogne contre les murs. Dans ce module, tu vas lui apprendre à prendre des décisions (tourner à gauche si mur) et à répéter des actions (avancer 10 fois).
Imagine un garde dans ton jeu. Il doit décider : "Si le joueur est un ennemi, alors j'attaque. Sinon, je le laisse passer." C'est exactement ce que font les conditions en programmation.
Pense à un feu de signalisation :
En Luau, on traduit ça avec les mots-clés if, then, elseif, else et end.
Structure d'une condition
if condition then
-- Ce code s'exécute SI la condition est vraie
end
Voici un exemple concret :
Exemple : Vérifier la vie du joueur
local vie = 100
if vie > 0 then
print("Le joueur est vivant !")
end
if vie > 0 ? "Si vie est supérieure à 0"
then ? "Alors..."
print(...) ? On exécute cette action
end ? Fin du bloc conditionnel
Que se passe-t-il si la condition est fausse ? On utilise else :
local vie = 0
if vie > 0 then
print("Le joueur est vivant !")
else
print("Game Over...")
end
Pour gérer plusieurs cas, on utilise elseif :
Système de rang par niveau
local niveau = 25
if niveau >= 50 then
print("Rang : Légende")
elseif niveau >= 25 then
print("Rang : Expert")
elseif niveau >= 10 then
print("Rang : Apprenti")
else
print("Rang : Débutant")
end
-- Résultat : "Rang : Expert" (car 25 >= 25)
Les conditions sont vérifiées de haut en bas. Dès qu'une condition est vraie, le reste est ignoré. Place toujours les conditions les plus restrictives en premier !
Pour que tes conditions fonctionnent, tu dois savoir comparer des valeurs. Voici ta boîte à outils :
Vérifie si deux valeurs sont identiques.
if nom == "Admin" then
Vérifie si deux valeurs sont différentes.
if equipe ~= "Rouge" then
Compare des nombres.
if score > 100 then
Inclut la valeur limite.
if age >= 18 then
Tu peux combiner plusieurs conditions avec and, or et not :
Combinaisons logiques
local niveau = 30
local aCle = true
-- AND : Les DEUX conditions doivent être vraies
if niveau >= 20 and aCle == true then
print("Tu peux ouvrir le coffre légendaire !")
end
-- OR : AU MOINS UNE condition doit être vraie
if niveau >= 50 or estAdmin == true then
print("Accès VIP autorisé")
end
-- NOT : Inverse la condition
if not estBanni then
print("Bienvenue dans le jeu !")
end
En Luau, tu peux écrire if aCle then au lieu de
if aCle == true then. Une variable boolean dans un
if est automatiquement testée comme vraie/fausse.
Imagine devoir écrire "print(1), print(2), print(3)..." jusqu'à 100. Ça serait fou ! Les boucles permettent de répéter du code automatiquement.
Elle répète le code tant qu'une condition est vraie. C'est comme dire : "Tant que j'ai faim, je mange."
Compte à rebours
local compteur = 5
while compteur > 0 do
print(compteur)
compteur = compteur - 1 -- On décrémente
task.wait(1) -- On attend 1 seconde
end
print("BOOM ! 💥")
-- Résultat : 5, 4, 3, 2, 1, BOOM !
task.wait() et pas wait() ?
La fonction wait() est
dépréciée (obsolète) par Roblox. Utilise toujours
task.wait() à la place !
Si ta condition reste toujours vraie, ton jeu va planter ! Assure-toi toujours que la condition finira par devenir fausse.
-- ? MAUVAIS : while true do print("Crash") end
Elle répète le code un nombre précis de fois. C'est comme dire : "Fais 10 pompes."
Syntaxe de la boucle for
-- for variable = début, fin, pas do
for i = 1, 5 do
print("Tour numéro : " .. i)
end
-- Résultat :
-- Tour numéro : 1
-- Tour numéro : 2
-- Tour numéro : 3
-- Tour numéro : 4
-- Tour numéro : 5
i = 1 ? On commence à 1
5 ? On s'arrête à 5 (inclus)
do ... end ? Le code à répéter
Le pas (optionnel) est de 1 par défaut.
Tu peux changer l'incrément avec un troisième paramètre :
-- Compter de 2 en 2
for i = 0, 10, 2 do
print(i) -- 0, 2, 4, 6, 8, 10
end
-- Compte à rebours (pas négatif)
for i = 10, 1, -1 do
print(i) -- 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
end
Voici comment créer 5 zombies avec une boucle :
Spawner de Zombies
local zombieTemplate = game.ServerStorage:WaitForChild("Zombie")
for i = 1, 5 do
local nouveauZombie = zombieTemplate:Clone()
nouveauZombie.Name = "Zombie_" .. i
nouveauZombie.Parent = workspace
print("Zombie " .. i .. " est apparu !")
task.wait(0.5) -- Petit délai entre chaque spawn
end
print("Tous les zombies sont là !")
and dans une condition ?while true do sans task.wait() ?
Le sas vérifie ton oxygène avant de te laisser sortir. Sans assez de 💨 Oxygène, impossible de collecter des ressources !
Modules 1-2 terminés (station + éclairage)
Dans ta station, crée une Part pour représenter la porte du sas.
💡 Position 0, 7, -30 place le sas au centre du Mur_Nord. La hauteur 7 le centre verticalement (sol à Y=2, murs de 15 de haut).
Clic droit sur SasSecurite ? Insert Object ? Script
Renomme-le GestionSas.
Utilise ce code avec une condition if/else :
local sas = script.Parent
local niveauOxygene = 75 -- Simule le niveau d'oxygène
sas.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
if niveauOxygene >= 50 then
-- Assez d'oxygène : on ouvre (vert)
sas.BrickColor = BrickColor.new("Lime green")
sas.CanCollide = false
print("Accès autorisé ! Oxygène: " .. niveauOxygene .. "%")
else
-- Pas assez : refus (rouge)
sas.BrickColor = BrickColor.new("Really red")
sas.CanCollide = true
print("ATTENTION ! Oxygène insuffisant: " .. niveauOxygene .. "%")
end
end
end)
Lance le jeu (F5) et vérifie :
niveauOxygene = 75 ? sas vert, tu passes
niveauOxygene = 30 ? sas rouge, bloqué !
N'oublie pas de sauvegarder ton travail !
Ajoute un niveau intermédiaire : si l'oxygène est entre 25 et 50, le sas devient orange avec un avertissement !
Prochaine étape → Module 4 : Zone de minage (collecte des 💎 Matériaux)
Crée un sas pressurisé entre le Hub et le couloir extérieur. Le sas vérifie le niveau d'oxygène avant de s'ouvrir.
Sur le Mur_Sud du Hub, crée une ouverture (même technique que le couloir Nord). Remplace Mur_Sud par 2 demi-murs, puis construis une petite pièce sas (8×8) :
Crée un Model Sas dans Station :
Material = DiamondPlate, Color =
Dark stone grey. Tout Anchored ✓.
Un vrai sas a 2 portes : une vers l'intérieur (Hub), une vers l'extérieur.
Les deux : Material = Metal, Color =
Medium stone grey. Ajoute un
indicateur lumineux au-dessus de chaque porte :
Material = Neon, Color =
Bright red (ils passeront au vert par script).
Crée un Script GestionSas dans le
Model Sas :
-- GestionSas : ouvre/ferme selon le niveau d'oxygène
local sas = script.Parent
local porteInt =
sas:WaitForChild("Porte_Interieure") local porteExt =
sas:WaitForChild("Porte_Exterieure") local indInt =
sas:WaitForChild("Indicateur_Int")
local indExt =
sas:WaitForChild("Indicateur_Ext")
local niveauOxygene =
80
-- change pour tester !
local function
ouvrirPorte(porte, indicateur)
porte.Transparency =
0.7 porte.CanCollide =
false indicateur.Color =
Color3.fromRGB(0,
255,
0)
-- vert
print("🟢 Porte ouverte :", porte.Name)
end
local function
fermerPorte(porte, indicateur)
porte.Transparency =
0 porte.CanCollide =
true indicateur.Color =
Color3.fromRGB(255,
0, 0)
-- rouge
print("🔴 Porte verrouillée :", porte.Name)
end
-- Logique de sécurité
if niveauOxygene >=
75
then
print("✅ Oxygène OK — Sas ouvert") ouvrirPorte(porteInt, indInt)
ouvrirPorte(porteExt, indExt)
elseif niveauOxygene >=
40
then
print("⚠️ Oxygène moyen — Sas partiel") ouvrirPorte(porteInt, indInt)
fermerPorte(porteExt, indExt)
indInt.Color = Color3.fromRGB(255,
170,
0)
-- orange
else
print("🚨 DANGER — Sas verrouillé !") fermerPorte(porteInt, indInt)
fermerPorte(porteExt, indExt)
end
niveauOxygene à 80, puis 50, puis 20 et relance
F5 à chaque fois pour voir le sas réagir.
Sauvegarde : Ctrl+S
Prochaine étape → Module 4 : Générateur & Fonctions