Tp gene of la vie
P. RICQ 2021 TDPRG1055 v1.0 3/3
GAME Of LIFE – Le jeu de la vie Le Jeu de la Vie est un automate cellulaire qui se déroule sur une grille à deux dimensions. https://fr.wikipedia.org/wiki/Jeu_de_la_vie Une génération est représentée par un tableau de caractères qui sont soit des '*' quand il s'agit d'êtres vivants, soit des caractères ' ' (espace) quand il n'y a pas d'être en vie à ces endroits.
Génération G Génération G+1 (avec règles légèrement différentes)
La génération …afficher plus de contenu…
https://fr.wikipedia.org/wiki/Jeu_de_la_vie TD Algo-C
P. RICQ 2021 TDPRG1055 v1.0 3/3
a. Question : Comment va-t-on gérer les générations successives ? De combien de tableaux a-t-on besoin ? est-il nécessaire de faire des recopies de générations d'un tableau vers l'autre ?
b. Donner le pseudocode de l'algorithme qui, à partir d'un nombre de voisins compris entre 0 et 8, et l'état actuel d'une cellule ('en vie' ou
'mort'), détermine l'état de cette cellule à la prochaine génération en appliquant les règles précédentes.
c. Donner le pseudocode de la fonction qui implémente l'algorithme de présence de vies à la génération …afficher plus de contenu…
int initLife(char *life, int sizeX, int sizeY); // nextGen calcule l'apparition ou la disparition des êtres à la génération suivante, de Gen1 vers Gen2 et renvoie leur nb int nextGen(char *gen1, char *gen2, int sizeX, int sizeY); // displayGen Affiche une génération sur la console void displayGen(char *life, int sizeX, int sizeY); // countNeighbours dénombre les êtres en vie autour de la postion (posX, posY) dans le tableau Life (une génération) int countNeighbours(char *life, int sizeX, int sizeY, int posX, int posY); // Détermine s'il y a une naissance ou une disparition en fonction du nombre de voisins et de l'état actuel char lifeState(int nbNeighbours, char state);
GameOfLife.c (extrait)
// calcul de la génération suivante int nextGen(char *gen1, char *gen2, int sizeX, int sizeY)