tout les jeux sont des jeux

This commit is contained in:
Mylloon 2023-12-27 22:44:32 +01:00
parent 627f91e807
commit a9293d1305
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
8 changed files with 41 additions and 25 deletions

View file

@ -1,18 +1,16 @@
#pragma once #pragma once
#include "../Joueur.hpp" #include "../Jeu.hpp"
#include "PlateauButin.hpp" #include "PlateauButin.hpp"
class Butin { class Butin : private Jeu {
friend std::ostream &operator<<(std::ostream &, const Butin &); friend std::ostream &operator<<(std::ostream &, const Butin &);
// Plateau de jeu // Plateau de jeu
PlateauButin plateau; PlateauButin plateau;
// Joueurs // Joueurs
Joueur &joueur1;
Joueur &joueur2; Joueur &joueur2;
Joueur &joueurCourant;
public: public:
Butin(Joueur &joueur1, Joueur &joueur2); // constructor Butin(Joueur &joueur1, Joueur &joueur2); // constructor

View file

@ -1,17 +1,16 @@
#pragma once #pragma once
#include "../Jeu.hpp"
#include "PlateauDames.hpp" #include "PlateauDames.hpp"
class Dames { class Dames : private Jeu {
friend std::ostream &operator<<(std::ostream &, const Dames &); friend std::ostream &operator<<(std::ostream &, const Dames &);
// Plateau de jeu // Plateau de jeu
PlateauDames plateau; PlateauDames plateau;
// Joueurs // Joueurs
Joueur &joueur1;
Joueur &joueur2; Joueur &joueur2;
Joueur &joueurCourant;
public: public:
Dames(Joueur &joueur1, Joueur &joueur2); // constructor Dames(Joueur &joueur1, Joueur &joueur2); // constructor

19
includes/Jeu.hpp Normal file
View file

@ -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;
};

View file

@ -1,26 +1,24 @@
#pragma once #pragma once
#include "../Joueur.hpp" #include "../Jeu.hpp"
#include "PieceSafari.hpp" #include "PieceSafari.hpp"
#include "PlateauSafari.hpp" #include "PlateauSafari.hpp"
class Safari { class Safari : private Jeu {
friend std::ostream &operator<<(std::ostream &, const Safari &); friend std::ostream &operator<<(std::ostream &, const Safari &);
// Plateau de jeu // Plateau de jeu
PlateauSafari plateau; PlateauSafari plateau;
// Joueurs // Joueurs
Joueur *joueur1; Joueur &joueur2;
Joueur *joueur2;
Joueur *joueur3; Joueur *joueur3;
Joueur &joueurCourant;
// Barrières // Barrières
std::vector<PieceSafari *> barrieres; std::vector<PieceSafari *> barrieres;
public: public:
Safari(Joueur *joueur1, Joueur *joueur2, Safari(Joueur &joueur1, Joueur &joueur2,
Joueur *joueur3 = nullptr); // constructor Joueur *joueur3 = nullptr); // constructor
virtual ~Safari(); // destructor virtual ~Safari(); // destructor

View file

@ -1,15 +1,14 @@
#include "../../includes/Butin/Butin.hpp" #include "../../includes/Butin/Butin.hpp"
Butin::Butin(Joueur &j1, Joueur &j2) Butin::Butin(Joueur &j1, Joueur &j2)
: plateau(PlateauButin()), joueur1{j1}, joueur2{j2}, joueurCourant{j1} { : Jeu(j1), plateau(PlateauButin()), joueur2{j2} {
init(); init();
} }
Butin::~Butin() {} Butin::~Butin() {}
Butin::Butin(const Butin &src) Butin::Butin(const Butin &src)
: plateau(PlateauButin()), joueur1{src.joueur1}, joueur2{src.joueur2}, : Jeu(src.joueur1), plateau(PlateauButin()), joueur2{src.joueur2} {
joueurCourant{src.joueurCourant} {
init(); init();
} }

View file

@ -2,8 +2,7 @@
#include "../../includes/Dames/PieceDames.hpp" #include "../../includes/Dames/PieceDames.hpp"
Dames::Dames(Joueur &j1, Joueur &j2) Dames::Dames(Joueur &j1, Joueur &j2)
: plateau(PlateauDames(j1, j2)), joueur1(j1), joueur2(j2), : Jeu(j1), plateau(PlateauDames(j1, j2)), joueur2(j2) {
joueurCourant(j1) {
std::srand(static_cast<unsigned int>(time(0))); std::srand(static_cast<unsigned int>(time(0)));
int r = std::rand() % 2; int r = std::rand() % 2;
if (r == 0) { if (r == 0) {
@ -21,8 +20,8 @@ Dames::Dames(Joueur &j1, Joueur &j2)
Dames::~Dames() {} Dames::~Dames() {}
Dames::Dames(const Dames &src) Dames::Dames(const Dames &src)
: plateau(PlateauDames(src.joueur1, src.joueur2)), joueur1{src.joueur1}, : Jeu(src.joueur1), plateau(PlateauDames(src.joueur1, src.joueur2)),
joueur2{src.joueur2}, joueurCourant{src.joueurCourant} { joueur2{src.joueur2} {
init(); init();
} }

5
src/Jeu.cpp Normal file
View file

@ -0,0 +1,5 @@
#include "../includes/Jeu.hpp"
Jeu::Jeu(Joueur &j1) : joueur1(j1), joueurCourant(j1) {}
Jeu::~Jeu() {}

View file

@ -3,9 +3,8 @@
/* Contrairement aux autres jeux ici on donne des pointeurs et pas des /* 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) * 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 */ * Je sais pas trop si c'est une bonne idée, à méditer */
Safari::Safari(Joueur *j1, Joueur *j2, Joueur *j3) Safari::Safari(Joueur &j1, Joueur &j2, Joueur *j3)
: plateau(PlateauSafari()), joueur1{j1}, joueur2{j2}, joueur3{j3}, : Jeu(j1), plateau(PlateauSafari()), joueur2{j2}, joueur3{j3} {
joueurCourant{*j1} {
for (int i = 0; i < 50; i++) { for (int i = 0; i < 50; i++) {
barrieres.push_back(new PieceSafari(PieceSafari::Barriere)); barrieres.push_back(new PieceSafari(PieceSafari::Barriere));
} }
@ -14,8 +13,8 @@ Safari::Safari(Joueur *j1, Joueur *j2, Joueur *j3)
Safari::~Safari() {} Safari::~Safari() {}
Safari::Safari(const Safari &src) Safari::Safari(const Safari &src)
: plateau(PlateauSafari()), joueur1{src.joueur1}, joueur2{src.joueur2}, : Jeu(src.joueur1), plateau(PlateauSafari()), joueur2{src.joueur2},
joueur3{src.joueur3}, joueurCourant{src.joueurCourant} { joueur3{src.joueur3} {
for (int i = 0; i < 50; i++) { for (int i = 0; i < 50; i++) {
barrieres.push_back(new PieceSafari(PieceSafari::Barriere)); barrieres.push_back(new PieceSafari(PieceSafari::Barriere));
} }