Wiele skryptów będzie często musiało przejść przez słowniki lub matryce. Ale czasami możesz nie wiedzieć początku i końca tych struktur danych. Na przykład, dyktoria graczy mogą się zmieniać, a gracze mogą mieć listę matryc w różnych rozmiarach.
W tych sytuacjach możesz użyć pairs() i ipairs(). Te można używać z for pętli, aby przejść każdy element bez znanych punktów początku i końca.
Ten artykuł omówi ich użycie i będzie miał praktyczny przykład skryptu, w którym śledzisz zamówienia restauracji w grakuchniowej.
Słowniki i pary()
pairs() używany jest z słownikami . Przykład jest pokazany poniżej.
local myDictionary = {["Blue Player"] = "Ana",["Gold Player"] = "Binh",["Red Player"] = "Cate",}for key, value in pairs(myDictionary) doprint(key .. " is " .. value)end
pairs() można używać do pracy z kluczem, wartości lub obu elementu dizektora. W pętli for poniżej pierwsza zmienne jest kluczem. Druga zmiana jest wartością. Dizektor, z którym chcesz pracować, jest przekazywany do pairs() .
local inventory = {["Gold Bricks"] = 43,Carrots = 3,Torches = 2,}print("You have:")for itemName, itemValue in pairs(inventory) doprint(itemValue, itemName)end
Kiedy zostanie wykonany, kod wydrukuje obserwuje:
You have:43 Gold Bricks3 Carrots2 Torches
Matryce i ipairs()
ipairs() używa się z Arrays . „i” w ipairs() stoi dla „indeksu”. Użyj ipairs() i Arrays w połączeniu z for loop, aby działał z zespojonymi wartościami jak tabele liderów. przykład poniżej.
local players = {"Ali", "Ben", "Cammy"}for playerRank, playerName in ipairs(players) doprint("Winner #" .. playerRank .. " is " .. playerName)end
Kiedy zostanie wykonany, kod wydrukuje obserwuje:
Winner #1 is AliWinner #2 is BenWinner #3 is Cammy
Praktyka - Restaurant Soup Simulator
Zróbmy trochę zupy dla symulatora restauracji, w którym gracze wybierają z listy możliwych składników zupy. Składniki są zapisywane jako klucze, a wartości zaczynają się od fałszywych, aby gracze otrzymali tylko to, co wybierać.
Użyj pairs() , aby zobaczyć, co zostało wybrane, a następnie ipairs() , aby wydrukować listę składników.
Utwórz nowy słownik nazyającym się menu . Dodaj 3 - 5 pary kluczowych, w których klucz jest składnikiem i wartość jest fałszywa.
local menu = {cabbage = false,beef = false,tomato = false,noodles = false,}Poniżej menu dictionary, dodaj próżnią listę , która zostanie wypełniona wyborami klienta później.
-- Zupa klientalocal selectedIngredients = {}Użyj pairs() , aby sprawdzić, czy każdy składnik w słowniku jest oznaczony prawdziwy lub fałszywy. Jeśli tak, 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 kolejność dla klienta. W skrypcie koduj następująco poniżej.
- Sprawdź, czy istnieje menu pozycja w selectedIngredients . Jeśli tak, wydrukuj "You ordered soup with: " .
- Użyj ipairs() , aby przejść przez selectedIngredients maszynę i wydrukować każdy składnik.
- Testuj poprzez zmianę co najmniej jednego menu item na prawdę.
-- Drukuje zamówienie z "wybranych składników"if #selectedIngredients > 0 thenprint("You ordered soup with: ")for index, soupIngredient in ipairs(selectedIngredients) doprint(soupIngredient)endendW if statement, który sprawdza, czy istnieje menu przedmiot, dodaj inny warunek, który mówi klientom, że żadnych składników nie zostało wybranych.
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
Opcjonalne wyzwania
Poniżej znajdują się niektóre wyzwania, które stosują pary i ipairs w różny sposób. Spróbuj zobaczyć, czy możesz zbudować kod dla tych. Wyzwanie : Utwórz NPC kelnera zamiast używać okna wyjścia, użyj NPC z Intro To Arrays , aby stworzyć kelnera, aby przyjmować zamówienia klientów. Wyzwanie : Umożliwiaj graczom umieszczenie zamówień Umożliwij graczom selekcję składnika poprzez dotykanie fizycznej części, takiej jak pytanie o zbliżenie. For more information, see Zbliżenie prompts . Zaawansowane wyzwanie : Make Me Some Soup Simulator Stwórz symulator restauracji, w którym gracze są kucharzami! Gracze będą musieli połączyć składniki, aby dopasować zamówione przez nich przez gosia.
- Twórz w grze elementy do 3 - 5 różnych składników.
- Utwórz 3 - 5 przepisów używając słowników podobnych do tego w tej lekcji.
- Utwórz matrycę, która zawiera wszystkie przepisy.
- Wybierz losowy wzór i użyj NPC, aby powiedzieć graczom, które składniki są.
- Utwórz nowy słownik, aby stworzyć przepis bazujący na tych składnikach, który dotyka gracza.
- Porównaj receptę gracza z wybraną przez NPC receptą.
- Zwiększ wyzwanie, dodając dodatkowy warunek, takich jak timer.