from tkinter import * from tkinter.filedialog import askopenfile from copy import deepcopy from time import sleep from random import randint 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 soupe_primordiale(self): self.grille=[] for ligne in range(0,self.ligne): self.grille.append([]) for colonne in range(0,self.colonne): self.grille[ligne].append(randint(0,1)) 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.iteration=0 self.vivante=0 self.morte=0 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=new_width.get()//self.colonne,new_height.get()//self.ligne if carre_col3): self.grille[ligne][col]=0 self.can.itemconfig(self.lst_c[ligne][col],fill ="white") self.vivante=self.vivante-1 self.morte=self.morte+1 nb_morte_lab.set("Nombre de cellule morte:"+str(self.morte)) nb_vivante_lab.set("Nombre de cellule vivante:"+str(self.vivante)) 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.vivante=self.vivante+1 self.morte=self.morte-1 nb_morte_lab.set("Nombre de cellule morte:"+str(self.morte)) nb_vivante_lab.set("Nombre de cellule vivante:"+str(self.vivante)) self.fen.update() vie=0 self.iteration=self.iteration+1 nb_it_lab.set("Nombre d'itération:"+str(self.iteration)) 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 nb_it_lab.set("Nombre d'itération:"+str(self.iteration)) self.affiche_grille () ########Fonction interface utilisateur########### def bouton_grille(): global f_cont f_cont=False 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()