Télécommandez un robot, sans utiliser une \l;borne d'information\u object\exchange;, pour qu'il passe par les 6 croix bleues. Il faudra utiliser une seule \l;chaîne de caractère\u cbot\string; pour communiquer. Cette chaîne contiendra l'ordre à effectuer, par exemple \c;"move(20)"\n;. On utilise donc la même syntaxe que le langage CBOT, mais on aurait tout aussi bien pu changer complètement et utiliser \c;"advance=20"\n; par exemple. La chaîne de caractère sera \c;\l;static\u cbot\static;\n; pour communiquer directement d'un programme à un autre.
Pour commencer, il faut comprendre le programme du robot d'entraînement qui attend les ordres.
Une \l;classe\u cbot\class; \c;exchange\n; contient le mécanisme d'échange et de mémorisation des ordres. Il faut d'abord déclarer une variable \c;\l;static\u cbot\static;\n; appelée ici \c;global_order\n;. Cette variable contient l'ordre à effectuer. L'instruction \c;static\n; permet à tous les robots d'accéder à la même variable unique.
Une première méthode \c;put\n; sera utilisée par le robot émetteur pour donner un ordre. Si la chaîne n'est pas vide, cela signifie que le robot récepteur n'a pas terminé l'exécution d'un ordre. Dans ce cas, la méthode \c;get\n; ne fait rien et retourne \c;false\n;:
Une deuxième méthode \c;get\n; sera utilisée par le robot récepteur pour prendre connaissance d'un ordre à effectuer. La chaîne \c;global_order\n; est directement vidée, pour indiquer que la classe \c;exchange\n; est prête à recevoir un nouvel ordre:
Le programme principal peut maintenant exister. La variable \c;list\n; est de type \c;exchange\n;, qui est une \l;classe\u cbot\class;. Il faut utiliser l'instruction \c;\l;new\u cbot\new;\n; pour créer immédiatement une instance.
La première boucle \c;while\n; exécute les ordres à l'infini. La deuxième boucle \c;while\n; attend un ordre en exécutant la méthode \c;get\n; de la classe \c;exchange\n;. Dès qu'un ordre contenant une chaîne non vide est reçu, la boucle est stoppée.