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'un condition. Les mots-clés else et elseif peuvent créer des scénarios supplémentaires pour ce qui devrait se produire sous plusieurs conditions. La syntaxe ressemble à :

Affiche laSyntaxe pour else et pour else

if isGreen then
print("Go")
elseif isYellow then
print("Slow")
elseif isPedestrians then
print("Wait")
else
print("stop")
end

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

Codage de plusieurs conditions

Pour ce projet, vous pourriez écrire une déclaration unique pour chaque médaille pour attribuer aux joueurs, mais cela prend beaucoup de temps. Prenez, par instance, le code imaginaire ci-dessous.

Toutes les déclarations

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

Une façon plus lisible et plus efficace de coder ceci est d'utiliser une seule if statement et d'utiliser le mot-clé elseif pour fournir des conditions alternatives à tester si les conditions précédentes ne sont pas vraies.

Utilise else et autre

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

Lorsque la déclaration if/then s'exécute, elle s'exécute en haut et ne s'exécute que le code pour la première condition vraie que trouvera.

Configurer le parcours de course

Commencez en plaçant le point de départ du parcours et la ligne d'arrivée, puis créez un script pour mesurer le joueur et attribuer différentes médailles.

  1. Créez une partie ancrée nommée FinishLine. Pour accélérer le test, placez le début et la fin à côté l'un de l'autre. Vous pouvez déplacer la ligne d'arrivée après avoir terminé le script.

    Finir partie
    Tout le parcours
  2. Dans FinishLine, insérez un script nommé RaceManager. Puis, ajoutez une variable pour stocker le nombre de secondes écoulées depuis le début de la course et une deuxième variable pour référencer FinishLine.


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


    local timePassed = 0
    local finishLine = script.Parent
    local function finish()
    end
  4. Sur posséder:

    • Cliquez sur une fonction nommée partTouched() qui s'exécute finish() quand 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("touched the finish line")
    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 et vérifiez que finish() est appelé lorsque vous touchez la ligne d'arrivée.

Gardez fin() De la répétition

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

Utilisez un boîtier de vérité ou de faux , une variable qui stocke vrai ou faux, pour vous assurer que finir() n'est appelé qu'une fois.

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


    local timePassed = 0
    local finishLine = script.Parent
    local raceActive = true
    -- S'exécute toujours lorsque le joueur touche la partie de la ligne d'arrivée
    local function finish()
  2. Ajoutez une deuxième condition à la déclaration if pour vérifier si raceActive est vraie 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 arrêter finish() d'être appelé à nouveau, définissez raceActive sur false.


    local function finish()
    print("touched the finish line")
    raceActive = false
    end
  4. Testez votre jeu pour vous assurer que vous ne voyez que votre déclaration de test une fois.

Garder la trace du temps

Comme une if statement, un while loop peut également utiliser une condition pour voir si il doit s'lancer. Pour timer le joueur, créez un timer en utilisant un while true do loop qui ne s'exécute que lorsque le raceActive bouton est vrai.

  1. Au bas du script, tapez while raceActive == true do . Appuyez sur Entrée pour terminer automatiquement et ajouter le end.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    end
  2. Pour synchroniser les joueurs, dans le boucle, ajoutez 1 à la variable timePassed une fois tous les secondes. Incluez une déclaration d'impression pour tester votre travail.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    task.wait(1)
    timePassed += 1
    print(timePassed)
    end
  3. Jouez au jeu et vérifiez que vous voyez chaque seconde affichée dans la fenêtre de sortie.

Attribution de médailles

Pour terminer, utilisez une if statement avec plusieurs conditions pour attribuer aux joueurs un prix différent en fonction de leur performance. Utilisez une if statement et deux clause de fin pour vérifier le temps de fin du joueur et leur attribuer la bonne médaille.

  1. Pour confirmer qu'une médaille peut être attribuée, utilisez les déclarations d'impression.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    end
  2. Pour attribuer une médaille d'or, codez une if statement qui compare timePassed à la durée de fin souhaitée. Cet exemple vérifie si le temps du joueur était inférieur ou égal à 10 secondes.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    end
    end
  3. Tester le jeu et confirmer que la médaille d'or peut être attribuée.

Ajouter des conditions supplémentaires

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

  1. Pour la médaille d'argent, utilisez elseif - et la prochaine tranche de temps souhaitée. Dans cet exemple, la tranche est plus grande que 10 secondes, mais inférieure ou égale à 20 secondes.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("You get a silver medal!")
    end
    end
  2. Utilisez le même motif pour la médaille de bronze. Vérifiez votre code avec l'exemple ci-dessous.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("You get a silver medal!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("You get a bronze medal!")
    end
    end
  3. Testez le jeu pour les médailles d'argent et de bronze.

Conseils de débogage

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

  • Chaque elseif ../fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-fr/promo-
  • Dans partTouched() , assurez-vous que la deuxième condition de la déclaration if utilise ==, comme dans raceActive == true .
  • Vérifiez que chaque elseif ../ ../ est dans le champ d'application. Chaque elseif condition doit être entre la première ligne de la déclaration if/then et son dernier end.

Ajouter la condition d'autre

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

  1. Sous le dernier elseif et au-dessus de end, commencez une nouvelle ligne et tapez else . 1> Ne les1> pas ajouter alors. En dessous, utilisez une déclaration d'impression pour les inviter à réessayer.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("You get a silver medal!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("You get a bronze medal!")
    else
    print("Try again!")
    end
    end

2. Testez le jeu pour voir le prochain message.

Résumé

Les structures de contrôle peuvent avoir plus d'un scénario. Utilisez si les déclarations pour configurer la déclaration initiale pour vérifier, et ensuite ajouter autant de elseif conditions que nécessaire. Enfin, utilisez else pour définir ce qui devrait se produire si toutes les conditions données sont fausses.

À partir du haut, toutes les conditions seront vérifiées, et seuls les premiers vraies conditions exécuteront le code. Les conditions restantes ne seront pas vérifiées, ni leur code ne sera lancer.

Après avoir terminé le projet, vous pouvez étendre le script pour ajouter de nouveaux éléments de quelques façons supplémentaires.

  • Ajoutez du code pour que les joueurs puissent répéter la course en touchant la ligne de départ lorsqu'ils finissent.
  • Concevez un moyen d'afficher le temps pendant une course. Vous pouvez soit afficher le temps sur une partie en utilisant une interface utilisateur graphiquede surface, comme dans le tutoriel sur la création d'un pont temporel.
Completed script

local timePassed = 0
local finishLine = script.Parent
-- Utilisé pour garder fin() et timer 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 leur montre un prix
local function finish()
raceActive = false
print("You finished in " .. timePassed)
if timePassed <= 10 then
print("You get a gold medal!")
elseif timePassed > 10 and timePassed <= 20 then
print("You get a silver medal!")
elseif timePassed > 20 and timePassed <= 30 then
print("You get a bronze medal!")
else
print("Try again!")
end
end
-- Vérifie si un joueur touche la partie lorsqu'une 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)
-- Garde la trace du temps de course pendant que la course est active. Doit être en bas du script.
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end