int lire_nombre(int longueur) { char format[32]; sprintf(format, " %%%ds", longueur+1); char lu[longueur]; int nb; do { scanf(format, lu); } while (sscanf(lu, " %d", &nb) <= 0); return nb; } char lire_lettre() { char lu; scanf(" %c", &lu); return lu; } /* Placer la flotte du joueur humain */ void init_joueur(grille c){ char lettre; int ligne; int colonne; char sens; for(int nb = 0; nb < 5; nb++){ bool d, pleine; do { printf(" Position première case du bateau\n"); do { lettre = lire_lettre(); ligne = lettre - 'A'; } while (ligne < 0 || ligne > 9); do { colonne = lire_nombre(2)-1; // La colonne 1 est la colonne 0 de c } while (colonne < 0 || colonne > 9); printf("Choisir une orientation\n"); do { sens = lire_lettre(); } while (sens != 'h' || sens != 'H' || sens != 'b' || sens != 'B' || sens != 'g' || sens != 'G' || sens != 'd' || sens != 'D'); d = depasser(c, ligne, colonne, sens, nb); pleine = est_pleine(c, ligne, colonne, nb, sens); } while (pleine && d); placer_bateau(c, ligne, colonne, sens, nb); afficher(c); } }