Files
TD3_DEV51_brigitte_aissi/readme.md
2025-10-12 15:36:24 +02:00

55 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.