[TP] Pendu Par Triviak www.openclassrooms.com Licence Creative Commons 6 2.0 De

[TP] Pendu Par Triviak www.openclassrooms.com Licence Creative Commons 6 2.0 Dernière mise à jour le 14/06/2010 Sommaire 2 Sommaire ........................................................................................................................................... 3 [TP] Pendu ......................................................................................................................................... 3 Objectifs ............................................................................................................................................................................. 3 REGLES DU JEU ........................................................................................................................................................................................................ 4 REALISATIONS .......................................................................................................................................................................................................... 6 Plan du code ............................................................................................................................................................................................................... 6 Correction .......................................................................................................................................................................... 6 Créer la fenêtre ........................................................................................................................................................................................................... 8 Quelques variables ..................................................................................................................................................................................................... 9 Initialisation ................................................................................................................................................................................................................. 10 Gestions des événements ......................................................................................................................................................................................... 14 Répétition d'une même lettre .................................................................................................................................................................................... 15 On retire un essai ...................................................................................................................................................................................................... 15 Si le joueur a trouvé un lettre, on rajoute un essai .................................................................................................................................................... 16 On blitte différentes images ....................................................................................................................................................................................... 16 Le joueur a-t-il gagné ? ............................................................................................................................................................................................. 17 On blitte tout ! ............................................................................................................................................................................................................ 17 Notre pendu est fini ................................................................................................................................................................................................... 23 Le point sur notre pendu ........................................................................................................................................................................................... 28 Améliorations ................................................................................................................................................................... 28 Améliorations utiles ................................................................................................................................................................................................... 28 Améliorations inutiles qui vous font pratiquer ............................................................................................................................................................ 28 Les améliorations qui feront toute la différence ........................................................................................................................................................ 29 Partager ..................................................................................................................................................................................................................... 2/30 www.openclassrooms.com [TP] Pendu Par Triviak Mise à jour : 14/06/2010 Difficulté : Facile Bienvenue ! Le but de ce tutoriel est de créer un Pendu comme dans le tuto de M@teo21 sauf qu'il sera réalisé en SDL. Avant de commencer à lire ce tutoriel, vous devez avoir lu celui de M@teo21 jusqu'au chapitre 8 soit le chapitre sur SDL_ttf. L'intérêt de ce tutoriel est de créer un programme en SDL avec l'utilisation de la bibliothèque SDL_ttf. Si vous venez de lire le tuto sur SDL_ttf, alors le jeu du pendu est un très bon exercice. Et même si vous savez utiliser SDL_ttf, venez tout de même faire un pendu !! N'attendons pas plus longtemps, c'est parti ! Sommaire du tutoriel : Objectifs Correction Améliorations Objectifs REGLES DU JEU Pour ceux qui n’auraient pas compris, on veut créer un pendu en SDL. Hop, un petit rappel des règles pour que l'on fasse le même jeu. Le but est de trouver un mot qui est masqué. Le joueur va donc essayer de découvrir le mot en tapant une lettre. Cependant, le joueur n'a que sept essais. En effet, si le joueur tape un A et que le mot secret en contient effectivement, le joueur ne perd pas d'essais et on découvre tous les A du mot secret. Cependant, si le mot ne contenait pas de A, le joueur perd un essai. V oilà un petit rappel du jeu. Mais pourquoi on appelle-t-on ce jeu le pendu ? Car à chaque fois que le joueur perd un essai, un dessin se complète en formant un bonhomme en train de se faire pendre ! sisi !! En effet, lorsque vous avez réalisé le pendu en console, je ne crois pas que vous aviez envie de créer un petit bonhomme rien qu'avec des | , / , et \ surtout quand vous êtes justement arrivé à la fin de la partie II. Je vous donne tout de suite quatre écrans obtenus. L'objectif est de réaliser un pendu qui ressemble plus ou moins à cela. Sommaire 3/30 www.openclassrooms.com Comme vous pouvez le voir, il y a deux versions de pendu. Et oui, comme tout tutoriel qui se respecte, je vais vous donner à la fin de celui-ci quelques améliorations que vous pourrez faire. Les deux images du dessus représentent le pendu que nous allons réaliser. Les deux autres images représentent le pendu avec les améliorations. REALISATIONS V oici les images dont j'ai eu besoin. Je tiens à signaler que je n'ai pas un très bon niveau avec photoshop. Ne dites rien sinon je vais me vexer et gare à vous . J'ai créé un fichier zip avec toutes les images, cela vous fera gagner un peu de temps. Mais rien ne vous empêche de créer vos propres images... J'ai aussi rajouté un dictionnaire de plus de 22 000 mots en majuscule avec un retour à la ligne entre chaque mot. Enfin, j'ai ajouté trois polices. De plus, je me suis permis de rajouter le mot "ZERO" qui me semble tout à fait approprié dans ce dictionnaire. Télécharger le pack d'image. Comme vous le voyez sur les images, mon pendu est constitué de deux parties. À gauche le mot secret et en dessous de lui les lettres qui ont déjà été essayées, puis à droite on a les images. V ous pouvez voir sur la capture d'écran que les lettres en dessous du mot secret sont classées dans l'ordre alphabétique. V ous pouvez très bien modifier cela, mais la correction sera adaptée à cette copie d'écran. Maintenant, vous avez deux choix : Soit vous commencez à coder le jeu tout de suite. Alors ne lisez pas plus loin. Soit vous vous aidez de ce que vous avez fait lorsque vous avez réalisé ce programme en console. Alors vous pouvez continuer. Je vous donnerais aussi quelques conseils concernant "le plan" du code à réaliser. Je vais donc vous redonner ici les fonctions qui nous ont servi lors du précédent épisode pendu. Code : C [TP] Pendu 4/30 www.openclassrooms.com srand(time(NULL)); nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; On fait deux trois petits changements et on obtient une fonction qui renvoi un int au hasard entre min et max. Code : C int nombreAleatoire(int max, int min); int main(int argc, char *argv[]) { srand(time(NULL)); intAuHasard = nombreAleatoire(10, 1500); } int nombreAleatoire(int max, int min) { return (rand() % (max - min + 1)) + min; } N'y aurait-il pas une autre fonction qui pourrait nous aider ? Oui. C'est bien beau d'avoir un dictionnaire mais encore faut-il trouver un mot dedans, qui plus est au hasard. V oici donc pour vous : Code : C int piocherMot(char *motPioche); int main(int argc, char *argv[]) { ... } int piocherMot(char *motPioche) { FILE* dico = NULL; int nombreMots = 0, numMotChoisi = 0; int caractereLu = 0; dico = fopen("sources/dico.txt", "r"); // ATTENTION à l'emplacement if (dico == NULL) // { return 0; } do { caractereLu = fgetc(dico); if (caractereLu == '\n') nombreMots++; } while (caractereLu != EOF); numMotChoisi = nombreAleatoire(nombreMots); rewind(dico); while (numMotChoisi > 0) { caractereLu = fgetc(dico); if (caractereLu == '\n') numMotChoisi--; } fgets(motPioche, 100, dico); [TP] Pendu 5/30 www.openclassrooms.com motPioche[strlen(motPioche) - 1] = '\0'; fclose(dico); return 1; } La fonction piocherMot renvoi 0 si elle n'arrive pas à charger le dictionnaire et renvoi 1 si tout se passe bien. Elle prend en paramètre un tableau de chars. Je tiens à signaler que l'objectif n'est pas de créer un pendu mais bien de créer un pendu EN SDL. Je suppose donc que vous avez déjà compris ces deux fonctions lors des deux premières parties du tutoriel de M@teo21. Si ce n'est pas le cas, on retourne voir son cours : nombre aléatoire et lire et écrire dans un fichier. Plan du code V ous ne savez pas comment démarrer ? V ous n'arrivez pas à visualiser le code avant de vous lancer sur votre IDE ? Pas de problème. V oici comment j'ai fait pour réaliser ce code. Première étape : le squelette. Il faut créer le code de base : afficher une fenêtre, insérer les deux fonctions ci-dessus, prévoir la place du switch qui gère les évènements... Deuxième étape : Création des variables. Cette étape permet de visualiser votre futur code. Si vous connaissez le nombre et le type de variables que vous avez besoin, alors vous pouvez vous lancer. Cette étape est vraiment importante car elle permet de représenter plus ou moins le fonctionnement de votre programme. troisième étape : la boucle des évènements. quatrième étape : Le contenu. Dans un premier temps, il faut s'assurer que le joueur a bien tapé une lettre, et aussi qu'il ne l'avait pas déjà essayé. Il vous faudra donc explorer un tableau de 26 caractères pour s'en assurer. V ous pourrez par exemple réaliser ceci à l'aide de 2 conditions de type if. A partir de maintenant, le joueur tente une lettre. Il vous faut donc gérer le nombre de ses essais. Petit rappel, si le joueur a trouvé au moins une lettre, on ne lui retire pas son essais. Le nombre d'essais étant fixé, on peut donc définir l'image à blitter, et aussi savoir si le joueur a gagné, a perdu, ou peut encore continuer à jouer. On blitte tout ! Le texte (le mot secret, les lettres déjà essayées, ...), mais aussi les images. V ous devrez blitter différentes choses si le joueur a gagné ou a perdu. Et on n'oublie pas de libérer la mémoire. Et voila, maintenant c'est à vous de travailler. Bon courage les Zéros !!! Correction Fini ou pas fini, si vous lisez ces lignes, c'est parce que vous voulez la correction. Et justement elle arrive ! Pour des raisons pratiques j'ai préféré n'utiliser que le fichier main.c. Mais rien ne vous empêche de mettre les deux fonctions dans un .h et un .c et de recréer d'autres fonctions. V oila comment on va procéder. Je vais découper mon code en plein de petites parties que je vais expliquer séparément. Etant donné que j'ai bien décrit l'objectif final dans la première partie, vous devriez uploads/Sports/ tp-pendu.pdf

  • 12
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Aoû 28, 2022
  • Catégorie Sports
  • Langue French
  • Taille du fichier 0.4872MB