Tabel Lua sebagai Entity/Struktur Data Game
Penjelasan
Lua tidak punya sistem class bawaan seperti bahasa OOP lain, tapi tabel Lua cukup fleksibel untuk merepresentasikan entity game — kumpulan key-value untuk properti (x, y, hp, kecepatan) dan bahkan fungsi sebagai "method" yang disimpan di key tabel tersebut. Pola ini umum dipakai di banyak game LÖVE2D tanpa perlu framework OOP tambahan. Untuk mengelola banyak entity sekaligus (musuh, peluru, item), pola umumnya adalah array tabel — satu array berisi banyak tabel entity — lalu di-loop di dalam `love.update` dan `love.draw` untuk memperbarui dan menggambar semuanya secara seragam.
Contoh Konsep
local function buatMusuh(x, y)
return { x = x, y = y, hp = 100, kecepatan = 80 }
end
local daftarMusuh = {
buatMusuh(100, 100),
buatMusuh(300, 150),
buatMusuh(500, 200)
}
function love.update(dt)
for _, musuh in ipairs(daftarMusuh) do
musuh.x = musuh.x + musuh.kecepatan * dt
end
end
function love.draw()
for _, musuh in ipairs(daftarMusuh) do
love.graphics.rectangle("fill", musuh.x, musuh.y, 30, 30)
end
end
Praktikum
Buat fungsi buatPeluru(x, y) yang mengembalikan tabel entity peluru, isi array berisi 5 peluru di posisi berbeda, lalu gerakkan semuanya ke kanan tiap frame.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Gunakan `table.remove` di dalam loop terbalik (dari indeks terakhir ke pertama) saat menghapus entity yang mati dari array, supaya indeks yang tersisa tidak kacau saat iterasi.