Wiele skryptów często musi przechodzić przez słowniki lub tablice. Ale czasami możesz nie znać początku i końca tych struktur danych. Na przykład, słownik graczy może się zmieniać, lub gracze mogą mieć tablicę z różnymi rozmiarami zapasów.
W takich sytuacjach możesz używać pairs() i ipairs(). Można je używać z pętlą for, aby przejść przez każdy element bez znanych punktów początku i końca.
Ten artykuł omówi ich użycie oraz zawiera praktyczny przykład skryptu, w którym śledzisz zamówienia w restauracji w grze gotowania.
Słowniki i pairs()
pairs() jest używane z słownikami. Przykład znajduje się poniżej.
local myDictionary = {
["Niebieski Gracz"] = "Ana",
["Złoty Gracz"] = "Binh",
["Czerwony Gracz"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " to " .. value)
endpairs() może być używane do pracy z kluczem, wartością lub obydwoma elementami słownika. W poniższej pętli for pierwsza zmienna to klucz. Druga zmienna to wartość. Słownik, z którym chcesz pracować, jest przekazywany do pairs().
local inventory = {
["Złote Cegły"] = 43,
Marchewki = 3,
Latarki = 2,
}
print("Masz:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
endPo wykonaniu kodu zostanie wydrukowane:
Masz:
43 Złote Cegły
3 Marchewki
2 LatarkiTablice i ipairs()
ipairs() jest używane z tablicami. "i" w ipairs() oznacza "indeks." Używaj ipairs() i tablic w połączeniu z pętlą for do pracy z uporządkowanymi wartościami, takimi jak rankingi. Przykład znajduje się poniżej.
local players = {"Ali", "Ben", "Cammy"}
for playerRank, playerName in ipairs(players) do
print("Zwycięzca #" .. playerRank .. " to " .. playerName)
endPo wykonaniu kodu zostanie wydrukowane:
Zwycięzca #1 to Ali
Zwycięzca #2 to Ben
Zwycięzca #3 to CammyPraktyka - Symulator Zupy Restauracyjnej
Zróbmy zupę dla symulatora restauracji, gdzie gracze wybierają z listy możliwych składników zupy. Składniki będą przechowywane jako klucze, a wartości będą początkowo fałszywe, aby gracze otrzymali tylko to, co wybiorą.
Użyj pairs(), aby zobaczyć, co zostało wybrane, a następnie ipairs(), aby wydrukować listę składników.
Stwórz nowy słownik o nazwie menu. Dodaj 3 - 5 par klucz-wartość, gdzie klucz to składnik, a wartość to fałsz.
local menu = {kabaczek = false,wołowina = false,pomidor = false,nakładki = false,}Pod słownikiem menu dodaj pustą tablicę, która zostanie wypełniona wyborami klientów później.
-- Zupa klientalocal selectedIngredients = {}Użyj pairs(), aby sprawdzić, czy każdy składnik w słowniku jest oznaczony jako prawda lub fałsz. Jeśli prawda, dodaj składnik do zupy.
-- Zupa klientalocal selectedIngredients = {}-- Dodaje wybory klienta do ich zupyfor menuChoice, value in pairs(menu) doif value thentable.insert(selectedIngredients, menuChoice)endendPowtórz zamówienie klientowi. W skrypcie zakoduj następujące poniżej.
- Sprawdź, czy w selectedIngredients znajduje się element menu. Jeśli tak, wydrukuj "Zamówiłeś zupę z: ".
- Użyj ipairs(), aby przejrzeć tablicę selectedIngredients i wydrukować każdy składnik.
- Przetestuj, zmieniając przynajmniej jeden element menu na prawdę.
-- Wydrukuj zamówienie zupy z "selectedIngredients"if #selectedIngredients > 0 thenprint("Zamówiłeś zupę z: ")for index, soupIngredient in ipairs(selectedIngredients) doprint(soupIngredient)endendW instrukcji if, która sprawdza, czy w menu znajduje się element, dodaj warunek else, który informuje klientów, że nie wybrano składników.
if #selectedIngredients > 0 thenprint("Zamówiłeś zupę z: ")for index, soupIngredient in ipairs(selectedIngredients) doprint(soupIngredient)endelseprint("Nic nie zostało wybrane. Czy nie jesteś głodny?")end
Opcjonalne wyzwania
Poniżej znajdują się wyzwania, które stosują użycie pairs i ipairs na różne sposoby. Spróbuj zbudować kod dla tych.
Wyzwanie: Stwórz NPC Kelnera Zamiast używać okna Wyjścia, użyj NPC z Wprowadzenie do tablic, aby stworzyć kelnera, który przyjmuje zamówienia od klientów.
Wyzwanie: Pozwól graczom składać zamówienia Pozwól graczom wybierać składniki poprzez dotknięcie fizycznej części, takiej jak wywołanie bliskości. Po więcej informacji zobacz Wywołania Bliskości.
Zaawansowane wyzwanie: Zrób mi symulator zupy Stwórz symulator restauracji, w której gracze są szefami kuchni! Gracze będą musieli zebrać składniki, aby dopasować zamówienie przekazane im przez kelnera.
- Stwórz w grze przedmioty dla 3 - 5 różnych składników.
- Stwórz 3 - 5 przepisów używając słowników podobnych do tego w tej lekcji.
- Stwórz tablicę, która będzie przechowywać wszystkie przepisy.
- Losowo wybierz przepis i użyj NPC, aby powiedzieć graczom, jakie są składniki.
- Stwórz nowy słownik, aby stworzyć przepis na podstawie składników, których dotknie gracz.
- Porównaj przepis gracza z przepisem wybranym przez NPC.
- Zwiększ wyzwanie, dodając dodatkowy warunek, na przykład czasomierz.