• 40 hours
  • Hard

Free online content available in this course.

Paperback available in this course

course.header.alt.is_certifying

You can get support and mentoring from a private teacher via videoconference on this course.

Got it!

Last updated on 10/24/19

TP : Créez un jeu de pendu

Log in or subscribe for free to enjoy all this course has to offer!

Ce TP est sûrement le plus difficile que vous aurez à réaliser ! Il fait appel à beaucoup d'éléments vus précédemment. Nous allons devoir réaliser un jeu de pendu. Le principe est classique : vous devez trouver un mot secret lettre par lettre en faisant un minimum d'erreurs.

Nous en profiterons pour utiliser des design patterns, ces fameuses bonnes pratiques de programmation.

Cahier des charges

Vous devez réaliser un jeu du pendu en Java gérant la sauvegarde des dix meilleurs scores. Toutefois, j'ai des exigences précises :

  • l'application doit contenir les menusNouveau,Scores,RèglesetÀ propos;

  • une page d'accueil doit être mise en place ;

  • les points doivent être cumulés en tenant compte des mots trouvés et des erreurs commises ;

  • il faut vérifier si le joueur est dans le top dix, auquel cas on lui demande son pseudo, on enregistre les données et on le redirige vers la page des scores ;

  • si le joueur n'a pas assez de points, on le redirige vers la page d'accueil ;

  • il faut essayer d'utiliser le pattern observer.

Les règles du jeu sont représentées en figure suivante.

Écran principal et règles du jeu
Écran principal et règles du jeu

Vous pouvez voir les écrans que j'ai obtenus à la figure suivante.

Captures d'écran du jeu
Captures d'écran du jeu

Je vous fournis également les images que j'ai utilisées pour réaliser ce pendu.

Télécharger les images

Vous aurez besoin d'un « fichier dictionnaire » contenant de nombreux mots pour votre jeu :

Télécharger les fichiers

Il me reste encore quelques recommandations à vous prodiguer…

Prérequis

Vous devrez utiliser les flux afin de parcourir le fichier texte qui contient plus de 336 000 lignes : il faudra donc choisir un nombre aléatoire entre 0 et 336 529, puis récupérer le mot désigné. Pour obtenir un nombre aléatoire entre 0 et 336 529, j'ai codé ceci :

int nbre = (int)(Math.random()*336529);

Afin de récupérer les mots ligne par ligne, j'ai utilisé unLineNumberReader : puisque cet objet retourne le numéro de la ligne en invoquant la méthodegetLineNumber(), il était tout indiqué ! Il y a aussi un point qui peut vous poser problème : la mise à jour duJPanel. Pour ma part, j'ai choisi la technique suivante : tout retirer du conteneur grâce à la méthoderemoveAll(), replacer des composants puis invoquer la méthoderevalidate()afin de modifier l'affichage.

Il faudra également que vous pensiez à gérer les caractères accentués, lorsque vous cliquerez sur le bouton « E » par exemple. Vous devrez donc aussi afficher les lettres « E » accentuées.

Je ne vais pas tout vous dévoiler, il serait dommage de gâcher le plaisir. En revanche, j'insiste sur le fait que c'est un TP difficile, et qu'il vous faudra certainement plusieurs heures avant d'en venir à bout. Prenez donc le temps de déterminer les problèmes, réfléchissez bien et codez proprement !

Je vous conseille vivement d'aller relire les chapitres traitant des design patterns, car j'en ai utilisé ici ; de plus, j'ai rangé mes classes en packages.

Allez, en avant !

Correction

Une fois n'est pas coutume, je ne vais pas inscrire ici tous les codes source, mais plutôt vous fournir tout mon projet Eclipse contenant un.jarexécutable ; et pour cause, il contient beaucoup de classes, comme vous le pouvez le voir à la figure suivante.

Récupérer le projet

Classes du TP
Classes du TP

Voici donc une astuce d'Eclipse permettant de rapatrier un projet.

Une fois Eclipse ouvert, effectuez un clic droit dans la zone où se trouvent vos projets, puis cliquez surImportet choisissezExisting projectdansGeneral(voir figure suivante).

Importer un projet existant dans Eclipse
Importer un projet existant dans Eclipse

Il ne vous reste plus qu'à spécifier l'endroit où vous avez décompressé l'archive.jarque je vous ai fournie, et le tour est joué.

Prenez bien le temps de lire et comprendre le code. Si vous n'arrivez pas à tout faire maintenant, essayez de commencer par réaliser les choses les plus simples, vous pourrez toujours améliorer votre travail plus tard lorsque vous vous sentirez plus à l'aise !

Vous pourrez constater que j'ai rangé mon code d'une façon assez étrange, avec un packagecom.sdz.modelet uncom.sdz.vue… Cette façon de procéder correspond à un autre pattern de conception permettant de séparer le code en couches capables d'interagir entre elles : c'est le sujet du chapitre suivant.

Example of certificate of achievement
Example of certificate of achievement