[Tutoriel Windev] Créer un jeu du pendu

Petit exercice ludique sous windev, la création d’un jeu du pendu. Utilisation principalement des fonctions de chaines telles que “Remplace”, “PositionOccurence”, Chaîne[[caractère]]. Le code dans la suite Ce tutoriel a pour but de présenter la création d’un jeu du pendu dans sa plus simple expression, plus tard nous y ajouterons des options pour agrémenter le jeu Ce dont nous avons besoin au minimum: Une base de donnée de mots à trouver Une fenêtre de jeu Une représentation des lettres de l’alphabet,sous forme graphique, à cliquer Un peu de code (vraiment très peu) Le pré requis pour comprendre ce tutoriel est une base de donnée nommée “Dico” composée de deux rubriques, “mot” de type texte sur 32 caractères et de “id” un identifiant automatique. La variable chance est un entier, elle va définir le nombre d’essai auquel le joueur aura droit, “L_chance” est un libellé informatif que nous mettrons à jour lors d’un essai manqué chance = 8 L_chance = “Chances restantes : 8″ “InitHasard()” sans passage de paramètre permet de générer un nombre aléatoire sur lequel va s’appuyer la fonction “Hasard”, dans cette configuration, “InitHasard()” va se baser sur l’heure système au centième de seconde prêt. Nous utilisons après cela “Hasard(nbre)”. “nbre” est égal au nombre d’occurrence dans la base de données. “Hasard(nbre)” va donc choisir un enregistrement compris entre 1 et “nbre”, cette valeur sera attribué à une variable numérique “monid” InitHasard() monid = Hasard(nbre) Attribution du paramètre “Param1″ à la requête “Req_Mot” puis exécution de cette requête pour récupérer le contenu de la rubrique “mot” correspondant à “monid”. Le code de la requête est le suivant : SELECT Dico.Id AS Id, Dico.Mot AS Mot FROM Dico WHERE Dico.Id = Param1 Req_Mot.Param1 = monid HExécuteRequête(Req_Mot) HLitPremier(Req_Mot) On attribue le résultat de la requête à une variable de type chaine “monmot”. On en profite pour attribuer cette valeur à une seconde variable de type chaine “mottrouve” qui nous servira de base pour le jeu. monmot = Req_Mot.Mot mottrouve = monmot Modification de la variable “mottrouve”. La fonction “Remplace(”chaine de départ”,”chaine à remplacer”,”chaine de remplacement”,options). On va exécuter ce traitement pour chaque lettre de l’alphabet et remplacer celles-ci par un underscore “_”. Si votre base de données contient des lettres accentuées, il est préférable d’utiliser l’option sans casse “SansCasse” qui va limiter le nombre de traitement. mottrouve = Remplace(mottrouve,”a”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”b”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”c”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”d”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”e”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”f”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”g”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”h”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”i”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”j”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”k”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”l”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”m”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”n”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”o”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”p”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”q”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”r”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”s”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”t”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”u”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”v”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”w”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”x”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”y”,”_”,SansCasse) mottrouve = Remplace(mottrouve,”z”,”_”,SansCasse) “L_MOT” est un libellé informatif indiquant le nombre de lettres du mot, et le mot, masqué pour le moment. “Groupe_lettres” est un groupe créé avec les champs image des lettres de l’alphabet à cliquer. L_MOT = “Mot de ” + Taille(mottrouve) + ” lettres” + ” : ” + mottrouve Groupe_lettres..Etat = Actif Groupe_lettres..Visible = Vrai Le code qui précède est inséré dans un bouton “Nouvelle partie”. Le code suivant est inséré dans chaque champ image des lettres de l’alphabet à cliquer et donc à adapter. “Lettrepresente” est un booléen qui va nous permettre de déterminer si un essai est réussi ou manqué lettrepresente = Faux Parcours des positions de toutes les lettres “e” après attribution du mot non masqué “monmot” à la variable “MaChaîne”. La fonction PositionOccurrence(”Chaine initiale”,”chaine à rechercher”,rang,option) permet de rechercher une chaine dans une chaine et de récupérer sa position. Le résultat est un entier, 0 en cas de chaine non trouvée. MaChaîne est une chaine = monmot MaPosition est un entier = PositionOccurrence(MaChaîne,”e”, rangPremier,SansCasse) TANTQUE MaPosition <> 0 “mottrouve[[MaPosition]]” va permetre de remplacer le caractère situé en [[MaPosition]] dans la chaine mottrouve par “e” dans ce cas. La lettre a été trouvée, le booléen passe à vrai. L’essai est d’ores et déjà réussi mais il nous faut rechercher si “e” apparaît encore dans le mot. On passe donc au rang suivant dans la fonction “PositionOccurrence” et on reprend la boucle. mottrouve[[MaPosition]] = “e” lettrepresente = Vrai MaPosition = PositionOccurrence(MaChaîne,”e”, rangSuivant,SansCasse) FIN Traitement en fonction du résultat du booléen. Si le booléen est à faux, l’essai est manqué et nous exécutons une procédure locale “moinsunechance()” qui va calculer le nombre de chance restante. Si l’essai est réussi, booléen à vrai, on change le libellé “L_MOT” et on compare les chaines monmot (le mot de départ non retouché) et “mottrouve” (le mot proposé par le joueur), si elles sont identiques, le joueur gagne et en est informé sinon, on continue la partie. “I_E” est simplement le nom de l’image à cliquer représentant la lettre “e”, après appui on la passe en invisible afin que le joueur sache que cette lettre est épuisée. SI lettrepresente = Faux ALORS moinsunechance() I_E..Visible = Faux I_E..Etat = Inactif L_MOT = “Mot de ” + Taille(mottrouve) + ” lettres” + ” : ” + mottrouve SINON I_E..Visible = Faux I_E..Etat = Inactif L_MOT = “Mot de ” + Taille(mottrouve) + ” lettres” + ” : ” + mottrouve SI mottrouve = monmot ALORS L_MOT = “Bravo, vous avez trouvé : ” + monmot Groupe_lettres..Etat = Grisé FIN FIN Il nous reste à jeter un oeil à la procédure locale “moinsunechance() “. Rien de compliquer, juste un décompte numérique et une gestion de fin de partie en cas de “chance” = 0. chance = chance – 1 SI chance = 7 ALORS L_chance = “Chances restantes : 7″ SINON SI chance = 6 L_chance = “Chances restantes : 6″ SINON SI chance = 5 L_chance = “Chances restantes : 5″ SINON SI chance = 4 L_chance = “Chances restantes : 4″ SINON SI chance = 3 L_chance = “Chances restantes : 3″ SINON SI chance = 2 L_chance = “Chances restantes : 2″ SINON SI chance = 1 L_chance = “Chances restantes : 1″ SINON SI chance = 0 L_chance = “Chances restantes : 0″ L_MOT2 = “Vous avez perdu !” Groupe_lettres..Etat = Grisé FIN FenRepeint(F_Pendu) Voilà, un jeu du pendu fonctionnel. Nous l’agrémenterons dans de prochains tutoriels de plus d’options. Vous pouvez télécharger le jeu du pendu ici Vous pouvez télécharger les sources au format Windev 11 ici

Laisser une réponse