le jeu de la vie
Dans le cadre de ce projet de programmation vous réaliserez un jeu de la vie↓ tel que le mathématicien John Conway l'a imaginé. Ce n'est pas un jeu au sens propre du terme puisqu'aucune interaction n'est possible : il suffit de regarder évoluer un ensemble de cellules virtuelles. Par contre, ce jeu permet d'illustrer de nombreux phénomènes tant informatiques que mathématiques.
Ce jeu prend place dans un monde représenté par un quadrillage. Dans un premier temps nous pourrons considérer que le monde est fini et que le quadrillage a donc des limites. Il peut éventuellement se replier sur lui même en format soit un cylindre (les côtés droit et gauche se touchent virtuellement) soit un tore (les côtés droit et gauche se touchent virtuellement et les deux extrémités du cylindre ainsi formé se touchent à leur tour).
Le déroulement du jeu est le suivant. Dans chaque case du quadrillage se trouve exactement une cellule virtuelle (cellule au sens biologique du terme). Cette cellule peut être vivante ou morte et le but du jeu est de voir l'évolution d'un ensemble initial donné de cellules.
Le cycle de vie d'une cellule, qui va nous permettre de savoir si oui ou non elle sera là à l'instant t+1, dépend directement de la présence ou non de cellules dans ses huit cases voisines (V8), à l'instant t :
L'état initial (le nombre de cellules vivantes et leur position) va déterminer l'évolution du monde.
Vous devez écrire un programme en C permettant de faire évoluer le monde décrit ci-dessus et de visualiser son évolution.
Votre programme devra être capable de lire et de faire évoluer les mondes décrits dans des fichiers au format life 1.05. Il vous est demandé de vous limiter aux règles usuelles et de fait, la directive #R pourra être ignorée. Si cependant vous avez envie de mettre en œuvre d'autres règles, vous pouvez le faire et dans ce cas, la directive #R devra être prise en compte.
Enfin, comme ce projet a une composante visuelle, nous vous demandons de choisir et d'utiliser une bibliothèque de fonction pour l'affichage.
Une fois ce travail minimal effectué, vous pouvez apporter toutes les améliorations que vous pouvez imaginer à votre programme.