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) doprint(key .. " to " .. value)end
pairs() 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) doprint(itemValue, itemName)end
Po wykonaniu kodu zostanie wydrukowane:
Masz:43 Złote Cegły3 Marchewki2 Latarki
Tablice 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) doprint("Zwycięzca #" .. playerRank .. " to " .. playerName)end
Po wykonaniu kodu zostanie wydrukowane:
Zwycięzca #1 to AliZwycięzca #2 to BenZwycięzca #3 to Cammy
Praktyka - 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.