• 40 heures
  • Difficile

Ce cours est visible gratuitement en ligne.

Ce cours existe en livre papier.

course.header.alt.is_certifying

Vous pouvez être accompagné et mentoré par un professeur particulier par visioconférence sur ce cours.

J'ai tout compris !

Mis à jour le 24/10/2019

TP : Créez un jeu de pendu

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

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.

Exemple de certificat de réussite
Exemple de certificat de réussite