#pragma once #include "../includes/Piece.hpp" #include "types.hpp" #include class Plateau { friend std::ostream &operator<<(std::ostream &, const Plateau &); protected: // Tableau représentant le plateau de jeu Piece ***plateau; // Taille du plateau const int taille; // Piece actuellement selectionnée Piece *selection; public: Plateau(const int taille); // constructor virtual ~Plateau(); // destructor // Fonction pour initialiser le plateau (selon le jeu) // Seulement deux joueurs pour le jeu de dame uniquement, je suis pas sûre de // comment initialiser la fonction autrement virtual void initialiserPlateau() = 0; // Fonction pour afficher le plateau (selon le jeu) vers une sortie virtual void afficherPlateau(std::ostream &, const bool debug = false) const; // Fonction pour modifier le plateau void modifierPlateau(const int x, const int y, Piece *piece) const; // Fonction pour bouger une pièce, renvoie les anciennes coordonnées de la // pièce bougée (TODO: est-ce utile de renvoyer les anciennes coordonnées ?) const Position moveSelection(const int x, const int y); // Renvoie une pièce à une position donnnée Piece *getPiece(const int x, const int y) const; // Prend des coordonnées-écran et renvoie des coordonnées-jeu const Position trouveCoordonnees(const int x, const int y) const; // Renvoie la taille du plateau int getTaille() const; // Change la pièce selectionnée void modifierSelection(const int x, const int y); // Renvoie la liste des pièces du plateau std::vector getPieces() const; };