Téléchargement
illégal
Posez votre question Signaler

[langage C] jeu mastermind

Fragma 8Messages postés 22 novembre 2006Date d'inscription - Dernière réponse le 3 avril 2008 à 19:19
Salut :)
En fait, je suis débutante en C et on nous a demandé de coder un jeu (mastermind) .. j'avoue que je perds un peu pied :)))
En fait, au début du jeu, il faut choisir le nombre de chiffres de la combinaison à deviner. Ensuite, pour la saisie de la combinaison, j'ai opté pour la chaine de caractère: convertir la combinaison saisie en une chaine de caractère pour la comparer après avec la combinaison générée aléatoirement. En ce qui concerne la chaine de caractères, je voudrai savoir comment faire pour que cette chaine n'accepte que les chiffres (et non les caractères et symboles)
Merci à vous!
Lire la suite 

[langage C] jeu mastermind »

15 réponses
Réponse
+1
moins plus
ben voila pr que la chaine n'accepte que des chiffres , voila le traitement
for(i=0;i<n;i++)
{if(isdigit (ch[i])
//traitement
else
//error
}
un ptit exemple qui repd a ta question may be :d
Ajouter un commentaire
Réponse
+0
moins plus
Tu dois pouvoir comparé chaque caractère avec leur valeur dans la table ASCII pour savoir s'il s'agit effectivement d'un chiffre, ou non.

Pour ce qui est des valeurs a tester regarde ici, ce qui correspond en Hexa aux différents chiffres : http://www.table-ascii.com/

Tu test si ta valeur est comprise entre \30 et \39.
kij_82kij_82 - 22 nov. 2006 à 17:49
Bon sinon, la partie :

for (i=0; i<4; i++)
  srand(time(0));
  do{ 
  	x=rand()%(10000);
    itoa(x,combinaison_gagnante,10);
    
    valide=1;
    i=1;


je me suis dit que tu voulais peut etre plutot faire un truc du genre :
for (i=0; i<4; i++)<b>{</b>
  srand(time(0));
  do{ 
  	x=rand()%(10000);
    itoa(x,combinaison_gagnante,10);
    
    valide=1;
    i=1;


et dans ce cas, faudrait renommé ton deuxieme i en autre chose sinon ca boucle.
Fragma- 22 nov. 2006 à 18:04
en fait le srand ça sert à éviter qu'il y ait la même suite de nombres successivement .. m'enfin .. euh peut-être qu'il faut qu'elle soit hors boucle ...
kij_82kij_82 - 23 nov. 2006 à 10:48
Généralement le srand est mis hors boucle !
En fait le srand n'est pas vraiment aléatoire il me semble, il peut te faire la même suite de nombre d'un coup à l'autre, donc mieux vaut l'initialiser une fois au départ, puis demander un chiffre à chaque passage de boucle.

Toujours est-il que ton code est louche... ta boucle for (i = 0; i < 4; i++ ) ne doit-elle pas englober la partie juste en dessous servant à initialiser ta solution de départ. Enfin... c'est ce qui me semble etre le plus logique apres je me trompe peut etre aussi.
Pour ce qui est de la syntaxe, ca fait un bail que j'ai pas fais de C donc je peux pas dire grand chose la dessus, mais pour ce qui est de l'algo...

Un petit coup de pouce, faut que tu mettes des commentaires dans ton code (anglais c'est mieux, mais francais ca passe aussi) afin que ceux qui reprennent ton code derrière (ou ceux qui veulent t'apporter de l'aide ;) ) puissent comprendre assez facilement de quoi il retourne et pourquoi tu as choisi tel algo et pas un autre par exemple.

Ensuite, pour ce qui est du débugage, rien de tel qu'une bonne méthode maison pour tracer d'ou viens l'erreur :
Dans chaque passage (if , else, while, etc...) tu met une trace évoquante
De cette manière, en lancant ton appli, tu peux suivre ou en est ton prog lors de l'execution, et dans ton cas présent, connaitre la dernière trace avant l'erreur ou la boucle infinie :)
Donc écrit tout ca, lance ton programme (et fais ctrl+C ou D je sais plus, pour l'arreter dans sa boucle infinie), regarde les traces et vois ou la boucle se produit (affiche les valeurs en meme temps pour voir a quoi est du le bouclage (genre variable qui ne s'incrément pas).

Bon courage :)
++
Ajouter un commentaire
Réponse
+0
moins plus
svp vous pouvez m'aider à écrire le programme en langage c du jeu mastermind
Ajouter un commentaire
Ce document intitulé « [langage C] jeu mastermind » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?