The God Game

The God Game (ou LE jeu) est une implémentation du jeu de la vie de John Conway. Il s’agit d’un automate cellulaire créé en 1970.

Le principe est que le monde est divisé en une grille de cellules vivantes ou mortes. Les règles pour passer d’une génération à celle d’après sont les suivantes:

  • Si une cellule morte a 3 voisines vivantes, elle naît à la génération d’après.
  • Si une cellule vivante a 2 ou 3 voisines vivantes, elle reste en vie (sinon il y a sur-population ou sous-population).

On peut représenter les règles de Life par B3/S23 (‘Born’ et ‘Stay alive’). D’autres variantes existent, comme HighLife (B36/S23) ou Seeds (B2/S).

Le projet

Nous sommes Peio Ho33e5 BORTHELLE, Jean-Baptiste Goldenf0x GIRARD et Léo Superboloss TUNON-EMBARECK (lycée Edgar Quinet, Bourg-en-Bresse). Nous avons lancé ce projet dans le cadre de la spécialité ISN (Informatique et Science du Numérique) en terminale S.

Ce projet est écrit en python et utilise mercurial pour le versioning (herbergé sur Bitbucket)

Plan de route

  • Écrire la classe Dieu qui gère l’évolution des cellules.
  • Écrire l’interface graphique de base (juste l’évolution d’un état initial).
  • Créer un bouton qui modifie la vitesse. Un bouton start/stop et avancer d’une génération.
  • Créer un bouton zoom.
  • Ajouter un éditeur d’état initial (gérer la souris, éventuellement un copier/coller).
  • Gérer l’export et l’import des états initiaux (fichiers MCell, Life, RLE...).
  • Déjà ici ça sera bien, mais des évolutions sont encore possible, comme l’export de videos...

Répartition des taches

Ho33e5
Interface graphique en général. Coordination (mise en place du repository mercurial, packaging de l’application...).
Goldenf0x
Partie algorithmique : calcul d’une génération suivante. Il faut modifier Dieu pour qu’une cellule voulant s’échapper réapparaisse en bas (mode ‘snake’). Créer un mode ‘infini’ où les cellules qui s’échappent sont toujours visibles si on dézoome.
Superboloss
Gérer l’import et l’export des fichiers MCell, Life et RLE (voir le site de MCell pour les spécifications).