Salut les amis !!
Voila j'ai développé un mastermind en vb6 et je rencontre un petit problème :
je prends par exemple le bleu :
Quand dans la solution il y a une fois le bleu et que le joueur le propose plusieurs fois alors il va considérer que la couleur est présente plusieurs fois en la plaçant bien ou mal.

autre exemple, si je propose 4 fois la même couleur et que celle ci est présente une fois dans la solution alors le résultat de la vérification sera :
1 bien placé et 3 mal placés ...

alors qui ne devrai y avoir qu'un bien placé ou mal placé ...

j'espère avoir été clair ...
voici mon code ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
 
'affiche les boutons de correction lors du clic sur le bouton de vérification.
Private Sub verifier_Click(Index As Integer)
Dim x As Integer
Dim v As Integer
Dim compteur As Integer ' compte le nombre de pions blancs pour déterminer la fin de la partie
x = a
compteur = 0                                     ' Initialise la valeur du compteur à 0
 
For i = a To a + 3                               ' Selectionne ligne par ligne
    If pion(i).FillColor = couleurpc(i - a) Then ' Si la couleur du pion est égale à la couleur du pc alors
       correct(x).FillColor = 16777215           ' Définit la couleur d'un pion de correction en blanc
       correct(x).Visible = True                 ' Affiche le pion de correction
       x = x + 1                                 ' Incrémente la variable x afin de passer au pion de correction suivant
       compteur = compteur + 1                   ' Incrémente le compteur
    Else
       For j = a To a + 3
          If (pion(i).FillColor = couleurpc(j - a)) And (i <> j) Then ' Si la couleur du pion est égale à la couleur du pc alors mais que la place du pio n'est pas identique
             correct(x).FillColor = 0                                 ' Définit la couleur d'un pion de correction en noir
             correct(x).Visible = True                                ' Affiche le pion de correction
             x = x + 1                                                ' Incrémente la variable x afin de passer au pion de correction suivant
             j = 100
          End If
       Next j
    End If
Next i
For i = x To a + 3
   correct(i).FillStyle = 1                       ' Sinon définit le style du pion à 1 (transparent)
   correct(i).Visible = True                      ' Affiche le pion de correction
Next i
For i = a To a + 3
   VScroll1(i).Visible = False                    ' Masque les scrollbars de la ligne en cour afin que l'utilisateur ne puisse changer sa selection
Next i
verifier(Int(a / 4)).Visible = False              ' Masque le bouton vérifier
a = a + 4                                         ' Incrémente a de 4 afin de passer au bouton vérifier suivant
 
'teste le compteur pour savoir si les 4 pions de corrections sont blanc et annoncer le fin de la partie
 
Dim reponse$
If compteur = 4 Then                'Si 4 correct blanc alors
   Timer1.Enabled = False           'Extinction du timer
 
   pion(v).Visible = False          'Masquage des pions suivants
   pion(v + 1).Visible = False      '
   pion(v + 2).Visible = False      '
   pion(v + 3).Visible = False      '
 
   VScroll1(v).Visible = False      'Masquage des scrollbars suivantes
   VScroll1(v + 1).Visible = False  '
   VScroll1(v + 2).Visible = False  '
   VScroll1(v + 3).Visible = False  '
 
'Informe l'utilisteur que la partie est fini est qu'il a remporté la manche
 
   MsgBox "bravo vous avez trouvé la combinaison"
 
   Dim reponseinscription              'Déclaration de la variable, avec reponseinscription comme nom
   reponseinscription = MsgBox("Voulez vous vous inscrire aux meilleurs scores", vbYesNo + vbQuestion, "Incription aux meilleurs scores ?")
    Select Case reponseinscription
       Case vbYes                           'Si la case oui est selectionnée alors
                                            'Demande du nom par une inputbox
          Dim nom As String
          Do                              'Le do sert de controle tant que l'utilisateur n'as rien saisi
          nom = InputBox("veillez saisir votre nom s'il vous plait.", "Inscription aux meilleurs scores")
          Loop Until nom <> ""
          If Len(nom) > 6 Then
              nom = Left(nom, 6)
          End If
          ' Vérifie que l'utilisateur a saisi quelque chose sinon on boucle et on réaffiche l'input box
          ' Affiche le nom ainsi que le temps réalisé par le joueur
          MsgBox (nom + " vous avez réalisé un temps de " + Text1 + " secondes")
          ' Ajoute le nom et le temps dans la listbox
          bonscores.scores.AddItem ("     " + nom + "                                              " + Text1)
          'Affiche les scores
          bonscores.Show
          'Enregistre les scores
          Call enregistre(bonscores.scores)
 
       Case vbNo                                                 'Si la case non est selectionnée alors
          MsgBox "Fin de la partie, félicitation", vbInformation 'Indique à l'utilisateur que la partie est finie
    End Select
    Exit Sub 'Quitte la private sub afin que les tests suivant ne s'éffectuent pas
End If
 
v = ((Index + 1) * 4)
If v <= 31 Then                 ' Si v <= 31 alors
pion(v).Visible = True          ' Affiche les pions suivants
pion(v + 1).Visible = True
pion(v + 2).Visible = True
pion(v + 3).Visible = True
VScroll1(v).Visible = True
VScroll1(v + 1).Visible = True  ' Affiche les scrollbars suivantes
VScroll1(v + 2).Visible = True
VScroll1(v + 3).Visible = True
Else                            ' Sinon
MsgBox "Vous avez perdu ! La soulition était :", vbExclamation ' Affiche une msg box qui annonce que le joueur a perdu
For k = 0 To 3
Timer1.Enabled = False                                         ' Coupe le timer
combinaison(k).Visible = True                                  ' Affiche la combinaison qu'il falait trouver
Next k
End If
 
End Sub

Merci d'avance !!!