Mini-proyek Bagian 6: Sistem Inventaris
Proyek ini menggunakan bab 26 dan 27: method, sintaks titik dua, pola
constructor .new, satu metatable per class.
Item dan Inventory mengelola tas berisi barang
rampasan.
Yang harus dibangun
Dua class dalam satu file modul:
Item — satu benda yang bisa
dikumpulkan.
Item.new(name, weight, value)— constructor.- Field:
name(string),weight(angka),value(angka). Item:describe()— ringkasan satu baris, misalnya"sword (3.5kg, 50g)".
Inventory — wadah untuk menyimpan
item.
Inventory.new()— constructor; dimulai dengan daftar kosong.- Field:
items(daftar instanceItem). Inventory:add(item)— menambahkan sebuah item.Inventory:remove(name)— menghapus item pertama dengan nama tersebut; mengembalikannya, atauniljika tidak ada yang cocok.Inventory:list()— mencetak:describe()setiap item di baris tersendiri, lalu baris total di bagian bawah.Inventory:totalWeight()— jumlah semua berat.Inventory:totalValue()— jumlah semua nilai.
main.lua:
- Membuat beberapa item.
- Membuat inventaris dan menambahkan item-item tersebut.
- Menampilkan daftar inventaris.
- Menghapus satu item berdasarkan nama.
- Menampilkan daftar lagi.
- Mencetak total berat dan nilai sebagai ringkasan.
Contoh keluaran:
Inventory (3 items):
- sword (3.5kg, 50g)
- shield (5.0kg, 30g)
- potion (0.2kg, 5g)
Totals: 8.70kg, 85g
(removed sword)
Inventory (2 items):
- shield (5.0kg, 30g)
- potion (0.2kg, 5g)
Totals: 5.20kg, 35g
Struktur file
Dua file. Seperti di Bagian 5, masuk ke folder proyek terlebih dahulu
dengan cd:
cd projects/05-inventory/starter
lua main.lua
File-file (ada di starter/ dan
finished/):
inventory.lua— mendefinisikanItemdanInventory, mengembalikan tabel berisi keduanya:local M = {} M.Item = Item M.Inventory = Inventory return Mmain.lua—requiremodulnya, mengambil kedua class, menjalankan skenario.
Petunjuk
- Kedua class menggunakan pola
__indexdari bab 27: dua tabel class, dua metatable, dua constructor. Inventory:remove(name)menelusuriself.itemsdenganipairsuntuk mencarinameyang cocok, lalutable.remove(self.items, i)menghapusnya.- Gunakan
string.formatuntuk baris total diInventory:list:"Totals: %.2fkg, %dg".
Apa saja yang boleh dipakai
Apa pun dari Bagian 2-6: variabel, alur kontrol, fungsi, modul, tabel, method, metatable.
Sudah selesai?
Kalau skenario berjalan lancar dari main.lua, kamu sudah
selesai. Selanjutnya: Bab 31 — From
Lua to Luau, jembatan menuju Roblox Studio.