from tkinter import * from tkinter.filedialog import askopenfile from copy import deepcopy from time import sleep f_cont=False class Grille: def __init__(self,unnb_ligne, unnb_col,unvivante,uniteration,unmorte,uncanva,unfenetre): self.ligne=unnb_ligne self.colonne=unnb_col self.lst_grille=[] self.grille=[] self.taille_carre=0 self.lst_c=[] self.vivante=unvivante self.morte=unmorte self.can=uncanva self.fen=unfenetre self.iteration=uniteration def creer_grille(self): self.grille=[] for ligne in range(0,self.ligne): self.grille.append([]) for colonne in range(0,self.colonne): self.grille[ligne].append(0) def detruire_ancien_carre(self): for detruire_l in range(0,len(self.lst_c)): for detruire_col in range(0,len(self.lst_c[0])): self.can.delete(self.lst_c[detruire_l][detruire_col]) def creer_carre(self,nb_ligne,nb_col): self.detruire_ancien_carre() self.ligne=nb_ligne self.colone=nb_col ###############création_lst_carré########## self.lst_c=[] for ligne in range(len(self.grille)): self.lst_c.append([]) ###############création_carré########## carre_col,carre_ligne=1246//self.colonne,795//self.ligne if carre_col0: lst_vivante_dans_ligne.append(ligne) lst_vivante_dans_colonne.append([]) 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 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 def gen_prev(self): self.grille=deepcopy(self.lst_grille[len(self.lst_grille)-1]) self.lst_grille.pop(len(self.lst_grille)-1) self.iteration=self.iteration-1 self.affiche_grille () ########Fonction interface utilisateur########### def bouton_grille(): grille.detruire_ancien_carre() grille.ligne=nb_ligne_choisi.get() grille.colonne=nb_colonne_choisi.get() grille.creer_grille() grille.creer_carre(nb_ligne_choisi.get(),nb_colonne_choisi.get()) def change(event): num_colone=event.x//grille.taille_carre num_ligne=event.y//grille.taille_carre if 0', change) grille=Grille(0,0, 0,0,0, zone,fenetre) fenetre.mainloop()