Module Turtle EduPython

Bonjour à toutes et à tous,

j'ai un souci avec le module turtle en python, je cherche à tracer des fractales, j'ai regardé qques programmes existants et... la fenêtre de la tortue se suicide à chaque exécution :-/
from turtle import *

def decale_vers_gauche(largeur):
    left(180)
    penup()
    forward(largeur)
    pendown()
    left(180)

def decale_vers_haut(hauteur):
    left(90)
    penup()
    forward(hauteur)
    pendown()
    right(90)


def Von_Koch(n,longueur):
    speed(0)
    pencolor("blue")
    shape("turtle")
    if n==0:
        forward(longueur)
    else:
        Von_Koch(n-1,longueur/3)
        left(60)
        Von_Koch(n-1,longueur/3)
        right(120)
        Von_Koch(n-1,longueur/3)
        left(60)
        Von_Koch(n-1,longueur/3)

def trace_Von_Koch(n,longueur):
    decale_vers_gauche(300)
    decale_vers_haut(-200)
    Von_Koch(n,longueur)


Je suis sous EduPython 2.3 et... ça me gave un peu beaucoup...

Merci d 'avance,

Bien amicalement,

F.D.

Réponses

  • Essaie avec ça :
    from turtle import *
    
    reset()
    speed(0)
    r={"A":"AGADAGA","D":"D","G":"G"}
    
    def remplace(mot,n):
        for _ in range(n):
            mot="".join(r[c] for c in mot)
        return mot
    
    def distance(p,n):
        return p*3**-n
    
    def polygone(n,couleur):
        mot=remplace("AD"*3,n)
        p=distance(100,n)
        fillcolor(couleur)
        begin_fill()
        for c in mot:
            if c=="A":
                fd(p)
            elif c=="G":
                lt(60)
            else:
                rt(120)
        end_fill()
        return p*4**n
    
    couleurs=["gray","orange","blue","green"]
    for n in range(4):
        print(n,polygone(3-n,couleurs[n]))
    
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • Merci,

    c'est vraiment super beau mais le problème est le même, le curseur vire au rond bleu et "le programme ne répond pas"...

    je ne comprends pas, faut-il mettre un waitforclick() un truc dans le style?

    j'ai rajouté mainloop() et le bug ne se produit plus, est-ce bien raisonnable? B-)-

    bien amicalement,

    F.D.
  • Ha, chez moi, ça marche mais la fenêtre se ferme toute seule dans une console mais pas avec Pyzo.
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • Ok donc Python = LaTeX = putain mais c'est quel éditeur que j'utilise... lol

    Merci en tout cas

    bien amicalement,

    F.D.
  • Bonjour,

    si mes souvenirs sont bons, il faut ajouter un
    done()
    
    à la fin du programme afin que la fenêtre résiste à la tentation du suicide ;-)
  • Bonsoir,

    navré du délai pour répondre, oui c'est le bon truc ce done()
    mais le problèem est que lorsque l'on utilise des fonctions sans créer de main, on ne peut pas mettre de done() partout :-/ m'enfin on s'en sort :-)

    Merci encore

    F.D.
  • Bonsoir,

    Désolé pour la réponse tardive, mais un petit
    turtle.mainloop() 
    

    en fin de programme devrait résoudre le problème.

    Vincent MAILLE
  • Version
    en ligne
    J'ai juste change la variable longueur en longu car longueur est une commande Xcas.
Connectez-vous ou Inscrivez-vous pour répondre.