forked from menault/TD3_DEV51_Qualite_Algo
2f3ec8b804ede40d21118b097473a3979e0f81cd
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.
Description
Languages
Java
100%