diff --git a/includes/Butin/Butin.hpp b/includes/Butin/Butin.hpp index 067e980..eb90ac8 100644 --- a/includes/Butin/Butin.hpp +++ b/includes/Butin/Butin.hpp @@ -1,18 +1,16 @@ #pragma once -#include "../Joueur.hpp" +#include "../Jeu.hpp" #include "PlateauButin.hpp" -class Butin { +class Butin : private Jeu { friend std::ostream &operator<<(std::ostream &, const Butin &); // Plateau de jeu PlateauButin plateau; // Joueurs - Joueur &joueur1; Joueur &joueur2; - Joueur &joueurCourant; public: Butin(Joueur &joueur1, Joueur &joueur2); // constructor diff --git a/includes/Dames/Dames.hpp b/includes/Dames/Dames.hpp index c9ba8cb..06ef2b3 100644 --- a/includes/Dames/Dames.hpp +++ b/includes/Dames/Dames.hpp @@ -1,17 +1,16 @@ #pragma once +#include "../Jeu.hpp" #include "PlateauDames.hpp" -class Dames { +class Dames : private Jeu { friend std::ostream &operator<<(std::ostream &, const Dames &); // Plateau de jeu PlateauDames plateau; // Joueurs - Joueur &joueur1; Joueur &joueur2; - Joueur &joueurCourant; public: Dames(Joueur &joueur1, Joueur &joueur2); // constructor diff --git a/includes/Jeu.hpp b/includes/Jeu.hpp new file mode 100644 index 0000000..a620006 --- /dev/null +++ b/includes/Jeu.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include "Joueur.hpp" + +class Jeu { + friend std::ostream &operator<<(std::ostream &, const Jeu &); + +protected: + // Joueurs, au moins un joueur + Joueur &joueur1; + Joueur &joueurCourant; + +public: + Jeu(Joueur &j1); // constructor + virtual ~Jeu(); // destructor + + // Fonction d'initialisation d'un jeu + virtual void init() = 0; +}; diff --git a/includes/Safari/Safari.hpp b/includes/Safari/Safari.hpp index 5bdada5..0d41753 100644 --- a/includes/Safari/Safari.hpp +++ b/includes/Safari/Safari.hpp @@ -1,26 +1,24 @@ #pragma once -#include "../Joueur.hpp" +#include "../Jeu.hpp" #include "PieceSafari.hpp" #include "PlateauSafari.hpp" -class Safari { +class Safari : private Jeu { friend std::ostream &operator<<(std::ostream &, const Safari &); // Plateau de jeu PlateauSafari plateau; // Joueurs - Joueur *joueur1; - Joueur *joueur2; + Joueur &joueur2; Joueur *joueur3; - Joueur &joueurCourant; // Barrières std::vector barrieres; public: - Safari(Joueur *joueur1, Joueur *joueur2, + Safari(Joueur &joueur1, Joueur &joueur2, Joueur *joueur3 = nullptr); // constructor virtual ~Safari(); // destructor diff --git a/src/Butin/Butin.cpp b/src/Butin/Butin.cpp index 4b3b741..5d17532 100644 --- a/src/Butin/Butin.cpp +++ b/src/Butin/Butin.cpp @@ -1,15 +1,14 @@ #include "../../includes/Butin/Butin.hpp" Butin::Butin(Joueur &j1, Joueur &j2) - : plateau(PlateauButin()), joueur1{j1}, joueur2{j2}, joueurCourant{j1} { + : Jeu(j1), plateau(PlateauButin()), joueur2{j2} { init(); } Butin::~Butin() {} Butin::Butin(const Butin &src) - : plateau(PlateauButin()), joueur1{src.joueur1}, joueur2{src.joueur2}, - joueurCourant{src.joueurCourant} { + : Jeu(src.joueur1), plateau(PlateauButin()), joueur2{src.joueur2} { init(); } diff --git a/src/Dames/Dames.cpp b/src/Dames/Dames.cpp index 3b65397..c9da84e 100644 --- a/src/Dames/Dames.cpp +++ b/src/Dames/Dames.cpp @@ -2,8 +2,7 @@ #include "../../includes/Dames/PieceDames.hpp" Dames::Dames(Joueur &j1, Joueur &j2) - : plateau(PlateauDames(j1, j2)), joueur1(j1), joueur2(j2), - joueurCourant(j1) { + : Jeu(j1), plateau(PlateauDames(j1, j2)), joueur2(j2) { std::srand(static_cast(time(0))); int r = std::rand() % 2; if (r == 0) { @@ -21,8 +20,8 @@ Dames::Dames(Joueur &j1, Joueur &j2) Dames::~Dames() {} Dames::Dames(const Dames &src) - : plateau(PlateauDames(src.joueur1, src.joueur2)), joueur1{src.joueur1}, - joueur2{src.joueur2}, joueurCourant{src.joueurCourant} { + : Jeu(src.joueur1), plateau(PlateauDames(src.joueur1, src.joueur2)), + joueur2{src.joueur2} { init(); } diff --git a/src/Jeu.cpp b/src/Jeu.cpp new file mode 100644 index 0000000..85ae585 --- /dev/null +++ b/src/Jeu.cpp @@ -0,0 +1,5 @@ +#include "../includes/Jeu.hpp" + +Jeu::Jeu(Joueur &j1) : joueur1(j1), joueurCourant(j1) {} + +Jeu::~Jeu() {} diff --git a/src/Safari/Safari.cpp b/src/Safari/Safari.cpp index 2cc9f75..df35678 100644 --- a/src/Safari/Safari.cpp +++ b/src/Safari/Safari.cpp @@ -3,9 +3,8 @@ /* Contrairement aux autres jeux ici on donne des pointeurs et pas des * références vu que j3 peut ne pas exister (default to nullptr) * Je sais pas trop si c'est une bonne idée, à méditer */ -Safari::Safari(Joueur *j1, Joueur *j2, Joueur *j3) - : plateau(PlateauSafari()), joueur1{j1}, joueur2{j2}, joueur3{j3}, - joueurCourant{*j1} { +Safari::Safari(Joueur &j1, Joueur &j2, Joueur *j3) + : Jeu(j1), plateau(PlateauSafari()), joueur2{j2}, joueur3{j3} { for (int i = 0; i < 50; i++) { barrieres.push_back(new PieceSafari(PieceSafari::Barriere)); } @@ -14,8 +13,8 @@ Safari::Safari(Joueur *j1, Joueur *j2, Joueur *j3) Safari::~Safari() {} Safari::Safari(const Safari &src) - : plateau(PlateauSafari()), joueur1{src.joueur1}, joueur2{src.joueur2}, - joueur3{src.joueur3}, joueurCourant{src.joueurCourant} { + : Jeu(src.joueur1), plateau(PlateauSafari()), joueur2{src.joueur2}, + joueur3{src.joueur3} { for (int i = 0; i < 50; i++) { barrieres.push_back(new PieceSafari(PieceSafari::Barriere)); }