bonsoir à vous tous, j'ai un programme que je n'arrive pas à comprendre, il me faudra les explications les plus précises possible ligne par ligne ou paragraphe par paragraphe...
voici l'animal ...


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
from tkinter import *
import random
from math import *
 
 
def Analyse():
    im=Image.open("Sans titre.jpg")
    nbcarré=0
    nbpixels=0
    #on recupere les dimensions de l'image et on les stocke dans un tuple nomme size
    a,b=im.size
    size=(a,b)
    print("taille de l'image")
    print(" largeur :",a)
    print(" hauteur :",b)
 
    # on calcule le nombre total de pixels -1 dans l'image
    c=a*b-1
    print(c)
    # on splitte les composantes de l'image
    r,g,b=im.split()
 
 
 
     # on cree 3 images differentes de nos composantes pour les visualiser eventuellement
    listr=list(r.getdata())
    newr=Image.new("L",size)
    newr.putdata(listr)
    newr.save("save_carréR.jpg")
    listg=list(g.getdata())
    newg=Image.new("L",size)
    newg.putdata(listg)
    newg.save("save_carréG.jpg")
    listb=list(b.getdata())
    newb=Image.new("L",size)
    newb.putdata(listb)
    newb.save("save_carréB.jpg")
 
 
 
    # on applique notre filtre reducteur a la composante R qui est chargee dans "listr"
    dedans=0
    cpt=0
    cpt1=0
    for i in range (0,c):
 
        if dedans==0 :
            cpt = 0
        else :
            cpt = cpt + 1
        if listg[i]<120:
            dedans = 1
            listg[i]=0
            nbpixels=nbpixels+1
        else :
            if dedans==1:
                print(cpt)
                cpt1=cpt
            dedans = 0
    nbcarré=nbpixels/(cpt1*cpt1)
    print("il y a ",int(nbcarré)," carrés.")
 
 
def test(a,x_a,y_a,Fibo,Fibo2,r,j):
    print("coucou")
    for i in range(a):
        if (sqrt((x_a-Fibo[i])**2+(y_a-Fibo2[i])**2))>((sqrt((r**2)+(r**2)))*2):
            j=j+1
        else:
            j=j
    if j==a:
        print("bon")
        return 1
    else:
        print("pas bon")
        return 0
 
 
def carré():
    """ Dessine un carré de centre (x,y) et de coté 2r """
    #i c'est le nombre de carré
    #a numéro du carré
    #h case du tableau correspondant au carré 
    i = random.randint(1,15)
    a = 0
    h = 0
    j=0
    while a<i :
        x_a = random.randint(30,Largeur-30)
        y_a = random.randint(30,Hauteur-30)
        r = 20
        if a==0:
            Fibo=[x_a]
            Fibo2=[y_a]
            xmin=x_a-r
            ymin=y_a-r
            xmax=x_a+r
            ymax=y_a+r
            Carre = Canevas.create_rectangle(xmin,ymin,xmax,ymax, outline='red', fill='red')
            print("coordonée sur x du carré numéro ",a+1," : ",Fibo[h])
            print("coordonée sur y du carré numéro ",a+1," : ",Fibo2[h])
            h=h+1
            a=a+1
        elif  test(a,x_a,y_a,Fibo,Fibo2,r,j):
            Fibo.append(x_a)
            Fibo2.append(y_a)
            xmin=x_a-r
            ymin=y_a-r
            xmax=x_a+r
            ymax=y_a+r
            Carre = Canevas.create_rectangle(xmin,ymin,xmax,ymax, outline='red', fill='red')
            print("coordonée sur x du carré numéro ",a+1," : ",Fibo[h])
            print("coordonée sur y du carré numéro ",a+1," : ",Fibo2[h])
            h=h+1
            a=a+1
        else:
            print("recommencer")
 
    print(Fibo)
    print(Fibo2)
    print("il y'a ",i,"carrés")
 
 
 
 
 
 
def Effacer():
    """ Efface la zone graphique """
    Canevas.delete(ALL)
 
# Création de la fenêtre principale (main window)
Mafenetre = Tk()
Mafenetre.title('Carré en folie')
 
# Création d'un widget Canvas (zone graphique)
Largeur = 480
Hauteur = 320
Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ='white')
Canevas.pack(padx =5, pady =5)
a=Largeur
b=Hauteur
print("taille de l'image")
print(" largeur :",a)
print(" hauteur :",b)
 
# on calcule le nombre total de pixels -1 dans l'image
c=a*b-1
print("Il y'a ",c," pixels")
 
# Création d'un widget Button (bouton Go)
BoutonGo = Button(Mafenetre, text ='Go', command = carré)
BoutonGo.pack(side = LEFT, padx = 10, pady = 10)
 
# Création d'un widget Button (bouton analyse)
BoutonAna = Button(Mafenetre, text ='Analyse', command = Analyse)
BoutonAna.pack(side = LEFT, padx = 10, pady = 10)
 
# Création d'un widget Button (bouton Effacer)
BoutonEffacer = Button(Mafenetre, text ='Effacer', command = Effacer)
BoutonEffacer.pack(side = LEFT, padx = 5, pady = 5)
 
# Création d'un widget Button (bouton Quitter)
BoutonQuitter = Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy)
BoutonQuitter.pack(side = LEFT, padx = 5, pady = 5)
 
#attribue du carré
 
 
Mafenetre.mainloop()