Découvrez le premier cours d'initiation complet sur Lua
Le célèbre langage de script facilement interfaçable en C, par Claude Urban
Le 2013-07-07 18:51:30, par Claude URBAN, Membre averti
Bonjour à toutes et à tous,
Je viens de terminer un tutoriel sur le langage de script Lua que vous trouverez à cette adresse: http://wxlua.developpez.com/tutoriels/lua/general/cours-complet/. Ce tutoriel est un cours d'initiation complet au langage de script qu'est Lua et vous permettra d'apprendre rapidement les bases.
Je vous remercie de bien vouloir me faire part de vos remarques, commentaires et critiques.
Merci de votre attention et bonne lecture.
Bien à vous.
Claude
Je viens de terminer un tutoriel sur le langage de script Lua que vous trouverez à cette adresse: http://wxlua.developpez.com/tutoriels/lua/general/cours-complet/. Ce tutoriel est un cours d'initiation complet au langage de script qu'est Lua et vous permettra d'apprendre rapidement les bases.
Je vous remercie de bien vouloir me faire part de vos remarques, commentaires et critiques.
Merci de votre attention et bonne lecture.
Bien à vous.
Claude
-
Claude URBANMembre avertiBonjour rick47,
Ça va être un peu compliqué pour te répondre, d'autant plus que ta demande dépasse largement le cadre de mon "petit tutoriel"... pour débutant!
Pourquoi compliqué:
Parce que Lua n'est pas vraiment un langage orienté objet, et qu'il ne possède pas de concept intégré des classes.
Que dans ton exemple, on rentre en plein dans la POO.
Que le système de (fausses) classes "Lua" est différents des systèmes "classiques" C++ et autres.
Il s'agit plus d'un système de "pseudo classes" qui utilise des tables et des méta-tables...
Et en plus, tu me donnes simplement qu'une toute petite ligne de code...
Mais bon, je vais quand même essayer.
RentVehicles est très certainement une "classe" qui a du être créée précédemment de la façon suivante.Code : 1
2
3
4
5
6
7
8
9
10
11
12-- Création d'une classe RentVehicules = { ? } -- ? parce que je ne sais pas s'il y a quelque chose à l'intérieure... -- méthode de classe function RentVéhicles:loadMap(name) --- ...là aussi je ne sais pas ce qu'il y a ??? end
Les deux points : indique la liaison entre la classe et la méthode.
Quant à (name) il s'agit d'un paramètre classique que l'on passe à la fonction lors de son appel.
Il faudra ensuite créer un objet qui prendra les caractéristiques de ta fonction.
nom_objet = RentVehicles:loadMap(nom_de_la_map) (nom_de_la_map, par exemple)
et après, tu fais ce que tu as à faire avec ton nom_objet...
MAIS, il me faut quand même reconnaître que je m'aîtrise assez mal le sujet de la POO avec Lua...(POO qui, encore une fois, n'en est pas une...)
Recherche sur le Net pour plus de précision.
Il y a pléthore d'exemples et d'explications.
Essaye là, http://www.tutorialspoint.com/lua/lu...t_oriented.htm, ça m'a semblé intéressant.
Voilà, j'espère que ma réponse te seras de quelque utilité.
Merci de m'avoir contacté et d'avoir lu mon tutoriel.
Et si tu as d'autres interrogations, n'hésite pas...
Bonne journée.
PS: Il est inutile de faire plusieurs mails... en général un seul suffit!
Il faut bien comprendre que je ne suis pas au garde à vous devant ma boîte mail à attendre que quelqu'un me pose une question.
Il faut donc "laisser le temps au temps..."
Merci.le 23/06/2016 à 9:52 -
Claude URBANMembre avertiBonjour,
Ça y-est, c'est corrigé.
Je suis content que mon tutoriel sur lua te soit utile et je te remercie pour ta remarque.
Effectivement, il manquait la parenthèse fermante aux deux fonctions print(...).
Comme mentionné ci-dessus, l'erreur est maintenant corrigée.
N'hésite pas à me recontacter si tu en rencontres d'autres.
Encore merci à toi.
Bonne journée et bonne lecture.
Claudele 10/05/2014 à 10:18 -
Claude URBANMembre avertiBonjour Pix56 et BRAVO
...
Bravo pour ta sagacité et merci pour m'avoir retourné cette information.
Bien évidement tu as entièrement raison... "Errare humanum est, perseverare diabolicum* "
C'est (40 ou 44) qui a mis la pagaille... mais tu as raison.
Ce qui prouve que tu as parfaitement compris le "pourquoi du comment".
Il a fallu que je remette les mains dans le cambouis...mais j'y suis arrivé et c'est corrigé.
Sur les deux sites: developpez.com et wxLua.free.fr
Si tu en trouves d'autres, n'hésite pas à me les signaler.
Merci à toi et bonne continuation dans ton étude de ce langage.
Claude
* Se tromper est humain, persévérer est diabolique ...le 05/06/2016 à 18:00 -
Claude URBANMembre avertiBonjour,
Merci de vous êtes intéressé à ce langage et de vous êtes arrêté sur mon tutoriel.
Dans ce cas, il ne faut pas prendre au pied de la lettre les notions or, and et not .
Si dans le langage courant, or équivaut à ou, and à et, not à pas, dans le cas du langage LUA il
faut retenir que :
1/ L'opérateur de disjonction or retourne son premier argument si cette valeur est différente de nil
et false, ou son second argument dans le cas contraire.
Exemple:
10 or 20 va retourner 10, car le premier argument est 10. (Valeur différente de nil et false)
nil or 20 va retourner 20, car le premier argument est nil. (Donc, retourne le deuxième.)
false or 20 va retourner 20, car le premier argument est false. (Donc, retourne le deuxième.)
C’est une règle de ce langage .
Il faut l’apprendre et à ne pas l’interpréter.
Ne pas considérer or comme un choix et and comme l’un ou l’autre.
Même si ça peut paraître illogique.
Mais considérer que les deux opérateurs and et or utilisent un raccourci d’évaluation.
En résumé :
or retourne le premier argument s’il est différent de false / nil.
and retourne le premier argument si est égal à false / nil.
not retourne toujours false / true.
J’espère avoir répondu à votre question et que ces quelques lignes vous permettrons de mieux
appréhender les subtilités de ce langage ?
N’hésitez pas à venir me requestionner si besoin est.
Bonne continuation.
Claude
le 25/09/2019 à 18:44 -
i5evangelistMembre éclairéBonjour,
je suis en train de lire votre passionnant tuto, j'ai besoin d'un langage de script et j'ai jeté mon dévolu sur Lua.
Au chapitre des tables, section 8b, je pense qu'il y a eu un soucis de copier/coller, enfin, le code n'est pas du tout correct.
je pense que le code est plutôt :
Code : 1
2
3
4
5
6
7maTable = {} --création d'une table k = "x" -- affectation de la chaîne "x" à la variable maTable[k] = 10 -- nouvelle entrée, avec la clé(k) = "x" de valeur = 10 maTable[20] = "grand" -- nouvelle entrée, avec la clé(k) = 20 de valeur = "grand" print(maTable["x"]) --> 10 (c'est la clé k qui est égal à 20) print(maTable[20]) --> "grand"
le 09/05/2014 à 12:42 -
Pix56Nouveau Candidat au ClubBonjour un grand merci pour tout,
Cela me permet de progresser, car il est très difficile de comprendre une fonction si on ne sait pas qu'elle existe
Je pense qu'il faudrait modifier le code exemple dans la section :
4.f return et breakif car ~= 40 and car ~= 44 then
-- on fait ici ce que l'on a à faireelse
return car
breakend
Par :
if car == 40 or car == 44 then
pour que l'explication suivante soit en accord.Ce qui peut se traduit par :
si … on a trouvé ce que l'on cherche … alors
… on fait ce que l'on a à faire et on sort du test en retournant la valeur de car, que l'on a trouvée (40 ou 44).
sinon … on sort (break) du test conditionnel sans rien faire et le programme continue directement après la fin du test.
finle 04/06/2016 à 18:04 -
rick47Candidat au ClubBonjour
je débute dans la programmation Lua et j'ai lu votre tutoriel, très bien fait et complet. merci.
Par contre je n'ai pas trouvé de réponse à une question : en ce moment je modifié et teste des scripts. Je voudrais savoir à quoi correspond le nom d'une fonction composé du symbole ":"
Ex : function RentVehicles:loadMap(name) et comment est utilisé ( alimenté ?) l'argument "name"
D'avance merci beaucoup
Ericle 22/06/2016 à 15:09 -
Roland ChastainRédacteur/ModérateurBonjour !
Personnellement, je n'y ai jamais trop compris grand chose.
@rick47
J'ai supprimé la discussion que vous aviez ouverte dans le forum, puisque la question était la même.le 23/06/2016 à 12:20 -
Nos_aveFutur Membre du ClubBonjour,
Actuellement, je me suis mis à apprendre le LUA et j'ai découvert votre tutorial très intéressant étant donné que je suis débutant dans ce domaine ^^.
J'ai une petite question concernant les opérateurs logiques (2-h), je ne comprends pas les exemples que vous mentionnez :Code : 1
2
3
4
5
6
7
8
910 or 20 --> 10 10 or error() --> 10 nil or "a" --> "a" nil and 10 --> nil false and error() --> false false and nil --> false false or nil --> nil 10 and 20 --> 20
10 or 20 --> 10, alors que pour moi c'est un choix entre l'un OU l'autre.
10 and 20 --> 20, alors que pour moi il faut l'un et l'autre pour que ça fonctionne.
A mon avis, je ne suis pas du tout dans le bon. Auriez-vous une autre explication svp ?
Merci ^^.
Cordialementle 25/09/2019 à 15:32 -
Nos_aveFutur Membre du ClubEn effet, ayant pour habitude d'utiliser la logique comme dans les autres domaines, je n'avais pas prêté attention à la signification de cette partie. Maintenant, je comprends mieux
.
Merci de m'avoir éclairé sur ce point.
Cordialementle 25/09/2019 à 19:19