IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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 , par Claude URBAN

0PARTAGES

8  0 
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

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Claude URBAN
Membre averti https://www.developpez.com
Le 23/06/2016 à 9:52
Bonjour 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 : Sélectionner tout
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
loadMap est une méthode de classe qui appartient à RentVehicles et qui est censé faire quelque chose...

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.
2  0 
Avatar de Claude URBAN
Membre averti https://www.developpez.com
Le 10/05/2014 à 10:18
Bonjour,

Ç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.

Claude
1  0 
Avatar de Claude URBAN
Membre averti https://www.developpez.com
Le 05/06/2016 à 18:00
Bonjour 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 ...
1  0 
Avatar de Claude URBAN
Membre averti https://www.developpez.com
Le 25/09/2019 à 18:44
Bonjour,

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



1  0 
Avatar de i5evangelist
Membre éclairé https://www.developpez.com
Le 09/05/2014 à 12:42
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 : Sélectionner tout
1
2
3
4
5
6
7
maTable = {} --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"
Merci en tout cas pour ce travail.
0  0 
Avatar de Pix56
Nouveau Candidat au Club https://www.developpez.com
Le 04/06/2016 à 18:04
Bonjour 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 break

if car ~= 40 and car ~= 44 then
-- on fait ici ce que l'on a à faire
return car
else
break
end

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.
fin
PS: encore un grand MERCI Claude Urban , message à supprimer après la correction .
0  0 
Avatar de rick47
Candidat au Club https://www.developpez.com
Le 22/06/2016 à 15:09
Bonjour

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
Eric
0  0 
Avatar de Roland Chastain
Rédacteur/Modérateur https://www.developpez.com
Le 23/06/2016 à 12:20
Bonjour !

Citation Envoyé par Claude URBAN Voir le message
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...
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.
0  0 
Avatar de Nos_ave
Futur Membre du Club https://www.developpez.com
Le 25/09/2019 à 15:32
Bonjour,

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 : Sélectionner tout
1
2
3
4
5
6
7
8
9
10 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
Exemple :

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 ^^.

Cordialement
0  0 
Avatar de Nos_ave
Futur Membre du Club https://www.developpez.com
Le 25/09/2019 à 19:19
En 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.

Cordialement
0  0