import fr.upd.*;
import java.awt.geom.*;

/**
 * Un programme permettant de dessiner un arbre (tronc, branches et feuilles).
 *
 * Suggestions : Éiminer les appels à getState() et setState() en les remplaçant
 * par quelque chose d'adéquat...
 * Jouer avec les paramètres pour en observer l'effet (angles, longueurs,
 * couleurs), de sorte à obtenir des arbres un peu plus réalistes...
 */
public class Arbre {
  public static Turtle tortue;
  public static void arbre(int niveau,double longueur) {
    if (niveau==0) {
      tortue.lineTo(longueur);
      Facile.setColor(0,255,0);
      tortue.rectangle(5);
      Facile.setGray(0);
    }
    else {
      tortue.lineTo(longueur/3);
      TurtleState s = tortue.getState();
      tortue.rotate(Math.PI/3);
      arbre(niveau-1,longueur/2);
      tortue.setState(s);
      tortue.rotate(-Math.PI/3);
      arbre(niveau-1,longueur/2);
      tortue.setState(s); // restore old place+angle
      arbre(niveau-1,2*longueur/3);
    }
  }
  public static void main(String []args) {
    Facile.startDrawings(600,600);
    Facile.setGray(0);
    Facile.setTurtleMode(true);
    tortue = Facile.getTurtle();
    tortue.setLocation(300.0,600.0);
    tortue.setAngle(-Math.PI/2);
    arbre(7,600);
  }
}