Having trouble using multiple objects

Viewed 49

question about OOP here.

Invader = {PosX = 5, PosY = 5, alive = true}    


function Invader:new(x, y)



 --  local InvaderImage = paintUtils.loadImage("")


    
self.__index = self
self.PosX = x
term.setCursorPos(self.PosX, self.PosY)
write("V")   
        
    
function refreshInvader()
    
    write("moved")
    term.setCursorPos(self.PosX, self.PosY)
    write(" ")
    self.PosX = self.PosX + 3
    term.setCursorPos(self.PosX, self.PosY)
    write("V")

end



end

If i were to call refreshInvader, only the latest one i created would move. Is there anyway to move all?

1 Answers

You only have one Invader table. All your operations refer to self which is Invader

At no point in your code you create a second table that would serve as a "new object".

You would have to do something like this in order to get multiple objects:

Pet = {}
function Pet:new(name, sound)

  self.__index = self

  local newObject = setmetatable({}, self)
  newObject.name = name or "unnamed"

 return newObject

end

local a = Pet:new("Snuggles")
local b = Pet:new("Nibbles")
Related