- Rapport
- Modélisation
- diagramme de cas d'utilisation
- diagramme de classe
- diagramme de séquence initialisation
- diagramme de séquence évolution
- Automates
- définition formelle
- 1D
- affichage 2D (espace * temps)
- affichage numéro de règle
- règle de la majorité
- 1D
- 2D
- 3D
- H
- voisinage carré
- voisinage rectangulaire
- jeu de la vie
- feu de forêt
- 2D classique
- 2D avec probabilité
- 2D avec vent
- H
- 4 voisins
- 8 voisins
- Tronc commun
- menu
- choisir un automate
- créer un automate
- charger une configuration de départ
- configuration de départ
- aléatoire
- dessin
- fichier
- grille
- 1D
- 2D
- 3D
- H
- JavaDoc
- menu
- Extensions
- Git
- Ant
- Tests unitaires
- fichiers de configuration
- sauvegarde
- utiliser les toString
- adapter le constructeur de Grid aux toString
- interface graphique
- 1D
- 2D
- 3D
- H
- menu
- dessin
- next step
- play/pause
- statistiques
L’objectif du projet est d’implémenter et d’étudier certains automates cellulaires. Nous avons fait le choix d'implémenter en premier un automate entièrement paramétrable, puis d'implémenter des automates spécifiques en utilisant cet automate paramétrable.
Tous les automates implémentés sont au format .json. Ainsi, il est facile de les modifier ou d'en créer de nouveaux.
Début décembre, nous avons commencé par une phase de conception en créant un premier jet des diagrammes de classe et de cas d’utilisation. Nous avons également commencé à créer et à documenter la syntaxe des fichiers JSON que nous utilisons pour stocker nos automates. Nous avons modifié certaines parties de notre conception originale au fil du projet quand nous nous rendions compte qu'elles pouvaient être améliorées. Suite à cela, mi-décembre, nous avons créé toutes les classes et commencé à implémenter leurs méthodes. Mi-janvier, l'affichage dans la console et les automates les plus simples (grille carrée, pas de vent…) fonctionnaient. Nous avons ensuite continué en créant une interface graphique et en ajoutant des automates plus complexes (grille hexagonale, probabilité, vent…).
Toute la phase de conception a été faite en commun, puis nous avons séparé l'équipe en deux pour l'implémentation. Dorian et Auriane se sont occupés du noyau de l'application, tandis que Thomas et Romain se sont occupés de l'interface graphique et des interactions avec l'utilisateur.
Nous avons choisi de créer une implémentation d'automate la plus générale possible pour pouvoir créer n'importe quel automate à partir d'un simple fichier de configuration. Pour des raisons de facilité d'affichage, nous avons choisi de limiter les automates à 3 dimensions maximum.
├── bin // fichiers .class
├── data
│ ├── configs // fichiers de configuration des automates .json
│ ├── saves // fichiers de sauvegarde des grilles .txt
│ └── colors.json // fichier de configuration des couleurs
├── doc
│ ├── javadoc // documentation Java
│ ├── uml // diagrammes UML
│ └── syntaxeAutomate.md // guide de la syntaxe desfichiers de configuration
├── exe // exécutable .jar
├── lib // librairies
├── src
│ ├── main // code source
│ └── test // tests unitaires
├── build.xml // fichier de configuration Ant
└── README.md
La documentation du projet est disponible dans le dossier doc/ :
doc/javadoc/: documentation Java au format .htmldoc/uml/: diagrammes UML au format .md et .pngdoc/syntaxeAutomate.md: guide de la syntaxe des fichiers de configuration des automates
Pour visualiser les diagrammes UML, vous pouvez utiliser l'extension Markdown Preview Mermaid Support de Visual Studio Code.
Le projet utilise les librairies suivantes :
- org.json : pour la lecture et l'écriture de fichiers JSON
Les librairies sont à placer dans le dossier lib/.
Le projet peut être compilé à l'aide de ant. Pour cela il faut télécharger ant et l'ajouter au PATH.
Les commandes suivantes sont disponibles :
ant clean: vide les dossiersbin/etexe/ant compile: compile les fichiers .java danssrc/et place les .class dansbin/ant jar: crée un .jar exécutable dansexe/ant run: exécute le .jarant javadoc: crée la documentation Java dansdoc/javadoc/
Les tests unitaires sont disponibles dans le dossier src/test/. Ils peuvent être exécutés grace à JUnit.



