Bonjour,
je suis débutante et je cherche à écrire un programme simple du "jeu de la vie".
J'obtiens un affichage qui me convient à l'initial mais dès la première itération le dessin obtenu est faux.:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()
Jeu_de_la_vie.py
Est-ce que quelqu'un pourrait me donner une explication ?
D'avance merci