fr:cs:rapport_de_projet_d_algorithmique

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
fr:cs:rapport_de_projet_d_algorithmique [2017/05/04 19:05] – [Type de l'analyse] fragglefr:cs:rapport_de_projet_d_algorithmique [2021/12/27 18:25] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
-====== Soutenance et rapport du projet d'algorithmique : Jeu Othello ======+====== Rapport du projet d'algorithmique : Jeu Othello ======
  
 ===== Analyse des problématiques algorithmiques du jeu =====  ===== Analyse des problématiques algorithmiques du jeu ===== 
Ligne 7: Ligne 7:
   * Diviser pour mieux régner :    * Diviser pour mieux régner : 
 Découpage des problématiques algorithmiques en sous-problèmes dit simples autant au niveau complexité (on parle de la notation "big O" ici) que difficulté d'implantation. Une approche fonctionnelle a été choisie pour l'effectuer.  Découpage des problématiques algorithmiques en sous-problèmes dit simples autant au niveau complexité (on parle de la notation "big O" ici) que difficulté d'implantation. Une approche fonctionnelle a été choisie pour l'effectuer. 
 +
 +==== Résultante de l'analyse ====
  
 Cela a conduit à l'élaboration d'une liste de fonctionnalités à implanter et d'un planning de leurs implantations.  Cela a conduit à l'élaboration d'une liste de fonctionnalités à implanter et d'un planning de leurs implantations.
Ligne 14: Ligne 16:
 ==== Pas de "tripotage" direct des structures de données (c'est indécent :p) ==== ==== Pas de "tripotage" direct des structures de données (c'est indécent :p) ====
  
-    * Implantation de fonctions outils : get_*, set_*, print_*, print_all_*, dbg_printf, etc. +    * Implantation de fonctions outils : get_*, set_*, print_*, print_all_*, dbg_mvprintw, etc. 
     * Indépendance de l'implantation par rapport aux définitions des structures;     * Indépendance de l'implantation par rapport aux définitions des structures;
     * Séparation claire entre le modèle de données et leurs présentations (architecture proche du MVC).       * Séparation claire entre le modèle de données et leurs présentations (architecture proche du MVC).  
Ligne 27: Ligne 29:
 ==== Ne pas réinventer la roue : ==== ==== Ne pas réinventer la roue : ====
    
-  * Utilisation de bibliothèques pour gérer l'affichage dans un terminal;+  * Utilisation de bibliothèques pour gérer l'affichage dans un terminal: [[https://www.gnu.org/software/ncurses/|ncurses]];
   * Réutilisation de code disponible en ligne couvrant une fonctionnalité de base demandée mieux que je ne l'implanterai : [[https://isis.poly.edu/kulesh/stuff/src/klist/|liste chaînée du noyau Linux]] portée en espace utilisateur, etc.   * Réutilisation de code disponible en ligne couvrant une fonctionnalité de base demandée mieux que je ne l'implanterai : [[https://isis.poly.edu/kulesh/stuff/src/klist/|liste chaînée du noyau Linux]] portée en espace utilisateur, etc.
   * Réutilisation du système de construction (à base de Makefile) déjà implanté lors d'autres cours et amélioré (50% Gabriel / 50% modifications personnelles).   * Réutilisation du système de construction (à base de Makefile) déjà implanté lors d'autres cours et amélioré (50% Gabriel / 50% modifications personnelles).
Ligne 33: Ligne 35:
 ==== Style du code de l’implantation : ==== ==== Style du code de l’implantation : ====
  
-Calqué sur le style de Kernighan and Ritchie aka K&R avec de légères modifications sur le placement des parenthèses pour les déclarations de fonctions. +Calqué sur le style de Kernighan and Ritchie aka K&R avec de légères modifications sur le placement des parenthèses pour les déclarations de fonctions.\\
 [[https://www.gnu.org/software/indent/|indent]] est votre ami. [[https://www.gnu.org/software/indent/|indent]] est votre ami.
  
Ligne 41: Ligne 42:
   * Affichage de l'othellier et des pions;   * Affichage de l'othellier et des pions;
   * Saisie d'un coup;   * Saisie d'un coup;
-  * Détection des conditions de fin de jeu : othellier plein ou plus de oups jouables pour les deux joueurs;+  * Détection des conditions de fin de jeu : othellier plein ou plus de coups jouables pour un des deux joueurs;
   * Boucle de jeu complète;   * Boucle de jeu complète;
   * Retournement des pions après un coup;    * Retournement des pions après un coup; 
-  * Listes des coups jouables; 
   * Jeu pour deux joueurs humains.    * Jeu pour deux joueurs humains. 
  
 ===== Fonctionnalités à implanter : ===== ===== Fonctionnalités à implanter : =====
    
-  - Définir plus proprement certains types de donnés;+  - Listes des coups jouables; 
 +  - Redéfinir plus proprement certains types de donnés;
   - Implantation de la fonctionnalité de retour en arrière dans la liste des coups joués;   - Implantation de la fonctionnalité de retour en arrière dans la liste des coups joués;
   - IA (AI en anglais) MiniMax;   - IA (AI en anglais) MiniMax;
   - Graphical User Interface aka GUI avec [[https://www.libsdl.org|SDL]].   - Graphical User Interface aka GUI avec [[https://www.libsdl.org|SDL]].
  
-===== Problèmes rencontrées : ===== +===== Problèmes rencontrés : =====
-  +
-Fonction d'exploration depuis un coup d'origine pour établir : +
-  * la liste des pions à retourner; +
-  * la liste des coups jouables pour un joueur.   +
  
-Problèmes avec l'implantation récursive de l'algorithme, "perte" de temps proche de 3 cours de 3h.\\+  * Gestion du tableau à deux dimensions : retour de fonctions conjointement avec passage par adresse, donc des chevauchements mémoires et autres bizarreries (le même objet était retourné deux fois par les fonctions ...) 
 + 
 +  * Fonction d'exploration depuis un coup d'origine pour établir : 
 +    * la liste des pions à retourner; 
 +    * la liste des coups jouables pour un joueur.    
 +Problèmes avec l'implantation récursive de l'algorithme,\\
 Remplacement par implantation d'une version itérative de l’algorithme.  Remplacement par implantation d'une version itérative de l’algorithme. 
 +
 +Au total, "perte" de temps proche de 3 cours de 3h.
     
  
  • fr/cs/rapport_de_projet_d_algorithmique.1493917506.txt.gz
  • Dernière modification : il y a 2 ans
  • (modification externe)