Skip to content

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
theory-sma
Figure 1

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 + 90 degré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

theory-sma
Figure 2

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é.

theory-sma
Figure 3

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

theory-sma
Figure 4

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.

theory-sma
Figure 5

Cette Global variable peut ensuite être appelé directement dans le code par son nom, ce qui permet de récupérer son contenu.

Exercice

En modifiant l'exemple précédent :

  • Utiliser crt pour créer autant de tortues qu'indiqué par la variable nb-turtles du widget,
  • Utiliser one-of et shuffle sur une liste de couleurs [red blue yellow orange green] pour que ces tortues aient des couleurs aléatoire. .