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) doprint(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) doprint(itemValue, itemName)end
Po wykonaniu kod wydrukuje obserwuje:
You have:43 Gold Bricks3 Carrots2 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) doprint("Winner #" .. playerRank .. " is " .. playerName)end
Po wykonaniu kod wydrukuje obserwuje:
Winner #1 is AliWinner #2 is BenWinner #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.
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,}Poniżej słownika menu dodaj pustą listę próżniową , 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 prawdą lub fałszem. Jeśli prawda, dodaj składnik do zupy.
-- Zupa klientalocal selectedIngredients = {}-- Dodaje wybory klienta do jego zupyfor menuChoice, value in pairs(menu) doif value thentable.insert(selectedIngredients, menuChoice)endendPowtó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 thenprint("You ordered soup with: ")for index, soupIngredient in ipairs(selectedIngredients) doprint(soupIngredient)endendW 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 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 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.
- Twórz przedmioty w grze dla 3 - 5 różnych składników.
- Stwórz 3 - 5 receptur za pomocą słowników podobnych do tego w tej lekcji.
- Stwórz tablicę, która zawiera wszystkie przepisy.
- Wybierz losowy przepis i użyj NPC, aby powiedzieć graczom, jakie są składniki.
- Utwórz nowy słownik, aby stworzyć recepturę, która opiera się na składnikach prop, których dotyka gracz.
- Porównaj recepturę gracza z wybraną przez NPC recepturą.
- Zwiększ wyzwanie, dodając dodatkowe warunki, takie jak czasomierz.