oryginały i ipary

*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 często będzie musiało przejść 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ć, a gracze mogą mieć ekwipunek arkuszy o różnych rozmiarach.

W tych sytuacjach możesz użyć pairs() i ipairs().Można ich używać z pętlą for, aby przejść przez każdy element bez znanych punktów początku i końca.

Ten artykuł pokryje ich używanie i będzie miał praktyczny przykład skryptu, w którym śledzisz zamówienia restauracji w gragotowania.

Słowniki i pary()

pairs() jest używany z słownikami . Poniżej jest pokazany przykład.


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żyć do pracy z kluczem, wartością lub obu elementów słownika.W pętli for poniżej pierwsza zmienna jest kluczem.Druga zmienna to wartość.Słownik, 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

Po wykonaniu kod wydrukuje obserwuje:


You have:
43 Gold Bricks
3 Carrots
2 Torches

Tablice i ipairs()

ipairs() jest używany z matrycami .Litera "i" w ipairs() oznacza "indeks". Użyj ipairs() i tablic w połączeniu z pętlą for, aby pracować z uporządkowanymi wartościami, takimi jak tabele liderów.Poniżej jest przykład.


local players = {"Ali", "Ben", "Cammy"}
for playerRank, playerName in ipairs(players) do
print("Winner #" .. playerRank .. " is " .. playerName)
end

Po wykonaniu kod wydrukuje obserwuje:


Winner #1 is Ali
Winner #2 is Ben
Winner #3 is Cammy

Praktyka - Symulator zupy restauracyjnej

Zróbmy zupę dla symulatora restauracji, w którym gracze wybierają z listy możliwych składników zupy.Składniki zostaną przechowane jako klucze, a wartości rozpoczną się od fałdu, więc gracze otrzymają 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 nową słownik o nazwie menu, dodaj 3 - 5 par klucz-wartość, w których klucz jest składnikiem, a wartość jest fałszywa.


    local menu = {
    cabbage = false,
    beef = false,
    tomato = false,
    noodles = false,
    }
  2. Poniżej słownika menu dodaj pustą listę próżniową , 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 prawdą lub fałszem. Jeśli prawda, dodaj składnik do zupy.


    -- Zupa klienta
    local selectedIngredients = {}
    -- Dodaje wybory klienta do jego zupy
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. Powtórz zamówienie do klienta. W skrypcie koduj następujące poniżej.

    • Sprawdź, czy istnieje menu w selectedIngredients . Jeśli tak, wydrukuj "You ordered soup with: " .
    • Użyj ipairs() , aby przejść przez selectedIngredients matrycę i wydrukować każdy składnik.
    • Testuj poprzez zmianę co najmniej jednego elementu menu na prawdę.

    -- Drukuje zamówienie na zupę 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 oświadczeniu if, które sprawdza, czy istnieje przedmiotmenu, dodaj warunek else, który informuje klientów, że żadne składniki nie zostały wybrane.


    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 pary w różny sposób. Spróbuj zobaczyć, czy możesz zbudować kod dla nich. Wyzwanie : Stwórz NPC Waitera zamiast używać okna wyjścia, użyj NPC z Intro To Arrays, aby stworzyć kelnera, który będzie przyjmował zamówienia klientów. Wyzwanie : Pozwól graczom na składanie zamówień Pozwól graczom wybrać składnik, dotykając fizyczną część, taką jak powiadomienie o zbliżeniu.Aby uzyskać więcej informacji, zobacz powiadomienia o zbliżeniu. Zaawansowane wyzwanie : Make Me Some Soup Simulator Stwórz symulator restauracji, w którym gracze są szefami kuchni! Gracze będą musieli połączyć składniki, aby dopasować zamówienie otrzymane od kelnera.

  1. Twórz przedmioty w grze dla 3 - 5 różnych składników.
  2. Stwórz 3 - 5 receptur za pomocą słowników podobnych do tego w tej lekcji.
  3. Stwórz tablicę, która zawiera wszystkie przepisy.
  4. Wybierz losowy przepis i użyj NPC, aby powiedzieć graczom, jakie są składniki.
  5. Utwórz nowy słownik, aby stworzyć recepturę, która opiera się na składnikach prop, których dotyka gracz.
  6. Porównaj recepturę gracza z wybraną przez NPC recepturą.
  7. Zwiększ wyzwanie, dodając dodatkowe warunki, takie jak czasomierz.