ciel étoilé

Réalisations

Projet personnel : Hexalife

Objectif : adapter le célèbre "jeu de la vie" de John Horton Conway sur une base hexagonale plutôt que carrée.

base hexagonale

Le pourquoi

La base carrée reflète mal la réalité ; une case en diagonale est en effet plus éloignée qu'une case à côté.
La base hexagonale répond à ce problème : chaque case est à égale distance de toutes ses voisines directes (de centre à centre).
C'est une structure largement répandue dans la nature.

cellules liées

Liaisons

Pour que l'algorithme fonctionne, chaque cellule doit connaitre l'id de ses 6 voisines. Par exemple, les voisines de 55 sont 33, 32, 54, 83, 84 et 56.
Les valeurs n'ont pas d'importance et la logique de remplissage que j'ai choisie est trop complexe pour être expliquée en quelques lignes mais vous pouvez consulter le dépot GitHub.

voisinage

Le jeu de la vie

Pour ceux qui le découvre, le jeu de la vie est le premier automate cellulaire. Il permet de simuler l'évolution d'une population vivante (cellules ou êtres vivants) selon les critères de fonctionnement qu'on lui donne.
Voici le site qui m'a fait (re)découvrir ce "jeu à zéro joueur" : www.dcode.fr
Selon le nombre de cellules voisines vivantes, une cellule vide (ou morte) prend vie ou une cellule vivante meurt.

panneau de contrôle

Paramétrage

Un panneau de contrôle permet de changer les paramètres de fonctionnement :
La vitesse, la taille, la densité ainsi que les règles d'apparition et de disparition.
Dans le code, grâce à React, les paramètres sont descendus depuis le composant principal vers les composants inférieurs par les props.
Les changements du panneau de contrôle sont remontés de la même manière.

modèle vue contrôleur

MVC pattern

La structure de l'application que j'ai choisie ressemble beaucoup à un MVC :
Model : les fichiers .js dans models définissent les objets,
View : les fichiers .jsx dans components donnent le rendu,
Controller : main.jsx et App.jsx orchestrent le tout.

Hexalife

Essayez !

Faites varier les paramètres pour modifier le comportement.
Attention, plus la taille est grande plus cela sollicite votre navigateur, il peut y avoir un ralentissement.
Si le jeu semble bloqué ; soit vous êtes à la vitesse 0 (une évolution toute les 10 secondes) soit le jeu est sur Pause, alors cliquez sur Play !

Contact

N'hésitez pas à me solliciter pour toute info sur ma disponibilité, une demande de prestation, une proposition de job ou un projet collaboratif.