2023-12-01 15:27:43 +01:00
|
|
|
#pragma once
|
2023-11-12 16:05:42 +01:00
|
|
|
|
2023-12-14 17:18:28 +01:00
|
|
|
#include "../includes/Piece.hpp"
|
2024-01-07 12:44:33 +01:00
|
|
|
#include "types.hpp"
|
2024-01-06 15:26:03 +01:00
|
|
|
#include <vector>
|
2023-11-12 16:05:42 +01:00
|
|
|
|
|
|
|
class Plateau {
|
|
|
|
friend std::ostream &operator<<(std::ostream &, const Plateau &);
|
|
|
|
|
2023-12-03 17:27:06 +01:00
|
|
|
protected:
|
2023-11-21 12:33:04 +01:00
|
|
|
// Tableau représentant le plateau de jeu
|
|
|
|
Piece ***plateau;
|
2023-11-12 16:05:42 +01:00
|
|
|
|
2023-12-13 20:39:18 +01:00
|
|
|
// Taille du plateau
|
2023-12-31 04:59:45 +01:00
|
|
|
const int taille;
|
2023-12-13 20:39:18 +01:00
|
|
|
|
2023-12-29 01:33:35 +01:00
|
|
|
// Piece actuellement selectionnée
|
|
|
|
Piece *selection;
|
|
|
|
|
2023-11-12 16:05:42 +01:00
|
|
|
public:
|
2023-12-14 17:09:27 +01:00
|
|
|
Plateau(const int taille); // constructor
|
|
|
|
virtual ~Plateau(); // destructor
|
2023-11-12 16:05:42 +01:00
|
|
|
|
2023-11-24 20:14:05 +01:00
|
|
|
// Fonction pour initialiser le plateau (selon le jeu)
|
2023-12-01 15:06:20 +01:00
|
|
|
// Seulement deux joueurs pour le jeu de dame uniquement, je suis pas sûre de
|
|
|
|
// comment initialiser la fonction autrement
|
2023-12-14 17:18:28 +01:00
|
|
|
virtual void initialiserPlateau() = 0;
|
2023-11-12 16:05:42 +01:00
|
|
|
|
2023-12-14 17:51:27 +01:00
|
|
|
// Fonction pour afficher le plateau (selon le jeu) vers une sortie
|
2024-01-06 18:18:51 +01:00
|
|
|
virtual void afficherPlateau(std::ostream &, const bool debug = false) const;
|
2023-11-12 16:05:42 +01:00
|
|
|
|
|
|
|
// Fonction pour modifier le plateau
|
2023-12-14 17:09:27 +01:00
|
|
|
void modifierPlateau(const int x, const int y, Piece *piece) const;
|
2023-12-28 18:01:50 +01:00
|
|
|
|
2023-12-31 03:36:35 +01:00
|
|
|
// 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 ?)
|
2024-01-07 12:44:33 +01:00
|
|
|
const Position moveSelection(const int x, const int y);
|
2023-12-29 02:09:01 +01:00
|
|
|
|
2023-12-29 01:33:35 +01:00
|
|
|
// Renvoie une pièce à une position donnnée
|
2023-12-28 19:40:06 +01:00
|
|
|
Piece *getPiece(const int x, const int y) const;
|
|
|
|
|
2023-12-29 01:33:35 +01:00
|
|
|
// Prend des coordonnées-écran et renvoie des coordonnées-jeu
|
2024-01-07 12:44:33 +01:00
|
|
|
const Position trouveCoordonnees(const int x, const int y) const;
|
2023-12-28 18:26:52 +01:00
|
|
|
|
|
|
|
// Renvoie la taille du plateau
|
|
|
|
int getTaille() const;
|
2023-12-29 01:33:35 +01:00
|
|
|
|
|
|
|
// Change la pièce selectionnée
|
|
|
|
void modifierSelection(const int x, const int y);
|
2024-01-06 15:26:03 +01:00
|
|
|
|
|
|
|
// Renvoie la liste des pièces du plateau
|
|
|
|
std::vector<const Piece *> getPieces() const;
|
2023-11-12 16:05:42 +01:00
|
|
|
};
|