louloute26
Messages postés4Date d'inscriptionlundi 15 mai 2006StatutMembreDernière intervention21 mai 2006
-
15 mai 2006 à 22:43
window62
Messages postés1Date d'inscriptionsamedi 14 octobre 2006StatutMembreDernière intervention19 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")
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 !
jsem2k1
Messages postés125Date d'inscriptionsamedi 11 décembre 2004StatutMembreDernière intervention12 août 20081 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)]
eribess
Messages postés1Date d'inscriptionjeudi 14 décembre 2006StatutMembreDernière intervention17 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.
window62
Messages postés1Date d'inscriptionsamedi 14 octobre 2006StatutMembreDernière intervention19 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.