-- Chapter 28 example: a list of objects, each acting on its own data.
local Critter = {}
Critter.__index = Critter
function Critter.new(name, energy)
    return setmetatable({ name = name, energy = energy }, Critter)
end
function Critter:play()
    self.energy = self.energy - 1
    print(self.name .. " plays. Energy: " .. self.energy)
end

local critters = {
    Critter.new("Spark", 3),
    Critter.new("Bolt", 2),
    Critter.new("Nova", 1),
}

for _, c in ipairs(critters) do
    c:play()
end
-- Try: add a second loop below that makes each critter play again.
