Browse Source

OPTIMISATION FINI! v1.2 classe grille faite

master
philippot.m 2 weeks ago
parent
commit
a2cb5b0a51
  1. 105
      jeu_de_la_vie.py

105
jeu_de_la_vie.py

@ -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():

Loading…
Cancel
Save