Programme Mastermind -Projet d'algo- Help

Fermé
ipood - 15 nov. 2009 à 22:29
 -LapS- - 7 déc. 2010 à 12:10
Bonjour à tous !! Alors voilà, je suis en IUT Géni Mécanique et Productique et notre prof d'Algo nous à demandé d'écrire la trace d'un petit programme (sur papier). En l'occurrence ici le célèbre jeu " Mastermind ". Je ne sais absolument pas par où commencer, comment m'y prendre (petite détail: je ne suis pas très doué dans cette dicipline ).

Je vous poste mon sujet :

" Mastermind:

1-But du programme

Ce programme servira de terrain de jeu dans une partie de Mastermind. En début de partie, le joueur choisira la longueur de la combinaison à deviner et le nombre maximum de propositions qu'il peut faire.

Le programme créera aléatoirement une suite de chiffres de 0 à 9.

Pour cela, vous pouvez utiliser la fonction Hasard : Hasard () est un réel "choisi par l'ordinateur", compris entre 0 et 1.

Ensuite,

- ile demandera au joueur de faire une proposition,

- il comparera la proposition du joueur avec sa combinaison pour lui indiquer combien de chiffres figurent à la même place dans les deux combinaisons, et combien figurent en plus, mais mal placés

- il affichera ces réponses et renouvellera ces actions tant que la partie n'est pas finie; la partie s'arrête, soit parce que le joueur a trouvé, soit parce qu'il a atteint le nombre maximum de propositions faisables.

2- Développement du programme

Donner les variables et les constantes globales du programme:

- le nombre de chiffres pour une combinaison,

- le nombre maximum d'essais,

-les différents tableaux qui contiennent la combinaison à trouver ou les propositions du joueur

- etc ...

Ecrire en détail la création de la combinaison. "

Voilà, merci beaucoup à tous ceux qui auront pris la peine de lire mon message et merci à ceux qui m'aideront à avancer dans mon projet.

(PS: je ne demande pas la trace au complet, mais seulement quelques morceaux ou bien un squelette, ou encore une brève ébauche ...)

6 réponses

adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
16 nov. 2009 à 11:10
Bonjour

je vais tenté ma chance et essayé de te filer un coup de main
voila comment je procéderais

//demande des informations a l'utilisateur taille combinaisons + nombre de tentatives
x = nb tentative
y = taille combinaison

//créer un tableau T qui contiendras la combinaison
longueur tableau = y

// boucle pour créer la combinaison a trouver
for (int i =0, i<y, i++)
T[i] = (int) Hasard ()*10 // ici on génère un chiffre en 0 et 9 aléatoirement

//boucle sur le nombre de tentative
int i =1
bb = false
while (i<x OU bb = false){
// demande une combinaison a l'utilisateur qu'on placera dans un tableau T2
T2 = saisie de l'utilisateur

//test si correct
parcours des tableaux T et T2 comparaison des valeurs
incrémenter compteur pour les valeurs bien placer....
si c'est bon on sort de la boucle (bb = true)
sinon on boucle... (i++)

}

//Affiche réponse
si bb = true affiche victoire
sinon défaite

//Affiche combinaison


en espérant t'avoir aidé un peu

Adns
0
Merci beaucoup pour ton aide Adns, pour le début j'avais la même chose que toi ^^ mais là où ça se complique pour moi c'est la partie boucle. Je ne comprends pas la notation " for (int i =0, i<y, i++) " surtout le i++. Désolé de mon ignorance, mais je débute alors ce n'est pas très très facile =).

Merci beaucoup encore pour ton aide.
0
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
17 nov. 2009 à 14:09
ya pas de problème pour gravir une montagne il faut commencer par le pied ;)

la boucle for(int i =0 ; i <y; i++)
c'est une simple boucle qui va tourner "y" fois

le i++ aurai pu être remplacer par i=i+1 c'est en quelque sorte une autre façon de l'écrire ;)

Adns
0
Ahh Ok merci je comprends mieux maintenant ! J'ai essayeé de développer un peu plus mais je ne comprend pas l'intérêt de la fonction Hasard. En effet elle choisie un nombre compris entre 0 et 1. Mais il faudrait entre 1 et 9, j'ai donc penseé à multiplier le résultat de la fonction par 10 Exemple: la fonction prend au hasard 0.2, donc x 10 -->2 ainsi on peut obtenir des résultats entre 1 et 9 ... Je ne sais pas si c'est très claire ^^.
Merci encore
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
18 nov. 2009 à 09:44
oui c'est ce que je t'ai fais sur cette ligne

T[i] = (int) Hasard ()*10

explication

ta fonction hasard génère un nombre etre 0 et 1
exemple 0.321654987

tu multiplis par 10
3.21654987

et ensuite tu cast avec (int) pour obtenir que la partie entiere
==> 3

ensuite tu l'affecte a la case i du tableau
T[i] = 3


Adns
0
Alors voila, j'ai ce même programme et je bloque plus ou moins. N'étant pas très bon dans cette matière (il faut le dire) je comprend pas grand chose. J'ai fait une liste de ce que je pense être utile pour le programme et je ne sais pas s'il manque des éléments ou non. Je vous met la liste Ici:
+Créer deux tableaux, un pour la combinaison faite par l'ordinateur et un pour la combinaison proposée par l'utilisateur.
(Longueur du tableau de combinaison ordinateur = taille comb. Où taille comb = taille de combinaison de l'ordinateur)
+Demander à l'utilisateur la taille de la combinaison et le nombre de tentatives où :
taille comb = taille de la combinaison
nbre tent = nombre de tentatives
+Créer une boucle pour trouver la combinaison.
(Utiliser la variable hasard. Pour ce faire multiplier la variable hasard par 10, tronquer au chiffre entier et placer ce chiffre dans une case du tableau.)
+L'utilisateur saisit sa combinaison
+Vérification de la combinaison par l'ordinateur
+Réponse de l'ordinateur suite à la combinaison de l'utilisateur.

Pour la création des tableaux, la longueur de la combinaison et la boucle pour trouver la combinaison je pense pouvoir réussir mais je bloque au niveau de la vérification de la combinaison par l'ordinateur et la réponse de l'ordinateur suite à cette vérification. Ne comprenant pas très bien cette matière, je ne comprend pas la plupart des lignes énoncées là haut donc si on pouvait m'expliquer au mieux les lignes ça m'arrangerait. Merci d'avance pour votre réponse et bonne journée!
0