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) doprint(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) doprint(itemValue, itemName)end
Wenn er ausgeführt wird, druckt der Code gefolgte Profileaus:
You have:43 Gold Bricks3 Carrots2 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) doprint("Winner #" .. playerRank .. " is " .. playerName)end
Wenn er ausgeführt wird, druckt der Code gefolgte Profileaus:
Winner #1 is AliWinner #2 is BenWinner #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.
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,}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 Kundenlocal selectedIngredients = {}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 Kundenlocal selectedIngredients = {}-- Fügt die Auswahl des Kunden zu seiner Suppe hinzufor menuChoice, value in pairs(menu) doif value thentable.insert(selectedIngredients, menuChoice)endendWiederhole 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 thenprint("You ordered soup with: ")for index, soupIngredient in ipairs(selectedIngredients) doprint(soupIngredient)endendFü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 thenprint("You ordered soup with: ")for index, soupIngredient in ipairs(selectedIngredients) doprint(soupIngredient)endelseprint("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.
- Erstelle In-Game-Requisiten für 3 - 5 verschiedene Zutaten.
- Erstelle 3 - 5 Rezepte mit Wörterbüchern, die ähnlich sind wie das in dieser Lektion.
- Erstelle ein Array, das alle Rezepte enthält.
- Wähle zufällig ein Rezept und benutze einen NPC, um den Spielern mitzuteilen, welche Zutaten es sind.
- Erstelle ein neues Wörterbuch, um ein Rezept zu erstellen, bei dem der Spieler auf welche Prop-Zutaten berührt.
- Vergleiche das Rezept des Spieler:inmit dem von der NPC gewählten Rezept.
- Erhöhe die Herausforderung, indem du eine zusätzliche Bedingung hinzufügst, wie zum Beispiel einen Timer.