coppie e ipari

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Molti script dovranno spesso passare attraverso dizionari o array.Ma a volte, potresti non conoscere l'inizio e la fine di queste strutture di dati.Ad esempio, un dizionario di giocatori può essere in via di cambiamento, o i giocatori possono avere un inventario di dimensioni variabili di array.

In queste situazioni, puoi usare pairs() e ipairs().Questi possono essere utilizzati con un ciclo while per passare attraverso ogni elemento senza punti di inizio e fine noti.

Questo articolo tratterà il loro uso e avrà un esempio di script pratico in cui tracciate gli ordini del ristorante in un Giocodi cucina.

Dizionari e pairs()

pairs() è utilizzato con dizionari . Un esempio è visto qui sotto.


local myDictionary = {
["Blue Player"] = "Ana",
["Gold Player"] = "Binh",
["Red Player"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " is " .. value)
end

pairs() può essere utilizzato per lavorare con la chiave, il valore o entrambi gli elementi di un dizionario.Nel ciclo for sotto, la prima variabile è la chiave.La seconda variabile è il valore.Il dizionario con cui vuoi lavorare viene passato a pairs() .


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("You have:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Quando viene eseguito, il codice stamperà quanto Seguendo:


You have:
43 Gold Bricks
3 Carrots
2 Torches

Array e ipairs()

ipairs() viene utilizzato con array .Il "i" in ipairs() sta per "index." Usa ipairs() e array in combinazione con un ciclo for per lavorare con valori ordinati come le classifiche.Un esempio è qui sotto.


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

Quando viene eseguito, il codice stamperà quanto Seguendo:


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

Pratica - Simulatore di zuppa del ristorante

Creiamo una zuppa per un simulatore di ristorante in cui i giocatori scelgono da una lista di possibili ingredienti di zuppa.Gli ingredienti verranno memorizzati come chiavi e i valori inizieranno come falsi in modo che i giocatori ottengano solo ciò che Selezionare.

Usa pairs() per vedere ciò che è stato selezionato, e poi ipairs() per stampare l'elenco degli ingredienti.

  1. Crea un nuovo dizionario chiamato menu . Aggiungi 3 - 5 coppie chiave-valore in cui la chiave è l'ingrediente e il valore è falso.


    local menu = {
    cabbage = false,
    beef = false,
    tomato = false,
    noodles = false,
    }
  2. Sotto il dizionario del menu, aggiungi un array vuoto che verrà riempito con le scelte del cliente in seguito.


    -- Zuppa del cliente
    local selectedIngredients = {}
  3. Usa pairs() per controllare se ogni ingrediente nel dizionario è contrassegnato vero o falso. Se è vero, aggiungi l'ingrediente alla zuppa.


    -- Zuppa del cliente
    local selectedIngredients = {}
    -- Aggiunge le scelte del cliente alla sua zuppa
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. Ripeti l'ordine al cliente. Nel script, codifica quanto segue.

    • Verifica se c'è un elemento del menu in selectedIngredients . Se è così, stampa "You ordered soup with: " .
    • Usa ipairs() per passare attraverso l'array selectedIngredients e stampare ogni ingrediente.
    • Prova cambiando almeno un elemento del menu in vero.

    -- Stampa l'ordine della zuppa da "ingredienti selezionati"
    if #selectedIngredients > 0 then
    print("You ordered soup with: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. Nella dichiarazione if che controlla se esiste un Articolomenu, aggiungi una condizione else che informa i clienti se non sono stati selezionati ingredienti.


    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

Sfide opzionali

Di seguito sono riportate alcune sfide che si applicano utilizzando coppie e ipari in modi diversi. Prova a vedere se puoi costruire il codice per questi. Sfida : Crea un NPC Server invece di utilizzare la finestra di output, usa il NPC da Intro To Arrays per creare un server per prendere gli ordini dei clienti. Sfida : Consenti ai giocatori di effettuare ordini Consenti ai giocatori di selezionare un ingrediente toccando una parte fisica come un prompt di prossimità.Per ulteriori informazioni, vedi Prompt di prossimità. Sfida avanzata : Make Me Some Soup Simulator Crea un simulatore di ristorante in cui i giocatori sono i cuochi! I giocatori dovranno mettere insieme gli ingredienti per corrispondere all'ordine dato loro dal cameriere.

  1. Crea oggetti in gioco per 3 - 5 diversi ingredienti.
  2. Crea 3 - 5 ricette usando dizionari simili a quello in questa lezione.
  3. Crea un array che contiene tutte le ricette.
  4. Seleziona casualmente una ricetta e usa un NPC per dire ai giocatori quali sono gli ingredienti.
  5. Crea un nuovo dizionario per creare una ricetta basata su quali ingredienti del proprio tocco il giocatore tocca.
  6. Confronta la ricetta del Giocatorecon la ricetta scelta dall'NPC.
  7. Aumenta la sfida aggiungendo una condizione extra, come un timer.