10 septembre 2008

Initiation au langage LSL (II)

Bien après avoir vu les bases du LSL, allons un peu plus loin dans notre connaissance du langage.
Parlons un peu des différentes variables utilisables dans SL.


Notons tout d'abord que pour utiliser une variable, il faut l'avoir définie auparavant. Donc, on déclare une variable, on lui donne une valeur, et ensuite on l'utilise. Une variable se définit par deux paramètres : son type, qui définit quel type de données elle contiendra, et sa portée, qui définit à quel endroit du script elle pourra être utilisée.


I. Portée et définition d'une variable


Variables globales : elles sont accessibles à tout moment à l'intérieur du script. Leur portée est donc le script lui même.

Variables locales : elles sont définies à l'intérieur d'un bloc de code (délimité par des accolades). Elles ne peuvent donc être utilisées que dans ce bloc. Elles n'ont aucune existence en dehors de ce bloc. Si une variable locale a le même nom qu'une variable globale (c'est possible même si c'est un très mauvaise idée !! A éviter absolument), c'est la variable locale qui sera utilisée.

Variables paramètres : ces variables servent à définir les paramètres d'une fonction. Nous verrons cela en détail lorsque nous parlerons des fonction.

Les variables globales doivent être définies en début de script, avant même l'état default. Les variables locales sont définies dans le bloc de code où elles nous sont utiles, lorsque l'on en a besoin.

Pour définir une variable, il faut écrire son type suivit de son nom, et enfin un point virgule pour terminer l'instruction.
Par exemple :

integer un_entier;
string message;


Il est possible de donner une valeur à une variable au moment où on la définit. Ainsi, elle est initialisée dès sa création. Si on ne donne pas de valeur lors de la définition de la variable, le LSL lui donne une valeur par défaut : 0, pour les entiers, "" la chaine vide pour les chaines de caractères.

integer un_entier = 5;
string message = "Kikou !!!!";

En ce qui concerne le choix du nom de la variable, plusieurs points :
  • donner un nom qui a du sens, éviter les noms comme : truc, machin, bidule, toto, foo, bar, deirdre, ....

  • pas de caractères spéciaux dans le nom, ni d'espace : utiliser des lettres, des chiffres, ainsi que le underscore : _


II. Les différents Types du LSL


Le LSL est un langage fortement typé. C'est à dire que toute variable, pour pouvoir être utilisée, doit avoir été définie. Cette définition précise son type, c'est à dire le contenu qu'elle pourra recevoir.
On sera parfois obligé de convertir un type en un autre. Le transtipage, ou cast, est l'opération permettant de faire cela. Tout cela sera vu par la suite.

Voici les différents types de données pour le LSL :
  • integer: nombre entier, signé, codé sur 32 bits. Ex : 0, 6, -56
  • float: nombre flottant signé, un décimal en gros. Il doit s'écrire obligatoirement avec le point décimal et supporte la notation exponentielle. Ex : 0.0, 1.698, -6.25, 6.0E6, -6.3E-4
Notons au passage que si le float vaut 0, on doit écrire celui-ci 0.0, ou encore .0
  • string : chaine de caractères. Elle doit être délimitée par des guillemets. Ex : "Kikou !!"
Si la chaine doit contenir des guillemets, on les précède de \. Ex : "J'adore ce genre de \"bidule\". "
  • key : la key représente une chaine de caractères de format spécifique qui correspond à l'UUID, identifiant unique de tout objet sur SL.
  • vector : 3 floats réunis pour définir un vecteur. On encadre par <>. Ex : <0.0,0.0,0.0> pour le vecteur nul.
  • rotation : 4 floats réunis pour interpréter une rotation. Fonctionne comme le vector. Ex : <1.0,0.3,2.3,.2>
  • list : liste d'éléments hétéroclites. On encadre par [ et ]. Ex : [ 0, -52.6, "kikouu !!"]


III. Conclusion


Pour conclure, je vous conseille ardemment de commenter votre code, c'est à dire de laisser quelques petites explications renseignant sur ce qu'un bout de code fait, à quoi sert cette fonction, pour quoi il pleut encore aujourd'hui, Henri IV savait-il seulement faire du cheval...

Le texte écrit en commentaire ne sera pas interprété par le script. Pour commenter une ligne de texte, il suffit d'écrire // avant le texte à mettre en commentaire. Tout ce qui suit // sur la même ligne est ignoré par le script.
Exemple :

// Ouiiii !!! Ceci est votre premier commentaire !! bravo !!


Pour résumer, voici le squelette général d'un script, modifié par ce que nous venons de voir :

//Début du script - Définition des variables globales
string ma_chaine_globale; // commentaire sur ce que va contenir cette variable
integer un_entier_global; // commentaire sur ce que va contenir cette variable


// Définition des fonctions
// on verra ca plus tard....



// un état du script : etat1

state etat1 {

evenement1(){
fonction1();
fonction2();
}

evenement2(){
fonction3();
fonction4();
}

}


Aucun commentaire: