package allumettes;

import java.util.Random;

/**
 * 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 Expert (gagne si possible).
 * @author Édouard Lumet
 *
 */
public class StrategieExpert implements Strategie {

	// Attributs
	/** Nombre aléatoire. */
	private Random nbAleatoire;

	/**
	 * Constructeur de la classe StrategieExpert.
	 */
	public StrategieExpert() {
		/* Initialisation de l'objet permettant le tirage d'un
		 * nombre aléatoire.
		 */
		this.nbAleatoire = new Random();
	}

	@Override
	public int nbAllumettesARetirer(Jeu jeu) {
		int nbAllumettes = jeu.getNombreAllumettes();
		/* Le premier cas est le pire cas. On tire alors un
		 * nombre aléatoire. Le second cas est la victoire
		 * assurée.
		 */
		if ((nbAllumettes - 1) % (Jeu.PRISE_MAX + 1) == 0) {
			/* Tirage d'un entier entre 0 et PRISE_MAX (non compris)
			 * On retourne alors un entier entre 1 et PRISE_MAX (compris)
			 */
			return nbAleatoire.nextInt(Jeu.PRISE_MAX) + 1;
		} else {
			return (nbAllumettes - 1) % (Jeu.PRISE_MAX + 1);
		}
	}

}
