Playing with communication between Entities
Objectifs
Dans cette exercice, nous commençons par utiliser les concepts suivants :
- la communication entre Tortues et Patch
- l'écriture dans la console en mode observer
- les attributs et primitives de déplacements des Tortues : fd, heading, etc.
- l'utilisation d'une boucle repeat pour répéter les commandes
- l'utilisation de boutons liés à des procédures dans l'onglet code
- l'utilisation d'une variable via un bouton de type slider
Algorithme
L'algorithme est le suivant :
- (1) faire apparaitre une tortue avec un
headingà 0 - (2) déplacer la tortue en haut a gauche
- (3) fixer la direction de la tortue à
heading = heading + 90degrés - (4) peindre en bleu le patch sous la tortue
- (5) avancer de 1
- (6) revenir à l'étape (4) 8 fois puis revenir à l'étape (3)
Version manuelle
On utilise la console en bas de l'interface pour passer les différentes commandes.
Utilisation de boucle
Ecrire les commandes ainsi en mode console s'avère assez vite fastidieux. Nous faisons entrer un autre concept pour nous faciliter la tâche, celui de boucle permettant de répéter les commandes. Une fois les étapes (1) et (2) réalisé, nous avons besoin de seulement deux commandes pour faire avancer et tourner la tortue.
Ici nous utiliserons la boucle repeat pour demander à la tortue avec ask :
- de changer la couleur du patch avec pcolor
- d'avancer avec la commande fd
- de tourner la tête avec heading , de 90 degrés, au bout de 8 répétitions
Exercice
Essayer d'écrire ce programme dans la console.
Création de boutons avec les procédures
Pour rendre la tâche encore plus simple nous allons créer des boutons dans l'interface. Le code sera executé à chaque clic sur un des boutons.
Dans la plupart des modèles Netlogo on retrouve en général au moins deux étapes :
- l'initialisation du "monde" simulé avec des conditions initiales, avec un bouton setup
- l'exécution de la simulation, c'est à dire la mise en mouvement des règles décrites dans le modèle, avec un bouton go
Pour créer un bouton sur l'interface, il faut faire un clic droit sur l'interface dans Netlogo, et selectionner Button
Une fenêtre s'ouvre pour renseigner le nom du bouton (Display name) et le code ou la procédure (Commands) qui doit être appelé.
Warning
Il est possible d'écrire directement du code dans le bouton, mais c'est une pratique déconseillé, car il est très difficile ensuite d'avoir une vue d'ensemble une fois que tous les bouton contiennent du code.
Une fois les deux boutons setup et go créé il faut définir les procédures correspondantes dans l'onglet code de l'interface.
Exercice
Intégrez le code tapé dans la console avec la boucle repeat dans la procédure go.
Note
Les procédures peuvent être déclarés et appelés sans forcément avoir un bouton associés.
Multiples Tortues via une variable
Toujours avec un clic droit sur l'interface (figure 2) nous allons créer un nouveau bouton Slider qui prendra pour nom de Global variable : nb-turtles en indiquant des valeurs min, max et une valeur par défaut.
Cette Global variable peut ensuite être appelé directement dans le code par son nom, ce qui permet de récupérer son contenu.