Le pendu

Signaler
Messages postés
2
Date d'inscription
lundi 16 janvier 2006
Statut
Membre
Dernière intervention
19 janvier 2006
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
bonjour à tous
je suis debutante en programmation et j'ai un probleme avec l'apparition des images du pendu quand la lettre n'est pas bonne,elles apparaissent toutes ensembles.j'aimerai que quelqu'un m'aide svp.merci!

3 réponses

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Salut,


Pour résoudre ton problème, il faut que tu déposes le code qui
affiche tes images en fonction de la lettre tapée. On y verra plus
clair.

Sans ce code, on ne saura pas te dire où tu te trompes.




Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Désolé, je dépose ton code ici pour que d'autres personnes puissent
investiguer davantage. Je n'ai pas l'IDE VB6 sous la main, donc je peux
juste voir s'il y a des aberrations dans le code, mais pas le tester.

J'ai noté ci dessous les points qui me semblent incorrects. Mais il
semble y avoir de nombreux problèmes d'algo. Je laisse à d'autres le
soin de creuser davantage le problème.






Option Explicit
Dim lesmots(10) As String
Dim nbsecret As Integer
Dim i As Integer
Dim deja As Integer
Dim k As Integer
Dim nblettre As Single 'est le nombre de lettres du mot secret
Dim nbtrouve As Single 'est le nombre de lettres trouvées
Dim bon As Single 'une lettre est bonne
Dim ajim As Single 'ajoute une image si la lettre n'est pas bonne

'l'utilisateur a cliqué sur le bouton jouer
Private Sub Btnjouer_Click()
bon = 0
deja = 0
ajim = 0
'For i = 1 To Len(secret.Text)

Do Until InStr(lpp.Text, secret.Text) > 0
For i = 1 To Len(secret.Text)
Etlettrespropose.Text = lpp.Text
ajim = ajim + 1
'i = i + 1
Next i



' A la sortie de ta boucle FOR, ajim vaut systématiquement Len(secret.Text)

' Je pense que ton problème est ici.

' ajim ne peut donc pas valoir 0, ni 1, ni 2, ...


If ajim = 0 Then
pied.Visible = False
poteau.Visible = False
horizontal.Visible = False
verticale.Visible = False
tete.Visible = False
corps.Visible = False
Else
If ajim = 1 Then
pied.Visible = True
Else
If ajim = 2 Then
poteau.Visible = True
Else
If ajim = 3 Then
horizontal.Visible = True
Else
If ajim = 4 Then
verticale.Visible = True
Else
If ajim = 5 Then
tete.Visible = True
Else
If ajim = 6 Then
corps.Visible
= True
MsgBox
"vous avez perdu!", vbExclamation
'MsgBox
"le mot est" & secret
End If
End If
End If
End If
End If
End If
End If
If deja = 1 Then
MsgBox "la lettre a déja été proposée!", 16
End If
If bon = 1 Then
secret = secret & "*"
ajim = 0
End If
Loop

'If InStr(lpp.Text, secret.Text) > 0 Then
For i = 1 To Len(secret.Text)
If (UCase(lpp.Text)) = Mid(secret, i, 1) Then
secret = secret & "*"
Show secret
End If

Next i
'secret = Val(secret.Text)
'End If
MsgBox "le mot est" & secret
End Sub

'l'utilisateur a cliqué sur le bouton rejouer
Private Sub BtnRejouer_Click()
Form_Load
lpp.SetFocus
End Sub

Private Sub Form_Click()
'lorsque l'utilisateur clique sur la feuille en dehors des zones de controle
MsgBox "cliquez sur un bouton ou sur une zone de sortie", 0 + 48, "message d'utilisation"
End Sub

Private Sub Form_Load()

lesmots(1) = "ARBUSTE"
lesmots(2) = "MANIPULER"
lesmots(3) = "ANTICORPS"
lesmots(4) = "SOLEIL"
lesmots(5) = "MONTRE"
lesmots(6) = "VIRAGE"
lesmots(7) = "JOUEUR"
lesmots(8) = "MARIAGE"
lesmots(9) = "REVEIL"
lesmots(10) = "REUSSITE"
'chargement de la feuille form_load

secret.Text = "*"
lpp.Text = ""
Etlettrespropose.Text = ""
pied.Visible = False
poteau.Visible = False
horizontal.Visible = False
verticale.Visible = False
tete.Visible = False
corps.Visible = False
Randomize Timer ' Pour ne pas avoir toujours les mots qui sortent dans le meme ordre

nbsecret = Int(Rnd * 10) + 1 ' Sinon, le mot REUSSITE NE TOMBERA JAMAIS
secret = lesmots(nbsecret) ' secret a déjà été initialisé à "*" ... que veux-tu faire avec cette variable ?

'pour que le bouton jouer ne soit pas grisé
btnjouer.Enabled = True
'pour centrer la feuille
Left = (Screen.Width - Width) / 2
Top = (Screen.Height - Height) / 2
Etlettrespropose.Clear 'efface la zone de liste

End Sub

'pour verifier si la touche return a été enfoncée lorsqu'une touche a été enfoncée dans la zone de saisie lpp nommée
Private Sub lpp_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
btnjouer.Enabled = True
btnjouer.SetFocus
End If
End Sub

'pour verifier si la touche return a été enfoncée lorsqu'une touche a été enfoncée dans la zone de saisie lpp nommée
'Private Sub secret_KeyPress(KeyAscii As Integer)
'If KeyAscii = 13 Then
'btnjouer.Enabled = True
'lpp.SetFocus
'End If
'End Sub








Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Bin juste une petite remarque de syntaxe :

Quand on fait une série de test sur un même valeur, un petit select case n'est parfois pas du luxe (Sans remettre en caus l'estétisme de ton indentation) :

select case ajim
case 1
pied.Visible = True
case 2
poteau.Visible = True
case 3
horizontal.Visible = True
case 4
verticale.Visible = True
case 5
tete.Visible = True
case 6
corps.Visible = True
MsgBox "vous avez perdu!", vbExclamation
'MsgBox "le mot est" & secret
end select

C'est un peu plus court.

Concernant l'algo, je dirais que le do until à de bonne chance de boucler un bout de temps. A part ça...