La tortue

De $1

Version de 12:46, 5 Mai 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Reprenez la tortue que vous avez construite au TP 2.

Tracer les mouvements de la tortue

Les commandes

Pour qu'on puisse la dessiner la tortue doit enregistrer les ordres qu'on lui a donnés et les reproduire graphiquement.

Proposer une interface (ou une classe abstraite) Command qui sera commune à toutes les commandes.

Les deux premières commandes basiques sont les commandes:

  1. MoveTo qui déplace la tortue à un point donné en coordonnées cartésiennes. Cette commande déplace la tortue sans laisser de trace (le stylo est levé);
  2. LineTo qui trace une line de la position courante vers un autre point exprimé en coordonnées cartésiennes. 

Modifier la Tortue créée au TP2 pour produire une liste de commandes lors des déplacements de la tortue. La liste de commandes sera la trace laissée par la tortue.

Log

Pour tester votre tortue, vous utiliserez une classe Log qui affiche dans un PrintWriter la trace laissée par une tortue. On testera en écrivant sur la console ou dans un fichier.

Applet

Au lieu de tracer dans un fichier les mouvements de la tortue, produire une Applet qui affiche à l'écran le résultat produit par la commande. Par exemple, on pourra ajouter une méthode paint(...) à l'interface Command. Quelle doit être sa signature ? 

Les comportements

La tortue ivre

Réaliser un comportement tortue ivre qui déplace une tortue de façon aléatoire. A chaque pas, la tortue tourne d'un angle aléatoire et avance d'une distance aléatoire non nulle.

Dans un second temps, pour donner un peu plus de réalisme, on limitera l'angle de rotation à des valeurs comprises entre -10° et +10°.

Le flocon de Von Koch

Le flocon de Von Koch est une courbe fractale qui est assez délicate à construire en coordonnées absolues mais assez facile à construire par récurrence en utilisant une tortue.

La définition récursive est la suivante:

flocon(int n, double d):

  • si n==0 alors avancer de d
  • si n>0 alors
    • flocon(n-1, d/3)
    • tourner à gauche de 60°
    • flocon(n-1, d/3)
    • tourner à droite de 120°
    • flocon(n-1, d/3)
    • tourner à gauche de 60°
    • flocon(n-1, d/3)

On remarquera qu'on a tourné au total de 0°, c'est essentiel pour réussir une figure fractale récursive !

On remarquera également que flocon(1,d) positionne la tortue à une distance de d par rapport à l'origine alors qu'on a fait 4 tracés de distance d/3 (d'où la notion de fractale avec une dimension 4/3).

A vous de la traduire en Java avec votre tortue. 

La poursuite

Créer un comportement de poursuite pour une tortue. Une tortue poursuit une autre tortue. Son algorithme est simple. A chaque pas, la tortue se tourne en direction de la tortue à poursuivre et avance d'un pas. La tortue poursuivante ne va pas nécessairement plus vite que la tortue que l'on poursuit.

Tester votre comportement en poursuivant une tortue ivre et compter le nombre de pas nécessaires pour rattraper la tortue que l'on poursuit. Faire varier la vitesse relative de la tortue poursuivante par rapport à la vitesse de la tortue poursuivie.