Возникли проблемы с использованием нескольких объектов

#lua

#lua

Вопрос:

вопрос об ООП здесь.

 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
 

Если бы я вызвал refreshInvader, перемещался бы только последний созданный мной файл. Есть ли в любом случае возможность переместить все?

Ответ №1:

У вас есть только одна Invader таблица. Все ваши операции относятся к self тому, что Invader

Ни в коем случае в вашем коде вы не создаете вторую таблицу, которая служила бы «новым объектом».

Вам нужно было бы сделать что-то подобное, чтобы получить несколько объектов:

 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")