/**
 * @author L. BAFFAIT & G.MAROUSE
 * Jeu de Marienbad joueur contre joueur
 */
class MarienbadJvsJ_MAROUSE_BAFFAIT {
	void principal(){
		jouerUnePartie();
	}
	
	// ##### FONCTIONS #####
	/**
	 * Fonction qui permet de jouer une partie
	 */
	void jouerUnePartie(){
		//INITIALISATION DU JEU
		//Déclaration des variables
		String joueur1;
		String joueur2;
		int lignes;
		char c;
		boolean tour;
		
		//Affectation par l'utilisateur
		// Saisie des noms des joueurs
		joueur1 = SimpleInput.getString ("Entrez le nom du premier joueur :");
		joueur2 = SimpleInput.getString ("Entrez le nom du second joueur :");
		System.out.println ("Cette partie va opposer " + joueur1 + " contre " + joueur2 + "\n");
		// Saisie du nombre de lignes
		do{
			lignes = SimpleInput.getInt ("Sur combien de lignes voulez-vous jouer entre 2 et 15 ? ");
		}while (lignes < 2 || lignes > 15);
		System.out.println ("La partie se jouera donc sur " + lignes + " lignes.\n");
		// Choix du premier à jouer
		do{
			c = SimpleInput.getChar ("Qui commence ? Saisir '1' pour "+joueur1+", '2' pour "+joueur2+" et 'A' pour aleatoire ");
		}while (c != 'A' && c!='1' && c!='2');
		if (c=='A'){
			tour = Math.random()<0.5;
		}else if (c=='1') {
			tour = true;
		}else{
			tour = false;
		}
		
		//Crétion du plateau
		int[] jeu = new int[lignes];
		for (int i = 0 ; i < lignes ; i++){
			jeu[i] = (i * 2) + 1;
		}
		int totalAlumettes = lignes*lignes;

		//BOUCLE DE JEU
		while (totalAlumettes != 0){
			//Affichage du plateau de jeu
			afficherPlateau(jeu);
			
			if (tour){
				//Joueur 1
				System.out.println("C'est au tour de " + joueur1 + " !");
			}else{
				//Joueur 2
				System.out.println("C'est au tour de " + joueur2 + " !");
			}
			
			//Mise à jour du jeu
			totalAlumettes-=jouerUnCoup(jeu);
			//Changement de joueur
			tour = !tour;
		}
		//FIN
		if (tour){
			System.out.println("Le vainqueur de cette partie est donc " + joueur2 + " !Bien joue !");
		}else{
			System.out.println("Le vainqueur de cette partie est donc " + joueur1  + " !Bien joue !");
		}
	}
	
    /**
     * Affiche le plateau de jeu
     * @param t le tableau représentatif du plateau de jeu
     */
    void afficherPlateau(int[] t){
        for (int i=0;i<t.length;i++){
			System.out.print(i+" : ");
            for(int j=0;j<t[i];j++){
                System.out.print("|");
            }
            System.out.println();
        }
    }
    
    /**
     * Saisie du coup du joueur et calcul du plateau de jeu
     * @param t le tableau représentatif du plateau de jeu
     */
    int jouerUnCoup(int[] t){
		int ligne;
		int nb;
		do {
			ligne = SimpleInput.getInt("Sur quel ligne souhaitez vous jouer ?");
		}while (ligne<0 || ligne>=t.length || t[ligne]==0);
		do {
			nb = SimpleInput.getInt("Combien d'allumettes souhaitez vous prendre ?");
		}while (nb<=0 || nb>t[ligne]);
		t[ligne]-=nb;
		return nb;
    }
}
