Banyak script sering memerlukan untuk pergi melalui典典 atau array. Tetapi kadang-kadang, Anda mungkin tidak tahu awal dan akhir dari struktur data ini. Misalnya, sebuah dizionari pemain mungkin berubah, atau pemain mungkin memiliki inventaris array berukuran bervariasi.
Dalam situasi ini, Anda dapat menggunakan pairs() dan ipairs(). Ini dapat digunakan dengan for loop untuk pergi melalui setiap elemen tanpa titik awal dan akhir yang dikenal.
Artikel ini akan mencakup menggunakannya, dan memiliki contoh script praktis di mana Anda melacak pesanan restoran dalam gamememasak.
Diksi dan pasangan()
pairs() digunakan dengan 典典 . Sebuah contoh dapat dilihat di bawah ini.
local myDictionary = {["Blue Player"] = "Ana",["Gold Player"] = "Binh",["Red Player"] = "Cate",}for key, value in pairs(myDictionary) doprint(key .. " is " .. value)end
pairs() dapat digunakan untuk bekerja dengan unit, nilai, atau keduanya dari elemen dicakup kamus. Dalam for loop di bawah ini, variabel pertama adalah unit. Variabel kedua adalah nilai. Diksi yang ingin Anda kerjakan diberikan kepada pairs() .
local inventory = {["Gold Bricks"] = 43,Carrots = 3,Torches = 2,}print("You have:")for itemName, itemValue in pairs(inventory) doprint(itemValue, itemName)end
Setelah dijalankan, kode akan mencetak mengikuti:
You have:43 Gold Bricks3 Carrots2 Torches
Matrix dan ipairs()
ipairs() digunakan dengan array . The "i" in ipairs() berdiri untuk "indeks." Gunakan ipairs() dan array dalam kombinasi dengan for loop untuk bekerja dengan nilai yang diurutkan seperti papan peringkat. Contohnya adalah di bawah ini.
local players = {"Ali", "Ben", "Cammy"}for playerRank, playerName in ipairs(players) doprint("Winner #" .. playerRank .. " is " .. playerName)end
Setelah dijalankan, kode akan mencetak mengikuti:
Winner #1 is AliWinner #2 is BenWinner #3 is Cammy
Latihan - Restaurant Soup Simulator
Mari kita buat beberapa sup untuk simulator restoran di mana pemain memilih dari daftar bahan sup yang mungkin. Bahan akan disimpan sebagai kunci, dan nilai akan dimulai sebagai false sehingga pemain hanya mendapatkan apa yang mereka pilih.
Gunakan pairs() untuk melihat apa yang dipilih, dan kemudian ipairs() untuk mencetak daftar bahan.
Buat diksi baru bernama menu . Tambahkan 3 - 5 pas value-key di mana value adalah bahan dan key adalah false.
local menu = {cabbage = false,beef = false,tomato = false,noodles = false,}Di bawah menu典典, tambahkan array kosong yang akan diisi pilihan pelanggan nanti.
-- Sup Pelangganlocal selectedIngredients = {}Gunakan pairs() untuk memeriksa apakah setiap bahan di dicetak benar atau salah. Jika benar, tambahkan bahan ke sup.
-- Sup Pelangganlocal selectedIngredients = {}-- Menambahkan pilihan pelanggan ke sup merekafor menuChoice, value in pairs(menu) doif value thentable.insert(selectedIngredients, menuChoice)endendUlangi perintah ke klien. Dalam naskah, kode berikutnya di bawah ini.
- Periksa apakah ada item menu di selectedIngredients. Jika ya, cetak "You ordered soup with: ".
- Gunakan ipairs() untuk pergi melalui array selectedIngredients dan cetak setiap bahannya.
- Tes dengan mengubah setidaknya satu item menu menjadi benar.
-- Mencetak pesanan sup dari "SelectedIngredients"if #selectedIngredients > 0 thenprint("You ordered soup with: ")for index, soupIngredient in ipairs(selectedIngredients) doprint(soupIngredient)endendDalam pernyataan if yang memeriksa apakah ada item menu, tambahkan kondisi lain yang memberi tahu pelanggan jika tidak ada bahan yang dipilih.
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
Tantangan Opsional
Di bawah ini adalah beberapa tantangan yang menggunakan pasangan dan ipairs dengan cara yang berbeda. Coba lihat apakah Anda dapat membangun kode untuk ini. Tantangan : Buat NPC Waiter Alih-alih menggunakan jendela keluaran, gunakan NPC dari Intro To Arrays untuk membuat Waiter untuk mengambil pesanan pelanggan. Tantangan : Izinkan Pemain untuk Menempatkan Pesanan Izinkan pemain untuk memilih bahan dengan menyentuh bagian fisik seperti prompt lokasi. Untuk informasi lebih lanjut, lihat Prompt Lokasi. Tantangan Lanjutan : Buat Saya Beberapa Simulator Soup Buat restoran simulator di mana pemain adalah koki! Pemain harus menyiapkan bahan untuk cocok dengan pesanan yang diberikan kepada mereka oleh koki.
- Buat alat peraga dalam game untuk 3 - 5 bahan yang berbeda.
- Buat 3 - 5 resep menggunakan kamus yang mirip dengan yang ada dalam lekcion ini.
- Buat array yang menyimpan semua resep.
- Pilih resep secara acak dan gunakan NPC untuk memberi tahu pemain bahan apa yang ada.
- Buat kamus baru untuk membuat resep berdasarkan prop yang disentuh pemain.
- Bandingkan resep pemain dengan resep yang dipilih oleh NPC.
- Tingkatkan tantangan dengan menambahkan kondisi tambahan, seperti timer.