Une implémentation interactive et moderne du célèbre automate cellulaire Jeu de la Vie de John Conway, développée en C++ avec la bibliothèque graphique Raylib.
Capturez une image de votre jeu en action et nommez-la screenshot.png
- 🖱️ Dessin interactif : Dessinez avec le clic gauche, effacez avec le clic droit
- ⏸️ Contrôles de simulation : Lecture/Pause avec bouton ou barre d'espace
- ⚡ Vitesse ajustable : Slider pour contrôler la vitesse de simulation (1-60 FPS)
- 💾 Sauvegarde/Chargement : Sauvegardez vos motifs favoris (touches S/L)
- 🔄 Réinitialisation : Effacez la grille en un clic (touche R)
- 📱 Interface responsive : S'adapte automatiquement à votre résolution d'écran
- 🎨 Interface moderne : Design épuré avec code couleur (or/noir)
- Une cellule vivante avec moins de 2 voisins meurt (sous-population)
- Une cellule vivante avec 2 ou 3 voisins survit
- Une cellule vivante avec plus de 3 voisins meurt (surpopulation)
- Une cellule morte avec exactement 3 voisins devient vivante (reproduction)
| Action | Contrôle |
|---|---|
| Dessiner une cellule | Clic gauche (maintenir) |
| Effacer une cellule | Clic droit (maintenir) |
| Pause/Lecture | Barre d'espace ou bouton |
| Sauvegarder motif | Touche S ou bouton Save |
| Charger motif | Touche L ou bouton Load |
| Réinitialiser grille | Touche R ou bouton Reset |
| Ajuster vitesse | Slider de vitesse |
- C++ Compiler (GCC, Clang, MSVC)
- CMake 3.11+ (recommandé) ou Make
- Raylib sera téléchargé automatiquement via CMake
Cloner le dépôt
git clone https://github.com/votre-username/game-of-life-raylib.git cd game-of-life-raylib Configurer le projet
cmake -B build Compiler
cmake --build build Exécuter (depuis le dossier racine)
./build/GameOfLife
Cell: Représente une cellule individuelle (position x,y et état alive)Grid: Gère la grille complète avec logique du Jeu de la Vie- Constructeur de copie et opérateur d'assignation pour deep copy
- Calcul des voisins avec gestion des bordures
- Double buffering pour mise à jour correcte
Button: Bouton cliquable avec état toggleSlider: Slider draggable pour ajuster la vitesse
- Gestion mémoire propre avec destructeurs
- Deep copy pour sauvegarde/chargement de motifs
- Interface adaptative basée sur pourcentages
- Double buffer pour éviter les artefacts de mise à jour
Essayez ces motifs classiques :
- Glider : Un motif qui se déplace en diagonale
- Oscillateurs : Motifs qui alternent entre états (Blinker, Toad, Pulsar)
- Vaisseaux spatiaux : Structures mobiles (LWSS, MWSS, HWSS)
- Canons : Générateurs de gliders (Canon de Gosper)
- Zoom/Pan pour grilles plus grandes
- Bibliothèque de motifs prédéfinis
- Export/Import de motifs (fichiers .cells, .rle)
- Compteur de générations et de cellules vivantes
- Mode grille infinie (torique)
- Historique des états (undo/redo)
Les contributions sont les bienvenues ! N'hésitez pas à :
- Fork le projet
- Créer une branche (
git checkout -b feature/amelioration) - Commit vos changements (
git commit -m 'Ajout fonctionnalité') - Push (
git push origin feature/amelioration) - Ouvrir une Pull Request
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
- Raylib - Framework graphique simple et efficace
- John Conway - Créateur du Jeu de la Vie
- La communauté des automates cellulaires
Votre Nom - @votre_twitter
Lien du projet: https://github.com/votre-username/game-of-life-raylib
⭐ Si ce projet vous a plu, n'hésitez pas à lui donner une étoile sur GitHub !