Move vider_buffer out to module, so that it can be used by jouer_coup

This commit is contained in:
flyingscorpio@arch-desktop 2021-11-30 22:46:06 +01:00
parent 1914a28e62
commit 596db3a498
5 changed files with 49 additions and 22 deletions

View file

@ -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

20
main.c
View file

@ -27,30 +27,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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];

26
misc.c Normal file
View file

@ -0,0 +1,26 @@
/* misc.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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);
}

9
misc.h Normal file
View file

@ -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

View file

@ -5,6 +5,7 @@
#include <stdbool.h>
#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");