Le jeu de la vie

Description

Bien que le code "Jeu de la vie" soit dèjà présent plusieurs fois sur CCM/Codes-Sources, je poste à mon tour une nouvelle version.
La particularité du "Jeu de la vie" est qu'il n'y a pas de joueurs!
L'historique et les règles du jeu sont très bien expliquées sur Wikipedia (automate cellulaire, jeu de la vie...)

Infos:
Compatible Python 2 et 3
Testé avec Python 2.7.3 et Python 3.3.5 dans l'environnement Windows 7 64 bits avec un écran 23" 1080x1920
-- Ajout le 11/02/2015
-- Modifié le 29/04/2015 : Optimisation du code et ajout de fonctionnalités.
-- Modifié le 01/05/2015 : Correction d'un bug.
-- Modifié le 17/05/2015 : Ajout de fonctionnalité (Accélérer)

Utilisation:
En fonction de la taille et de la résolution de votre écran vous devrez, peut-être, adapter les valeurs par défaut qui déterminent la dimension de la grille.
Pour cela, dans la section "__init__" vous interviendrez sur la variable "self.H_appli_diff" (En pixels, estimation de la hauteur de l'écran - hauteur de la grille)
La dimension de la grille est fixe, augmenter ou diminuer la taille d'une cellule augmentera ou diminuera le nombre de cellules par ligne/colonne.

Ajouter une cellule = clic gauche
Supprimer une cellule = clic droit

Le contrôle "Ralentir" permet de temporiser l'affichage des générations successives (en millièmes de seconde)
L'affichage en mode pas à pas est possible en sélectionnant "Manuel" dans le contrôle "Ralentir"

Le contrôle "Accélérer" permet une pseudo accélération de l'affichage des générations successives.
(1 = affichage à chaque génération / 2 = affichage toutes les 2 générations ..... / 10 = affichage toutes les 10 générations)

Un clic sur un des choix du contrôle "Motifs" affichera le motif dans la grille et vous lancerez l'affichage des générations en appuyant sur le bouton "Démarrer"
Un double clic effacera le motif.
Pour sauvegarder vos motifs personnels, renseignez la zone de saisie avec le nom du nouveau motif et validez par "Entree"
Les motifs sont sauvegardés dans 2 fichiers "JDV_Motifs_V2.pickle" et "JDV_Motifs_V3.pickle" selon la version Python utilisée.

Le bouton "Arreter" interrompt l'affichage des générations, un nouvel appui sur "Démarrer" reprend le traitement en cours.

Le bouton "Import Motifs" permet d'exécuter des motifs (norme Life 1.05) depuis une bibiothèque extérieure et disponible sur Internet.
Le chemin d'accès, par défaut, à cette bibliothèque est défini dans la section "__init__" par la variable "self.chemin_motifs"
Exemple de bibliothèque à télécharger: http://www.conwaylife.com/wiki/Main_Page et clic sur le bouton "Download pattern collection"

Lorsqu'une cellule atteint un des bords de la grille, un effet de zoom est appliqué. Cet effet s'arrête lorsque la taille de la cellule est inférieure à 1 pixel.
Certains motifs (Puffer_01 ou Puffer_02 par exemple) nécessitent d'attendre jusqu'à environ 1000 générations et 1/2 million de cellules pour voir apparaitre des effets intéressants.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.