paare und ipairs

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

Viele Skripte müssen oft durch Wörterbücher oder Arrays gehen.Aber manchmal kennst du vielleicht nicht den Anfang und das Ende dieser Datenstrukturen.Zum Beispiel kann ein Wörterbuch von Spielern sich ändern oder Spieler ein Array-Inventar unterschiedlicher Größe haben.

In diesen Situationen können Sie pairs() und ipairs() verwenden.Diese können mit einer for-Schleife verwendet werden, um jedes Element durchzugehen, ohne bekannte Start- und Endpunkte.

Dieser Artikel wird die Verwendung abdecken und ein praktisches Skript-Beispiel enthalten, in dem du Restaurantbestellungen in einem Spielverfolgst.

Wörterbücher und pairs()

pairs() wird mit Wörterbüchern verwendet. Ein Beispiel wird unten angezeigt.


local myDictionary = {
["Blue Player"] = "Ana",
["Gold Player"] = "Binh",
["Red Player"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " is " .. value)
end

pairs() kann verwendet werden, um mit dem Schlüssel, dem Wert oder beidem eines Dictionär-Elements zu arbeiten.In der for-Schleife unten ist die erste Variable der Schlüssel.Die zweite Variable ist der Wert.Das Wörterbuch, mit dem du arbeiten möchtest, wird an pairs() übergeben.


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("You have:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Wenn er ausgeführt wird, druckt der Code gefolgte Profileaus:


You have:
43 Gold Bricks
3 Carrots
2 Torches

Arrays und ipairs()

ipairs() wird mit Arrays verwendet.Das "i" in ipairs() steht für "Index". Verwende ipairs() und Arrays in Kombination mit einer for-Schleife, um mit sortierten Werten wie Bestenlisten zu arbeiten.Ein Beispiel ist unten.


local players = {"Ali", "Ben", "Cammy"}
for playerRank, playerName in ipairs(players) do
print("Winner #" .. playerRank .. " is " .. playerName)
end

Wenn er ausgeführt wird, druckt der Code gefolgte Profileaus:


Winner #1 is Ali
Winner #2 is Ben
Winner #3 is Cammy

Üben - Restaurant-Suppe-Simulator

Lassen wir uns eine Suppe für einen Restaurant-Simulator machen, bei dem Spieler aus einer Liste von möglichen Suppe-Zutaten wählen.Die Zutaten werden als Schlüssel gespeichert, und die Werte beginnen als falsch, so dass die Spieler nur das bekommen, was sie auswählen.

Verwende pairs(), um zu sehen, was ausgewählt wurde, und dann ipairs(), um die Liste der Zutaten auszudrucken.

  1. Erstelle ein neues Wörterbuch , das menu. Füge 3 - 5 Schlüssel-Wert-Paare hinzu, bei denen der Schlüssel die Zutat und der Wert falsch ist.


    local menu = {
    cabbage = false,
    beef = false,
    tomato = false,
    noodles = false,
    }
  2. Unter dem Menü-Wörterbuch füge ein leeres Array hinzu, das später mit den Auswahlmöglichkeiten des Kunden gefüllt wird.


    -- Suppe des Kunden
    local selectedIngredients = {}
  3. Verwende pairs(), um zu überprüfen, ob jede Zutat im Wörterbuch als wahr oder falsch markiert ist. Wenn es wahr ist, füge die Zutat zur Suppe hinzu.


    -- Suppe des Kunden
    local selectedIngredients = {}
    -- Fügt die Auswahl des Kunden zu seiner Suppe hinzu
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. Wiederhole die Bestellung an den Kunden zurück. Im Skript, das. PL: die Skriptskodiere das Folgende.

    • Überprüfe, ob es ein Menüelement in selectedIngredients gibt. Wenn ja, drucke "You ordered soup with: " aus.
    • Verwende ipairs(), um durch die selectedIngredients -Matrix zu gehen und jede Zutat zu drucken.
    • Teste, indem du mindestens ein Menüelement auf wahr änderst.

    -- Druckt Suppenbestellung aus "ausgewählten Zutaten"
    if #selectedIngredients > 0 then
    print("You ordered soup with: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. Füge in der if-Anweisung, die überprüft, ob es ein Artikelgibt, eine else-Bedingung hinzu, die den Kunden mitteilt, wenn keine Zutaten ausgewählt wurden.


    if #selectedIngredients > 0 then
    print("You ordered soup with: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    else
    print("Nothing was selected. Are you not hungry?")
    end

Optionale Herausforderungen

Im Folgenden sind einige Herausforderungen aufgeführt, die mit Paaren und Ipaaren auf unterschiedliche Weise angewendet werden. Versuchen Sie, zu sehen, ob Sie den Code dafür erstellen können. Herausforderung : Erstelle einen Wartner-NPC anstelle der Ausgabe-Fenster, verwende den NPC aus Intro To Arrays, um einen Wartner zu erstellen, der Kundenbestellungen annimmt. Herausforderung : Erlaube Spielern, Bestellungen aufzugeben Erlaube Spielern, eine Zutat auszuwählen, indem sie ein physisches Element wie einen Näherungshinweis berühren.Für weitere Informationen, siehe Näherungsaufforderungen. Fortgeschrittene Herausforderung : Make Me Some Soup Simulator Erstelle einen Restaurant-Simulator, in dem Spieler die Köche sind! Spieler müssen Zutaten zusammenstellen, um die Bestellung zu passen, die ihnen vom Kellner gegeben wurde.

  1. Erstelle In-Game-Requisiten für 3 - 5 verschiedene Zutaten.
  2. Erstelle 3 - 5 Rezepte mit Wörterbüchern, die ähnlich sind wie das in dieser Lektion.
  3. Erstelle ein Array, das alle Rezepte enthält.
  4. Wähle zufällig ein Rezept und benutze einen NPC, um den Spielern mitzuteilen, welche Zutaten es sind.
  5. Erstelle ein neues Wörterbuch, um ein Rezept zu erstellen, bei dem der Spieler auf welche Prop-Zutaten berührt.
  6. Vergleiche das Rezept des Spieler:inmit dem von der NPC gewählten Rezept.
  7. Erhöhe die Herausforderung, indem du eine zusätzliche Bedingung hinzufügst, wie zum Beispiel einen Timer.