Skip to content

Latest commit

 

History

209 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projet APO : Automates cellulaires

Lien du GitHub

TODO

  • 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
  • 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

Auteurs

Description

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.

Méthodologie

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.

Conception

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.

Diagramme de cas d'utilisation

Diagramme de cas d'utilisation

Diagramme de classes

Diagramme de classes

Diagramme de séquence initialisation

Diagramme de séquence initialisation

Diagramme de séquence évolution

Diagramme de séquence évolution

Architecture

├── 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

Documentation

La documentation du projet est disponible dans le dossier doc/ :

  • doc/javadoc/ : documentation Java au format .html
  • doc/uml/ : diagrammes UML au format .md et .png
  • doc/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.

Librairies

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/.

Compilation et exécution

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 dossiers bin/ et exe/
  • ant compile : compile les fichiers .java dans src/ et place les .class dans bin/
  • ant jar : crée un .jar exécutable dans exe/
  • ant run : exécute le .jar
  • ant javadoc : crée la documentation Java dans doc/javadoc/

Tests unitaires

Les tests unitaires sont disponibles dans le dossier src/test/. Ils peuvent être exécutés grace à JUnit.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages