diff --git a/Makefile b/Makefile index d929141..ddf424b 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ all: jeu -jeu: main.c affichage.c affichage.h partie.c partie.h - cc main.c affichage.c affichage.h partie.c partie.h -o jeu +jeu: main.c affichage.c affichage.h misc.c misc.h partie.c partie.h + cc main.c affichage.c affichage.h misc.c misc.h partie.c partie.h -o jeu clean: rm -f jeu diff --git a/main.c b/main.c index 63aa33c..23d975f 100644 --- a/main.c +++ b/main.c @@ -27,30 +27,12 @@ #include #include -#include #include "affichage.h" +#include "misc.h" #include "partie.h" -void vider_buffer() { - int c = 0; - while((c = getchar()) != '\n' && c != EOF); -} - -void nommer_joueur(char *joueur) { - char *linefeed_position = NULL; - - fgets(joueur, 10, stdin); - - linefeed_position = strchr(joueur, '\n'); - if (linefeed_position != NULL) { - *linefeed_position = '\0'; - } else { - vider_buffer(); - } -} - int main() { int choix = 0; char joueur1[10]; diff --git a/misc.c b/misc.c new file mode 100644 index 0000000..455974c --- /dev/null +++ b/misc.c @@ -0,0 +1,26 @@ +/* misc.c */ + +#include +#include +#include + +#include "misc.h" + + +void nommer_joueur(char *joueur) { + char *linefeed_position = NULL; + + fgets(joueur, 10, stdin); + + linefeed_position = strchr(joueur, '\n'); + if (linefeed_position != NULL) { + *linefeed_position = '\0'; + } else { + vider_buffer(); + } +} + +void vider_buffer() { + int c = 0; + while((c = getchar()) != '\n' && c != EOF); +} diff --git a/misc.h b/misc.h new file mode 100644 index 0000000..e0d2504 --- /dev/null +++ b/misc.h @@ -0,0 +1,9 @@ +/* misc.h */ + +#ifndef DEF_MISC +#define DEF_MISC + +void nommer_joueur(char*); // lit une string pour l'affecter à un joueur +void vider_buffer(); // s'assure qu'il n'y a plus rien dans stdin + +#endif diff --git a/partie.c b/partie.c index ef8e79d..2407e8e 100644 --- a/partie.c +++ b/partie.c @@ -5,6 +5,7 @@ #include #include "affichage.h" +#include "misc.h" #include "partie.h" int NB_ALLUMETTES = 30; @@ -40,8 +41,17 @@ int partie_en_cours() { int jouer_coup() { int allumettes_a_retirer; + printf("Combien d'allumettes souhaitez-vous retirer ? [1-3] : "); - scanf("%d", &allumettes_a_retirer); + allumettes_a_retirer = fgetc(stdin); + if (allumettes_a_retirer == '\n') { + // rien n'a été tapé, créons une erreur "propre" pour sortir avec false + allumettes_a_retirer = 0; + } else { + // conversion vers int depuis la valeur ascii + allumettes_a_retirer = allumettes_a_retirer - 48; + vider_buffer(); + } if ((allumettes_a_retirer < 1) || (allumettes_a_retirer > 3)) { printf("Coup invalide ! Veuillez recommencer...\n");