| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 
 | import tkinter as tk
from math import sqrt
# on rentre le numéro de la génération dans le champ prévu dans la fenêtre graphique; on appuie au clavier sur retour chariot
# on clique sur le bouton action
# pour quitter : bouton quit
 
palette =   ["a","b","c","d","e","f"]
palette.reverse()
 
 
def gene(event):
    global a 
    "numero de la génération"
    a = entree.get()
    a = eval(a)
 
def jeu():
    "lancement du jeu"
    ca.delete("all")
    mavariable.set("en cours")
    tu = Turtle()
    tu.speed(0)
    tu.up()
    tu.goto(0,-300)
    tu.down()
    tu.pensize(4)
    dessin(tu,100,a) 
    mavariable.set("fini")
    entree.delete(0,"end")
 
 
 
def dessin(t,l,n,coul ="#ff00ff"):
    "ce que fait la tortue t"
 
    if n == 0 :
        pass # on ne fait rien; 
    else : 
        ch = "#00"
        ind = n %5
        ch += palette[ind]
        ch = ch +"000"
        t.color(ch)
        t.begin_fill()
        t.down()
        t.forward(l)
        t.left(90)
        t.forward(l)
        a,b = t.position()
        angle1 = t.heading()
        # on sauvegarde la position ainsi que l'angle avec x'ox
        t.left(90)
        t.forward(l)
        c,d = t.position()
        angle2 = t.heading()
        # nvlle sauvegarde
        t.left(90)
        t.forward(l)
        t.up()
        t.hideturtle()
        t.end_fill()
        t.goto(a,b)
 
        t.setheading(angle1)
        # on oriente la tortue selon l'angle sauvé
        t.left(45)
        t.forward(l*sqrt(2)/2)
        t.left(180)
        t.down()
 
        dessin(t,l*sqrt(2)/2,n-1,ch)
        # appel récursif 
        t.up()
        t.goto(c,d)
        t.down()
        t.setheading(angle2)
        t.right(135)
        t.showturtle()
        dessin(t,l*sqrt(2)/2,n-1,ch)
        #second appel récursif
 
 
 
 
##########################################
 
#####################################        
# ce qui suit  concerne tkinter sous jacent à turtle : les widgets, boutons etc 
 
ca = getcanvas()# le  canevas dont dépend la tortue, 
root =ca.master # 
root.title("arbre de pythagore")
# titre de root
mavariable = tk.StringVar()
bu1 = tk.Button(root,text = "quit",command = root.destroy,bg = "red")
bu1.pack(side = "left")
bu2 = tk.Button(root,text = "action",command = jeu,bg = "blue")
bu2.pack(side = "left")
label = tk.Label(root,textvariable = mavariable,fg = "red")
label2 = tk.Label(root,text = 'génération ?')
entree  = tk.Entry(root,width = 5)
entree.pack(side = "right")
 
entree.bind('<Return>',gene)
# en appuyant sur retour chariot la fonction gene est appelée
# à modifier pour ne pas avoir à appuyer sur retourchariot entree.get
label2.pack(side = "right")
label.pack()
 
 
root.mainloop() |