Bonjour,
Beaucoup d'entre vous connaisse sans doute le "Jeu de la vie", cet automate cellulaire où l'on définit une population initiale qui obéira à de simples règles pour évoluer en conséquence.
En résumé, les règles sont les suivantes:
1) une cellule morte entourée d'exactement 3 voisines vivantes devient vivante.
2) une cellule avec exactement 2 ou 3 voisines vivantes conserve son état.
3) une cellule vivante qui n'a pas exactment 2 ou 3 voisines vivantes meurt (d'isolement ou d'étouffement!)
On peut passer des heures à suivre l'évolution de populations initiales plus ou moins complexes. Mais j'ai voulu pousser un peu plus loin en ajoutant 3 autres règles. Partons du fait que mes cellules vivantes sont bleues...
4) une cellule qui n'est pas bleu (incluant les cellules mortes) et qui a plus de 4 voisines vivantes devient jaune.
5) une cellule jaune ayant plus de 3 voisines vivantes devient verte.
6) une cellule jaune ou verte ayant plus de 5 voisines vivantes devient bleu.
Et voilà.... je pense qu'on peut dire que le reste relève de la théorie du chaos!
J'ai définis un "univers" de quelques 70 000 cellules dont j'ai réduis la taille au maximum.
Les images obtenues après une centaine d'itérations sont simplement magnifiques.
Et naturellement on peut s'amuser à modifier les règles à volonté!
Pour définir la population initiale, il suffit de cliquer sur les cellules (les pixels en fait! vous pouvez jouer avec le zoom d'excel si c'est trop petit).
Il y a un bouton pour démarrer la simulation, un autre pour vider l'univers. Pour arrêter la simulation, appuyez sur la barre d'espace.
J'ai aussi mis des compteurs, mais j'ai un problème avec les morts et les naissances qui, cumulativement, devraient donner la population restante... Je m'en fou un peu car l'idée était de montrer qu'il y avait de l'activité pendant le traitement, mais si vous trouvez la solution je suis preneur!
Amusez-vous!..
Source / Exemple :
L'essentiel est dans cette boucle... Dépendamment du résultat d'une règle, je met un chiffre dans la cellule et j'utilise les formats conditionnels d'excel pour les couleurs (plus rapide).
Il y a 2 feuilles (avant et après), on fait tous les changements en appliquant les règles sur la première dans la deuxième puis on copie la deuxième dans la première... et on boucle!
Do While 1
Q = GetAsyncKeyState(32)
If Q <> 0 Then
Range("IC174") = "PAUSE"
Exit Sub
End If
Range("ID22") = Range("ID22") + 1
For Each cell In Range("B3:IA228")
If Voisin(cell) <> 0 Then
'----------------- Règles standards ----------------
If cell.Value = "" And Voisin(cell) = 3 Then
Sheets(2).Range(cell.Address).Value = 1
Range("ID48") = Range("ID48") + 1
End If
If cell.Value <> "" Then
If Voisin(cell) = 2 Or Voisin(cell) = 3 Then
Sheets(2).Range(cell.Address).Value = cell.Value
Else
Sheets(2).Range(cell.Address).Value = ""
Range("ID73") = Range("ID73") + 1
End If
End If
'--------------------- Ajouts ----------------------
If cell.Value <> 1 And Voisin(cell) > 4 Then
Sheets(2).Range(cell.Address).Value = 3
If cell.Value = "" Then
Range("ID48") = Range("ID48") + 1
End If
End If
If Voisin(cell) > 3 And cell.Value = 3 Then
Sheets(2).Range(cell.Address).Value = 4
End If
If Voisin(cell) > 5 And (cell.Value = 3 Or cell.Value = 4) Then
Sheets(2).Range(cell.Address).Value = 1
End If
End If
Next
Conclusion :
Des règles toutes simples qui génère une vraie complexité!..
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.