package modele;
/**
 * La classe plateau represente le support du jeu qui est un tableau de case a deux dimensions
 * @author Emilie Collasse, Cynthia Fong, Salma Zaghloul
 * @version 1.0
 */
public class plateau {
	protected static Case[][]plateau;
	protected static groupeProprietes groupeGares;
	protected static groupeProprietes groupeCompagnies;
	protected static groupeProprietes groupeOrange;
	protected static groupeProprietes groupeRouge;
	protected static groupeProprietes groupeJaune;
	protected static groupeProprietes groupeFushia;
	protected static groupeProprietes groupeBleuCiel;
	protected static groupeProprietes groupeViolet;
	protected static groupeProprietes groupeVert;
	protected static groupeProprietes groupeBleuFonce;
	protected static double argentMilieu;
	/**
	 * le constructeur initialise les cases et créé les groupes
	 */
	public plateau(){
		argentMilieu=0;
		plateau=new Case[11][11];
		//cartes Chance
		plateau[8][8]=new cartesChance();
		//cartes Communauté
		plateau[2][2]=new cartesCommunaute();

		plateau[0][0]=new ParcGratuit();
		plateau[0][1]=new propriete("Avenue Matignon","rouge",220,18,90,250,700,875,1050,150);
		plateau[0][2]=new chance();
		plateau[0][3]=new propriete("Boulevard Malesherbes","rouge",220,18,90,250,700,875,1050,150);
		plateau[0][4]=new propriete("Avenue Henri-Martin","rouge",240,20,100,300,750,925,1100,150);
		plateau[0][5]=new gare("Gare du Nord");
		plateau[0][6]=new propriete("Faubourg Saint-Honoré","jaune",260,22,110,330,800,975,1150,150);
		plateau[0][7]=new propriete("Place de la Bourse","jaune",260,22,110,330,800,975,1150,150);
		plateau[0][8]=new compagnieDistribution("Compagnie des Eaux");
		plateau[0][9]=new propriete("Rue la Fayette", "jaune",280,24,120,360,850,1025,1200,150);
		plateau[0][10]=new allezEnPrison();
		plateau[1][0]=new propriete("Place Pigalle","orange",200,16,80,220,600,800,1000,100);
		plateau[2][0]=new propriete("Boulevard Saint-Michel","orange",180,14,70,200,550,750,950,100);
		plateau[3][0]=new communaute();
		plateau[4][0]=new propriete("Avenue Mozart","orange",180,14,70,200,550,750,950,100);
		plateau[5][0]=new gare("Gare de Lyon");
		plateau[6][0]=new propriete("Rue de Paradis","fushia",160,12,60,180,500,700,900,100);
		plateau[7][0]=new propriete("Avenue de Neuilly","fushia",140,10,50,150,450,625,750,100);
		plateau[8][0]=new compagnieDistribution("Compagnie d'Electricité");
		plateau[9][0]=new propriete("Boulevard de la Villette", "fushia",140,10,50,150,450,625,750,100);
		plateau[10][0]=new prison();
		plateau[10][1]=new propriete("Avenue de la Republique", "bleu ciel",120,8,40,100,300,450,600,50);
		plateau[10][2]=new propriete("Rue de Courcelles","bleu ciel",100,6,30,90,270,400,550,50);
		plateau[10][3]=new chance();
		plateau[10][4]=new propriete("Rue de Vaugirard", "bleu ciel",100,6,30,90,270,400,550,50);
		plateau[10][5]=new gare ("Gare Montparnasse");
		plateau[10][6]=new impots();
		plateau[10][7]=new propriete("Rue Lecourbe", "violet",60,4,20,60,180,320,450,50);
		plateau[10][8]=new communaute();
		plateau[10][9]=new propriete("Boulevard de Belleville","violet",60,2,10,30,90,160,250,50);
		plateau[10][10]=new depart();
		plateau[1][10]=new propriete("Avenue de Breteuil","vert",300,26,130,390,900,1100,1275,200);
		plateau[2][10]=new propriete("Avenue Foch","vert",300,26,130,390,900,1100,1275,200);
		plateau[3][10]=new communaute();
		plateau[4][10]=new propriete("Boulevard des Capucines","vert",320,28,150,450,1000,1200,1400,200);
		plateau[5][10]=new gare("Gare Saint-Lazare");
		plateau[6][10]=new chance();
		plateau[7][10]=new propriete("Avenue des Champs-Elysées","bleu foncé",350,35,175,500,1100,1300,1500,200);
		plateau[8][10]=new taxeLuxe();
		plateau[9][10]=new propriete("Rue de la Paix","bleu foncé",400,50,200,600,1400,1700,2000,200);
		groupeRouge=new groupeProprietes("Rouge");
		groupeRouge.ajouter(plateau[0][1], plateau[0][3],plateau[0][4]);
		groupeGares=new groupeProprietes("Gares");
		groupeGares.ajouter(plateau[0][5],plateau[5][0], plateau[10][5], plateau[5][10]);
		groupeJaune=new groupeProprietes("Jaune");
		groupeJaune.ajouter(plateau[0][6],plateau[0][7],plateau[0][9]);
		groupeOrange=new groupeProprietes("Orange");
		groupeOrange.ajouter(plateau[1][0],plateau[2][0],plateau[4][0]);
		groupeFushia=new groupeProprietes("Fushia");
		groupeFushia.ajouter(plateau[6][0],plateau[7][0],plateau[9][0]);
		groupeBleuCiel=new groupeProprietes("Bleu ciel");
		groupeBleuCiel.ajouter(plateau[10][1],plateau[10][2],plateau[10][4]);
		groupeViolet=new groupeProprietes("Violet");
		groupeViolet.ajouter(plateau[10][7],plateau[10][9]);
		groupeVert=new groupeProprietes("Vert");
		groupeVert.ajouter(plateau[2][10],plateau[4][10],plateau[1][10]);
		groupeBleuFonce=new groupeProprietes("Bleu foncé");
		groupeBleuFonce.ajouter(plateau[9][10],plateau[7][10]);
		groupeCompagnies=new groupeProprietes("Compagnies de distribution");
		groupeCompagnies.ajouter(plateau[0][8],plateau[8][0]);
	}
	/**
	 * 
	 * @return un résultat de dé aléatoire
	 */
	public static int lancerDe(){
		int resultat=0;
		resultat=(int)((Math.random()*6)+1);
		return resultat;
	}
	/**
	 * 
	 * @param i numero de ligne
	 * @param j numero de colonne
	 * @return la case qui se situe a la iéme ligne et la jème colonne
	 */
	public Case getCase(int i, int j){
		return plateau[i][j];
	}
	/**
	 * 
	 * @return le plateau de case
	 */
	public Case[][] getPlateau(){
		return plateau;
	}
	/**
	 * augmente l'argent situé au milieu
	 * @param n valeur à ajouter
	 */
	public static void augmenterArgentMilieu(double n){
		argentMilieu=argentMilieu+n;
	}
	/**
	 * vide l'argent au milieu du plateau
	 */
	public static void viderArgentMilieu(){
		argentMilieu=0;
	}
	/**
	 * @return la valeur de l'argent situé au milieu
	 */
	public static double getArgentMilieu(){
		return argentMilieu;
	}
	/**
	 * 
	 * @param couleur
	 * @return le groupe associé à la couleur
	 */
	public static groupeProprietes getGroupe(String color){
		if (color.equals("rouge"))
			return groupeRouge;
		if (color.equals("jaune"))
			return groupeJaune;
		if (color.equals("orange"))
			return groupeOrange;
		if (color.equals("fushia"))
			return groupeFushia;
		if (color.equals("bleu ciel"))
			return groupeBleuCiel;
		if (color.equals("violet"))
			return groupeViolet;
		if (color.equals("vert"))
			return groupeVert;
		if (color.equals("bleu foncé"))
			return groupeBleuFonce;
		if (color.equals("gares"))
			return groupeGares;
		return groupeCompagnies;
	}
}
