package allumettes;

import java.util.Scanner;

/**
 * Cette classe est une implémentation de l'interface Strategie.
 * Elle redéfinit la méthode indiquant le nombre d'allumettes
 * à retirer selon la stratégie Humain (demande à l'utilisateur).
 * @author Édouard Lumet
 *
 */
public class StrategieHumain implements Strategie {

	// Attributs
	/** Objet pour la lecture clavier. */
	private Scanner sc;

	/**
	 * Constructeur de la classe StrategieHumain.
	 */
	public StrategieHumain() {
		// Initialisation de l'objet pour la lecture clavier
		this.sc = new Scanner(System.in);
	}

	@Override
	public int nbAllumettesARetirer(Jeu jeu) {
		/* L'objet Integer nous permet d'avoir une variable
		 * non initialisée. Ainsi, Tant que l'utilisateur
		 * saisi autre chose qu'un entier, sa valeur reste
		 * 'null'. Cela évite d'affecter une certaine valeur
		 * à un entier (type primitif) comme 0 ou -1 ou etc,
		 * ce qui peut être plus facilement contourné.
		 */
		Integer priseDemandee = null;
		do {
			System.out.print("Combien prenez vous d'allumettes ? ");
			try {
				// Demande à l'utilisateur
				priseDemandee = Integer.parseInt(this.sc.nextLine());
			} catch (NumberFormatException e) {
				// Affiche l'erreur si la saisie n'est pas un entier
				System.out.println("Vous devez donner un entier compris"
						+ "entre 1 et " + Jeu.PRISE_MAX);
			}
		} while (priseDemandee == null);
		return priseDemandee.intValue();
	}

}
