Problème sur un Mastermind... aidez-moi svp !!

louloute26 Messages postés 4 Date d'inscription lundi 15 mai 2006 Statut Membre Dernière intervention 21 mai 2006 - 15 mai 2006 à 22:43
window62 Messages postés 1 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 19 mai 2008 - 19 mai 2008 à 21:23
Salut !
Je suis débutante en VB, j'apprends ça en cours, et j'ai fait un Mastermind comme projet noté.
Seule ombre au tableau : ça ne marche pas ! Ca fait bien 2 semaines que je passe des heures à m'arracher les cheveux dessus, mais je ne trouve pas la faille. J'ai demandé des conseils à ma prof et elle n'a trouvé aucune erreur de code, normalement ça devrait fonctionner. Elle m'a alors conseillé de faire appel à des forums de spécialistes, d'où ma requête.
Voilà mon code :

Dim rejouer
As
Integer



Dim quitter
As
Integer



Dim deviné
As
Boolean



Dim nbbon, nbplace
As
Integer



Dim i, j, c, k
As
Integer



Dim mystere(4)
As
Integer



Dim prop(39, 4)
As
Integer



Dim stockprop(4)
As
Integer



Dim stockmyst(4)
As
Integer


rejouer = 6


quitter = 6


MsgBox(
"Règles du jeu Mastermind : le but est de déchiffrer la combinaison mystère à 5 chiffres compris entre 0 et 4. Pour cela vous ferez des propositions qui seront analysées : pour chaque proposition vous aurez le nombre de chiffres bien placés et le nombre de chiffres mal placés. A partir de là, à vous de déchiffrer la combinaison en un nombre d'essais minimum. Bonne chance !", ,
"Règles du jeu")



Do
While rejouer = 6



' --- Initialisation des variables ---


deviné =
False


nbbon = 0


nbplace = 0


i = 0


j = 0


c = 0


k = 0



For i = 0
To 4


mystere(i) = 8



Next



For i = 0
To 4



For j = 0
To 4


prop(i, j) = 8



Next



Next



For i = 0
To 4


stockmyst(i) = 8



Next



For i = 0
To 4


stockprop(i) = 8



Next



' --- Combinaison mystère ---



For i = 0
To 4


Randomize()


mystere(i) = Int(Rnd() * 5)


Next


MsgBox(mystere(0))


MsgBox(mystere(1))


MsgBox(mystere(2))


MsgBox(mystere(3))


MsgBox(mystere(4))



'--- Lancement du jeu ---



Do
While deviné =
False


nbbon = 0


nbplace = 0



' --- Copie du tableu mystere (pour manipuler) ---



For i = 0
To 4


stockmyst(i) = mystere(i)



Next



' --- Remplir le tableau prop ---



For i = 0
To 4


prop(c, i) = InputBox(
"Proposition pour la case " & i + 1 &
" de la combinaison",
"Proposition de combinaison")



Next



' --- Copie du tableau prop (pour manipuler) ---



For i = 0
To 4


stockprop(i) = prop(c, i)



Next



' --- Comparer la combinaison mystere et la proposition ---



For i = 0
To 4



If stockprop(i) = stockmyst(i)
Then


nbbon = nbbon + 1


stockprop(i) stockmyst(i) 8



Else :
For j = 0
To 4



If stockprop(i) <> 8
Then



If stockprop(i) = stockmyst(j)
Then



If stockmyst(j) <> stockprop(j)
Then


nbplace = nbplace + 1


stockprop(i) stockmyst(j) 8



End
If



End
If



End
If



Next



End
If



Next



' --- Résultats ---



If nbbon < 5
Then


MsgBox(
"Vous avez " & nbbon &
" chiffre(s) bien placé(s) et " & nbplace &
" chiffre(s) mal placé(s). Courage !", ,
"Résultats")



' ---Affichage des propositions ---



For k = 0
To c


MsgBox(
"Proposition " & k + 1 &
" : " & prop(k, 0) & prop(k, 1) & prop(k, 2) & prop(k, 3) & prop(k, 4), ,
"Combinaisons proposées")



Next


c = c + 1



If c > 6
Then


quitter = MsgBox(
"Vos neurones sont à bout ? Marre de chercher ? Allez, soyez courageux ! Sinon, cliquez sur Non, mais honte à vous !!", MsgBoxStyle.YesNo,
"Continuer ?")



If quitter <> 6
Then


MsgBox(
"Pfff... Abandon... Un peu de persévérance ! Pour info, la combinaison était : " & mystere(0) & mystere(1) & mystere(2) & mystere(3) & mystere(4) &
".", ,
"Solution")



Exit
Sub



End
If



End
If



Else


deviné =
True


MsgBox(
"Bravo ! Vous avez réussi à déchiffrer la combinaison en " & c + 1 &
" essais.", ,
"Gagné !!")


rejouer = MsgBox(
"Souhaitez-vous refaire une partie ?", MsgBoxStyle.YesNo,
"Rejouer ?")



End
If



Loop



Loop

Pour la petite explication, en fait le tableau mystere stocke les 5 chiffres (de 0 à 4) de la combinaison, définis aléatoirement. Le tableau prop est rempli par l'utilisateur, ce sont ses propositions. La variable nbbon représente le nombre de chiffres bien placés (de la proposition) et nbplace le nombre de chiffres mal placés.
Et pour comparer les 2 combinaisons (mystere et prop), je stocke le contenu de chacun des 2 tableaux dans un autre tableau : stockmyst et stockprop, sur lesquels on va pouvoir faire des manipulations, puisque ce sont des copies.
Si les chiffres comparés sont les mêmes, pas de problème, on incrémente nbbon de 1 et on efface le contenu des 2 cases en question. Quand je dis effacer, ce n'est pas vraiment effacer, je le mets à 8 en fait, c'est-à-dire une valeur bidon, autre que des chiffres de 0 à 4.
En revanche, si les chiffres sont mal placés, ça se complique un peu. Dans ce cas, on compare le chiffre en question avec tous les chiffres de mystere, jusqu'à tomber sur le même chiffre (ou pas, si ce chiffre n'est pas du tout dans la combinaison mystere). Si on tombe sur le même chiffre, on incrémente nbplace de 1 puis on efface le contenu des 2 cases en question. Ca évite que si le même chiffre revient plusieurs fois dans la proposition, il soit compté 2 ou plusieurs fois comme nbplace alors qu'il n'y en a qu'1 dans la combinaison mystere.
Voilà en gros l'explication de ma logique. Normalement, ça devrait marcher. Parfois c'est le cas, mais parfois ça ne marche pas. Et ni moi ni ma prof ne comprenons pourquoi...
J'espère que quelqu'un ici pourra m'éclairer, je dois rendre mon projet dans moins d'une semaine, et pour ma satisfaction personnelle j'aimerais bien que mon Mastermind marche quand je le rendrai...
Merci bien de vous pencher sur mon cas.
Et bonne chance, bon courage !

3 réponses

jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 1
29 juin 2006 à 20:58
Tien va voir le code que j'ai déja fait pour le jeux mastermind
tu pourra t'en inspiré si tu veux
je l'avais fait pour un cour aussi
[size=4]The J/size=4 [B)]
0
eribess Messages postés 1 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 17 décembre 2006
17 déc. 2006 à 12:56
dans ce jeu l'ordinateur choisit 5 caracteres de maniere aleatoire .le but du jeu est d'essayer  de decouvrir le plus rapidement possible la combinaison   choisie par l'ordinateur.
ensuite l'utilisateur propose des suites de 5 caracteres et l'ordinateur lui indique les positions des caracteres  placés.la partie se tremine lorsque l'utulisateur aura decouvert  la combinaison inconnue.on lui indique le nombre de coups qui ont été necessaires pour decouvrir la combinaison inconnue.
ecrire un algor ithme correspondant.

merci de m' aider
0
window62 Messages postés 1 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 19 mai 2008
19 mai 2008 à 21:23
C'est pas bien de faire faire les tps noté de VB par des autres. Cherche un peu tu finiras bien par trouver. c'est pas pour rien que ta beaucoup d'heure pour le faire.
Un con qui marche avance toujours plus vite qu'un intelectuel assis.
0
Rejoignez-nous