forked from menault/TD3_DEV51_Qualite_Algo
55 lines
3.4 KiB
Markdown
55 lines
3.4 KiB
Markdown
# 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 d’entré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 d’une lettre saisie | 9 (if/else multiples + for) |
|
||
| `HangedGameGUI.updateWordDisplay()` | Met à jour l’affichage 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 d’entré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 d’une simplification. La séparation logique (game logic, affichage, gestion du timer) est bien faite, ce qui facilite la maintenance et l’évolution.
|
||
|
||
|
||
|
||
|