Le Game of Life, ou Jeu de la vie en français, est un automate cellulaire conçu par le mathématicien britannique John Horton Conway en 1970. Il s'agit d'un jeu à zéro joueur, ce qui signifie que son évolution est déterminée par son état initial, sans nécessiter d'interaction supplémentaire de la part des joueurs. Les cellules sur une grille vivent, meurent ou se reproduisent selon un ensemble de règles simples :
- Survie par sous-population : Toute cellule vivante ayant moins de deux voisins vivants meurt, comme par sous-population.
- Survie par surpopulation : Toute cellule vivante ayant plus de trois voisins vivants meurt, comme par surpopulation.
- Reproduction : Toute cellule morte ayant exactement trois voisins vivants devient une cellule vivante, comme par reproduction.
- Stabilité : Toute cellule vivante ayant deux ou trois voisins vivants reste vivante pour la génération suivante.
Ce projet est implémenté en Kotlin et utilise Cucumber pour les tests BDD (Behavior-Driven Development). Voici comment vous pouvez exécuter ce projet.
- JDK 1.8 ou plus récent
- Maven
- Un IDE supportant Kotlin (comme IntelliJ IDEA)
-
Cloner le dépôt
Clonez le dépôt dans votre répertoire local.
git clone https://github.com/jabibamman/gol.git cd game-of-life
Utilisez Maven pour construire le projet. Ce command installera toutes les dépendances nécessaires.
mvn clean install
Exécutez les tests pour vous assurer que tout fonctionne correctement.
mvn test
Vous pouvez également exécuter l'application principale avec Maven.
mvn exec:java -Dexec.mainClass="com.gameoflife.MainKt"
Voici un aperçu des fichiers et répertoires principaux du projet :
src/main/kotlin/com/gameoflife
- Grid.kt : Contient la classe Grid qui représente la grille du jeu.
- GameOfLife.kt : Contient la logique principale du jeu.
src/test/kotlin/com/gameoflife
- GameOfLifeSteps.kt : Définit les étapes pour les tests BDD.
- game_of_life.feature : Contient les scénarios de test écrits en Gherkin.
👤 James ABIB 👤 Marc MALHA 👤 Charles CRETOIS
Nos profils GitHub :
Les contributions, les problèmes et les demandes de fonctionnalités sont les bienvenus !
- Forker le projet
- Créer votre branche de fonctionnalité (
git checkout -b feat/BestFeature
) - Commiter vos modifications (
git commit -m 'Add some la Best Feature'
) - Pusher sur la branche (
git push origin feat/BestFeature
)