-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfeatures.c
64 lines (49 loc) · 1.45 KB
/
features.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "features.h"
void init_tab(char *tab, int taille_tab) {
for (short i = 0; i < taille_tab; i++) {
tab[i] = '1';
}
}
int is_empty(char *tab, int taille_tab) {
for (short i = 0; i < taille_tab; i++) {
if (tab[i] == '1') return 0;
}
// Si aucun 1 n'est rencontré, alors il n'y a plus de batonnets
return 1;
}
short saisie_joueur(short id_joueur, char output[4], char tab[20]) {
// 3 est le max de batonnets que le joueur peut enlever
char saisie[4] = "000";
// clear ouput
for (short i = 0; i < 4; i++) {
output[i] = '0';
}
scanf("%s", saisie);
for (int i = 0; i < 3 && saisie[i] != '\0'; i++) {
// Si la saisie est en minuscule, on l'a met en maj
if (saisie[i] >= 97 && saisie[i] <= 122) {
saisie[i] -= 32;
}
if (saisie[i] < 65 || saisie[i] > 65 + 20) {
// Erreur lors de la saisie
return 1;
}
// Si le batonnet est deja enleve c'est une erreur.
if (tab[saisie[i] - 65] == '0') {
return 1;
}
output[i] = saisie[i];
}
// Si le joueur entre 4 value, c'est une erreur.
if (saisie[3] != '\0') {
return 1;
}
return 0;
}
void enlever_batonnet(char tab[20], char choix_joueur[3]) {
for (short idx = 0; idx < 3; idx++) {
int ascii = (int)choix_joueur[idx];
int idxToRemove = ascii - 65;
tab[idxToRemove] = '0';
}
}