Le jeu de la vie


Le jeu de la vie est un automate cellulaire. On imagine une population (de microbes ?) vivant sur un grillage. Chaque case a donc huit cases voisines. Chaque case est soit vivante soit morte.
Les règles d’évolution de la vie sont :

  1. si une case morte a exactement trois voisins vivant alors elle nait ;

  2. si une case vivante a deux ou trois voisins vivants alors elle reste vivante ;

  3. si une case vivante ne possède pas deux ou trois voisins vivants alors elle meurt (par isolement ou surpeuplement). </ol>
    En appliquant ces trois règles simultanément à tout le tableau, nous déterminons son étape suivante.

Création d'un tableau


Il faut commencer par disposer d'un tableau de 10x10 entrées et le remplir alétoirement avec des 0 et des 1 (ou des vrais ou faux). Un tableau pour nous sera une liste de listes. Écrivez donc une fonction tableau_aleatoire(taille=10) qui retourne un tableau carré rempli de 0 et de 1.

Affichage du tableau

Le jeu de la vie est un truc essentiellement graphique et il faut donc disposer d'un joli affichage. On peut commencer en mode texte. Écrivez donc une fonction affiche_tableau(monde) qui affiche l'état du monde en respectant les alignements (et les diagonales ?).

Évolution de la vie


Écrivez une fonction qui étant données des coordonnées i,j compte le nombre de voisins vivants de la case de coordonnées (i,j). Attention aux cases sur le bord ou dans les coins.

Allons-y maintenant pour une fonction evolution() qui fait évoluer la vie. Mais il vous faudra réfléchir à la manière dont votre monde est mémorisé. Est-ce une variable globale ou locale ? Est-ce que l'évolution a lieu en place ou crée-t-on un bouveau monde à chaque fois.

Le temps qui court


Et maintenant il faut faire évoluer le temps

De plus en plus joli


Évidemment l'intérêt du jeu de la vie est aussi graphique. Pour cela il faut soigner notre affichage.

Je propose de dessiner le monde dans une fenêtre à part, grâce à la librairie Tkinter. Il faut essayer de comprendre comment. Ce n'est pas facile. Je vous laisse vous débouiller avec la documentation.

import Tkinter
fenetre=Tkinter.Tk()
fenetre.title("Jeu de la vie")
canvas = Tkinter.Canvas(fenetre, width=100, height=100, background=’yellow’)
canvas.create_rectangle((10,20,30,40),fill="#ff0000")
canvas.pack()
fenetre.mainloop()