

un objet grille qui stock les case
    il répond à at(col,row)
    un setteur pour jouer qui modifie la grille validation incluse
un objet jeu qui va alterner les tours entre les joueur  
    un attribut joueur qui change tout seul quand une piece est placé 
    un setteur pour jouer qui modifie la grille et l'attribut joueur, validation incluse
    une methode de test win qui retourne le gagnant
un objet STD pour avoir un interface avec la console
    methode print pour afficher la partie
    mehtode saisie pour prendre le tour du joueur
    surcharge de << et >>

template <int N>
class grille{
protected:
    int _arr[N];
    enum piece {vide, X, O};
public:
    grille();    //constructeur vide la grille
    //setteur
    void setAt(int col, int row);
                //vérifi la validité de la coordoné, place la piece
    //getteur
    int getAt(int col, int row);
                //retourne la piece à la coordonné choisie
};

class tictacto : public grille<9>{
    int _joueur;
public:
    tictacto() : grille(); 
                //constructeur avec appel du constructeur parent
                //, randomize joueur entre 1 et 2
    //setteur
    void setAt(int col, int row);
                //vérifi la validité de la coordoné, place la piece
                //change l'attribut joueur au besoin
    int win();  //retourne 0 si pas encore gagné, ou la piece gagnante     
};

class tictactoSTD : public tictacto{
public:
    void print();
    void input();
    friend operator<< (ostream&, tictactoSTD);
    friend operator>> (istream&, tictactoSTD);
};
