package inutile;
/**
 * Cette classe vérifie le fonctionnement de la méthode décidant l'ordre de jeu des joueurs en début de partie.
 * @author Emilie Collasse, Cynthia Fong, Salma Zaghloul
 * @version 1.0
 */
import java.util.*;

import modele.Keyboard;
import modele.joueur;
import modele.plateau;
public class TestOrdreJoueur {
	protected static Vector<joueur> joueurs;
	public static void main (String []args){
		System.out.println("Combien y a-t-il de joueurs ?");
		int nbJoueurs=Keyboard.readInt();
		while(nbJoueurs<2||nbJoueurs>8){
			System.out.println("Erreur. On ne peut jouer que de 2 à 8 joueurs. Combien y a-t-il de joueurs ?");
			nbJoueurs=Keyboard.readInt();
		}
		joueurs=new Vector <joueur>(nbJoueurs);
		for (int i=1; i<(nbJoueurs+1) ;i++){
			System.out.println("Quel est le nom du joueur n°"+i+" ?");
			joueurs.add(new joueur(Keyboard.readString()));
		}
		System.out.println("Affichage joueurs :");
		for (int i=0;i<joueurs.size();i++){
			System.out.println(joueurs.get(i).getNom());
		}
		ordreJeuJoueurs();
	}
	public static void ordreJeuJoueurs(){
		System.out.println("Chaque joueur doit lancer les dés pour déterminer quel joueur commence.");
		int[] resultatDes=new int [joueurs.size()];
		int de1;
		int de2;
		for (int i=0; i<joueurs.size();i++){
			System.out.println(joueurs.get(i).getNom()+", vous lancez les dés.");
			de1=plateau.lancerDe();
			de2=plateau.lancerDe();
			System.out.println("Vous avez fait "+de1+" et "+de2);
			resultatDes[i]=(de1+de2);
		}
		System.out.println("Affichage des résultats des dés :");
		for (int j=0; j<resultatDes.length;j++)
			System.out.println(resultatDes[j]);
		int meilleurResultat=0;
		for (int j=0; j<resultatDes.length;j++){
			if (resultatDes[j]>meilleurResultat)
				meilleurResultat=resultatDes[j];
		}
		System.out.println("Meilleur résultat "+meilleurResultat);
		Vector<joueur> exAequo=new Vector<joueur> (joueurs.size());
		for (int k=0;k<resultatDes.length;k++){
			if (resultatDes[k]==meilleurResultat){
				exAequo.add(joueurs.get(k));
				System.out.println("ajout dans exaequo du joueur "+joueurs.get(k).getNom());
			}
		}
		while (exAequo.size()!=1){
			String phraseAffichageExAequo="";
			for (int l=0;l<exAequo.size();l++){
				phraseAffichageExAequo+=exAequo.get(l).getNom()+", ";
			}
			phraseAffichageExAequo+="vous avez fait les même scores. Vous devez relancez les dés.";
			System.out.println(phraseAffichageExAequo);
			resultatDes=new int [exAequo.size()];
			for (int m=0;m<exAequo.size();m++){
				System.out.println(exAequo.get(m).getNom()+", vous lancez les dés.");
				de1=plateau.lancerDe();
				de2=plateau.lancerDe();
				System.out.println("Vous avez fait "+de1+" et "+de2);
				resultatDes[m]=(de1+de2);
			}
			meilleurResultat=0;
			for (int j=0; j<resultatDes.length;j++){
				if (resultatDes[j]>meilleurResultat)
					meilleurResultat=resultatDes[j];
			}
			for (int k=0;k<resultatDes.length;k++){
				if (resultatDes[k]!=meilleurResultat){
					exAequo.remove(exAequo.get(k));
				}
			}
		}
		System.out.println("Le joueur ayant fait le meilleur score est "+exAequo.get(0).getNom()+"\n");
		Vector<joueur> ordreJoueur=new Vector<joueur>(joueurs.size());
		int i=0;
		while ((exAequo.get(0)!=joueurs.get(i))&&(i<joueurs.size())){
				i++;
		}
		for (int j=0;j<joueurs.size();j++){
			ordreJoueur.add(joueurs.get((i+j)%joueurs.size()));
		}
		joueurs=ordreJoueur;
		System.out.println("Affichage de lordre de jeu :");
		for (int a=0; a<joueurs.size();a++)
			System.out.println(joueurs.get(a).getNom());
	}
}
