From 83349af79a05c844d7b546202d6aef0ce1ddefcf Mon Sep 17 00:00:00 2001 From: Lyanis Souidi Date: Mon, 1 May 2023 18:14:45 +0200 Subject: [PATCH] Modification du README --- README.md | 82 +- .../img/deterministic-algorithm-flowchart.svg | 888 ++++++++++++++++++ 2 files changed, 961 insertions(+), 9 deletions(-) create mode 100644 resources/img/deterministic-algorithm-flowchart.svg diff --git a/README.md b/README.md index 7cc5631..7783581 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,97 @@ # L'algorithme d'Ariane -Cet algorithme d'Ariane a été développé dans le cadre de la [SAÉ2.01 "Développement d’une application"](http://www.iut-fbleau.fr/sitebp/pt21/21_2022/STCL6EZD72IDTX73.php) lors de notre première année (2022) de BUT Informatique à l'IUT de Fontainebleau. +Cet algorithme d'Ariane a été développé dans le cadre de la +[SAÉ2.01 "Développement d’une application"](http://www.iut-fbleau.fr/sitebp/pt21/21_2022/STCL6EZD72IDTX73.php) +lors de notre première année (2022) de BUT Informatique à l'IUT de Fontainebleau. -## Lancement du programme -### Compilation +## Compilation Utiliser la commande suivante pour compiler le programme : ```bash make ``` -### Lancement -#### Méthode n°1 (recommandée) : Compiler et lancer le programme avec Make +## Lancement +### Méthode n°1 (recommandée) : Compiler et lancer le programme avec Make Utiliser la commande suivante pour compiler (si ce n'est pas déjà fait) puis lancer le programme : ```bash make run ``` -#### Méthode n°2 : Compiler puis lancer le programme -Une fois la [compilation du programme](#compilation) faite, exécuter le programme à l'aide de la commande suivante : +### Méthode n°2 : Compiler puis lancer le programme +Une fois la [compilation du programme](#compilation) faite, exécuter le programme à l'aide +de la commande suivante : ```bash java -cp out/ Main ``` -## Documentation -La documentation du programme est généré à l'aide de JavaDoc. Elle est disponible dans le dossier `doc/` et peut être consultée en ouvrant le fichier `index.html` dans un navigateur web. +# Documentation +La documentation du programme est généré à l'aide de JavaDoc. Elle est disponible dans le dossier `doc/` +et peut être consultée en ouvrant le fichier `index.html` dans un navigateur web. Utilisez la commande suivante pour générer la documentation : ```bash make doc ``` +## Utilisation +### Import/export de fichier labyrinthe (`.lab`) +#### Importer un labyrinthe +##### Méthode n°1 : Depuis la page d'accueil +Cliquez sur le bouton "Importer une grille" + +##### Méthode n°2 : Depuis la ligne de commande +Lors du [lancement du programme](#lancement), ajoutez le chemin vers le fichier `.lab` en argument. +> Exemple : +> ```bash +> make run chemin/vers/le/fichier.lab +> ``` +> ou : +> ```bash +> java -cp out/ Main chemin/vers/le/fichier.lab +> ``` + +#### Exporter un labyrinthe +Depuis la page d'édition du labyrinthe, cliquez sur le bouton "Exporter" pour exporter le labyrinthe vers un +fichier `.lab`. + +### Générer un labyrinthe aléatoire +Le programme dispose d'un générateur de labyrinthe aléatoire. +> ℹ️ Le générateur fait en sorte que le labyrinthe soit toujours résolvable, c'est-à-dire qu'il contient +> l'emplacement de Thésée ainsi qu'une sortie, et qu'il est possible d'atteindre la sortie depuis la position +> de Thésée. +#### Méthode n°1 : Depuis la page d'accueil +1. Cliquez sur le bouton "Générer une grille" +2. Entrez les dimensions de la grille +3. Cliquez sur le bouton "Remplir aléatoirement" + +#### Méthode n°2 : Depuis la page d'édition du labyrinthe +Cliquez sur le bouton "Aléatoire" + +### Algorithmes +Le programme possède 2 algorithmes de résolution de labyrinthe décris ci-dessous. Reportez-vous à la section +[Simulations](#simulations) pour savoir comment les utiliser. +#### Algorithme de résolution aléatoire +L'algorithme choisit aléatoirement une des directions disponibles. +#### Algorithme de résolution déterministe +L'algorithme choisit la direction la plus proche de la sortie +##### Algorigramme +![Algorigramme de l'algorithme de résolution déterministe](resources/img/deterministic-algorithm-flowchart.svg) + +### Simulations +Pour utiliser les algorithmes de résolution, le programme dispose de 2 modes d'affichages. +Pour lancer une simulation, cliquez sur le bouton "Démarrer" depuis la page d'édition du labyrinthe, choisissez +l'[algorithme de résolution](#algorithmes) que vous souhaitez utiliser, puis choisissez l'un des deux +modes d'affichage disponibles. +#### Mode d'affichage manuel (pas à pas) +Dans ce mode, l'utilisateur doit cliquer sur le bouton "Suivant" (ou sur la flèche directionnelle droite) pour faire +avancer l'algorithme d'une étape. + +#### Mode d'affichage automatique +Dans ce mode, l'algorithme effectue automatiquement 100 simulations et affiche à l'écran le nombre moyen +de mouvements nécessaires à la résolution du labyrinthe. +> ℹ️ Étant donné que les simulations peuvent être longues en fonction de la taille du labyrinthe et de la puissance +> de calcul disponible, le programme affiche à l'écran le numéro de la simulation en cours ainsi que +> le nombre de mouvements effectués par l'algorithme en temps réel. Cette information disparait de l'écran +> une fois les 100 simulations effectuées. + ## Crédits - Code : - Amir Daouadi (@daouadi) diff --git a/resources/img/deterministic-algorithm-flowchart.svg b/resources/img/deterministic-algorithm-flowchart.svg new file mode 100644 index 0000000..10acf3d --- /dev/null +++ b/resources/img/deterministic-algorithm-flowchart.svg @@ -0,0 +1,888 @@ + + + + + + + + + + + +
+
+
+
Début
+
+
+
+
+ + + + + + + Début + + + +
+
+
+ + + + + + + +
+
+
+
Récupération des directions disponibles
+ (pour ne pas sortir de la grille) +
+
+
+
+
+ + + + + + + + Récupération des directions disponibles + + + (pour ne pas sortir de la grille) + + + + + + (pour ne pas sortir de la grille) + + + +
+
+
+ + + + + + + + + + + + + + + +
+
+
+
Fin de la simulation
+
+
+
+
+ + + + + + + Fin de la simulation + + + +
+
+
+ + + + + + + + +
+
+
+
Oui
+
+
+
+
+ + + + + + + Oui + + + +
+
+
+ + + + + + + +
+
+
+
Toutes les
cases de la grille
accessibles depuis la position de Thésée
ont été
visitées ?
+
+
+
+
+ + + + + + + + + + + Toutes les + + cases de la grille + + accessibles depuis la position de Thésée + + ont été + + visitées ? + + + + + Toutes les + + cases de la grille + + accessibles depuis la position de Thésée + + ont été + + visitées ? + + + + + Toutes les + + cases de la grille + + accessibles depuis la position de Thésée + + ont été + + visitées ? + + + + + Toutes les + + cases de la grille + + accessibles depuis la position de Thésée + + ont été + + visitées ? + + + + + Toutes les + + cases de la grille + + accessibles depuis la position de Thésée + + ont été + + visitées ? + + + +
+
+
+ + + + + + + + +
+
+
+
Non
+
+
+
+
+ + + + + + + Non + + + +
+
+
+ + + + + + + + + + + + +
+
+
+
Oui
+
+
+
+
+ + + + + + + Oui + + + +
+
+
+ + + + + + + +
+
+
+
Revenir en arrière
+
+
+
+
+ + + + + + + Revenir en arrière + + + +
+
+
+ + + + + + + + +
+
+
+
Non
+
+
+
+
+ + + + + + + Non + + + +
+
+
+ + + + + + + +
+
+
+
Toutes les directions
ont été visitées ?
+
+
+
+
+ + + + + + + + Toutes les directions + + ont été visitées ? + + + + + Toutes les directions + + ont été visitées ? + + + +
+
+
+ + + + + + + +
+
+
+
Déplacer Thésée dans une des cases non visitée
+
+
+
+
+ + + + + + + Déplacer Thésée dans une des cases non visitée + + + +
+
+
+ + + + + + + +
+
+
+
La nouvelle
position de Thésée
est un mur ?
+
+
+
+
+ + + + + + + + + La nouvelle + + position de Thésée + + est un mur ? + + + + + La nouvelle + + position de Thésée + + est un mur ? + + + + + La nouvelle + + position de Thésée + + est un mur ? + + + +
+
+
+ + + + + + + + + + + + +
+
+
+
Oui
+
+
+
+
+ + + + + + + Oui + + + +
+
+
+ + + + + + + + +
+
+
+
Non
+
+
+
+
+ + + + + + + Non + + + +
+
+
+ + + + + + + +
+
+
+
La nouvelle
position de Thésée
est la sortie ?
+
+
+
+
+ + + + + + + + + La nouvelle + + position de Thésée + + est la sortie ? + + + + + La nouvelle + + position de Thésée + + est la sortie ? + + + + + La nouvelle + + position de Thésée + + est la sortie ? + + + +
+
+
+ + + + + + + + +
+
+
+
Oui
+
+
+
+
+ + + + + + + Oui + + + +
+
+
+ + + + + + + + +
+
+
+
Non
+
+
+
+
+ + + + + + + Non + + + +
+
+
+ + + + + + + + + + + + + + + + +
+
+
+
Oui
+
+
+
+
+ + + + + + + Oui + + + +
+
+
+ + + + + + + + +
+
+
+
Non
+
+
+
+
+ + + + + + + Non + + + +
+
+
+ + + + + + + + + + + + +
+
+
+
Oui
+
+
+
+
+ + + + + + + Oui + + + +
+
+
+ + + + + + + + +
+
+
+
Non
+
+
+
+
+ + + + + + + Non + + + +
+
+
+ + + + + + + + + + + + +
+
+
+
Oui
+
+
+
+
+ + + + + + + Oui + + + +
+
+
+ + + + + + + + +
+
+
+
Non
+
+
+
+
+ + + + + + + Non + + + +
+
+
+ + + + + + + + +
+
+
+
Oui
+
+
+
+
+ + + + + + + Oui + + + +
+
+
+ + + + + + + + +
+
+
+
Non
+
+
+
+
+ + + + + + + Non + + + +
+
+
+
+
\ No newline at end of file