This commit is contained in:
2025-10-12 15:36:24 +02:00
parent 3547ccfc10
commit 2f3ec8b804
16 changed files with 54 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

54
readme.md Normal file
View File

@@ -0,0 +1,54 @@
# Exercice 5 Mesure de métriques et profiling du programme Hangman
# PenduWilfried
## 1. Calcul de la complexité cyclomatique
| Classe / Méthode | Description | Complexité cyclomatique |
|------------------|------------|------------------------|
| `ChooseWord.chooseTheWord(String)` | Choisit un mot selon la difficulté | 4 |
| `ChooseWord.getFilenameByDifficulty(String)` | Retourne le fichier selon difficulté | 4 |
| `ChooseWord.isValidForDifficulty(String, String)` | Vérifie si le mot est valide pour la difficulté | 4 |
| `GameState.tryLetter(char)` | Essaie une lettre et met à jour le score | 3 |
| `GameState.updateScore()` | Calcule le score en fonction du temps et des erreurs | 3 |
| `GameState.getDifficultyMultiplier()` | Retourne multiplicateur selon difficulté | 4 |
| `GameState.isWon()` | Vérifie si le joueur a gagné | 2 |
| `HangmanPanel.paintComponent(Graphics)` | Dessine le pendu selon erreurs | 9 |
| `main.handleLetterInput()` | Gestion saisie utilisateur et mise à jour UI | 9 |
| `main.showEndGameMessage(boolean, int)` | Affiche message de fin de jeu | 3 |
| `main.main(String[])` | Point dentrée du programme | 1 |
**Conclusion :**
La majorité des fonctions ont une complexité modérée (<10). Les fonctions `paintComponent` et `handleLetterInput` sont plus complexes, ce qui pourrait justifier une refactorisation pour améliorer la lisibilité.
# PenduJude
## 1. Calcul de la complexité cyclomatique
| Classe / Méthode | Description | Complexité cyclomatique |
|------------------|------------|------------------------|
| `Display.showWord(String, Set<Character>)` | Affiche le mot avec lettres devinées | 3 (for + if/else) |
| `Display.showLives(int, int)` | Affiche le nombre de vies | 1 |
| `GameLogic.isWordGuessed(String, Set<Character>)` | Vérifie si le mot est deviné | 3 (for + if + continue) |
| `InputHandler.getLetter(Scanner, Set<Character>)` | Gestion de la saisie utilisateur | 5 (while + if multiples + continue) |
| `ScoreManager.calculateScore(int, long, String)` | Calcule le score final | 5 (switch + if) |
| `TimerManager.start()` | Démarre le chronomètre | 1 |
| `TimerManager.getElapsedTimeMillis()` | Retourne le temps écoulé | 1 |
| `WordSelector.loadWordsForDifficulty(String, String)` | Charge les mots depuis un fichier | 3 (try/catch + while) |
| `WordSelector.pickWord(String)` | Retourne un mot aléatoire selon difficulté | 2 (if) |
| `HangedGameGUI.processGuess()` | Traitement dune lettre saisie | 9 (if/else multiples + for) |
| `HangedGameGUI.updateWordDisplay()` | Met à jour laffichage du mot | 3 (for + if/else) |
| `HangedGameGUI.drawHangman(Graphics)` | Dessine le pendu selon erreurs | 11 (chaîne de if) |
| `HangedGameGUI.checkGameEnd()` | Vérifie la fin du jeu | 2 (if) |
| `HangedGameGUI.endGame(boolean)` | Affiche le message de fin et score | 5 (if/else + JOptionPane) |
| `HangedGameGUI.main(String[])` | Point dentrée | 1 |
**Conclusion :**
Certaines méthodes GUI (`drawHangman`, `processGuess`) ont une complexité élevée (>9). Les autres fonctions sont simples et bien encapsulées. Une refactorisation pourrait améliorer la lisibilité et la maintenabilité.
Le code est **fonctionnel et structuré**, avec quelques méthodes complexes qui pourraient bénéficier dune simplification. La séparation logique (game logic, affichage, gestion du timer) est bien faite, ce qui facilite la maintenance et lévolution.