retour |
Sous ce nom se cache un petit langage pour piloter un tortue. Cela dans le but avoué de faire découvrir les joies de la programmation à des jeunes enfants. Cet objectif, comme le langage, est prétentieux et dénote d'une certaine folie qu'il est bon de réfréner au plus vite.
Le langage est là pour piloter une tortue dans son environnement. Le monde où évolue la tortue est composé d'un échiquier. Sur cet échiquier, on pose divers objets, comme des fruits, ou des murs. La tortue se déplace de case en case, regarde autour d'elle, prend des objets, ou les posent.
On peut commander la tortue pas à pas ou lui faire exécuter des séquences d'instructions. Le langage de la tortue n'est qu'un ensemble de fonctions Scheme.
-->
Vous pouvez télécharger Bambin ici.
<--
Pour utiliser Bambin, il vous faut un interpréteur Scheme qui reconnaisse la
syntaxe define-syntax. Cela peut être un interpréteur R5RS ou un
interpréteur R4RS accompagné de la SLIB. Pour lancer le programme, tapez dans
votre interpréteur:
(load "bambin-init.scm")
La tortue comprend les instructions suivantes:
Le monde de la tortue est un échiquier de taille
fini. Sur les cases du monde il peut y avoir différents objets.
La taille du monde est définit par les variables limite-x et
limite-y.
Le monde s'appelle monde. Il est crée par la fonction
(creer-monde).
On peut créer de nouveau type d'objets avec la commande (creer-objet objet). Par exemple, (creer-objet voiture) créera l'objet "voiture". La tortue pourra ainsi mettre une voiture dans son sac si elle veut.
Pour manipuler les objets dans le monde, on a notre disposition plusieurs fonctions:
Avec les trois fonctions décrites plus haut, on peut créer un monde initial sans
aucune difficulté.
Par exemple,
(creer-objet pomme) (creer-objet banane) (define (preparer) (poser-dans-le-monde 3 4 pomme) (poser-dans-le-monde 4 7 banane)) (preparer)pose une pomme dans la case (3,4) et une banane dans la case (4,7).
Pour bien situer les idées de ce que peut faire la tortue, j'ai reproduit un exemple d'interaction.
> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . > (contenu-du-sac) () > (avancer) . > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . > (avancer)(avancer) . . > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . > . . . > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . > (tourner-droite) . . . v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . > (repeter 4 (avancer)) . . . . . . . . . . . . . v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . > (regarder) (pomme) > (prendre pomme) > (regarder) rien > (contenu-du-sac) (pomme) > (apprendre aller-autre-objet (repeter 3 (avancer)) (tourner-gauche) (avancer)) > (aller-autre-objet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > . . . . . . . . . . . . . . . . . . . . . . . . . > (regarder) (banane) > (poser pomme) > (regarder) (pomme banane) > (avancer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X > . . . . . . . . . . . . . . . . . . . . . . . . >