Comment programmer en c++ manstermind? - C - Programmation
Marsh Posté le 11-12-2011 à 15:29:08
Oui, avec un tableau ça peut se faire
Là comme ça je dirais deux tableaux, un qui contient la solution, l'autre l'essai du joueur, tu vérifies la que la couleur que l'utilisateur a rentré dans le tableau de solution existe. Tu sais que si elle a le même index que le tableau de solution, elle est bien placée, sinon elle est mal placé, et tu incrémentes ce qu'il faut pour tes espèces de compteur (couleurs identique / couleurs mal positionnées)
Ensuite, tu sais que si le nombre de couleur identique est le même que le nombre de case, c'est bon il a gagné
Après pour les plusieurs essais, tu peux essayer de te débrouiller je pense, y'a rien de bien compliqué
Marsh Posté le 12-12-2011 à 04:20:02
j'ai fait ca mais il y a plein de problèmes
merci de m'aider
j'ai pas trouvé une autre solution qu'avec ces 3 whiles
peur etre c'est mieux comme ca mais tjr
des fautes a gogo
/*
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NBCOUL 4
#define NBESS 6
main()
{
char codeSecret[NBCOUL] ; // tableau contenant les 4 couleurs à trouver
//char copie[NBCOUL] ; // tableau contenant la copie du tableau combinaison
char reponse,essai[NBESS] ; // tableau contenant chacun des essais
int i , k, n ; // indice de parcours des tableaux
int test; // compteur d'essai avant de trouver la formule
int bb=0, mm=0 ; // compteurs de bien et mal placés
srand(1810)
for(i=0;i<NBESS;i++)
{
switch(rand()%4){
case 0: codeSecret[i]='r';break;
case 1: codeSecret[i]='b';break;
case 2: codeSecret[i]='v';break;
case 3: codeSecret[i]='j';break;
}
}
// Le do pour rejouer
do {
// 6 Essais Max
for (test = 0; test < NBESS; test++){
do{
do{
printf("Entrez votre combinaison : " );
scanf("%c", &essai[n]);
n++;
}
while (n < NBCOUL);
// boucle pour les valeurs presentes et bien placees
n=0;
i=0;
for (j = 0; j < NBCOUL; j++)
{
if (essai[n] == codeSecret[i] && n == i)
{
bb++;
}
n++;
i++;
}
printf("Couleur identique: %d",bb);
// boucle pour les valeurs presentes mais mal placees
n=0;
i=0;
for (j = 0; j < NBCOUL; j++)
{
if (essai[n] == codeSecret[i] && n != i)
{
mm++;
}
n++;
i++;
}
printf("Couleur presentes : %d",mm);
}
while (bb<NBCOUL);
printf("\nVous avez gagne " );
}
printf("\nVous avez perdu " );
// Afficher la combinaison pour le perdant
if (bb<NBCOUL)
{
printf("\nLa combinaison etait %c %c %c %c ",codeSecret[0],codeSecret[1],codeSecret[2],codeSecret[3] );
}
// Demander si le joueur veut rejouer
printf("\nVoulez-vous rejouer ? (o/n) " );
scanf(" %c", &reponse);
}
while (reponse == 'o' || reponse == 'O');
if (reponse == 'n' || reponse=='N' ) printf("Fin du jeu " );
system("pause" );
}
Marsh Posté le 12-12-2011 à 13:02:15
Déjà, ton code c'est du C là, pas du C++
Bon, d'abord, est-ce que la combinaison 'rrjb' marche pour le mastermind ? Faut pas absolument 4 couleurs différente ? Parce que rien qu'au début, si je me trompe pas dans l'analyse, tu risques d'avoir des doublons dans ton tableau
En C++ on se sert pas tellement des printf/scanf, utilises plutôt le std::cin et std::cout (cin pour demander une valeur, cout pour afficher)
Par exemple :
Code :
|
Bon sinon, globalement c'est ça à quelque erreurs près.
Par exemple, à la fin :
Code :
|
Ben il redemandera 'voulez vous rejouer ?" jusqu'à ce que le joueur dise oui, faut ajouter 'reponse=='n' || reponse=='N' dans ta condition du while
J'te conseil aussi d'épurer ton code en ajoutant des fonctions, par exemple une qui teste les couleurs bien placés/mal placé (avec passage par référence vu qu'elle aurait besoin de renvoyer plusieurs variable)
Essai de refaire tout ça en C++ (cout/cin et références) et d'ajouter quelques fonction pour alléger le main et re-poste ton code
edit : Je viens de capter que t'es super ambiguë, tu veux faire ça C ou en C++ ? Là ton code c'est du C, tu le met dans la cat du C et tu parles de C++, tu veux faire quel langage ?
Marsh Posté le 12-12-2011 à 15:54:26
en C
pas de C++
et oui le rrjb ou vbvr ca marche enfin normalement sur manstermind
"teste les couleurs bien placés/mal placé"
ca veut dire quoi ! comment faire pour ca !
un petit indice si c'est possible !!
je comprend rien en c++
Marsh Posté le 11-12-2011 à 04:57:00
Comment programmer en c++ manstermind?
Bonjour,
je suis débutant sur C++ et j'utilise devC++
j'essaye des crée de petits jeux mais devant ce lui la je bloque
merci de m'aider
Configuration: Windows XP / Firefox 3.6.24
comment crée le jeux master mind sur c++
il y a une combinaison de couleur a trouver
les couleurs possible sont 4 : r b v j
je jeu doit afficher le nombre de couleur qui sont a leur position et le nombre de couleur mal positionner
exemple pour le code rbvj
quand je tape bvvj
l' affichage est comme le suivent
couleur identique :2
couleur mal positionner :1
c'est l'utilisateur qui choisir la combinaison
et il y a le droit a 6 essai pas plus
et si sa de combinaison est toute juste avant le 6ém essai
l'affiche est "gagner" sinon "perdu"
apparemment ca ce fait avec un tableau non !
merci