Algo du jeu mastermind
rafale69300
Messages postés
93
Statut
Membre
-
rafale69300 Messages postés 93 Statut Membre -
rafale69300 Messages postés 93 Statut Membre -
Bonjour, je dois faire l'algo du jeu du mastermind mais je bloque sur une des procédures du programme
Enoncé :
L'ordinateur choisit 5 nombres au hasard entre 1 et 8. Il est possible qu'il choisisse plusieurs fois le même nombre. Le joueur a droit a 10 tentatives. A chaque tentative, l'ordinateur lui indique le nombre de chiffre exact proposés à la bonne place, et le nombre de chiffre exacts mais proposés à la mauvaise place.
Des remarques :
Un chiffre compté à sa place ne doit pouvoir compter comme "Exact mais mal placé"
Lorsqu'un tirage comporte plusieurs chiffres identiques, il ne faut qu'un même chiffre de la proposition du joueur puisse compter plusieurs fois comme exact.
Lorsqu'une proposition comporte plusieurs chiffres identiques, il ne faut pas les considérer tous comme correspondant à un même chiffre du tirage.
Procédures du prog :
Procédure Tirage (E/S : Tordi[1...5] : tableau d'entiers)
Cette procédure effectue le tirage aléatoire des 5 nombres, compris entre 1 et 8 et les stockee dans le tableau Tordi.
Procédure Saisie_Proposition (E/S : Tpropo[1...5] : tableau d'entiers
Cette procédure gère la sasie de le proposition du joueur. Cette proposition est stockée dans le tableau Tpropo. La saisie du joueur doit etre validée : il ne doit pas pouvoir proposer un nombre inférieur à 1 ni un nombre supérieur à 8.
Procédure Analyse (E : Tordi[1...5] : tableau d'entiers, E : Tpropo [1...5] : tableau d'entiers, E/S : nbbp : entier, E/S : nbmp : entier)
Cette procédure compare la proposition du joeur à celle de l'ordinateur et calcule le nombre de chiffrs exacts proposés à la bonne place (nbbp) et le nombre de chiffres exacts proposés à la mauvaise place (nbmp).
Donc mon souci ce trouve sur la procédure analyse car je l'ai faite mais je me suis fait enguelé par la prof car je les ai comparé un a un avec des SI alors que je devrais utilisés une boucle mais je ne vois pas du tout comme l'écrire avec une boucle donc si quelqu'un pouvait m'aider cela serait très sympa. Ne vous casez surtout pas la tête sur le programme prncipal et les autres procédures car les autres sont juste.
Merci d'avance.
Enoncé :
L'ordinateur choisit 5 nombres au hasard entre 1 et 8. Il est possible qu'il choisisse plusieurs fois le même nombre. Le joueur a droit a 10 tentatives. A chaque tentative, l'ordinateur lui indique le nombre de chiffre exact proposés à la bonne place, et le nombre de chiffre exacts mais proposés à la mauvaise place.
Des remarques :
Un chiffre compté à sa place ne doit pouvoir compter comme "Exact mais mal placé"
Lorsqu'un tirage comporte plusieurs chiffres identiques, il ne faut qu'un même chiffre de la proposition du joueur puisse compter plusieurs fois comme exact.
Lorsqu'une proposition comporte plusieurs chiffres identiques, il ne faut pas les considérer tous comme correspondant à un même chiffre du tirage.
Procédures du prog :
Procédure Tirage (E/S : Tordi[1...5] : tableau d'entiers)
Cette procédure effectue le tirage aléatoire des 5 nombres, compris entre 1 et 8 et les stockee dans le tableau Tordi.
Procédure Saisie_Proposition (E/S : Tpropo[1...5] : tableau d'entiers
Cette procédure gère la sasie de le proposition du joueur. Cette proposition est stockée dans le tableau Tpropo. La saisie du joueur doit etre validée : il ne doit pas pouvoir proposer un nombre inférieur à 1 ni un nombre supérieur à 8.
Procédure Analyse (E : Tordi[1...5] : tableau d'entiers, E : Tpropo [1...5] : tableau d'entiers, E/S : nbbp : entier, E/S : nbmp : entier)
Cette procédure compare la proposition du joeur à celle de l'ordinateur et calcule le nombre de chiffrs exacts proposés à la bonne place (nbbp) et le nombre de chiffres exacts proposés à la mauvaise place (nbmp).
Donc mon souci ce trouve sur la procédure analyse car je l'ai faite mais je me suis fait enguelé par la prof car je les ai comparé un a un avec des SI alors que je devrais utilisés une boucle mais je ne vois pas du tout comme l'écrire avec une boucle donc si quelqu'un pouvait m'aider cela serait très sympa. Ne vous casez surtout pas la tête sur le programme prncipal et les autres procédures car les autres sont juste.
Merci d'avance.
A voir également:
- Algo du jeu mastermind
- 94 degrés jeu - Télécharger - Divers Jeux
- 94 jeu - Télécharger - Puzzle & Réflexion
- Jeu java - Télécharger - Jeux vidéo
- Jeu du pendu - Télécharger - Vie quotidienne
- Jeu zuma - Télécharger - Jeux vidéo
7 réponses
Coucou
Tout d’abord en plus de tes deux tableaux tordi et tpropo, je rajouterais un tableau tires de même taille initialisé à 0.
Je m’explique, voilà l’idée.
1. Init :
nbbp = 0, nbmp = 0, tires[1…5] = 0
tordi[1…5] = {o1,o2,….,o5)
tpropo[1…5] = { p1,p2, ….,p5)
2. Contrôle des numéros en bonne position
Pour num : 1 à 5 joueur (tpropo) faire
Si tpropo(num) = tordi(num) alors
nbbp = nbbp + 1
tires(num) = 1
fin si
fin pour
// A ce stade, on connaît le nombre de numeros bien placés et d’avoir mis 1 dans leur « case » réspective nous évite les doublons dans la suite du traitement
3. Contrôle des numéros mal positionnés
//On va controler un par un les numeros du joueur par rapport à ceux de l’ordi non marqués dans la table tires
numj = 1
faire
pour numordi = 1 à 5 faire
si tires(numordi) <> 1 alors//c.a.d non tirés
si tpropo(numj) = tordi(numordi) alors
//Ici on est sur d’avoir un nb mal placé
nbmp = nbmp + 1
//Le numero ne doit plus être testé
tires(numordi) = 1
//On sort alors du pour numordi vu que l’on a
//trouvé un numero
sorti pour
fin si
fin si
fin pour
numj = numj + 1 //numero suivant du joueur
tant que numj <=5 //On fait tous les jetons
Voilà le principe, j’espère avoir été assez clair car je l’ai codé en vb, mais pour le mettre en français, bonjour la galère !
Tout de suite, je pars pour un match de tennis de table à l’autre bout du département, mais n’hésite pas à me dire ce que tu en penses, je regarderais en rentrant vers 2, 3 heures du mat.
A bientôt.
Merci pour ton aide mikebzh oui tu as été très clair.
Bonne chance pour ta compétition de tennis de table, moi c demain mais je joue en petit niveau Départementale 2 du Rhone a Caluire. Bon week end
Bonne chance pour ta compétition de tennis de table, moi c demain mais je joue en petit niveau Départementale 2 du Rhone a Caluire. Bon week end
Je voudrais juste un petit renseignement après avoir relu une autre fois ta solution je narrive pas bien a comprendre a quoi te sert ta variable numj si tu pouvais m'expliquer juste ça. Merci d'avance.
Re-bonjour
En fait numj correspond au numéro du joueur que l'on est en train de traiter, si on avait des boules, on peut dire que numj correspond à la boule 1, puis 2, etc...
L'idée est là, je prends mon premier numéro, est-il dans mon premier test, c'est à dire bien placé, non, alors je regarde les boules de l'ordi une par une, je trouve une correspondance, bingo, elle est mal placée, on sort et on prend le deuxième numéro, etc...
Bonne nuit
En fait numj correspond au numéro du joueur que l'on est en train de traiter, si on avait des boules, on peut dire que numj correspond à la boule 1, puis 2, etc...
L'idée est là, je prends mon premier numéro, est-il dans mon premier test, c'est à dire bien placé, non, alors je regarde les boules de l'ordi une par une, je trouve une correspondance, bingo, elle est mal placée, on sort et on prend le deuxième numéro, etc...
Bonne nuit
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Je devais être fatigué hier car dans ma soluce il y a un bug (cas où jeton bien placé + identique mal placé non géré, enfin bref..)
Voilà le morceau de source en vb (on peut presque le considérer come un algo, vu que j'ai mis des commentaires,
tu verras que j'ai rajouté un tableau jj pour connaitre les jetons du joueur dejà traités.
[code]
.......declarations variables, init tpropo & tordi..........
..........recup nbbp & nbmp.........
[\code]
Normalement ça roule et on doit pouvoir intégrer la gestion bien placé et mal placé en même temps.
Je regarde ça.
A plus.
Je devais être fatigué hier car dans ma soluce il y a un bug (cas où jeton bien placé + identique mal placé non géré, enfin bref..)
Voilà le morceau de source en vb (on peut presque le considérer come un algo, vu que j'ai mis des commentaires,
tu verras que j'ai rajouté un tableau jj pour connaitre les jetons du joueur dejà traités.
[code]
.......declarations variables, init tpropo & tordi..........
For i = 0 To 4
jj(i) = 0
jo(i) = 0
Next i
nbbp = 0
nbmp = 0
'on regarde si jeton bien place
For numj = 1 To 5
If tpropo(numj - 1) = tordi(numj - 1) Then
nbbp = nbbp + 1
jj(numj - 1) = 1 'on le(s) considére(nt) traité(s) dans tableau joueur et ordi jj & jo
jo(numj - 1) = 1
End If
Next numj
'on regarde si mal place
numj = 1
Do
If jj(numj - 1) <> 1 Then 'le jeton n'est pas traité
For numo = 1 To 5
If jj(numo - 1) <> 1 Then 'ce jeton de l'ordi n'est pas traité
If tpropo(numj - 1) = tordi(numo - 1) Then
nbmp = nbmp + 1
jj(numj - 1) = 1 'mal placé trouvé on le considère traité
jo(numo - 1) = 1 'ce jeton de l'ordi sert donc a quelqu'un --> traité
Exit For
End If
End If
Next numo
End If
'jeton suivant
numj = numj + 1
Loop While (numj <= 5)
..........recup nbbp & nbmp.........
[\code]
Normalement ça roule et on doit pouvoir intégrer la gestion bien placé et mal placé en même temps.
Je regarde ça.
A plus.