[langage C] jeu mastermind
Fragma
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
hajine -
hajine -
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!
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!
A voir également:
- Mastermind technique
- Logiciel dessin technique gratuit - Télécharger - CAO-DAO
- Notice technique pdf - Guide
- Faux support technique - Accueil - Arnaque
- Pcs problème technique aujourd'hui - Forum Consommation & Internet
- Samsung ce0168 fiche technique - Forum Samsung
3 réponses
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
for(i=0;i<n;i++)
{if(isdigit (ch[i])
//traitement
else
//error
}
un ptit exemple qui repd a ta question may be :d
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.
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.
Etant donné que ta chaine de caractère est un tableau, tu n'as pas à mettre ce qui est saisit par ton utilisateur, tu testes directement dessus de la facon suivante :
Mais je ne suis plus tres sur que ce soit comme ca qu'on teste la valeur ACSII :s, faudrait que quelqun qui passe par là atteste ou non.
for (int i = 0; i < 4; i++ ){ if ( chaine[i] < '\30' && chaine[i] > '\39' ){ /// --- ERREUR SAISIE } else { /// --- faire traitement } }
Mais je ne suis plus tres sur que ce soit comme ca qu'on teste la valeur ACSII :s, faudrait que quelqun qui passe par là atteste ou non.
Humm en fait le problème, c'est que quand on saisit des symboles ou des caractères au lieu des chiffres, y a une boucle infinie qui se crée.. je sais pas vraiment la nature du problème .. la boucle ou le test !?
du coup j'ai envie de mettre tout le code pour qu'on me corrige les fauteuuu :((
je désespère :p
du coup j'ai envie de mettre tout le code pour qu'on me corrige les fauteuuu :((
je désespère :p
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<time.h> #include<string.h> int main() { int i,j,x,val,resultat,valide,nb_tentatives=0,nb_tentatives_max=4,trouve; char combinaison[4],combinaison_gagnante[4]; trouve=0; resultat=0; for (i=0; i<4; i++) srand(time(0)); do { {x=rand()%(10000); itoa(x,combinaison_gagnante,10);} valide=1; i=1; while (i<4 && valide==1) {j=0; while (j<i && valide==1) { if (combinaison_gagnante[i]==combinaison_gagnante[j]) valide=0; else j++; } if (valide==1) i++; } } while((valide==0) && (strlen(combinaison_gagnante)!=4)); printf("la combinaison gagnante est: %s",combinaison_gagnante); while ((nb_tentatives<nb_tentatives_max) && (trouve==0)) { do {printf("\nPour jouer a Mastermind, vous devez choisir 4 chiffres. \nVeuillez donner votre combinaison: "); scanf("%d",&val); itoa(val,combinaison,10); } while ((strlen(combinaison)!=4)); if (strcmp(combinaison,combinaison_gagnante)==0) {printf(" TROUVE!"); trouve=1;} else {j=0; for (i=0; i<=4; i++) {if (combinaison[i]==combinaison_gagnante[j]) {resultat++; nb_tentatives++; j++;} } printf("\nresultat: %d X",resultat);}} system("pause"); return 0; }
ça c'est pour une combinaison à 4 chiffres ..
(y a plein de fautes :p et il manque le chrono (paske le temps de saisie est limité) et le score .. )
et l'affichage de la combinaison gagnante c'est euh juste pour tester hein!
Hummmm ...