Plusieurs conditions

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Les structures de contrôle peuvent avoir plus d'une condition. Les mots-clés else et elseif peuvent créer des scénarios supplémentaires pour déterminer ce qui devrait se produire sous plusieurs conditions. La syntaxe ressemble à ceci :

Montre la syntaxe pour elseif et else

if isGreen then
print("Allez")
elseif isYellow then
print("Lent")
elseif isPedestrians then
print("Attendez")
else
print("Arrêtez")
end

Dans ce projet, else et elseif sont utilisés pour coder un parcours de parkour où les coureurs reçoivent des récompenses en fonction de leur temps d'arrivée.

Codez plusieurs conditions

Pour ce projet, vous pourriez écrire une instruction if unique pour chaque médaille à remettre aux joueurs, mais cela prend beaucoup de temps. Prenons l'exemple du code imaginaire ci-dessous.

Toutes les instructions if

if finishTime < 5 then
-- Obtenir une médaille d'or
end
if finishTime >= 5 and <= 10 then
-- Obtenir une médaille d'argent
end
if finishTime > 10 and <= 15 then
-- Obtenir une médaille de bronze
end

Une manière plus lisible et efficace de coder cela est d'utiliser une seule instruction if et le mot-clé elseif pour fournir des conditions alternatives à tester si les conditions précédentes ne sont pas vraies.

Utilise elseif et else

if finishTime < 5 then
-- Obtenir une médaille d'or
elseif finishTime >= 5 and <= 10 then
-- Obtenir une médaille d'argent
elseif finishTime > 10 and <= 15 then
-- Obtenir une médaille de bronze
end

Lorsque l'instruction if/then s'exécute, elle commence par le haut et n'exécute le code que pour la première condition vraie qu'elle trouve.

Configurez le parcours

Commencez par placer le point de départ et la ligne d'arrivée du parcours, puis créez un script pour chronométrer le joueur et attribuer différentes médailles.

  1. Créez une partie ancrée nommée FinishLine. Pour rendre les tests plus rapides, placez le début et la fin assez près l'un de l'autre. Vous pouvez déplacer la ligne d'arrivée après avoir terminé le script.

    Partie d'arrivée
    Parcours entier
  2. Dans FinishLine, insérez un script nommé RaceManager. Ensuite, ajoutez une variable pour stocker le nombre de secondes écoulées depuis le début de la course et une deuxième variable pour faire référence à FinishLine.


    local finishLine = script.Parent
    local timePassed = 0
  3. Créez une fonction nommée finish().


    local timePassed = 0
    local finishLine = script.Parent
    local function finish()
    end
  4. Par vous-même :

    • Codez une fonction nommée partTouched() qui exécute finish() lorsque qu'un joueur la touche.
    • Connectez la partie de la ligne d'arrivée à partTouched().
    • Comparez votre code à l'exemple ci-dessous.

    local function finish()
    print("touché la ligne d'arrivée")
    end
    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    finish()
    end
    end
    finishLine.Touched:Connect(partTouched)
  5. Testez le jeu et vérifiez que finish() est appelé lorsque vous touchez la ligne d'arrivée.

Empêcher finish() de se répéter

En ce moment, chaque fois qu'un joueur touche la ligne d'arrivée, finish() est constamment appelé tant que le joueur touche la partie.

Utilisez un booléen, une variable qui stocke vrai ou faux, pour vous assurer que finish() n'est appelé qu'une seule fois.

  1. Créez une nouvelle variable nommée raceActive et réglez-la sur true.


    local timePassed = 0
    local finishLine = script.Parent
    local raceActive = true
    -- S'exécute chaque fois que le joueur touche la partie de la ligne d'arrivée
    local function finish()
  2. Ajoutez une deuxième condition à l'instruction if pour vérifier si raceActive est vrai avant d'appeler finish().


    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and raceActive == true then
    finish()
    end
    end
  3. Pour empêcher que finish() soit appelé à nouveau, réglez raceActive sur false.


    local function finish()
    print("touché la ligne d'arrivée")
    raceActive = false
    end
  4. Testez votre expérience pour vérifier que vous ne voyez votre instruction d'impression de test qu'une seule fois.

Suivre le temps

Comme une instruction if, une boucle while peut également utiliser une condition pour voir si elle doit s'exécuter. Pour chronométrer le joueur, créez un chronomètre en utilisant une boucle while true do qui ne s'exécute que lorsque le booléen raceActive est vrai.

  1. En bas du script, tapez while raceActive == true do. Appuyez sur Entrée pour l'auto-compléter et ajoutez end.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    end
  2. Pour chronométrer les joueurs, dans la boucle, ajoutez 1 à la variable timePassed une fois par seconde. Incluez une instruction d'impression pour tester votre travail.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    task.wait(1)
    timePassed += 1
    print(timePassed)
    end
  3. Testez l'expérience et vérifiez que vous voyez chaque seconde affichée dans la fenêtre Output.

Récompenser les joueurs avec des médailles

Pour finir, utilisez une instruction if avec plusieurs conditions pour attribuer aux joueurs une médaille de prix différente en fonction de leurs performances. Utilisez une instruction if et deux instructions elseif pour vérifier le temps d'arrivée du joueur et leur attribuer la bonne médaille.

  1. Pour confirmer que chaque médaille peut être attribuée, utilisez des instructions d'impression.


    local function finish()
    raceActive = false
    print("Vous avez terminé en " .. timePassed)
    end
  2. Pour attribuer une médaille d'or, codez une instruction if qui compare timePassed au temps d'arrivée souhaité. Cet exemple vérifie si le temps du joueur était inférieur ou égal à 10 secondes.


    local function finish()
    raceActive = false
    print("Vous avez terminé en " .. timePassed)
    if timePassed <= 10 then
    print("Vous obtenez une médaille d'or !")
    end
    end
  3. Testez et confirmez que la médaille d'or peut être attribuée.

Ajoutez des conditions supplémentaires

Maintenant que vous avez testé pour la médaille d'or, codez des conditions pour les autres médailles en utilisant le mot-clé elseif.

  1. Pour la médaille d'argent, utilisez elseif et la prochaine plage de temps désirée. Dans cet exemple, la plage est supérieure à 10 secondes mais inférieure ou égale à 20 secondes.


    local function finish()
    raceActive = false
    print("Vous avez terminé en " .. timePassed)
    if timePassed <= 10 then
    print("Vous obtenez une médaille d'or !")
    elseif timePassed > 10 and timePassed <= 20 then
    print("Vous obtenez une médaille d'argent !")
    end
    end
  2. Utilisez le même schéma pour la médaille de bronze. Vérifiez votre code avec l'exemple ci-dessous.


    local function finish()
    raceActive = false
    print("Vous avez terminé en " .. timePassed)
    if timePassed <= 10 then
    print("Vous obtenez une médaille d'or !")
    elseif timePassed > 10 and timePassed <= 20 then
    print("Vous obtenez une médaille d'argent !")
    elseif timePassed > 20 and timePassed <= 30 then
    print("Vous obtenez une médaille de bronze !")
    end
    end
  3. Testez pour les médailles d'argent et de bronze.

Conseils de dépannage

Si vous ne voyez pas les médailles d'argent et de bronze apparaître, essayez l'une des solutions ci-dessous.

  • Chaque elseif doit avoir un then après sa condition.
  • Dans partTouched(), assurez-vous que la deuxième condition de l'instruction if utilise ==, comme dans raceActive == true.
  • Vérifiez que chaque elseif est dans la portée. Chaque condition elseif doit être entre la première ligne de l'instruction if/then et son dernier end.

Ajoutez la condition else

Si le joueur n'a gagné aucune des médailles, vous devriez l'encourager à réessayer. Dans ce cas, vous pouvez utiliser une instruction else, qui s'exécute si aucune autre condition n'est vraie, pour lui montrer un message.

  1. Sous le dernier elseif et au-dessus de end, commencez une nouvelle ligne et tapez else. Ne rajoutez pas then. Sous else, utilisez une instruction print pour les inciter à réessayer.


    local function finish()
    raceActive = false
    print("Vous avez terminé en " .. timePassed)
    if timePassed <= 10 then
    print("Vous obtenez une médaille d'or !")
    elseif timePassed > 10 and timePassed <= 20 then
    print("Vous obtenez une médaille d'argent !")
    elseif timePassed > 20 and timePassed <= 30 then
    print("Vous obtenez une médaille de bronze !")
    else
    print("Réessayez !")
    end
    end
  2. Testez pour voir le message else.

Résumé

Les structures de contrôle peuvent avoir plus d'un scénario. Utilisez des instructions if pour établir l'instruction initiale à vérifier, puis ajoutez autant de conditions elseif que nécessaire. Enfin, utilisez else pour indiquer ce qui doit se passer si toutes les conditions données sont fausses.

En commençant par le haut, toutes les conditions seront vérifiées, et seule la première condition vraie exécutera le code. Les conditions restantes ne seront pas vérifiées, ni leur code exécuté.

Après avoir terminé le projet, vous pouvez développer le script pour ajouter de nouveaux éléments de plusieurs manières.

  • Ajoutez du code pour que les joueurs puissent répéter la course en touchant la ligne de départ lorsqu'ils ont terminé.
  • Concevez un moyen d'afficher le temps pendant une course. Vous pouvez soit afficher le temps sur une partie à l'aide d'une Surface GUI, comme dans le Créer un pont chronométré tutoriel.
Script complet

local timePassed = 0
local finishLine = script.Parent
-- Utilisé pour empêcher finish() et le chronomètre de se répéter lorsque la course est terminée
local raceActive = true
-- S'exécute lorsque le joueur touche la ligne d'arrivée et lui montre une récompense
local function finish()
raceActive = false
print("Vous avez terminé en " .. timePassed)
if timePassed <= 10 then
print("Vous obtenez une médaille d'or !")
elseif timePassed > 10 and timePassed <= 20 then
print("Vous obtenez une médaille d'argent !")
elseif timePassed > 20 and timePassed <= 30 then
print("Vous obtenez une médaille de bronze !")
else
print("Réessayez !")
end
end
-- Vérifie si un joueur touche la partie lorsque la course est active
local function partTouched(otherPart)
local character = otherPart.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid and raceActive == true then
finish()
end
end
finishLine.Touched:Connect(partTouched)
-- Suit le temps de la course tant que la course est active. Doit être en bas du script.
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.