#ifndef PLATEAU_H
#define PLATEAU_H
/*
 *  plateau.h
 *  TicTaeToe
 *
 *  Created by Lionel BUCHELE && Yann Thebault on 29/04/11.
 *  Copyright 2011 EFREI. All rights reserved.
 *  Plateau du jeu
 */

#include "Thebault-Buchele-Case.h"
#include <iostream>
#include <vector>
#include "Thebault-Buchele-MinMax.h"

using namespace std;

class plateau {
	
	private:
		static plateau *jeu;
		plateau(int,int,int);
		static int n;
		static int m;
		static int p;
		static int libre;
		int SolutionVertical(Case *, int);
		int SolutionHorizontal(Case *, int );
		int SolutionDiagonaleHD(Case *, int);
		int SolutionDiagonaleBD(Case *, int);
		int MasqueVertical(Case *,int, int);
		int MasqueHorizontal(Case *,int, int );
		int MasqueDiagonaleHD(Case *,int, int);
		int MasqueDiagonaleBD(Case *,int, int);
		float Masque(int);
		
		MinMax *graph;
		char affichageJoueur(int );
	
	public : 
	float heuristique();
		vector<vector< Case* > > cellule;
		static plateau *getInstance(const int&,const int&, const int &);
		static plateau *getInstance();
		static int  getLibre();
		static void setLibre(int);
		static int  getN();
		static int  getM();
		void affichage();
		int victory(Case *);
		virtual ~plateau();
		int jouerHomme();
		int jouerMachine();
		void selectionCoup();
		int jouerElagage();
};
#endif