Browse Source

OPTIMISATION FINI! v1.2 classe grille faite

master
philippot.m 3 weeks ago
parent
commit
a2cb5b0a51
  1. 103
      jeu_de_la_vie.py

103
jeu_de_la_vie.py

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

Loading…
Cancel
Save