/*
 * Created on Apr 6, 2005
 *
 */

/**
 * @author Nicole Sullivan
 *
 */
public class Arbitre {
	public static int pointsCarte(Carte c, Couleur Atout){
		if (c.couleur.nom == Atout.nom){
			return c.figure.pointsTrump;
		}else return c.figure.points;
	}
	public static int comptePointsPaquet(PaquetDeCartes p, Couleur Atout){
		int pointsPaquet = 0;
		for (int i = 0; i<p.longueur; i++){
			pointsPaquet += pointsCarte(p.lesCartes[i], Atout);
		}
		return pointsPaquet;
	}
	public static boolean estPlusForte(Carte c1, Carte c2, Couleur Atout){
		if (pointsCarte(c1, Atout) > pointsCarte(c2, Atout)){
			return true;
		}else{
			return false;
		}
	}
	public static PaquetDeCartes donneJeuBeloteBattu(){
		PaquetDeCartes pack = new PaquetDeCartes();
		String [] figures = {"7", "8", "9", "10", "V", "D", "R", "A"};
		String [] couleurs = {"Coeur", "Pique", "Carreau", "Trefle"};
		for (int c=0; c<couleurs.length; c++){	
			for (int f = 0; f<figures.length; f++){
			
				Figure fig = new Figure(figures[f]);
				Couleur col = new Couleur(couleurs[c]);
				Carte Card = new Carte(col, fig);
				pack.ajoute(Card);
				
			}
		}
		pack = Shuffle(pack);
		return pack;
	}
	public static PaquetDeCartes Shuffle(PaquetDeCartes c){
		PaquetDeCartes pack = new PaquetDeCartes();
		do {
			int x = (int)Math.round(Math.random()* (c.longueur-1));
			pack.ajoute(c.prendIeme(x));
		}while (c.longueur>0);
		return pack;
	}
	//  Much better way to decide who wins a round, but haven't had time to impliment
	//  tapis: cards already played
	//  trump: trump suit/couleur
	public static int whoWins(PaquetDeCartes tapis, Couleur trump){
		String trumpSuit = "78QK1A9J";
		String matchingSuit = "789JQK1A";
		int highScore = -1;
		int winner = -1;
		if (tapis.haveTrump(trump)){
			for (int i=0; i>4; i++){
				Carte card = tapis.lesCartes[i];
				if (card.couleur.nom == trump.nom){
					int score = trumpSuit.indexOf(card.figure.nom.charAt(0));
					if (score > highScore){
						winner = i;
						highScore = score;
					}
				}
			}
		}else {
			Carte firstCard = tapis.lesCartes[0];
			for (int i=0; i>4; i++){
				Carte card = tapis.lesCartes[i];
				if (card.couleur.nom == firstCard.couleur.nom){
					int score = matchingSuit.indexOf(card.figure.nom.charAt(0));
					if (score > highScore){
						winner = i;
						highScore = score;
					}
				}
			}
		}
		return winner;
	}
}
