[Tutoriel Windev] Jeu du pendu, ajout des statistiques et gestion utilisateur (part 2)

Nous avons défini ici les fonctions de base de notre pendu. Le résultat obtenu est fonctionnel mais manque tout de même d’esthétique et de fonctionnalités. Commençons par gérer les statistiques propres à chaque utilisateur. Pour ce faire nous aurons besoin d’une base d’utilisateur contenant l’identifiant, le nombre d’essai réussi et raté. Avec cela nous pourrons afficher le pourcentage de réussite sous forme de texte ou de graphique et dans le cas de plusieurs utilisateurs, établir un classement de performance. Le pas à pas et le code dans la suite Création de la base Utilisateur La base comportera donc 3 rubriques : Identifiant de type texte sur 32 caractères E_reussi, nombre d’essais réussis de type numérique au format 999 999 999 E_rate , nombre d’essai manqué de type numérique au format 999 999 999 Mise en place de l’identification et de l’ajout de nouveaux utilisateursCe dont nous avons besoin : Un champ combo “Identifiant” lié à la rubrique Identifiant de notre base Utilisateur. Ce champ sera en sélection simple, sans saisie. (C_identifiant) Un bouton “Nouveau ?” qui lancera le processus de création d’identifiant (B_New_id). Une fenêtre popup pour saisir la création d’identifiant (P_identifiant), contenant un champ de sasie (S_Saisie), un bouton de validation et d’annulation (B_OK et B_Cancel). Enfin, une requête (R_Rech_Id ) qui va servir à ne pas créer de doublons dans notre base utilisateur //Code du bouton Nouveau Ouvre(P_Identifiant) //Code des boutons B_OK et B_Cancel //Cancel S_Saisie = “” Ferme(P_Identifiant) //OK magauche est une chaîne Ajout_identifiant est une chaîne magauche = Gauche(S_Saisie,1) doublon est un booléen //Test de chaine non nulle et ne commençant pas par un espace SI S_Saisie <> “” ET magauche <> ” ” ALORS //Requête pour éviter les doublons, suite de l’exécution en fonction de la valeur du booléen “doublon” R_Rech_ID.Param1 = S_Saisie HExécuteRequête(R_Rech_ID) doublon = HLitPremier(R_Rech_ID) SI doublon = Faux ALORS Utilisateur.Identifiant = S_Saisie HAjoute(Utilisateur) Ferme(P_Identifiant) SINON Erreur(”Cette identifiant existe déjà”) RepriseSaisie(S_Saisie) FIN SINON Erreur(”Votre identifiant n’est pas correct”,”Verifiez les points suivants : “,”1.Votre saisie est vide”,”2. Votre identifiant débute par un espace”) RepriseSaisie(S_Saisie) FIN //Code de la requête SELECT Utilisateur.Identifiant AS Identifiant FROM Utilisateur WHERE Utilisateur.Identifiant = Param1 Gestion des statistiques Lorsque l’utilisateur sera identifié, nous allons afficher ses statistiques courantes que nous recalculerons après chaque essai. Nous allons, dans un premier temps afficher ces statistiques dans un libellé. Par la suite nous créerons un graphique et un classement. Le code sera inséré à trois endroits : A chaque modif du champ combo “C_identifiant” Après chaque essai réussi Après chaque essai raté Nous pourrions réutilisé la Requête “R_Rech_Id” en ajoutant les rubriques E_reussi et E_rate mais pour l’exemple nous allons créer une nouvelle requête (Req_Stats) dont le code sera le suivant : SELECT Utilisateur.IDUtilisateur AS IDUtilisateur, Utilisateur.Identifiant AS Identifiant, Utilisateur.E_reussi AS E_reussi, Utilisateur.E_rate AS E_rate FROM Utilisateur WHERE Utilisateur.Identifiant = Param1 Les variables d’utilisateurs et de taux de réussite et échec seront des variables globales de notre fenêtre principale (util_id, taux_reussite et taux_echec). // Code de Selection d’une ligne de C_Identifiant marecherche est une chaîne indice est un entier trouve est un booléen Essai_reussi, Essai_rate sont des entiers //Récuperation de l’indice du champ combo indice = C_identifiant //Recuperation du texte du champ combo marecherche = C_identifiant[indice]//Passage de paramètre à la requête Req_Stats.Param1 = marecherche //Execution de la requete et récupération des valeurs HExécuteRequête(Req_Stats) trouve = HLitPremier(Req_Stats) SI trouve = Vrai ALORS util_id = Req_Stats.Identifiant Essai_reussi = Req_Stats.E_reussi Essai_rate = Req_Stats.E_rate SINON Erreur(”Aucunes données pour cet identifiant”,”La base de données est peurt-être endommagée, recréer l’identifiant”) FIN //Gestion des résultats et affichage des taux //Creation préalable de deux libellés pour l’affichage “l_reussite” et “l_echec” SI Essai_reussi = 0 ALORS l_reussite = “Aucun essai réussi pour le moment” SI Essai_rate = 0 ALORS L_echec = “Aucun essai raté pour le moment” SINON taux_echec = ((Essai_reussi + Essai_rate)*100)/2 L_echec = “Taux de réussite : ” + taux_reussite + ” % ” FIN SINON taux_reussite = ((Essai_reussi + Essai_rate)*100)/2 l_reussite = “Taux de réussite : ” + taux_reussite + ” % ” FIN Incrementer les statistiques  Voilà pour le code d’initialisation des statistiques, passons à la modification de celles-ci en cas d’échec ou de réussite. Sensiblement pareil qu’au code précédent en fin de compte, nous allons tout de même devoir ajouter une requête UPDATE pour incrémenter une des deux rubriques gérant les essais. Nous allons donc récupérer les compteurs d’essai de l’utilisateur en cours via la requête utilisée précédemment “Req_Stats” et sauvegarder les essais réussis et manqués dans deux variables numériques(”vnum_reussi” et “vnum_rate”). Variables que nous incrémenterons d’une unité selon le cas. // Code de la requête UPDATE pour les essais réussis UPDATE Utilisateur SET E_reussi = {Param2} WHERE Utilisateur.Identifiant = {Param1} //Code de la requête UPDATE pour les essais manqués UPDATE Utilisateur SET E_rate = {Param2} WHERE Utilisateur.Identifiant = {Param1} // Les paramètres selon la requête UPDATE utilisée Req_Update_reussi.param2 = nvum_reussi + 1 Req_Update_reussi.param1 = util_id OU Req_Update_rate.param2 = numv_rate + 1 Req_Update_rate.param1 = util_id Il ne reste plus qu’à raffraîchir les statistiques avec le code utilisé à la sélection de l’utilisateur. // Raffraîchir les stats Req_Stats.Param1 = util_id //Execution de la requete et récupération des valeurs HExécuteRequête(Req_Stats) trouve = HLitPremier(Req_Stats) SI trouve = Vrai ALORS Essai_reussi = Req_Stats.E_reussi Essai_rate = Req_Stats.E_rate SINON Erreur(”Aucunes données pour cet identifiant”,”La base de données est peurt-être endommagée, recréer l’identifiant”) FIN SI Essai_reussi = 0 ALORS l_reussite = “Aucun essai réussi pour le moment” SI Essai_rate = 0 ALORS L_echec = “Aucun essai raté pour le moment” SINON taux_echec = ((Essai_reussi + Essai_rate)*100)/2 L_echec = “Taux de réussite : ” + taux_reussite + ” % ” FIN SINON taux_reussite = ((Essai_reussi + Essai_rate)*100)/2 l_reussite = “Taux de réussite : ” + taux_reussite + ” % ” FIN Ce qui va venir… Petit à petit ce petit jeu du pendu prend tournure avec actuellement : Une base de données de mot à trouver, personnellement pour cette exemple j’ai récupéré et adapté la base fournie par Lexique 3. Une gestion des chances restantes Une gestion des essais réussis ou manqués avec statistiques par utilisateurs Une gestion des utilisateurs (que nous pourrons complèter par des renseignements personnels par exemple pour des statistiques plus précises) Dans les prochaines parties de ce tutoriel, vous pourrez trouver : La mise en graphe des statistiques avec possibilité d’export et d’impression Le système de classement La gestion d’affichage d’une image en fonction des chances restantes pour un visuel plus réussi Plus encore… Toute suggestion est la bienvenue, pour rappel les codes exemples fournis ici ne sont qu’une façon de développer, les codes doivent être sujet à optimisation. Si vous copier/coller les codes dans Winde, n’oubliez pas d’utiliser la réindation automatique du code (CTRL-R). Tenez vous informé en vous abonnant au flux RSS

Laisser une réponse