20Fermer22
GodzilLe 19/04/2017 à 15:59
Oui en effet c'est du Lua, ce code n'a rien d'extraordinaire a dire vrai, c'est juste le code utilise pour generer la carte de cette demo:

http://www.lexaloffle.com/bbs/?pid=24893&tid=3779
on part d'un bitmap et on obtiens un tileset.

Lua n'est pas un language typé, enfin il l'est dynamiquement, tout comme python.

Ret peux etre un tableau, un entier ou une chaine ou un "pointeur" de fonction.

Les listes/tableaux sont la base de beaucoup de choses en lua.

En gros pour faire un objet:

-- Soit la fonction foo: function foo(self) print("I am "..self.name) end -- On declare une "liste": obj = {} obj.fonction = foo -- On ajoute des propriete: obj.x = 42 obj.y = 53 obj.name = "SuperCopter" -- On appelle la methode fonction: obj.fonction() -- Output: I am SuperCopter
On pourrais aussi faire

function foo(self) print("I am "..self[4]) end obj={} obj[1] = 42 obj[2] = 53 obj[3] = "SuperCopter" obj[4] = foo -- On appelle la methode: obj[4]() Ca doit marcher meme si je n'ai jamais teste, la difference est juste la facon dont sont indexé les membres de l'objet, soit par un index, soit par un nom.




Edit: bon faut que je revise l'objet en lua, self n'existe pas automatiquement zzz donc le premier exemple marche presque mais pas completement il faut en fait l'ecrire tel quel:

-- Soit la fonction foo: function foo(self) print("I am "..self.name) end -- On declare une "liste": obj = {} obj.fonction = foo -- On ajoute des propriete: obj.x = 42 obj.y = 53 obj.name = "SuperCopter" -- On appelle la methode foo: obj.fonction(obj) -- Output: I am SuperCopter
et le second:


function foo(self) print("I am "..self[4]) end obj={} obj[1] = 42 obj[2] = 53 obj[3] = "SuperCopter" obj[4] = foo -- On appelle la methode: obj[4](obj)
Pour ne pas avoir a passer l'objet en parametre il faut faire ainsi:

-- Soit la fonction foo: -- On declare une "liste": obj = {} function obj:fonction() print("I am "..self.name) end function obj.fonction2(self) print("I am "..self.name) end -- On ajoute des propriete: obj.x = 42 obj.y = 53 obj.name = "SuperCopter" -- On appelle les methodes: obj:fonction() obj:fonction2() obj.fonction(obj) obj.fonction2(obj) -- Output: I am SuperCopter I am SuperCopter I am SuperCopter I am SuperCopter