TP: Realisation du Jeu du Pendu en VBA
Salut a tous,
je voudrais réaliser le jeu du Pendu en console dont voici une capture d’écran:
Bienvenue dans le Pendu !
Il vous reste 10 coups a jouer
Quel est le mot secret ? ******
Proposez une lettre : E
Il vous reste 9 coups a jouer
Quel est le mot secret ? ******
Proposez une lettre : A
Il vous reste 9 coups a jouer
Quel est le mot secret ? *A****
Proposez une lettre : O
Il vous reste 9 coups a jouer
Quel est le mot secret ? *A**O*
Proposez une lettre :
--------------------------------------------------------------------------------------
voici le déroulement d'une partie
Supposons que le mot caché soit ROUGE.
Vous proposez une lettre à l'ordinateur, par exemple la lettre A. L'ordinateur vérifie si cette lettre se trouve dans le mot caché.
À partir de là, deux possibilités :
la lettre se trouve effectivement dans le mot : dans ce cas, on dévoile le mot avec les lettres qu'on a déjà trouvées ;
la lettre ne se trouve pas dans le mot (c'est le cas ici, car A n'est pas dans ROUGE) : on indique au joueur que la lettre ne s'y trouve pas et on diminue le nombre de coups restants. Quand il ne nous reste plus de coups (0 coup), le jeu est terminé et on a perdu.
Dans un « vrai » Pendu, il y aurait normalement le dessin d'un bonhomme qui se fait pendre au fur et à mesure que l'on fait des erreurs. En console, ce serait un peu trop difficile de dessiner un bonhomme qui se fait pendre rien qu'avec du texte, on va donc se contenter d'afficher une simple phrase comme « Il vous reste X coups avant une mort certaine ».
Supposons maintenant que le joueur tape la lettre G. Celle-ci se trouve dans le mot caché, donc on ne diminue pas le nombre de coups restants au joueur. On affiche le mot secret avec les lettres qu'on a déjà découvertes, c'est-à-dire quelque chose comme ça :
Mot secret : ***G*
Si ensuite on tape un R, comme la lettre s'y trouve, on l'ajoute à la liste des lettres trouvées et on affiche à nouveau le mot avec les lettres déjà découvertes :
Mot secret : R**G*
Le cas des lettres multiples
Dans certains mots, une même lettre peut apparaître deux ou trois fois, voire plus !
Par exemple, il y a deux Z dans PUZZLE ; de même, il y a trois E dans ELEMENT.
Que fait-on dans un cas comme ça ? Les règles du Pendu sont claires : si le joueur tape la lettre E, toutes les lettres E du mot ELEMENT doivent être découvertes d'un seul coup :
Mot secret : E*E*E**
Il ne faut donc pas avoir à taper trois fois la lettre E pour que tous les E soient découverts.Bonjour Jean, bonjour le forum,
Regarde le lien trouvé ici : https://www.excel-pratique.com/fr/telechargements/jeux/jeu-du-pendu-no42
bonjour ThauTheme,
merci pour le lien que tu m'as envoyé mais j'ai besoin de la version du Pendu avec macro.
bonjour le forum, voici un exemple du pendu en console vba.
Sub ProjetJeuDuPendu()
Dim motSecret As String
Dim lettre As String
Dim lgMot As Long
Dim coupRestant As Long
Dim lettreTrouvee() As Variant
Dim alerte As String
Dim message As String
Dim i As Integer
Dim p As Long
Dim Dico() As Variant
message = MsgBox("xxx Bienvenu xxx ", vbInformation, "Jeu du PENDU")
motSecret = PiocherMot(motSecret, Dico)
lgMot = Len(motSecret)
ReDim lettreTrouvee(lgMot)
coupRestant = 10
Do While coupRestant > 0 And Gagne(lettreTrouvee, motSecret) = 0
alerte = MsgBox("Il Vous Reste : " & coupRestant & " Essais", vbInformation, "Jeu du PENDU")
Call MasqueMot(lettre, motSecret, lettreTrouvee, p)
lettre = UCase(lettre)
If lettre = "" Then
Do While (lettre = "")
lettre = InputBox("Quel Est Le Mot Secret : " & motSecret & vbLf & vbLf & "Proposez Une Lettre : ", "Jeu du PENDU")
lettre = UCase(lettre)
Loop
End If
If Appartient(lettre, motSecret, lettreTrouvee) = False Then
coupRestant = coupRestant - 1
End If
If Gagne(lettreTrouvee, motSecret) = 1 Then
alerte = MsgBox("Gagne !" & Chr(10) & Chr(10) & "C'etait bien : " & motSecret, vbInformation, "Jeu du PENDU")
Else
Perdu coupRestant, motSecret
End If
Loop
End Sub