From edddd7ea2449e6677b51a0f1b14d271c8751afea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Derrode?= <stephane.derrode@ec-lyon.fr>
Date: Mon, 1 Feb 2021 09:53:19 +0100
Subject: [PATCH] BE #5 improvments

---
 seance5_4h/consignes_BE#5.md                  |  23 +++---
 seance5_4h/figures/TableSQLJeuPendu.png       | Bin 9390 -> 14565 bytes
 ...seance5_4h.md => seance5_6h_enseignant.md} |  69 ++++++++++++------
 3 files changed, 58 insertions(+), 34 deletions(-)
 rename seance5_4h/{seance5_4h.md => seance5_6h_enseignant.md} (60%)

diff --git a/seance5_4h/consignes_BE#5.md b/seance5_4h/consignes_BE#5.md
index 3284052..836de08 100644
--- a/seance5_4h/consignes_BE#5.md
+++ b/seance5_4h/consignes_BE#5.md
@@ -1,15 +1,16 @@
-**Consignes pour le rendu sur jeu du Pendu**
+### Consignes pour le rendu (BE #5 - INF-TC2)
 
-Ce BE constitue le second devoir à rendre concernant INF-TC2, et correspond à 4h de TD encadré et 2h d'autonomie. Le compte-rendu (CR) de ce travail devra être déposé sur ``Pedagogie1``, dans l'espace de dépôt spécifique à votre groupe. Et cela dans un **délai de deux semaines après la séance de TD** (délai de rigueur, aucun travail accepté au delà de cette date). Ces 2 semaines ne tiennent pas compte d'éventuelles vacances.
+Ce BE est le second devoir à rendre concernant INF-TC2. Le compte-rendu (CR) de ce travail devra être déposé sur `Pedagogie1`, sur l'espace de dépôt spécifique à votre groupe. Et cela dans un **délai de deux semaines après la dernière séance consacrée** (délai de rigueur, aucun travail accepté au delà de cette date). Ces 2 semaines ne tiennent pas compte d'éventuelles vacances.
 
-*Commentaires:*
+**Consignes:**
 
- - Le travail peut être individuel ou en binôme.    
- - Le dépôt consistera en une unique archive (zip, rar) contenant l'ensemble des fichier :   
-     - Le fichier Python, appelé *Pendu.py*, contenant toutes les classes (**FenPrincipale**, **ZoneAffichage** et **MonBoutonLettre**), et un programme principal permettant de lancer l'application.
-     - un rapport (format markdown ou pdf) contenant     
-         - une en-tête où devront figurer de manière claire le nom des élèves, leur numéro de groupe, le nom de l'encadrant ainsi que le titre du BE.   
-         - un diagramme de classes UML complet de votre application (pensez à utiliser _draw.io_!), avec les liens entre les classes, les cardinalités, les attributs (privés ou publics), et les méthodes (elles-mêmes publiques ou privées).  
-         - Une présentation du code de la DENIERE PARTIE UNIQUEMENT de votre travail (partie intitulée _Améliorations du jeu_). Vous pouvez utilisez des explications textuelles, des diagrammes, des copies d'écran...
+  - Le travail peut être individuel ou en binôme. Si vous travaillez en binôme, **un seul dépôt suffit !**.   
+ - Le dépôt consistera en une unique archive (zip, rar) contenant l'ensemble des fichiers suivants :   
+     - Le fichier _Python_, appelé *Pendu.py*, contenant toutes les classes (**FenPrincipale**, **ZoneAffichage** et **MonBoutonLettre**), et un programme principal permettant de lancer l'application.
+     - Le fichier *mots.txt* et la classe *formes.py* (même s'ils n'ont pas été modifiés). 
+     - un rapport (format _word_, _pdf_, ou miex encore _markdown_ !) contenant      
+         - une en-tête où devront figurer le nom des élèves, leur numéro de groupe, le nom de l'encadrant ainsi que le titre du BE.   
+         - un diagramme de classes UML complet de votre application (pensez à utiliser [diagrams](https://app.diagrams.net) !), avec les liens entre les classes, les cardinalités, les attributs (privés ou publics), et les méthodes (elles-mêmes publiques ou privées).  
+         - Une présentation du code de la DERNIÈRE PARTIE UNIQUEMENT de votre travail (partie intitulée _Améliorations du jeu_). Vous pouvez utilisez des explications textuelles, des diagrammes, des copies d'écran...
 
- - L'archive devra nécessairement porter le nom suivant : *nom1-devoir2.zip* ou *nom1-nom2-devoir2.zip* (pour les étourdis, pensez à remplacer *nom1* et *nom2* par vos propres noms :-) )
+ - L'archive devra nécessairement porter le nom suivant : *nom1-BE5.zip* ou *nom1-nom2-BE5.zip* (pour les étourdis, pensez à remplacer *nom1* et *nom2* par vos propres noms :-) )
diff --git a/seance5_4h/figures/TableSQLJeuPendu.png b/seance5_4h/figures/TableSQLJeuPendu.png
index be4e92654694871a9e081e7547db8f98a9d9a507..e543489bccbaaeeaf6c9f3b3c9c0b2d407d5e86b 100644
GIT binary patch
literal 14565
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

literal 9390
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

diff --git a/seance5_4h/seance5_4h.md b/seance5_4h/seance5_6h_enseignant.md
similarity index 60%
rename from seance5_4h/seance5_4h.md
rename to seance5_4h/seance5_6h_enseignant.md
index a747e41..d4749c3 100644
--- a/seance5_4h/seance5_4h.md
+++ b/seance5_4h/seance5_6h_enseignant.md
@@ -4,23 +4,23 @@
 
 # BE #5 : Le jeu du Pendu
 
-L'objectif de ce BE est de réaliser le ``jeu du Pendu``. Pour rappel, ce jeu consiste à essayer de découvrir un mot qui est affiché de manière masquée (chacune de ses lettres est remplacée par le caractère _'*'_). Pour cela, le joueur sélectionne une lettre sur le clavier virtuel. Si elle fait partie du mot, alors le mot à découvrir est ré-affiché en laissant apparaître cette lettre en clair. Si par contre le mot ne contient pas la lettre sélectionnée, alors le compteur de coups ratés augmente d'un et l'élément suivant du pendu est ajouté au dessin. Le joueur gagne s’il a pu découvrir le mot avant que le pendu ne soit complètement affiché (au delà de 10 coups manqués). La figure ci-dessous présente l'interface que nous allons construire ; oui, les couleurs piquent un peu aux yeux, mais ça pourra vous aider à répondre à la première question!
+
+L'objectif de ce BE est de réaliser le `jeu du Pendu`. Pour rappel, ce jeu consiste à essayer de découvrir un mot qui est affiché de manière masquée (chacune de ses lettres est remplacée par le caractère _'*'_). Pour cela, le joueur sélectionne une lettre sur le clavier virtuel. Si elle fait partie du mot, alors le mot à découvrir est ré-affiché en laissant apparaître cette lettre en clair. Si par contre le mot ne contient pas la lettre sélectionnée, alors le compteur de coups ratés augmente d'un et l'élément suivant du pendu est ajouté au dessin. Le joueur gagne s’il a pu découvrir le mot avant que le pendu ne soit complètement affiché (au delà de 10 coups manqués). La figure ci-dessous présente l'interface que nous allons construire ; oui, les couleurs piquent un peu aux yeux, mais ça pourra vous aider à répondre à la première question !
 
 <center><img src="figures/pendu0.png" style="width:60%"/></center>
 
-Nous allons vous accompagner dans le développement de ce logiciel. La première partie (90 minutes) porte sur la mise en place de l'interface graphique. La seconde (75 minutes) porte sur la logique du jeu, à partir des commandes associées au bouton _Nouvelle Partie_ et aux Boutons-lettres. La troisième partie met en place le dessin du pendu (75 minutes). La dernière partie propose de développer des fonctionnalités supplémentaires à notre application durant l'autonomie (avec une question _Bonus_ pour les plus téméraires!).
+Nous allons vous accompagner dans le développement de ce programme. La première partie (90 minutes) porte sur la mise en place de l'interface graphique. La seconde (75 minutes) porte sur la logique du jeu, à partir des commandes associées au bouton _Nouvelle Partie_ et aux Boutons-lettres. La troisième partie met en place le dessin du pendu (75 minutes). La dernière partie propose de développer des fonctionnalités supplémentaires à notre application durant l'autonomie (avec une question _Bonus_ pour les plus téméraires !).
 
-Ce BE fera l'objet d'un compte-rendu (CR), seul ou en binôme. L'énoncé correspond à 4h encadrées et 2h d'autonomie. Avant de commencer, veuillez prendre connaissance des consignes concernant le rendu du travail (à respecter scrupuleusement) qui se trouvent dans le fichier [consignes_BE#5.md](./consignes_BE#5.md), dans le même répertoire que cet énoncé.
+Ce BE fera l'objet d'un compte-rendu (CR), seul ou en binôme. L'énoncé correspond à 4h de TD encadrées et 2h d'autonomie. Avant de commencer, veuillez prendre connaissance des consignes concernant le rendu du travail (à respecter scrupuleusement) qui se trouvent dans le fichier [consignes_BE#5.md](./consignes_BE#5.md), dans le même répertoire que cet énoncé.
 
 ---    
-
 ## Partie 1 - Mise en place de l'interface statique (90 min.)
 
 __Exercice 1 -__ Dessinez l'arbre de scène correspondant à la capture d'écran ci-dessus.    
 
-__Exercice 2 -__ En vous inspirant de l'organisation des classes du BE #4, programmez l'interface statique (_i.e._ sans commande) en distinguant la classe __FenPrincipale__ et la classe __ZoneAffichage__. À ce stade, à la place des 26 boutons du clavier (correspondant aux 26 lettres en majuscule), placez un simple bouton _"A"_ (le dessin du clavier est traité dans l'exercice suivant).
+__Exercice 2 -__ En vous inspirant de l'organisation des classes du BE #4, programmez l'interface statique (_i.e._ sans commande) en distinguant la classe __FenPrincipale__ et la classe __ZoneAffichage__. À ce stade, à la place des 26 boutons du clavier (correspondant aux 26 lettres en majuscule), placez un simple bouton _"A"_  car le dessin du clavier est traité dans l'exercice suivant.
 
-Testez votre interface et faites les ajustements nécessaires pour obtenir une apparence proche de celle donnée en exemple (mais sans le clavier, et avec les couleurs qui vous conviennent !). Le programme principal se réduira à ces quelques lignes:
+Testez votre interface et faites les ajustements nécessaires pour obtenir une apparence proche de celle donnée en exemple (mais sans le clavier, et avec les couleurs qui vous conviennent !). Le programme principal se réduira à ces quelques lignes :
 ```python
 if __name__ == '__main__':
 	fen = FenPrincipale()
@@ -32,19 +32,20 @@ _Remarque_ : Vous pouvez à ce stade ajouter la commande _self.destroy_ sur le b
 
 __Exercice 3 -__ Nous allons maintenant dessiner le clavier tel qu'il apparaîtra dans la version finale.
 
-  1. __Liste des boutons__ Les 26 boutons seront créés et stockés dans une liste de boutons. Pour transformer les nombres de 0 à 25 en lettres  _A_, ..., _Z_, vous pourrez utiliser l'instruction suivante ```t = chr(ord('A')+i)``` qui transforme l'entier _i=0_ en la chaîne d'un caractère _t="A"_, l'entier _i=1_ en la chaîne d'un caractère _t="B"_, ...    
+  1. __Liste des boutons__ Les 26 boutons seront créés et stockés dans une liste de boutons. Pour transformer les nombres de 0 à 25 en lettres  _A_, ..., _Z_, vous pourrez utiliser l'instruction suivante ```t = chr(ord('A')+i)``` qui transforme l'entier _i=0_ en une chaîne d'un seul caractère _t="A"_, l'entier _i=1_ en une chaîne d'un seul caractère _t="B"_, ...    
   1. __Placement des boutons__ La disposition des boutons en grille sera réalisée grâce à la commande _grid_, selon l'exemple suivant : ```unBouton.grid(row=1, column=2)``` positionne _unBouton_ sur la première ligne, seconde colonne de la grille (dont la taille s'adapte automatiquement).
 
 Pensez à exécuter votre programme pour vérifier le placement du clavier virtuel.
 
 
+---    
 ## Partie 2 - Logique de jeu, commandes (75 min.)
 
- Cette partie est destinée à implémenter la logique de jeu, à travers les commandes de l'interface:
+ Cette partie est destinée à implémenter la logique de jeu, à travers les commandes de l'interface :
 
-  - _Bouton "Quitter"_ (normalement, c'est déjà fait avec l'appel à la méthode _destroy_!)
-  - _Bouton "Nouvelle partie"_
-  - _Boutons-lettres "A", ..., "Z"_
+  - _Bouton "Quitter"_ (normalement, c'est déjà fait avec l'appel à la méthode _destroy_ !).
+  - _Bouton "Nouvelle partie"_.
+  - _Boutons-lettres "A", ..., "Z"_.
 
 On fait ici abstraction de la représentation graphique du pendu qui sera traitée dans la partie suivante de cet énoncé. Allons-y pas-à-pas...
 
@@ -52,7 +53,7 @@ On fait ici abstraction de la représentation graphique du pendu qui sera trait
 
 Une partie ne pourra commencer que si le joueur appuie sur le bouton "Nouvelle partie".
 
-__Exercice 4 -__ L'appuie sur ce bouton doit provoquer une ré-initialisation de toute l'interface: 
+__Exercice 4 -__ L'appuie sur ce bouton doit provoquer une ré-initialisation de toute l'interface : 
 
   - Tirer un nouveau mot au hasard dans le fichier [mots.txt](./mots.txt) (à votre disposition à côté de cet énoncé) et réinitialiser le mot à découvrir;   
   - Dégriser les boutons-lettres (```state=NORMAL```);    
@@ -61,7 +62,7 @@ __Exercice 4 -__ L'appuie sur ce bouton doit provoquer une ré-initialisation de
 _Quelques conseils pour l’implémentation_
 
   - Au chargement de l'application, pensez à griser toutes les lettres du clavier. 
-  - Utilisez la méthode suivante pour charger les mots du fichier _mots.txt_ dans une liste privée appelée _self.\_\_mots_. Cette liste sera chargée un fois pour toute au lancement de l'application, et utilisée à chaque nouvelle partie.   
+  - Utilisez la méthode suivante pour charger les mots du fichier _mots.txt_ dans une liste privée appelée _self.\_\_mots_. Cette liste sera chargée une fois pour toute au lancement de l'application, et utilisée à chaque nouvelle partie.   
 ```python
 def chargeMots(self):
 	f = open('mots.txt','r')
@@ -69,7 +70,7 @@ def chargeMots(self):
 	self.__mots = s.split('\n')
 	f.close()
 ```   
-  - Pour tirer un nouveau mot, utilisez la fonction _randint(...)_ (```from random import randint```).
+  - Pour tirer un nouveau mot au hasard, utilisez la fonction _randint(...)_ (```from random import randint```).
 
 <!--
 _Tip_ Vous pouvez créer des attributs différents pour sauvegarder 
@@ -83,7 +84,7 @@ Pensez à vérifier que votre application est bien fonctionnelle à ce stade.
 
 ### Boutons-lettres "A", ..., "Z" (45 min.)
 
-Appuyer sur une lettre du clavier virtuel doit provoquer un certain nombre d'actions :
+Le fait d'appuyer sur une lettre du clavier virtuel doit provoquer un certain nombre d'actions :
  
    - griser le bouton-lettre qui vient d'être cliqué (```state=DISABLED```);    
    - faire apparaître autant de fois que nécessaire la lettre cliquée dans le mot à découvrir;  
@@ -97,31 +98,53 @@ __Exercice 5 -__ Suivez les étapes proposées
   1. Créez la classe __MonBoutonLettre__, qui hérite de la classe __Button__, et qui sauvegarde, en tant qu'attribut privé, la lettre correspondant au bouton (ou le numéro du bouton).  Modifiez en conséquence le constructeur de la classe __FenPrincipale__ pour que le clavier virtuel soit composé de 26 instances de la classe __MonBoutonLettre__. 
   1. Créer la fonction de callback _cliquer(self)_ dans la classe __MonBoutonLettre__, qui fera notamment appel à la méthode _traitement(...)_ de la classe __FenPrincipale__.    
   1. Programmez la méthode _traitement(...)_ dont l'objectif est de mettre à jour l'affichage du mot.    
-    - Si la partie est gagnée, bloquez l'utilisation du clavier, et affichez un texte qui indique au joueur que c'est gagné!  
-    - La partie est perdue quand le nombre de coups dépasse 10 (c'est le nombre d'éléments pour dessiner entièrement le pendu). Bloquez alors l'utilisation du clavier, et affichez un texte qui indique au joueur que c'est perdu!  
+    - Si la partie est gagnée, bloquez l'utilisation du clavier, et affichez un texte qui indique au joueur que c'est gagné !  
+    - La partie est perdue quand le nombre de coups dépasse 10 (c'est le nombre d'éléments nécessaires pour dessiner entièrement le pendu). Bloquez alors l'utilisation du clavier, et affichez un texte qui indique au joueur que c'est perdu !  
 
 À ce stade, l'application doit être entièrement fonctionnelle, seul le dessin du pendu est manquant, ce que nous allons compléter dès à présent...
 
 
+---  
 ## Partie 3 - Le dessin du pendu (75 min.)
 
-Cet partie est consacrée au dessin progressif du pendu, au fur et à mesure des échecs du joueur. Ce dessin s'appuie sur les connaissances acquises lors du BE #4 et les classes du fichier [formes.py](./formes.py), disponible à côté de cet énoncé (c'est le même que celui utilisé dans le BE #4). 
+Cet partie est consacrée au dessin progressif du pendu, au fur et à mesure des échecs du joueur. Ce dessin s'appuie sur les connaissances acquises lors du BE #4 et les classes du fichier [formes.py](./formes.py), disponible à côté de cet énoncé (Attention le fichier utilisé ici est très légèrement différent de celui du BE #4, merci de bien télécharger cette version). 
 
 __Exercice 6 -__
 
 Pour cela, l'idée est de créer le pendu comme une liste de rectangles et d'ellipses (10 pièces doivent suffire), dans le constructeur de la classe __ZoneAffichage__. Pour faire disparaître le pendu (au moment de la création des pièces, ou au moment de la réinitialisation d'une partie p. ex.), on affectera aux pièces l'état caché (```state=hidden```). Pour faire apparaître les pièces progressivement (sur ordre de la méthode _traitement(...)_), on leur affectera l'état normal (```state=normal```).
 
+Pour gagner un peu de temps, voici un exemple de coordonnées pour les éléments graphiques :
+```python
+# Base, Poteau, Traverse, Corde
+Rectangle(self, 50,  270, 200,  26, "brown")
+Rectangle(self, 87,   83,  26, 200, "brown")
+Rectangle(self, 87,   70, 150,  26, "brown")
+Rectangle(self, 183,  67,  10,  40, "brown")
+# Tete, Tronc
+Rectangle(self, 188, 120,  20,  20, "black")
+Rectangle(self, 175, 143,  26,  60, "black")
+# Bras gauche et droit
+Rectangle(self, 133, 150,  40,  10, "black")
+Rectangle(self, 203, 150,  40,  10, "black")
+# Jambes gauche et droite
+Rectangle(self, 175, 205,  10,  40, "black")
+Rectangle(self, 191, 205,  10,  40, "black")
+```
+
 
+---
 ## Partie 4 - Améliorations du jeu (autonomie)
 
 Voici quelques améliorations possibles pour le jeu, seule la dernière est considérée comme un bonus.
 
-__Exercice 7 - Apparence__ Développez le code qui permet au joueur de choisir les couleurs principales de l’application (par menus, boutons...).
+__Exercice 7 - Apparence__ Développez le code qui permet au joueur de choisir les couleurs principales de l’application (par un  menus, par des boutons...).
+
+__Exercice 8 - Bouton Triche__ Implémentez un bouton "Triche" qui permet de revenir en arrière d'un coup, pendant la partie.
 
-__Exercice 8 - Bouton Triche__ Implémentez un bouton "Triche" qui permet de revenir en arrière d'un coup en cours de partie.
+__Bonus - Score joueur__ Implémentez un système de sauvegarde des parties jouées par un joueur (identifié par un pseudo demandé au joueur). Techniquement, on pourra créer une base de données _SQL_ (_cf_ BE #3), appelée _pendu.db_, qui stockera une table avec les joueurs et une table avec les parties jouées par ces joueurs, selon le schéma suivant :
 
-__Bonus - Score joueur__ Implémentez un système de sauvegarde des parties jouées par un joueur (identifié par son nom et son numéro) ? Techniquement, on pourra créer une base de données SQL (BE #3), appelée _pendu.db_, qui stockera une table avec les joueurs et une table avec les parties jouées par ces joueurs, selon le schéma suivant:
+<center><img src="figures/TableSQLJeuPendu.png" style="width:30%"/></center>
 
-<center><img src="figures/TableSQLJeuPendu.png" style="width:50%"/></center>
+Le score pour chaque mot pourra être défini comme le taux de caractères trouvés (ainsi un score de 1.0 désigne un succès).
 
-_Remarque_ : on ne demande pas ici d'afficher un historique ou des statistiques sur un joueur. Pour consulter la base, on pourra simplement utiliser ```DB Browse for SQLite```.
+_Remarque_ : on ne demande pas ici d'afficher un historique ou des statistiques sur un joueur. Pour consulter la base, on pourra simplement utiliser ```DB Browser for SQLite```.
-- 
GitLab