diff --git a/seance5_4h/consignes_BE#5.md b/seance5_4h/consignes_BE#5.md
new file mode 100644
index 0000000000000000000000000000000000000000..8d05879012dbb1015b03baa3f7266e18190f452f
--- /dev/null
+++ b/seance5_4h/consignes_BE#5.md
@@ -0,0 +1,16 @@
+**Consignes pour le rendu sur jeu du Pendu**
+
+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** (délai de rigueur, aucun travail accepté au delà de cette date). Ces 2 semaines ne tiennent pas compte d'éventuelles vacances.
+
+*Commentaires:*
+
+ - 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 attributs (privés ou publics), et les méthodes (elles-mêmes publiques ou privée). Le choix public/privé est un point essentiel pour protéger votre application d'un usage abusif ou erroné.   
+         - un _story-board_ de votre application comprenant des copies d'écran et permettant d'illustrer les différentes étapes du jeu.    
+         - un présentation de vos éventuels ajouts, par rapport à l'énoncé du BE (_cf_ dernière partie de l'énoncé).
+
+ - 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 :-) )
diff --git a/seance5_4h/figures/TableSQLJeuPendu.png b/seance5_4h/figures/TableSQLJeuPendu.png
new file mode 100644
index 0000000000000000000000000000000000000000..be4e92654694871a9e081e7547db8f98a9d9a507
Binary files /dev/null and b/seance5_4h/figures/TableSQLJeuPendu.png differ
diff --git a/seance5_4h/figures/pendu0.png b/seance5_4h/figures/pendu0.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5005e31e3f8c45470a4154921dc09bc75f70831
Binary files /dev/null and b/seance5_4h/figures/pendu0.png differ
diff --git a/seance5_4h/formes.py b/seance5_4h/formes.py
new file mode 100644
index 0000000000000000000000000000000000000000..964e35cbe688d0fbd2d88b01dffa8f70f6dc8320
--- /dev/null
+++ b/seance5_4h/formes.py
@@ -0,0 +1,67 @@
+class Forme:
+    def __init__(self, canevas, x, y):
+        self.__canevas = canevas
+        self._item = None
+        self.x = x
+        self.y = y
+    
+    def effacer(self):
+        self.__canevas.delete(self._item)
+    
+    def deplacement(self, dx, dy):
+        self.__canevas.move(self._item, dx, dy)
+        self.x += dx
+        self.y += dy
+
+class Rectangle(Forme):
+    def __init__(self, canevas, x, y, l, h, couleur):
+        Forme.__init__(self, canevas, x, y)
+        self._item = canevas.create_rectangle(x, y, x+l, y+h, fill=couleur)
+        self.__l = l
+        self.__h = h
+    
+    def __str__(self):
+        return f"Rectangle d'origine {self.x},{self.y} et de dimensions {self.__l}x{self.__h}"
+
+    def get_dim(self):
+        return self.__l, self.__h
+
+    def set_dim(self, l, h):
+        self.__l = l
+        self.__h = h
+
+    def contient_point(self, x, y):
+        return self.x <= x <= self.x + self.__l and \
+               self.y <= y <= self.y + self.__h
+
+    def redimension_par_points(self, x0, y0, x1, y1):
+        self.x = min(x0, x1)
+        self.y = min(y0, y1)
+        self.__l = abs(x0 - x1)
+        self.__h = abs(y0 - y1)
+
+class Ellipse(Forme):
+    def __init__(self, canevas, x, y, rx, ry, couleur):
+        Forme.__init__(self, canevas, x, y)
+        self._item = canevas.create_oval(x-rx, y-ry, x+rx, y+ry, fill=couleur)
+        self.__rx = rx
+        self.__ry = ry
+
+    def __str__(self):
+        return f"Ellipse de centre {self.x},{self.y} et de rayons {self.__rx}x{self.__ry}"
+
+    def get_dim(self):
+        return self.__rx, self.__ry
+
+    def set_dim(self, rx, ry):
+        self.__rx = rx
+        self.__ry = ry
+
+    def contient_point(self, x, y):
+        return ((x - self.x) / self.__rx) ** 2 + ((y - self.y) / self.__ry) ** 2 <= 1
+
+    def redimension_par_points(self, x0, y0, x1, y1):
+        self.x = (x0 + x1) // 2
+        self.y = (y0 + y1) // 2
+        self.__rx = abs(x0 - x1) / 2
+        self.__ry = abs(y0 - y1) / 2
diff --git a/seance5_4h/mots.txt b/seance5_4h/mots.txt
new file mode 100755
index 0000000000000000000000000000000000000000..d52bfc54f030dd8bd536ddcd25dac998e436aa91
--- /dev/null
+++ b/seance5_4h/mots.txt
@@ -0,0 +1,835 @@
+ABIME
+ABSENT
+ACCIDENT
+ACCROCHER
+ACROBATE
+ADROIT
+AEROPORT
+AFFAIRE
+AFFICHE
+AGITER
+AIDER
+AIGUILLE
+ALBUM
+ALLER
+ALPHABET
+AMENER
+AMI
+AMPOULE
+AMUSANT
+AMUSER
+ANCIEN
+ANGLE
+ANORAK
+APPAREIL
+APPEL
+APPORTER
+APPUYER
+APPUYER
+APRES
+ARC
+ARMOIRE
+ARRACHER
+ARRET
+ARRETER
+ARRIERE
+ARRIVER
+ARROSER
+ARROSOIR
+ASSIETTE
+ASSIS
+ATTACHER
+ATTENDRE
+ATTENTION
+ATTERRIR
+ATTRAPER
+AUTANT
+AUTOUR
+AVANCER
+AVANT
+AVION
+BAGAGE
+BAGARRE
+BAGARRER
+BAGUETTE
+BAIGNER
+BAILLER
+BAISSER
+BALANCER
+BALANCOIRE
+BALLE
+BALLON
+BANC
+BANDE
+BARBE
+BARBOTER
+BARRE
+BARREAU
+BAS
+BATEAU
+BATTRE
+BEAUCOUP
+BIBLIOTHEQUE
+BICYCLETTE
+BIEN
+BILLE
+BLANC
+BLEU
+BLOND
+BOIS
+BOITE
+BOITE
+BONDIR
+BONNET
+BORD
+BOTTE
+BOUCHER
+BOUCHON
+BOUDER
+BOUGER
+BOUSCULER
+BOUT
+BOUTEILLE
+BOUTON
+BRAS
+BRETELLE
+BRICOLAGE
+BRUIT
+BRUN
+BULLES
+BUREAU
+CABANE
+CABINET
+CACHER
+CAGE
+CAGOULE
+CAHIER
+CAISSE
+CALME
+CAMARADE
+CAMESCOPE
+CAMION
+CANARD
+CARNET
+CARRE
+CARREAU
+CARTABLE
+CARTE
+CARTON
+CARTON
+CASIER
+CASQUE
+CASQUETTE
+CASSE
+CASSER
+CASSEROLE
+CASSETTE
+CATALOGUE
+CEINTURE
+CERCEAU
+CERF
+CHAINE
+CHAISE
+CHAISE
+CHANGER
+CHANSON
+CHANTER
+CHAPEAU
+CHARGER
+CHATEAU
+CHAUD
+CHAUSSER
+CHAUSSETTE
+CHAUSSON
+CHAUSSURE
+CHEMISE
+CHERCHER
+CHEVILLE
+CHIFFRE
+CHOISIR
+CHOSE
+CHUCHOTER
+CHUTE
+CIGARETTE
+CINQ
+CISEAUX
+CLAIR
+CLASSE
+CLEF
+CLOU
+COEUR
+COGNER
+COIN
+COL
+COLERE
+COLLANT
+COLLE
+COLLE
+COLLER
+COLORIAGE
+COLORIER
+COMMENCER
+COMPARER
+COMPTER
+CONDUIRE
+CONSTRUIRE
+CONTE
+CONTINUER
+CONTRAIRE
+CONTRE
+COPAIN
+COPIER
+COQUIN
+CORDE
+CORPS
+COTE
+COU
+COUCHER
+COUDE
+COUDRE
+COULER
+COULEUR
+COULOIR
+COUP
+COUPER
+COUR
+COURIR
+COURONNE
+COURSE
+COURT
+COUVRIR
+CRACHER
+CRAIE
+CRAVATE
+CRAYON
+CREUSER
+CRIER
+CROCHET
+CROCODILE
+CUBE
+CUILLERE
+CUISSE
+CULOTTE
+CURIEUX
+CUVETTE
+DAME
+DANGER
+DANGEUREUX
+DANS
+DANSER
+DE
+DEBORDER
+DEBOUT
+DEBOUT
+DECHIRER
+DECOLLER
+DECORER
+DECOUPAGE
+DECOUPER
+DEDANS
+DEFENDRE
+DEGONFLER
+DEGUISER
+DEHORS
+DEMARRER
+DEMOLIR
+DEPASSER
+DERNIER
+DERRIERE
+DESCENDRE
+DESHABILLER
+DESOBEIR
+DESSIN
+DESSINER
+DESSUS
+DETRUIRE
+DEUX
+DEUXIEME
+DEVANT
+DICTIONNAIRE
+DIFFERENCE
+DIFFERENT
+DIFFICILE
+DIRE
+DIRECTEUR
+DIRECTRICE
+DISCUTER
+DISPARAITRE
+DISPUTE
+DISTRIBUER
+DIX
+DOIGT
+DOIGTS
+DOMINO
+DONNER
+DORMIR
+DOS
+DOSSIER
+DOUCHE
+DOUCHER
+DOUX
+DROIT
+DROITE
+DU
+DUR
+EAU
+EAU
+ECARTER
+ECHANGER
+ECHARPE
+ECHASSE
+ECHASSES
+ECHELLE
+ECLABOUSSER
+ECLAIRER
+ECOLE
+ECORCHER
+ECOUTER
+ECRAN
+ECRASER
+ECRIRE
+ECRITURE
+ECUREUIL
+EFFACER
+EFFORT
+ELASTIQUE
+ELEVE
+EMMENER
+EMPECHER
+EMPORTER
+ENCORE
+ENERVER
+ENFANT
+ENFILER
+ENFONCER
+ENGIN
+ENLEVER
+ENSEMBLE
+ENTENDRE
+ENTONNOIR
+ENTOURER
+ENTRER
+ENTRER
+ENVELOPPE
+ENVOLER
+ENVOYER
+ENVOYER
+EPAIS
+EPAULE
+EPEE
+EQUILIBRE
+EQUIPE
+ESCABEAU
+ESCALADE
+ESCALADER
+ESCALIER
+ESSUYER
+ETAGERE
+ETIQUETTE
+ETROIT
+EXPLIQUER
+EXPLIQUER
+EXTERIEUR
+FABRIQUER
+FACE
+FACILE
+FAIRE
+FATIGUE
+FAUTE
+FEE
+FENETRE
+FERMER
+FESSE
+FEU
+FEUILLE
+FEUTRE
+FICELLE
+FIL
+FILE
+FILET
+FILLE
+FILM
+FINIR
+FLAQUE
+FLECHE
+FLOTTER
+FOI
+FOIS
+FONCE
+FOND
+FORME
+FORT
+FOU
+FOUILLER
+FRAPPER
+FREIN
+FROID
+FUSEE
+FUSIL
+GAGNER
+GALOPER
+GANT
+GARAGE
+GARCON
+GARDER
+GARDIEN
+GARE
+GARER
+GAUCHE
+GENER
+GENOU
+GENTIL
+GLISSER
+GOMME
+GONFLER
+GOUTER
+GOUTTES
+GRAND
+GRIMPER
+GRIS
+GRONDER
+GROS
+GROUPE
+GRUE
+GYMNASTIQUE
+HABILLER
+HABIT
+HANCHE
+HANDICAPE
+HAUT
+HELICOPTERE
+HISTOIRE
+HUIT
+HUMIDE
+HURLER
+ICI
+IDEE
+IMAGE
+IMITER
+IMMOBILE
+INONDER
+INSEPARABLE
+INSTALLER
+INSTRUMENT
+INTERESSANT
+INTERIEUR
+INTRUS
+JALOUX
+JAMAIS
+JAMBE
+JAUNE
+JEAN
+JEU
+JEU
+JOLI
+JONGLER
+JOUER
+JOUET
+JOUEUR
+JUPE
+LACER
+LACET
+LAINE
+LAISSER
+LANCER
+LARGE
+LAVABO
+LAVER
+LETTRE
+LEVER
+LIGNE
+LINGE
+LIRE
+LISSE
+LISTE
+LIT
+LITRE
+LIVRE
+LOIN
+LONG
+LUNETTES
+MADAME
+MAGAZINE
+MAGICIEN
+MAGIE
+MAGNETOSCOPE
+MAILLOT
+MAIN
+MAINS
+MAITRE
+MAITRESSE
+MAL
+MALADROIT
+MANCHE
+MANQUER
+MANTEAU
+MARCHE
+MARCHER
+MARIONNETTE
+MARTEAU
+MATELAS
+MATERNELLE
+MECHANT
+MELANGER
+MEME
+MENSONGE
+MESURER
+METAL
+METRE
+METTRE
+MEUBLE
+MICRO
+MIEUX
+MILIEU
+MINE
+MODELE
+MODELER
+MOINS
+MOITIE
+MONTAGNE
+MONTER
+MONTRER
+MONTRER
+MORCEAU
+MOT
+MOTEUR
+MOTO
+MOUCHOIR
+MOUFLE
+MOUILLE
+MOUILLER
+MOULIN
+MOUSSE
+MOYEN
+MUET
+MULTICOLORE
+MUR
+MUR
+MUSCLE
+MUSIQUE
+NAGER
+NEUF
+NOEUD
+NOIR
+NOM
+NOMBRE
+NOUVEAU
+NU
+NUMERO
+OBEIR
+OBJET
+OBLIGER
+ONGLE
+ORCHESTRE
+ORDINATEUR
+ORDRE
+OUTIL
+OUVRIR
+OUVRIR
+PAGE
+PAIRE
+PAIX
+PANNE
+PANTALON
+PAPIER
+PARCOURS
+PARDON
+PAREIL
+PARKING
+PARLER
+PARTAGER
+PARTIE
+PARTIR
+PARTIR
+PAS
+PASSERELLE
+PATE
+PATTES
+PEDALE
+PEDALER
+PEINDRE
+PEINTURE
+PEINTURE
+PELLE
+PELUCHE
+PENCHER
+PENTE
+PERCER
+PERCHER
+PERDRE
+PERLE
+PERSONNE
+PETIT
+PEU
+PEUR
+PHOTO
+PIED
+PIED
+PILOTE
+PINCEAU
+PINCEAU
+PINCER
+PION
+PIROUETTE
+PLACARD
+PLAFOND
+PLAINDRE
+PLANCHE
+PLASTIQUE
+PLATRE
+PLEURER
+PLEUVOIR
+PLI
+PLIAGE
+PLIER
+PLONGEOIR
+PLONGER
+PLUIE
+PLUS
+PNEU
+POCHE
+POIGNET
+POING
+POINT
+POINTU
+POISSON
+POLI
+POMPE
+PONT
+PONT
+PORTE
+PORTER
+POSER
+POSER
+POSTER
+POT
+POUBELLE
+POUCE
+POURSUIVRE
+POUSSER
+POUTRE
+POUVOIR
+PREAU
+PREMIER
+PRENDRE
+PRENOM
+PREPARER
+PRES
+PRESENT
+PRESQUE
+PRESSER
+PRESSER
+PRETER
+PRINCE
+PRISE
+PRIVER
+PROGRES
+PROGRESSER
+PROMETTRE
+PROPRE
+PROTEGER
+PUNIR
+PUZZLE
+PYJAMA
+QUAI
+QUATRE
+QUESTION
+QUITTER
+RACONTER
+RADIATEUR
+RADIO
+RAMPE
+RAMPER
+RANG
+RANGER
+RAQUETTE
+RATER
+RAYON
+RAYURE
+RECEVOIR
+RECHAUFFER
+RECITER
+RECOMMENCER
+RECREATION
+RECULER
+REFUSER
+REGARDER
+REINE
+REMETTRE
+REMPLACER
+REMPLIR
+RENVERSER
+REPARER
+REPETER
+REPONDRE
+RESPIRER
+RESSEMBLER
+RESTER
+RETARD
+RETOURNER
+REUSSIR
+REVENIR
+RIDEAU
+RIVIERE
+ROBE
+ROBINET
+ROI
+ROND
+ROND
+ROUE
+ROUGE
+ROULADE
+ROULER
+ROUX
+RUBAN
+SABLE
+SAC
+SAGE
+SAIGNER
+SALADIER
+SALE
+SALIR
+SALLE
+SALON
+SAUT
+SAUTER
+SCIE
+SEAU
+SEC
+SECHER
+SEMELLE
+SENS
+SENTIR
+SEPARER
+SEPT
+SERIEUX
+SERPENT
+SERRE
+SERRER
+SERRURE
+SERVIETTE
+SERVIR
+SEUL
+SIEGE
+SIESTE
+SIFFLER
+SIFFLET
+SIGNE
+SIGNE
+SILENCE
+SINGE
+SIX
+SOCIERE
+SOL
+SOLDAT
+SOLIDE
+SOMMEIL
+SONNER
+SONNETTE
+SORTIE
+SORTIR
+SOUFFLER
+SOULEVER
+SOULIGNER
+SOUPLE
+SOURD
+SOURIRE
+SOUS
+SOUVENT
+SPORT
+STYLO
+SUIVANT
+SUIVRE
+SUR
+SURVEILLER
+TABLE
+TABLEAU
+TABLIER
+TABOURET
+TACHE
+TAILLE
+TAILLER
+TALON
+TAMBOUR
+TAMPON
+TAPER
+TAPIS
+TARD
+TAS
+TASSE
+TELECOMMANDE
+TELEPHONE
+TELEVISION
+TENDRE
+TENIR
+TERMINER
+TETE
+TIRER
+TIROIR
+TISSU
+TITRE
+TOBOGGAN
+TOILETTE
+TOMBER
+TORDU
+TOT
+TOUCHER
+TOUJOURS
+TOUR
+TOURNER
+TOURNEVIS
+TRAIN
+TRAINER
+TRAIT
+TRAMPOLINE
+TRANQUILLE
+TRANSPARENT
+TRANSPIRER
+TRANSPORTER
+TRAVAIL
+TRAVAILLER
+TRAVERSER
+TREMPER
+TRICOT
+TRICYCLE
+TRIER
+TROIS
+TROISIEME
+TROMPETTE
+TROP
+TROUER
+TROUS
+TROUSSE
+TROUVER
+TROUVER
+TUNNEL
+TUYAU
+UN
+UNIFORME
+USE
+VALISE
+VELO
+VENIR
+VENTRE
+VERRE
+VERS
+VERSER
+VERT
+VESTE
+VETEMENT
+VIDER
+VIRAGE
+VIS
+VITE
+VITESSE
+VITRE
+VOITURE
+VOIX
+VOLANT
+VOLER
+VOULOIR
+VOYAGE
+WAGON
+XYLOPHONE
+ZERO
+ZIGZAG
diff --git a/seance5_4h/seance5_4h.md b/seance5_4h/seance5_4h.md
new file mode 100644
index 0000000000000000000000000000000000000000..2722446fcd05cdbf1aaf1e10009a67e8f910f15a
--- /dev/null
+++ b/seance5_4h/seance5_4h.md
@@ -0,0 +1,128 @@
+**Sommaire**
+
+[[_TOC_]]
+
+# 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!
+
+<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!).
+
+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é.
+
+---    
+
+## 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).
+
+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()
+	fen.mainloop()
+```
+
+_Remarque_ : Vous pouvez à ce stade ajouter la commande _self.destroy_ sur le bouton _Quitter_.
+
+
+__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. __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:
+
+  - _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...
+
+### Bouton "Nouvelle Partie" (30 min.)
+
+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: 
+
+  - 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```);    
+  - Effacer le dessin du pendu (question traitée dans la partie suivante de cet énoncé).
+
+_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.   
+```python
+def chargeMots(self):
+	f = open('mots.txt','r')
+	s = f.read()
+	self.__mots = s.split('\n')
+	f.close()
+```   
+  - Pour tirer un nouveau mot, utilisez la fonction _randint(...)_ (```from random import randint```).
+
+<!--
+_Tip_ Vous pouvez créer des attributs différents pour sauvegarder 
+
+  - le mot à deviner et     
+  - le mot à deviner mais partiellement caché par des étoiles (celui qui sera affiché sur l'interface pour le joueur).
+-->
+
+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 :
+ 
+   - 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;  
+   - vérifier si la partie est perdue, gagnée, ou si elle se poursuit;      
+   - éventuellement, compléter le dessin du pendu si la lettre n'est pas présente dans le mot (question traitée dans la partie suivante de cet énoncé).
+
+Chaque bouton doit pouvoir être identifié par la fonction de _callback_ appelée ici _cliquer_. Or il n'est pas possible de passer le numéro du bouton-lettre au _callback_ (aucun argument n'est admis). Nous allons procéder en créant notre propre classe de  boutons, héritant de la classe __Button__.
+
+__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!  
+
+À 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). 
+
+__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 picèces, ou au moement de la réinitialisation d'une partie p. ex.), on affectera aux pièces la couleur de fond du canevas. Pour faire apparaître les pièces progressivement (sur ordre de la méthode _traitement(...)_), on leur affectera une couleur différente.
+
+
+## Partie 4 - Améliorations du jeu (autonomie)
+
+Voici quelques améliorations possibles pour le jeu, seul la dernière est considérée comme un bonus.
+
+
+__Exercice 7 - Apparence__ Comment permettre au joueur de choisir les couleurs principales de l’application (menus, boutons...) ?
+
+__Exercice 8 - Bouton Triche__ Comment implémenter un bouton "Triche" qui permet de revenir en arrière d'un coup en cours de partie ?
+
+__Bonus - Score joueur__ Comment implémenter 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:50%"/></center>
+
+_ Remarque : on ne demande pas ici d'afficher de statistiques sur un joueur. Pour consulter la base, on pourra simplement utiliser ```DB Browse for SQLite```.