Documentation de Référence

Guide complet du langage Logo VL Advanced.

Syntaxe de base

  • Variables : Débutent par : (ex: :x).
  • Commentaires : Débutent par //.
  • Sensibilité : Les commandes sont insensibles à la casse.

↔️ Tortue et Mouvements

Commande (FR / EN)DescriptionExemple
AV / FD nAvancer de n pixels.AV 100
RE / BK nReculer de n pixels.RE 50
TD / RT angleTourner à droite de angle degrés.TD 90
TG / LT angleTourner à gauche de angle degrés.TG 45
CT / HTCache la tortue (Hide Turtle).CT
MT / STMontre la tortue (Show Turtle).MT

🖍️ Crayon

Commande (FR / EN)DescriptionExemple
LC / PULève le crayon (ne dessine plus).LC
BC / PDAbaisse le crayon (dessine).BC
FCC / SETCOLOR couleurFixe la couleur du crayon.FCC "rouge"
FTC / SETWIDTH nFixe la taille (épaisseur) du crayon.FTC 5
PIXEL x y cAllume le pixel (x, y) avec la couleur c.PIXEL 10 10 "bleu"
VALPIXEL x yRetourne la couleur du pixel (x, y).DONNE :c VALPIXEL 0 0

Constantes de Couleurs

'rouge'
'vert'
'bleu'
'jaune'
'noir'
'blanc'
'rose'
'orange'
'violet'
'gris'
'marron'
'cyan'
'magenta'

🖥️ Écran et Position

Commande (FR / EN)DescriptionExemple
VE / CSVide l'écran et réinitialise la tortue.VE
NETTOIE / CLEANEfface le dessin sans bouger la tortue.NETTOIE
FCA / CANVASCOLOR couleurFixe la couleur de l'arrière-plan.FCA "noir"
FPOS / SETXY x yPlace la tortue à (x, y).FPOS 100 200
FCAP / SETHEADING angleDéfinit l'orientation absolue.FCAP 180
ORIGINE / HOMERetourne au centre (0, 0).ORIGINE
POSX / POSYRetourne la coordonnée X ou Y actuelle.LOG POSX
CAP / HEADINGRetourne l'angle actuel de la tortue.LOG CAP
DISTANCE / DS x yRetourne la distance entre la tortue et (x, y).LOG DISTANCE 0 0
VERS / TOWARDS x yRetourne l'angle nécessaire pour pointer vers (x, y).FCAP VERS 50 50

📐 Formes et Remplissage

Commande (FR / EN)DescriptionExemple
LIGNE / LINE x1 y1 x2 y2Trace une ligne entre deux points.LIGNE 0 0 100 100
RECT x1 y1 x2 y2Trace un rectangle défini par ses coins.RECT -50 -50 50 50
ELIP x1 y1 x2 y2Trace une ellipse définie par son rectangle englobant.ELIP -100 -50 100 50
CERCLE / CIRCLE rTrace un cercle de rayon r centré sur la tortue.CERCLE 75
ARC angle rTrace un arc de cercle.ARC 90 50
RECTANGLE w hTrace un rectangle de largeur w et hauteur h.RECTANGLE 120 80
ELLIPSE w hTrace une ellipse de largeur w et hauteur h.ELLIPSE 100 60
POLYGONE / POLYGON n tPolygone régulier à n côtés de taille t.POLYGONE 6 50
ETOILE / STAR n r1 r2Étoile à n branches avec rayons extérieur et intérieur.ETOILE 5 50 20
FCB / FILLCOLOR couleurFixe la couleur de remplissage.FCB "jaune"
REMPLIS / FILLRemplit la dernière forme fermée tracée.REMPLIS
TAMPON / STAMPDessine l'image actuelle de la tortue sur le canevas.TAMPON
OPACITE / OPACITY nDéfinit la transparence globale (0 à 1).OPACITE 0.5
FLUIDE / SMOOTHActive l'animation fluide.FLUIDE
DEGRADE / GRADIENT type c1 c2 ...Crée un dégradé (linear/radial).DEGRADE "linear" "rouge" "bleu"

🎥 Multimédia et Temps

Commande (FR / EN)DescriptionExemple
JOUE / LIRESON / PLAYSOUND urlJoue un fichier audio depuis une URL.JOUE "https://.../son.mp3"
STOPSON / STOPSOUNDArrête toutes les lectures audio en cours.STOPSON
AFFICHEIMAGE / SHOWIMAGE url x y w hAffiche une image aux coordonnées et dimensions données.AFFICHEIMAGE "logo.png" 0 0 100 100
LIREVIDEO / AFFICHEVIDEO / SHOWVIDEO url x y w hJoue une vidéo aux coordonnées spécifiées.AFFICHEVIDEO "vid.mp4" 0 0 200 150
STOPVIDEOArrête la lecture de la vidéo en cours.STOPVIDEO
PAUSE msMet en pause l'exécution pendant ms millisecondes.PAUSE 1000

💬 Texte et Entrées

CommandeDescriptionExemple
POLICE_TAILLE nDéfinit la taille de la police pour ECRIS.POLICE_TAILLE 24
POLICE_STYLE sStyle : "g" (gras), "i" (italique), "gi" (les deux).POLICE_STYLE "gi"
POLICE_NOM nNom de la police (ex: "Arial", "Courier").POLICE_NOM "Verdana"
LOG val / PRINT valAffiche une valeur dans la console ou le terminal.LOG "Test"
MSG texteAffiche une boîte de message d'alerte.MSG "Opération terminée"
ECRIS texte / WRITE texteAffiche le texte sur le canevas à la position de la tortue.ECRIS "Bonjour"
NL / RETOURLIGNEPasse à la ligne suivante pour la commande ECRIS.NL
LIS msgDemande une saisie texte à l'utilisateur via un prompt.DONNE :nom LIS "Quel est votre nom ?"

🧮 Maths et Opérateurs

Fonction (FR / EN)DescriptionExemple
RACINE / SQRT nRacine carrée de n.RACINE 16 (→ 4)
PUISSANCE / POW a ba élevé à la puissance b.PUISSANCE 2 3 (→ 8)
VALABS / ABS nValeur absolue de n.ABS -10 (→ 10)
EXP nExponentielle de n.EXP 1 (→ 2.718...)
LOGN / LN nLogarithme népérien de n.LOGN 10
ENTIER / INTEGER nPartie entière (tronquée) de n.ENTIER 5.9 (→ 5)
ARRONDI / ROUND nArrondi à l'entier le plus proche.ARRONDI 5.6 (→ 6)
PLAFOND / CEIL nPlus petit entier supérieur ou égal à n.PLAFOND 5.1 (→ 6)
MIN a b / MAX a bMinimum ou Maximum entre deux valeurs.MIN 10 20 (→ 10)
SIN, COS, TAN, ATANFonctions trigonométriques (angles en degrés).SIN 90 (→ 1)
HASARD / RANDOM nNombre aléatoire entre 0 et n.HASARD 100
MODULO / MOD a bReste de la division de a par b.MODULO 10 3 (→ 1)
RVB / RGB r v bCrée une couleur à partir des composantes Rouge, Vert, Bleu.FCC RVB 255 128 0
PIConstante mathématique Pi (≈ 3.14159).LOG PI

Opérateurs

CatégorieOpérateursExemple
Arithmétiques+, -, *, /, %, ^10 * 5
Comparaison==, !=, >, <, >=, <=:x > 10
Logiques|| (OU), && (ET), ! (NON)(:a > 0) && (:a < 10)
Affectation=, +=, -=, *=, /=, ++, --:x += 1

📦 Variables et Tableaux

Déclaration et Attribution

Mots-clésDescriptionExemple
DONNE / DECLARE / LETDéfinit ou modifie une variable globale ou locale.DONNE :x 10
:nomSyntaxe pour accéder à la valeur d'une variable.AV :x

Tableaux

Commande (FR / EN)DescriptionExemple
TABLEAUCrée un nouveau tableau vide.DONNE :t TABLEAU
TAB_AJOUTE / AJOUTE tab valAjoute une valeur à la fin du tableau.TAB_AJOUTE :t "Logo"
TAB_MODIFIE / MODIFIE tab i valModifie l'élément à l'index i (commence à 0).TAB_MODIFIE :t 0 "Nouveau"
TAB_LIS / LIS tab iRécupère l'élément à l'index i.LOG TAB_LIS :t 0
TAB_SUPPRIME / SUPPRIME tab iSupprime l'élément à l'index i.TAB_SUPPRIME :t 0
TAB_TAILLE / TAILLE tabRetourne le nombre d'éléments dans le tableau.LOG TAB_TAILLE :t
TAB_VIDE / VIDE tabSupprime tous les éléments du tableau.TAB_VIDE :t
TAB_TEXTE / TEXTE tabConvertit le tableau en une chaîne de texte séparée par des virgules.ECRIS TAB_TEXTE :t

Conversions de types

FonctionDescriptionExemple
_NOMBRE valConvertit une chaîne ou valeur en nombre._NOMBRE "42"
_TEXTE valConvertit une valeur en chaîne de caractères._TEXTE 100
_TABLEAU texteCrée un tableau à partir d'un texte séparé par des virgules (détecte les nombres)._TABLEAU "1,2,3"
_S_TABLEAU texteCrée un tableau de chaînes à partir d'un texte séparé par des virgules._S_TABLEAU "a,b,c"

🔄 Structures de Contrôle

StructureSyntaxeExemple
Boucle RépéterREPETE n [ ... ]REPETE 4 [ AV 100 TD 90 ]
ConditionnelleSI (condition) [ ... ] SINON [ ... ]SI (:x > 10) [ AV 10 ] SINON [ RE 10 ]
Boucle Tant QueTANTQUE (condition) [ ... ]TANTQUE (:i < 10) [ :i++ ]
Sélecteur (Switch)CHOISIS (valeur) [ CASE v1 [ ] CASE v2 [ ] AUTRES [ ] ]CHOISIS (:c) [ CASE 1 [ AV 10 ] AUTRES [ RE 10 ] ]
Contrôle de boucleSTOP (quitter), CONTINUE (sauter)SI (:err) [ STOP ]

🏗️ Procédures et Classes

Procédures (Fonctions)

ÉlémentSyntaxe / RôleExemple
DéfinitionPOUR NOM :arg1 :arg2 ... FINPOUR CARRE :t REPETE 4 [ AV :t TD 90 ] FIN
Valeur de retourRENDS valeur (Retourne une valeur et quitte).RENDS :x * :x

Classes (POO)

ÉlémentSyntaxe / RôleExemple
DéclarationCLASSE Nom [ ... ]CLASSE Robot [ ... ]
Constructeurconstructeur [ ... ]constructeur [ DONNE ->nom "R2" ]
MéthodesnomMethode [ ... ]avancer [ AV 50 ]
InstanciationNom()DONNE :r Robot()

🌟 Exemples Pratiques

1. La Fleur Géométrique

Cet exemple utilise des boucles imbriquées pour créer une forme complexe à partir de simples cercles.

Code : Fleur
VE // Efface l'écran
FTC 2 // Épaisseur du trait
FCC "violet" // Couleur du trait
REPETE 12 [
  CERCLE 60 // Dessine un cercle de rayon 60
  TD 30 // Tourne de 30 degrés pour le prochain pétale
]

2. Carré Rempli Dynamique

Apprenez à utiliser les couleurs de remplissage et la commande REMPLIS pour colorer vos formes.

Code : Carré Coloré
VE
FCC "noir"
FCB "orange" // Définit la couleur de remplissage
REPETE 4 [
  AV 100
  TD 90
]
REMPLIS // Remplit la zone fermée tracée

3. Spirale Mathématique

Une spirale créée en augmentant progressivement la distance parcourue à chaque étape grâce à une variable.

Code : Spirale
VE
DONNE :cote 10 // Initialise la longueur du côté
REPETE 50 [
  AV :cote
  TD 91 // Un angle légèrement supérieur à 90 crée la spirale
  DONNE :cote :cote + 5 // Augmente la longueur à chaque tour
]

4. Arbre Récursif (Fractale)

La récursivité permet de créer des structures fractales comme des arbres de manière très concise.

Code : Arbre Fractal
POUR ARBRE :t
  SI :t < 5 [ RENDS ] // Condition d'arrêt
  AV :t // Trace le tronc
  TG 30 ARBRE :t * 0.7 // Branche gauche
  TD 60 ARBRE :t * 0.7 // Branche droite
  TG 30 RE :t // Revient à la base
FIN

VE LC FPOS 0 , -200 BC
ARBRE 100 // Lance la génération

5. Gestion des Tableaux de Données

Exemple complet de manipulation de listes : ajout, modification et affichage de données.

Code : Gestion de Liste
DONNE :notes TABLEAU // Crée un tableau vide
TAB_AJOUTE :notes 15
TAB_AJOUTE :notes 18
TAB_AJOUTE :notes 12

// Modifie la première note
TAB_MODIFIE :notes 0 20

LOG "Liste des notes : " + TAB_TEXTE :notes
LOG "Nombre de notes : " + TAB_TAILLE :notes

6. Polygone avec couleurs dynamiques

Cet exemple montre comment changer la couleur du trait dynamiquement en utilisant l'index de boucle _i0.

Code : Polygone Arc-en-ciel
VE FTC 5
REPETE 36 [
  FCC RVB (_i0 * 7) 100 200 // La couleur change à chaque pas
  AV 20
  TD 10
]

7. Dessin de texte circulaire

On peut combiner les mouvements de la tortue et l'écriture pour placer du texte de manière artistique.

Code : Texte en Cercle
VE POLICE_TAILLE 20
REPETE 12 [
  LC AV 100 BC
  ECRIS "LOGO"
  LC RE 100 BC
  TD 30
]

8. Utilisation d'une Classe Robot

La programmation orientée objet permet de créer des structures réutilisables avec leurs propres propriétés et comportements.

Code : Robot POO
CLASSE Robot [
  constructeur [
    DONNE ->c "bleu"
  ]
  
  dessiner [
    FCC ->c
    REPETE 4 [ AV 50 TD 90 ]
  ]
]

DONNE :monRobot  Robot()
:monRobot.dessiner()

9. Calculatrice Interactive

Utilisez LIS pour demander des nombres à l'utilisateur et effectuez des calculs mathématiques.

Code : Somme de deux nombres
DONNE :a _NOMBRE LIS "Premier nombre ?"
DONNE :b _NOMBRE LIS "Deuxième nombre ?"
DONNE :somme :a + :b
MSG "Le résultat est : " + :somme

10. Grille de pixels (Art pixelisé)

La commande PIXEL permet de dessiner point par point, idéal pour des motifs de bas niveau ou des algorithmes de rendu.

Code : Damier de pixels
VE
REPETE 20 [
  DONNE :x _i1 * 5
  REPETE 20 [
    DONNE :y _i0 * 5
    SI ((_i0 + _i1) % 2 == 0) [
      PIXEL :x :y "noir"
    ]
  ]
]

11. Couronne de Polygones

En imbriquant des boucles, on peut créer des motifs répétitifs complexes. Ici, une série d'hexagones disposés en couronne.

Code : Couronne Hexagonale
VE
REPETE 12 [
  REPETE 6 [ AV 40 TD 60 ] // Dessine un hexagone
  LC AV 60 BC // Déplace sans tracer
  TD 30 // Pivote pour l'hexagone suivant
]

12. Analyse de Texte et Tableaux

Utilisez les fonctions de conversion pour transformer une chaîne de texte en données manipulables.

Code : Traitement CSV
DONNE :phrase "Code,Art,Maths"
DONNE :mots _S_TABLEAU :phrase

REPETE TAB_TAILLE :mots [
  LOG "Élément " + _i0 + " : " + TAB_LIS :mots _i0
]

13. Étoiles Aléatoires

Utilisez HASARD et RVB pour générer un ciel étoilé coloré de manière imprévisible.

Code : Ciel Étoilé
VE FCA "noir"
REPETE 15 [
  FCC RVB (HASARD 255) (HASARD 255) 255
  LC FPOS (HASARD 400 - 200) (HASARD 400 - 200) BC
  ETOILE 5 (HASARD 30) (HASARD 10)
]

14. Animation de l'orientation

Ce script montre comment la tortue peut s'orienter vers des points spécifiques du canevas.

Code : Orientation vers (0,0)
VE
LC FPOS 150 150 BC
FCAP VERS 0 0 // Oriente vers le centre
AV DISTANCE 0 0 // Avance jusqu'au centre

15. Visualisation Mathématique (SIN)

Visualisation d'une onde sinusoïdale en déplaçant la tortue sur l'axe X tout en calculant son axe Y.

Code : Onde Sinus
VE LC FPOS -200 0 BC
REPETE 40 [
  DONNE :y (SIN (_i0 * 18)) * 50
  FPOS (-200 + (_i0 * 10)) :y
]