Study
LÖVE2D

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.

Editor Latihan

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.