Während eine sehr einfache Klassenvererbung erstellen versuchen, alle Objekte, die die gleichen Werte teilenLua-Objekte nicht eindeutig zuzuordnen
Dies ist eine Vereinfachung meines Codes zu sein scheinen:
--Generic class
Object = {}
function Object:new (type,id,name)
o = {}
self.type = type or "none"
self.id = id or 0
self.name = name or "noname"
self.direction = "down"
self.animations = {}
self.animations.stack = {}
self.animations.idle = {}
self.animations.idle[self.direction] = {}
setmetatable(o, self)
self.__index = self
return o
end
function Object:draw(x,y)
local img = self.animations.idle["down"][0]
print("drawing " ..self.name.." as "..img)
end
function Object:setimg(img)
self.animations.idle["down"][0] = img
end
Player = Object:new()
-- Player class
function Player:new(id,name)
local o = self
o.id = id or 0
o.name = name or "noname"
o.collision = {}
o.collision.type = "player"
return o
end
function Player:move(x,y)
print("moving to ",x,y)
end
-- Testing
blockimg = "block.png"
grassimg = "grass.png"
plyrimg = "player.png"
block = Object:new("solid",1,"block")
block:setimg(blockimg)
grass = Object:new("floor",3,"grass")
grass:setimg(grassimg)
player = Player:new(1, "plyr1")
player:setimg(plyrimg)
block:draw() -- >drawing grass as player.png
grass:draw() -- >drawing grass as player.png
player:draw()-- >drawing plyr1 as player.png
Da Spieler: setimg war Die zuletzt genannten, alle "Objekte" wurden mit dem Befehl "plyrimg" abgeschlossen, so dass sie nicht eindeutig sind.
Verdammt habe ich wirklich nicht verstanden, ist es also sinnlos, Tabellen im Konstruktor zu initiieren? – Mojimi
Es ist nicht sinnlos! Sie müssen nur auf _wich_ Tabelle achten, die Sie im 'Konstruktor' zuweisen - denken Sie daran, dass in 'neu' 'self' auf die _class_ nicht die _instance_ verweist, wenn sie als' Player: new' oder 'Object: new' aufgerufen wird . – Oka
AAAAAAAAAAAAHHHHHHHHHH Ich sehe, jetzt verstehe ich danke – Mojimi