Fabrication de nouvelles briques E-toy
From OFSET Wiki
Contents |
[edit] Briques EToy
Avec le scripting système appelé aussi EToys, l'environnement Squeak offre la possibilité au utilisateurs non spécialistes de la programmation Smalltalk et aux enfants de s'initier à la programmation et de construire leurs propres applications.
Le scripting système convient aussi pour explorer des prototypes d'applications.
Il permet aussi d'intervenir sur des objets plus complexes créés en Smalltalk au niveau E-toys si l'on fournit des commandes (briques) pour manipuler ces objets.
Nous donnerons ici un exemple très simple.
Une sousClasse de la classe EllipseMorph appelée MyEllipse va être créée.
On ajoutera à cette sousClasse les méthodes: moveUp MoveDown MoveRight et MoveLeft qui déplacent l'ellipse de 5 pixels dans la direction indiquée, puis pour essayer des méthodes avec un paramètre, les méthodes: moveUp: MoveDown: MoveRight: et MoveLeft:
Le but est de créer un catégorie de briques move avec les commandes (briques) correspondantes.
La Classe qui possède les méthodes qui font les actions est MyEllipse qui est un morph.
Les méthodes appelées par les briques sont dans la classe Player, une instance de cette classe est associée à l'instance de la classe MyEllipse et contiendra des méthodes générées par la conversion des scripts en méthodes.Ces méthodes générées à partir des scripts appeleront des méthodes de la classe Player.
Dans la classe Player les méthodes appeleront celles de la classe MyEllipse.
L'instance Player associé à l'instance de MyEllipse est obtenue par la méthode player ou mieux assuredPlayer.
En sens inverse l'instance du morph associée à l'instance du Player est obtenue avec la méthode costume.
Celà explique les traductions de acteur pour player et de scène pour playfield. Le morph étant un acteur costumé.
[edit] Première étape:Création de la catégorie DemoBrique
A l'aide de l'article new Item obtenu par clic droit dans la première colonne du System Browser créer la catégorie DemoBrique.
Création de la classe MyEllipse
Ecrire les méthodes dans MyEllipse. Si l'on adapte un objet existant, les méthodes peuvent faire partie des méthodes de l'objet.
Les autre méthodes sont semblables:
moveDown
self y: self y - 5
moveLeft
self x: self x - 5
moveRight
self x: self x + 5
[edit] 2ème Partie, Méthodes des instances de la classe Player
Les méthodes pourraient avoir le même nom que celles de la classe MyEllipse. Elles appellent les méthodes correspondantes de la la classe MyEllipse obtenue par le méthode costume.
goUp
self costume moveUp
goDown
self costume moveDown
goRight
self costume moveRight
goLeft
self costume moveLeft
[edit] Troisième partie: Décrire les briques dans la classe MyEllipse
Cette méthode décrit la catégorie du visualiseur qui contiendra les briques.
Pour chaque brique:
Le nom de la commande qui sera aussi la méthode du Player à invoquer.
La chaîne du ballon d'aide.
Le type de paramètre ou #unused s'il n'y a pas de paramètre.
additionsToViewerCategories
^ #(#(#move #(#(#command #goUp 'Moves the object up' #Unused)
#(#command #goDown 'Moves the object down' #Unused)
#(#command #goRight 'Moves the object right' #Unused)
#(#command #goLeft 'Moves the object left' #Unused))) )
[edit] Résultat
Exécuter le code:
MyEllipse new openInHand dans un workspace ou un texte.
Ce code crée une ellipse sous le curseur.
Obtenir le halo et ouvrir le visualiseur de commandes en cliquant sur la poignée oeil bleu.
choisir la catégorie move.
Voir les briques dans le visualiseur de scripts et les essayer en cliquant sur le point d'exclammation.
[edit] Briques avec un paramètre
Un seul paramètre est possible pour les commandes E-Toy.
Nous allons ajouter les méthodes: moveUp: MoveDown: MoveRight: et MoveLeft:
Placer ces méthodes dans la classe MyEllipse
moveUp: t
self y: self y + t
moveDown: t
self y: self y + t
moveRight: t
self x: self x + t
moveLeft: t
self x: self x - t
Placer ces méthodes dans la classe Player.
goUp: t
self costume renderedMorph moveUp: t
goDown: t
self costume renderedMorph moveUp: t
goLeft: t
self costume renderedMorph moveLeft: t
goRight: t
self costume renderedMorph moveRight: t
La description des briques doit être complétée, cette fois #number indique le type du paramètre, l'interface affichera un objet d'affichage et de saisie de type nombre.
additionsToViewerCategories ^ #(#(#move #(#(#command #goUp 'Moves the object up' #Unused) #(#command #goDown 'Moves the object down' #Unused) #(#command #goRight 'Moves the object right' #Unused) #(#command #goLeft 'Moves the object left' #Unused) #(#command #goRight: 'Moves the object right by the value' #Number) #(#command #goUp: 'Moves the object up by the value' #Number) #(#command #goDown: 'Moves the object down by the value' #Number) #(#command #goLeft: 'Moves the object left by the value' #Number))) )
Et voilà le travail !











