On vous fournit un programme tortues2.py, qui contient une classe Tortue définie à partir de la classe Pen. Etudiez-en la définition, dessinez la classe correspondante en UML (nom, attributs, méthodes), assurez-vous que vous en comprenez les méthodes et le fonctionnement en créant un programme qui permet de les tester.
Vous allez maintenant créer un nouvelle classe de tortues, qui spécialise la classe Pen, appelée TortueAmie, sachant que :
- à sa création, une TortueAmie possède une certaine direction et une certaine couleur (*).
- une TortueAmie peut connaitre une autre TortueAmie et être capable d'interagir avec elle.
- on peut demander à une TortueAmie son nom et la distance à laquelle elle est d'une autre tortue (méthode distance, pour laquelle on pourra utiliser la fonction hypot du module math).
- on peut donner la main à une TortueAmie (méthode donneMain).
- lorsqu'une tortue à la main, elle accomplit une tâche (méthode tache, par exemple se déplacer d'un certaine distance, puis tourner d'un certain angle (*) ), puis passe la main à la tortue qu'elle connait, si celle-ci n'est pas trop loin. Si elle n'en connait pas ou que l'autre tortue est trop loin, elle rend la main.
Dessinez la classe TortueAmie en UML. Programmez-la.
Pour tester la classe, vous allez créer une liste de n tortues actives, qui se connaissent mutuellement. Le programme principal leur passera tour à tour la main, les tortues se passant la main entre elles si elles ne sont pas trop éloignées les unes des autres.
Tester ce programme avec différentes variantes de distances, de déplacements, de changements d'angles, de passage de main, etc. Le programme principal peut décider que toute tortue trop éloignée du point de départ doit être détruite et supprimée de la liste. Vous pouvez aussi décider que les tortues en connaissent plusieurs, voire qu'elles se connaissent toutes, etc.
(*) on pourra utiliser la fonction randrange du module random.