|
|
@ -17,7 +17,7 @@ class Grille: |
|
|
|
self.can=uncanva |
|
|
|
self.fen=unfenetre |
|
|
|
self.iteration=uniteration |
|
|
|
|
|
|
|
|
|
|
|
def creer_grille(self): |
|
|
|
self.grille=[] |
|
|
|
for ligne in range(0,self.ligne): |
|
|
@ -48,12 +48,17 @@ class Grille: |
|
|
|
|
|
|
|
for ligne in range(len(self.grille)): |
|
|
|
for colone in range(len(self.grille[0])): |
|
|
|
new_c=self.can.create_rectangle( colone *self.taille_carre , ligne *self.taille_carre , |
|
|
|
colone*self.taille_carre+self.taille_carre , ligne*self.taille_carre +self.taille_carre , |
|
|
|
fill ="white") |
|
|
|
self.lst_c[ligne].append(new_c) |
|
|
|
self.affiche_grille() |
|
|
|
|
|
|
|
if self.grille [ligne][colone] == 1: |
|
|
|
new_c=self.can.create_rectangle( colone *self.taille_carre , ligne *self.taille_carre , |
|
|
|
colone*self.taille_carre+self.taille_carre , ligne*self.taille_carre +self.taille_carre , |
|
|
|
fill ="black") |
|
|
|
self.lst_c[ligne].append(new_c) |
|
|
|
else: |
|
|
|
new_c=self.can.create_rectangle( colone *self.taille_carre , ligne *self.taille_carre , |
|
|
|
colone*self.taille_carre+self.taille_carre , ligne*self.taille_carre +self.taille_carre , |
|
|
|
fill ="white") |
|
|
|
self.lst_c[ligne].append(new_c) |
|
|
|
self.fen.update() |
|
|
|
def affiche_grille(self): |
|
|
|
for ligne in range (len(self.grille)): |
|
|
|
for col in range (len(self.grille[0])): |
|
|
@ -67,20 +72,27 @@ class Grille: |
|
|
|
self.morte=self.morte+1 |
|
|
|
nb_morte_lab.set("Nombre de cellule morte:"+str(self.morte)) |
|
|
|
self.fen.update() |
|
|
|
|
|
|
|
def compte(self): |
|
|
|
for ligne in range (len(self.grille)): |
|
|
|
for col in range (len(self.grille[0])): |
|
|
|
pass |
|
|
|
|
|
|
|
def change(self,coord_x,coord_y): |
|
|
|
num_colone=coord_x//self.taille_carre |
|
|
|
num_ligne=coord_y//self.taille_carre |
|
|
|
if 0<coord_x<1246 and 0<coord_y<795: |
|
|
|
if self.grille[num_ligne][num_colone]==0: |
|
|
|
self.grille[num_ligne][num_colone]=1 |
|
|
|
elif self.grille[num_ligne][num_colone]==1: |
|
|
|
self.grille[num_ligne][num_colone]=0 |
|
|
|
self.affiche_grille () |
|
|
|
# def change(self,coord_x,coord_y): |
|
|
|
# num_colone=coord_x//self.taille_carre |
|
|
|
# num_ligne=coord_y//self.taille_carre |
|
|
|
# if 0<coord_x<1246 and 0<coord_y<795: |
|
|
|
# if self.grille[num_ligne][num_colone]==0: |
|
|
|
# self.grille[num_ligne][num_colone]=1 |
|
|
|
# self.can.itemconfig(self.lst_c[num_ligne][num_colone],fill ="white") |
|
|
|
# self.fen.update() |
|
|
|
# |
|
|
|
# elif self.grille[num_ligne][num_colone]==1: |
|
|
|
# self.grille[num_ligne][num_colone]=0 |
|
|
|
# self.can.itemconfig(self.lst_c[num_ligne][num_colone],fill ="black") |
|
|
|
# self.fen.update() |
|
|
|
|
|
|
|
#self.affiche_grille () |
|
|
|
|
|
|
|
def gen_suiv(self): |
|
|
|
copy_grille=deepcopy(self.grille) |
|
|
@ -94,30 +106,32 @@ class Grille: |
|
|
|
for index, etat in enumerate(self.grille[ligne]): |
|
|
|
if etat==1: |
|
|
|
lst_vivante_dans_colonne[len(lst_vivante_dans_colonne)-1].append(index) |
|
|
|
|
|
|
|
vie=0 |
|
|
|
l_ac=0 |
|
|
|
for ligne in lst_vivante_dans_ligne: |
|
|
|
for col in range(0,len(lst_vivante_dans_colonne[l_ac])): |
|
|
|
for cel_l_autour in range(-1,2): |
|
|
|
for cel_col_autour in range(-1,2): |
|
|
|
for l_contour in range(-1,2): |
|
|
|
for col_contour in range(-1,2): |
|
|
|
if l_contour==0 and col_contour==0: |
|
|
|
pass |
|
|
|
elif copy_grille[(ligne+cel_l_autour+l_contour)%len(self.grille)][(lst_vivante_dans_colonne[l_ac][col]+cel_l_autour+cel_l_autour)%len(self.grille[0])]==1: |
|
|
|
print(copy_grille[(ligne+cel_l_autour+l_contour)],) |
|
|
|
vie=vie+1 |
|
|
|
if copy_grille[ligne+cel_l_autour][lst_vivante_dans_colonne[l_ac][col]+ cel_l_autour ]==1 and (vie==2 or vie==3): |
|
|
|
self.grille[ligne+cel_l_autour][lst_vivante_dans_colonne[l_ac][col]+ cel_l_autour ]=1 |
|
|
|
elif copy_grille[ligne+cel_l_autour][lst_vivante_dans_colonne[l_ac][col]+ cel_l_autour]==1 and (vie<2 or vie>3): |
|
|
|
self.grille[ligne+cel_l_autour][lst_vivante_dans_colonne[l_ac][col]+ cel_l_autour ]=0 |
|
|
|
elif copy_grille[ligne+cel_l_autour][lst_vivante_dans_colonne[l_ac][col]+ cel_l_autour]==0 and vie==3: |
|
|
|
self.grille[ligne+cel_l_autour][lst_vivante_dans_colonne[l_ac][col]+ cel_l_autour ]=1 |
|
|
|
vie=0 |
|
|
|
l_ac=l_ac+1 |
|
|
|
for ligne in range (0,len(self.grille)): |
|
|
|
for col in range (0,len(self.grille[0])): |
|
|
|
for l_contour in range(-1,2): |
|
|
|
for col_contour in range(-1,2): |
|
|
|
if l_contour==0 and col_contour==0: |
|
|
|
pass |
|
|
|
elif copy_grille[(ligne+l_contour)%len(self.grille)][(col+col_contour)%len(self.grille[0])]==1: |
|
|
|
vie=vie+1 |
|
|
|
if copy_grille[ligne][col]==1 and (vie==2 or vie==3): |
|
|
|
self.grille[ligne][col]=1 |
|
|
|
self.can.itemconfig(self.lst_c[ligne][col],fill ="black") |
|
|
|
self.fen.update() |
|
|
|
|
|
|
|
elif copy_grille[ligne][col]==1 and (vie<2 or vie>3): |
|
|
|
self.grille[ligne][col]=0 |
|
|
|
self.can.itemconfig(self.lst_c[ligne][col],fill ="white") |
|
|
|
self.fen.update() |
|
|
|
|
|
|
|
elif copy_grille[ligne][col]==0 and vie==3: |
|
|
|
self.grille[ligne][col]=1 |
|
|
|
self.can.itemconfig(self.lst_c[ligne][col],fill ="black") |
|
|
|
self.fen.update() |
|
|
|
vie=0 |
|
|
|
|
|
|
|
self.iteration=self.iteration+1 |
|
|
|
self.affiche_grille () |
|
|
|
|
|
|
|
def gen_prev(self): |
|
|
|
self.grille=deepcopy(self.lst_grille[len(self.lst_grille)-1]) |
|
|
@ -135,7 +149,18 @@ def bouton_grille(): |
|
|
|
grille.creer_carre(nb_ligne_choisi.get(),nb_colonne_choisi.get()) |
|
|
|
|
|
|
|
def change(event): |
|
|
|
grille.change(event.x,event.y) |
|
|
|
num_colone=event.x//grille.taille_carre |
|
|
|
num_ligne=event.y//grille.taille_carre |
|
|
|
if 0<event.x<1246 and 0<event.y<795: |
|
|
|
if grille.grille[num_ligne][num_colone]==0: |
|
|
|
grille.grille[num_ligne][num_colone]=1 |
|
|
|
zone.itemconfig(grille.lst_c[num_ligne][num_colone],fill ="black") |
|
|
|
fenetre.update() |
|
|
|
|
|
|
|
elif grille.grille[num_ligne][num_colone]==1: |
|
|
|
grille.grille[num_ligne][num_colone]=0 |
|
|
|
zone.itemconfig(grille.lst_c[num_ligne][num_colone],fill ="white") |
|
|
|
fenetre.update() |
|
|
|
|
|
|
|
######Fonction de génération########## |
|
|
|
def gen_suiv(): |
|
|
@ -149,7 +174,7 @@ def gen_cont(): |
|
|
|
f_cont=True |
|
|
|
while f_cont==True: |
|
|
|
grille.gen_suiv() |
|
|
|
sleep(0.1) |
|
|
|
sleep(0.01) |
|
|
|
if f_cont==False: |
|
|
|
break |
|
|
|
def stop(): |
|
|
|