aryty i ip

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

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) do
print(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) do
print(itemValue, itemName)
end

Kiedy zostanie wykonany, kod wydrukuje obserwuje:


You have:
43 Gold Bricks
3 Carrots
2 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) do
print("Winner #" .. playerRank .. " is " .. playerName)
end

Kiedy zostanie wykonany, kod wydrukuje obserwuje:


Winner #1 is Ali
Winner #2 is Ben
Winner #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.

  1. 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,
    }
  2. Poniżej menu dictionary, dodaj próżnią listę , która zostanie wypełniona wyborami klienta później.


    -- Zupa klienta
    local selectedIngredients = {}
  3. 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 klienta
    local selectedIngredients = {}
    -- Dodaje wybory klienta do ich zupy
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. Powtó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 then
    print("You ordered soup with: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. W 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 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

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.

  1. Twórz w grze elementy do 3 - 5 różnych składników.
  2. Utwórz 3 - 5 przepisów używając słowników podobnych do tego w tej lekcji.
  3. Utwórz matrycę, która zawiera wszystkie przepisy.
  4. Wybierz losowy wzór i użyj NPC, aby powiedzieć graczom, które składniki są.
  5. Utwórz nowy słownik, aby stworzyć przepis bazujący na tych składnikach, który dotyka gracza.
  6. Porównaj receptę gracza z wybraną przez NPC receptą.
  7. Zwiększ wyzwanie, dodając dodatkowy warunek, takich jak timer.