from tkinter import* #création du tableau comme monde au départ avec le U inversé. #il a fallu régler le probleme du tableau avec lignes #et colonnes indépendantes def initial(): colonnes=40 lignes=40 monde=[[0]*colonnes for _ in range(lignes)] monde[19][19]=1 monde[19][20]=1 monde[19][21]=1 monde[20][19]=1 monde[21][19]=1 monde[21][20]=1 monde[21][21]=1 return monde # pour afficher la grille du jeu def affiche(tableau): for i in range(40): for j in range(40): if tableau[i][j]==0 : zone.create_oval(0+i*10,0+j*10,10+i*10,10+j*10,fill="green",outline="green") else : zone.create_oval(0+i*10,0+j*10,10+i*10,10+j*10,fill="red",outline="red") #on compte le nombre de cellules voisines vivantes, donc égales à 1. #on ne considère pas les cellulles situées en bordures def voisin(tableau,i,j): nombre=tableau[i-1][j-1]+tableau[i-1][j]+tableau[i-1][j+1]+tableau[i][j-1]+tableau[i][j+1]+tableau[i+1][j-1]+tableau[i+1][j]+tableau[i+1][j+1] return(nombre) #on applique les règles du jeu. Il faut faire une copie du tableau. Il y a une erreur dès la première itération. Pourquoi ?? def iteration(tableau, k): for loop in range (k): copie=tableau for i in range(1,39): for j in range(1,39): vivant=voisin(copie,i,j) if ((copie[i][j]==1 and vivant==2) or vivant==3): tableau[i][j]=1 else : tableau[i][j]=0 # creation de la fenetre principale fenetre=Tk() fenetre.title("Le jeu de la vie") # creation de la fenetre graphique zone=Canvas(fenetre, width=400, height=400, bg="white") zone.pack(padx=10, pady=10) #le programme principal grille=initial() iteration(grille,10) affiche(grille) fenetre.mainloop()