Mehrere Bedingungen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Kontrollstrukturen können mehr als eine Bedingung haben.Die Schlüsselwörter else und elseif können zusätzliche Szenarien für das erstellen, was unter mehreren Bedingungen passieren soll.Die Syntax sieht wie folgt aus:

Zeigt Syntax für elseif und else

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

In diesem Projekt werden else und elseif verwendet, um einen Parkour-Kurs zu codieren, bei dem Läufer Auszeichnungen erhalten, abhängig von ihrer Ziellzeit.

Mehrere Bedingungen codieren

Für dieses Projekt könnten Sie eine einzigartige if-Anweisung für jede Medaille schreiben, um Spieler zu verleihen, aber das braucht viel Zeit.Nehmen wir zum Instanzden imaginären Code unten.

Alle if-Statements

if finishTime < 5 then
-- Erhalte eine Goldmedaille
end
if finishTime >= 5 and <= 10 then
-- Erhalte eine Silbermedaille
end
if finishTime > 10 and <= 15 then
-- Erhalte eine Bronzemedaille
end

Eine effizientere und leserlichere Art, dies zu codieren, besteht darin, eine einzige if-Anweisung zu verwenden und das Schlüsselwort elseif zu verwenden, um alternative Bedingungen zu liefern, um zu testen, ob die vorherigen Bedingungen nicht wahr sind.

Verwendet elseif und else

if finishTime < 5 then
-- Erhalte eine Goldmedaille
elseif finishTime >= 5 and <= 10 then
-- Erhalte eine Silbermedaille
elseif finishTime > 10 and <= 15 then
-- Erhalte eine Bronzemedaille
end

Wenn die if/then-Anweisung ausgeführt wird, beginnt sie oben und führt nur den Code für die erste echte Bedingung aus, die sie findet.

Stelle den Rennstrecken auf

Beginne, indem du den Startpunkt und das Ziellinie des Kurses platzierst, und erstelle dann ein Skript, um die Zeit des Spielers zu messen und verschiedene Medaillen zu vergeben.

  1. Erstelle ein verankertes Teil namens FinishLine.Um das Testen schneller zu machen, stelle den Anfang und das Ende nahe beieinander.Du kannst die Ziellinie verschieben, nachdem du das Skript, das. PL: die Skriptsabgeschlossen hast.

    Teil abschließen
    >

    Gesamter Kurs
    >

  2. In der Ziellinie füge ein Skript namens RaceManager ein.Füge dann eine Variable hinzu, um zu speichern, wie viele Sekunden seit Beginn des Rennens vergangen sind, und eine zweite Variable, um FinishLine zu referenzieren.


    local finishLine = script.Parent
    local timePassed = 0
  3. Erstelle eine Funktion mit dem Namen finish().


    local timePassed = 0
    local finishLine = script.Parent
    local function finish()
    end
  4. Auf eigene besitzen:

    • Code eine Funktion namens partTouched(), die finish() läuft, wenn ein Spieler sie berührt.
    • Verbinde das Ziellinien-Teil mit partTouched().
    • Vergleiche deinen Code mit dem Beispiel unten.

    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. Teste deinen Spielablauf und überprüfe, dass finish() angerufen wird, wenn du die Ziellinie berührst.

Verhindere, dass finish() sich wiederholt

Im Moment wird immer, wenn ein Spieler die Ziellinie berührt, finish() kontinuierlich aufgerufen, solange der Spieler den Teil berührt.

Verwende ein boolesches , eine Variable, die wahr oder falsch speichert, um sicherzustellen, dass finish() nur einmal aufgerufen wird.

  1. Erstelle eine neue Variable mit dem Namen raceActive und stelle sie auf true ein.


    local timePassed = 0
    local finishLine = script.Parent
    local raceActive = true
    -- Läuft jedes Mal, wenn der Spieler den Ziellinienabschnitt berührt
    local function finish()
  2. Füge einer zweiten Bedingung zur if-Anweisung hinzu, um zu überprüfen, ob raceActive wahr ist, bevor du finish() aufrufst.


    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and raceActive == true then
    finish()
    end
    end
  3. Um zu verhindern, dass finish() erneut aufgerufen wird, stellen Sie raceActive auf false ein.


    local function finish()
    print("touched the finish line")
    raceActive = false
    end
  4. Teste dein Spiel, um sicherzustellen, dass du nur deine Testdruckausgabe einmal siehst.

Behalte die Zeit im Auge

Wie eine if-Anweisung kann auch eine While-Schleife eine Bedingung verwenden, um zu sehen, ob sie ausführensoll.Um den Spieler:inzu zeitigen, erstelle einen Timer mit einem While-true-Loop, der nur läuft, wenn der raceActive boolesche Wert true ist.

  1. Am Ende des Skript, das. PL: die Skriptsgeben Sie while raceActive == true do ein. Drücken Sie die Eingabetaste, um automatisch zu vervollständigen und die end hinzuzufügen.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    end
  2. Um die Spieler zu zeitigen, in der Schleife, füge 1 zur timePassed Variable einmal alle Sekunde hinzu. Füge eine Druckausgabe-Anweisung hinzu, um deine Arbeit zu testen.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    task.wait(1)
    timePassed += 1
    print(timePassed)
    end
  3. Spiele das Spiel und überprüfe, ob du jede Sekunde im Ausgabe-Fenster angezeigt siehst.

Preis-Spieler-Medaillen

Um abzuschließen, verwende eine if-Anweisung mit mehreren Bedingungen, um Spielern eine unterschiedliche Preismedaille basierend auf ihrer Erfüllungzu verleihen.Verwende ein if-Statement und zwei elseif-Statements, um die Abschlusszeit des Spieler:inzu überprüfen und ihm die richtige Medaille zu verleihen.

  1. Um zu bestätigen, dass jede Medaille verliehen werden kann, verwende Druckausdrücke.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    end
  2. Um eine Goldmedaille zu vergeben, gib ein if-Statement ein, das timePassed mit der gewünschten Ziellzeit vergleicht.Dieses Beispiel prüft, ob die Zeit des Spieler:inweniger als oder gleich 10 Sekunden war.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    end
    end
  3. Teste dein Spiel und bestätige, dass die Goldmedaille verliehen werden kann.

Füge zusätzliche Bedingungen hinzu

Jetzt, da du für die Goldmedaille getestet hast, gib die Codebedingungen für die anderen Medaillen mit dem elseif-Schlüsselwort an.

  1. Für die Silbermedaille verwende elseif und die nächste gewünschte Zeitspanne.In diesem Beispiel ist die Reichweite größer als 10 Sekunden, aber kleiner als oder gleich 20 Sekunden.


    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. Verwende das gleiche Muster für die Bronzemedaille. Überprüfe deinen Code mit dem Beispiel unten.


    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. Teste deine Silber- und Bronzemedaille.

Problemlösungstipps

Wenn du die silbernen und bronzefarbenen Metalle nicht siehst, versuche eines der folgenden.

  • Jede elseif sollte dann nach ihrer Bedingung haben.
  • In partTouched() stellen Sie sicher, dass die zweite Bedingung der if-Anweisung == verwendet, wie in raceActive == true.
  • Überprüfe, dass jedes elseif im Umfang ist. Jede elseif Bedingung muss zwischen der ersten Zeile der if/then-Anweisung und ihrer letzten end liegen.

Füge die anderen Bedingung hinzu

Wenn der Spieler keine Medaille verdient hat, solltest du ihn ermutigen, es erneut zu versuchen.In diesem Fall kannst du eine else-Aussage verwenden, die ausgeführt wird, wenn keine anderen Bedingungen wahr sind, um ihnen eine Nachricht zu zeigen.

  1. Unter der letzten elseif und über end beginne eine neue Zeile und gib else ein. Füge dann nicht hinzu.Unterhalb von allem verwende eine Druck statement, um sie aufzufordern, erneut zu versuchen.


    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. Spieltest, um die andere Nachricht zu sehen.

Übersicht

Kontrollstrukturen können mehr als ein Szenario haben.Verwende if-Statements, um die ursprüngliche Aussage zum überprüfeneinzurichten und dann so viele elseif Bedingungen hinzuzufügen, wie nötig.Schließlich verwende else, um anzugeben, was passieren soll, wenn alle angegebenen Bedingungen falsch sind.

Beginnend oben werden alle Bedingungen überprüft, und nur die erste wahre Bedingung führt den Codesaus.Die verbleibenden Bedingungen werden nicht überprüft, und ihr Code wird nicht ausführen.

Nach Abschluss des Projekts kannst du das Skript erweitern, um neue Elemente auf ein paar zusätzliche Weise hinzuzufügen.

  • Füge Code hinzu, damit Spieler das Rennen wiederholen können, indem sie die Startlinie berühren, wenn sie fertig sind.
  • Entwerfen Sie einen Weg, um die Zeit während eines Rennens anzuzeigen.Du kannst die Zeit auf einem Teil mit einer grafische Benutzeroberflächeanzeigen, wie im Erstellen einer zeitgesteuerten Brücke-Tutorial.
Completed script

local timePassed = 0
local finishLine = script.Parent
-- Wird verwendet, um zu verhindern, dass finish() und Timer sich wiederholen, wenn das Rennen vorbei ist
local raceActive = true
-- Läuft, wenn der Spieler die Ziellinie berührt und ihm einen Preis zeigt
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
-- Überprüft, ob ein Spieler das Teil berührt, wenn ein Rennen aktiv ist
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)
-- Verfolgt die Rennzeit, während das Rennen aktiv ist. Muss am Ende des Skripts sein.
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end