Jeu de la vie

Python
import random

class Cellule:

    def __init__(self):
        self.etat = random.randint(0,1)
        self.voisin = []

    def evolue(self):
        '''
        modifie l'état de la cellule en fonction du nombre de voisins
        Si elle a exactement 3 voisins elle vit
        Si elle a exactement deux voisins elle reste en vie si elle l'était
        Sinon elle meurt
        '''
        # A écrire



def debut_jeu():
    '''
    Retourne une liste de liste de 3 x 3 Cellules
    '''
    return [[Cellule() for _ in range(3)]for _ in range(3)]

# initialise le jeu
jeu = debut_jeu()

def ajout_voisins(jeu):
    '''
    jeu est une liste de listes de Cellules
    On va la parcourir pour ajouter des tuples aux voisins concernés
    '''
    # Parcours des cellules
    for li in range(3):
        for co in range(3):
            # décalage voisinage
            for delta_l in [-1,0,1]:
                for delta_c in [-1,0,1]:
                    if delta_c != 0 or delta_l != 0:
                        # est-ce que la cellule est vivante
                        if jeu[li][co].etat:
                            # est-ce que "voisin" est dans la grille
                            if (li + delta_l) in range(3) and (co + delta_c) in range(3):
                                jeu[li + delta_l][co + delta_c].voisin.append((li,co))



def affichage(jeu):
    '''
    Affiche la grille
    un espace pour les cellules mortes
    un * pour les cellules vivantes
    '''
    # A écrire

def evolue(jeu):
    '''
    applique l'évolution à toutes les cellules en modifant les états
    remets l'attribut voisin à chaque génération
    Il faut donc deux boucles de parcours
    '''
    # A écrire