diff --git a/includes/Butin.hpp b/includes/Butin.hpp index be19c97..26ab091 100644 --- a/includes/Butin.hpp +++ b/includes/Butin.hpp @@ -2,15 +2,22 @@ #include +#include "../includes/Joueur.hpp" +#include "../includes/PlateauButin.hpp" + class Butin { friend std::ostream &operator<<(std::ostream &, const Butin &); // Plateau de jeu + PlateauButin plateau; // Joueurs + Joueur &joueur1; + Joueur &joueur2; + Joueur &joueurCourant; public: - Butin(); // constructor + Butin(Joueur &joueur1, Joueur &joueur2); // constructor virtual ~Butin(); // destructor Butin(const Butin &); // copy constructor diff --git a/includes/Plateau.hpp b/includes/Plateau.hpp index 428769a..f25cae9 100644 --- a/includes/Plateau.hpp +++ b/includes/Plateau.hpp @@ -7,7 +7,7 @@ class Plateau { // Taille du plateau int taille; - +protected: // Tableau représentant le plateau de jeu Piece ***plateau; diff --git a/includes/PlateauButin.hpp b/includes/PlateauButin.hpp new file mode 100644 index 0000000..04ab334 --- /dev/null +++ b/includes/PlateauButin.hpp @@ -0,0 +1,13 @@ +#pragma once + +#include "Plateau.hpp" + + +class PlateauButin : public Plateau { +public: + PlateauButin(int taille); + virtual ~PlateauButin(); + + // Initialise le plateau du Butin + void initialiserPlateau(Joueur &j1, Joueur &j2) override; +}; \ No newline at end of file diff --git a/src/Butin.cpp b/src/Butin.cpp index fc07df9..34465e8 100644 --- a/src/Butin.cpp +++ b/src/Butin.cpp @@ -1,10 +1,17 @@ #include "../includes/Butin.hpp" -Butin::Butin() { std::cout << "butin\n"; } +Butin::Butin(Joueur &j1, Joueur &j2) +: plateau(PlateauButin(8)), joueur1{j1}, joueur2{j2}, joueurCourant{j1}{ + plateau.initialiserPlateau(j1, j2); +} Butin::~Butin() {} -Butin::Butin(const Butin &) {} +Butin::Butin(const Butin &src) + : plateau(PlateauButin(8)), joueur1{src.joueur1}, joueur2{src.joueur2}, + joueurCourant{src.joueurCourant} { + plateau.initialiserPlateau(joueur1, joueur2); + } const Butin &Butin::operator=(const Butin &src) { if (this == &src) { diff --git a/src/PieceButin.cpp b/src/PieceButin.cpp index 0cb829c..7ba01c6 100644 --- a/src/PieceButin.cpp +++ b/src/PieceButin.cpp @@ -2,6 +2,9 @@ PieceButin::PieceButin(const std::string cat) : Piece(cat) { std::cout << "pièce - " << cat << "\n"; + if(cat=="jaune") this->points=1; + if(cat=="rouge") this->points=2; + if(cat=="noire") this->points=3; } PieceButin::~PieceButin() {} diff --git a/src/PlateauButin.cpp b/src/PlateauButin.cpp new file mode 100644 index 0000000..9f3d438 --- /dev/null +++ b/src/PlateauButin.cpp @@ -0,0 +1,32 @@ +#include "../includes/PlateauButin.hpp" +#include "../includes/PieceButin.hpp" + +#include +#include + +PlateauButin::PlateauButin(int t) : Plateau(t) {} + +PlateauButin::~PlateauButin() {} + + +// On utilise pas les arguments ici, à voir si il faut vraiment faire un override +void PlateauButin::initialiserPlateau(Joueur &j1, Joueur &j2){ + // Vecteur de toutes les pièeces du jeu + std::vector pieces; + for(int i=0;i<34;i++) pieces.push_back(PieceButin("jaune")); + for(int i=0;i<20;i++) pieces.push_back(PieceButin("rouge")); + for(int i=0;i<10;i++) pieces.push_back(PieceButin("noire")); + + // Mélange le vecteur de pièces (j'ai jamais utilisé ça pour randomiser faudra que je test que ça fonctionne bien) + std::random_device rd; + std::mt19937 g(rd()); + std::shuffle(pieces.begin(), pieces.end(), g); + + // Place toutes les pieces sur le plateau + int index=0; + for(int i=0;i<8;i++){ + for(int j=0;j<8;j++){ + plateau[i][j] = &pieces[index++]; + } + } +} \ No newline at end of file