import java.util.Arrays;

public class FonctionsPendu {
	public static void init(Pendu p, String mot) {
		assert(mot.length() > 0);
		p.motATrouver = mot;
		p.lettresTrouvées = new boolean[mot.length()];
		Arrays.fill(p.lettresTrouvées, false);
		p.nbErreurs = 0;
	}

	public static boolean fini(Pendu p) {
		return perdu(p) || gagné(p);
	}

	public static boolean perdu(Pendu p) {
		return p.nbErreurs >= Pendu.NB_MAX_ERREURS;
	}

	public static boolean gagné(Pendu p) {
		if (perdu(p))
			return false;
		for (boolean b : p.lettresTrouvées)
			if (!b)
				return false;
		return true;
	}

	public static boolean jouer(Pendu p, char c) {
		assert (!fini(p));
		boolean trouvé = false;
		for (int i = 0; i < longueurMotATrouver(p); ++i)
			if (!estTrouvée(p, i) && p.motATrouver.charAt(i) == c) {
				p.lettresTrouvées[i] = true;
				trouvé = true;
			}
		if (!trouvé)
			++p.nbErreurs;
		return trouvé;
	}

	public static int nbErreurs(Pendu p) {
		return p.nbErreurs;
	}

	public static int longueurMotATrouver(Pendu p) {
		return p.motATrouver.length();
	}

	public static boolean estTrouvée(Pendu p, int i) {
		assert (0 <= i && i < longueurMotATrouver(p));
		return p.lettresTrouvées[i];
	}

	public static char lettre(Pendu p, int i) {
		assert (estTrouvée(p, i));
		return p.motATrouver.charAt(i);
	}
}
