#pragma once
#include "../Jeu.hpp"
#include "PlateauButin.hpp"
struct PieceButin;
class Butin : private Jeu {
friend std::ostream &operator<<(std::ostream &, const Butin &);
// Plateau de jeu
PlateauButin plateau;
// Joueurs
Joueur &joueur2;
// Etape du jeu, pour savoir où on en est
enum Etape {
ChoixJ1 = 0,
ChoixJ2,
EnJeu,
Fini,
};
// Où l'on se trouve dans le jeu, à quelle étape nous sommes
enum Etape etape;
// Permet de transformer une Piece en PieceButin
PieceButin *getPiece(const int x, const int y) const;
// Message quand les joueurs retirent les pièces au début du jeu
std::string msgPieceJaune(const int num, const bool erreur = false) const;
// Message à chaque tour du joueur
std::string msgTonTour(const int num) const;
public:
Butin(Joueur &joueur1, Joueur &joueur2); // constructor
virtual ~Butin(); // destructor
// Fonction d'initialisation du jeu
void init() override;
// Fonction de jeu
void play() override;
// Fonction d'évènement
void event(const int x, const int y) override;
// Position curseur
std::pair<int, int> getPosition() const override;