1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| 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 premé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() |
Partager