Le nième jeu de la vie en net2 avec la classe graphics de .net

Description

Il sagit du jeu de la vie. C'est pas le premier je sais.
Je pense que beaucoup de monde connait les regles de cet automate cellulaire.
En voici la regle très bien expliué à cette adresse pour les curieux : http://fr.wikipedia.org/wiki/Le_jeu_de_la_vie

Mon programme permet d'emuler le comportement des cellules. Fonction du programme :
-Vitesse de calcul comprise entre 0ms et 100ms entre deux itérations pour un monde allant de 3*3 à 200*200 (qu'on peut pousser à 300)
-Vitesse d'affichage allant de 2ms à 300ms pour les même mondes
-Le moteur graphique de .Net permet une émulation très correcte jusqu'à 120*120 à environ 15ms
-Possibilité d'agrandir la taille des cellules
-Zoom sur l'image
-Changement des couleurs
-Grille activable
-Possibilité de voir les cellules ne vivant qu'une fois d'une autre couleur
-Utilisation du processeur par l'application.
-Rafraîchissement des cellules.
-Map pour voir l'ensemble du monde avec zone pour voir ce que l'on voit par rapport à la taille du monde.
-Ajouter au hasard une certaine quantité de cellules (entre 1 et 100%)
-Possiblité d'ajouter ou d'enlever une cellule en cliquant dessus.
-Voir le temps de calcul et d'affichage en ms et voir si l'interval du timer est respecté.
-Mode pas à pas, auto, arret

Au niveau du programme :
-Utilisation de la classe Graphics
-Utilisation de Graphics.FillRectangles qui permet de tracer tous les rectangles d'un tableau à la fois, beaucoup plus rapide qu'un par un.
-Le coeur du programme est composé de deux procedures, l'une ragardant le nombre de voisins de la cellule, l'autre qui prend des décisions.
-Un bout de code pour remplir un autre tableau comportant les cellules qui ne vivront qu'une fois si option activée.
-Procedures intelligentes, evitent de retracer les rectangles dont l'état est le même à n et n+1. Vitesse accrue. Environ une dizaine de rectangles tracés au lieu de 3000.
-A vous de découvrir le reste je vais ecrire mon programme deux fois ;)

Au niveau de l'optimisation :
-Impression
-Implentation de d'autres automates possibles (comme celui d'ulman ou de neige extraterrestre à http://perso.orange.fr/therese.eveilleau/pages/truc_mat/textes/conway.htm)
-Vos idées.
-Duree de vies des cellules selin des criteres

Mise à jour du 29 Juin 2006
-Vitesse plus rapide surtout lorsqu'il sagit de retracer toute les cellules
-Sauvegarde des images (carte + cellules)
-Sauvegarde et chargement des options
-Sauvegarde et chargement des cellules pour y travailler confortablement et reprendre plus tard ;)
-Utilisation de Xml pour les entrées/sorties sur le disque (environ 200ms pour un monde de 200*200 [40000 cells] fichier environ 1Mo)
-Principe de l'automate
-Monde Infini activable qui permet lorsqu'une cellule déborde du monde de la placer de l'autre coté (style un globe)
-Utilisation de TryCatch pour les entrees/sorties sur le disque
-Plus de commentaires
-Exemples de structures (canons à pleurs par ex)
-D'autres petits trucs que je me souviens plus

Rappel, compiler le projet pour augmenter la vitesse

Merci de commenter cette source.

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.