From a1f9e5d2c57bfeeaf7dd180b9351e10ab30e2fd7 Mon Sep 17 00:00:00 2001 From: Emma Date: Sun, 10 Dec 2023 15:03:07 +0100 Subject: [PATCH] Safari --- includes/Joueur.hpp | 3 ++- includes/PieceSafari.hpp | 9 +++++++++ includes/PlateauSafari.hpp | 12 ++++++++++++ includes/Safari.hpp | 18 ++++++++++++++++-- src/PieceSafari.cpp | 7 +++++++ src/PlateauSafari.cpp | 5 +++++ src/Safari.cpp | 21 +++++++++++++++++++-- 7 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 includes/PieceSafari.hpp create mode 100644 includes/PlateauSafari.hpp create mode 100644 src/PieceSafari.cpp create mode 100644 src/PlateauSafari.cpp diff --git a/includes/Joueur.hpp b/includes/Joueur.hpp index 3d0eb8c..f3def0a 100644 --- a/includes/Joueur.hpp +++ b/includes/Joueur.hpp @@ -11,7 +11,8 @@ class Joueur { // Pièces du joueur // Pour le butin, tout simplement les pièces que le joueur gagne. - // Pour les autres jeux, peut être uniquement les pieces sur le plateau. + // Pour les dames, peut être uniquement les pieces sur le plateau. + // Pour le safari, les animaux du joueur std::vector pieces; public: diff --git a/includes/PieceSafari.hpp b/includes/PieceSafari.hpp new file mode 100644 index 0000000..ea0a596 --- /dev/null +++ b/includes/PieceSafari.hpp @@ -0,0 +1,9 @@ +#pragma once + +#include "Piece.hpp" + +class PieceSafari : public Piece { +public: + PieceSafari(std::string categorie); + virtual ~PieceSafari(); +}; \ No newline at end of file diff --git a/includes/PlateauSafari.hpp b/includes/PlateauSafari.hpp new file mode 100644 index 0000000..2f5b0a7 --- /dev/null +++ b/includes/PlateauSafari.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include "Plateau.hpp" + + +class PlateauSafari : public Plateau { +public: + PlateauSafari(int taille); + virtual ~PlateauSafari(); + + +}; \ No newline at end of file diff --git a/includes/Safari.hpp b/includes/Safari.hpp index 2d9d199..a061949 100644 --- a/includes/Safari.hpp +++ b/includes/Safari.hpp @@ -2,19 +2,33 @@ #include +#include "../includes/Joueur.hpp" +#include "../includes/PlateauSafari.hpp" +#include "../includes/PieceSafari.hpp" + class Safari { friend std::ostream &operator<<(std::ostream &, const Safari &); // Plateau de jeu + PlateauSafari plateau; + + //Barrières + std::vector barrieres; // Joueurs + Joueur &joueur1; + Joueur &joueur2; + Joueur &joueur3; + Joueur &joueurCourant; public: - Safari(); // constructor + Safari(Joueur &joueur1, Joueur &joueur2, Joueur &joueur3); // constructor virtual ~Safari(); // destructor Safari(const Safari &); // copy constructor const Safari &operator=(const Safari &); // copy assignement + + // Fonction d'initialisation du jeu + void choixAnimal(std::string animal); }; -// Fonction d'initialisation du jeu diff --git a/src/PieceSafari.cpp b/src/PieceSafari.cpp new file mode 100644 index 0000000..58f1b3f --- /dev/null +++ b/src/PieceSafari.cpp @@ -0,0 +1,7 @@ +#include "../includes/PieceSafari.hpp" + +PieceSafari::PieceSafari(const std::string cat) : Piece(cat) { + std::cout << "pièce - " << cat << "\n"; +} + +PieceSafari::~PieceSafari() {} diff --git a/src/PlateauSafari.cpp b/src/PlateauSafari.cpp new file mode 100644 index 0000000..4d7c1b2 --- /dev/null +++ b/src/PlateauSafari.cpp @@ -0,0 +1,5 @@ +#include "../includes/PlateauSafari.hpp" + +PlateauSafari::PlateauSafari(int t) : Plateau(t) {} + +PlateauSafari::~PlateauSafari() {} diff --git a/src/Safari.cpp b/src/Safari.cpp index e194c91..065ad03 100644 --- a/src/Safari.cpp +++ b/src/Safari.cpp @@ -1,10 +1,19 @@ #include "../includes/Safari.hpp" -Safari::Safari() { std::cout << "safari\n"; } +Safari::Safari(Joueur &j1, Joueur &j2, Joueur &j3) +: plateau(PlateauSafari(8)), joueur1{j1}, joueur2{j2}, joueur3{j3}, joueurCourant{j1}{ + for(int i=0;i<50;i++) + barrieres.push_back(new PieceSafari("barriere")); +} Safari::~Safari() {} -Safari::Safari(const Safari &) {} +Safari::Safari(const Safari &src) + : plateau(PlateauSafari(8)), joueur1{src.joueur1}, joueur2{src.joueur2}, joueur3{src.joueur3}, + joueurCourant{src.joueurCourant} { + for(int i=0;i<50;i++) + barrieres.push_back(new PieceSafari("barriere")); + } const Safari &Safari::operator=(const Safari &src) { if (this == &src) { @@ -13,3 +22,11 @@ const Safari &Safari::operator=(const Safari &src) { return *this; } + +void Safari::choixAnimal(std::string animal){ + if(animal!="éléphant" || animal!="rhinocéros" || animal!="lion") + throw std::invalid_argument("Animal non valide"); + if(joueurCourant.getPieces().empty()) + for(int i=0;i<3;i++) + joueurCourant.ajoutPiece(new PieceSafari(animal)); +} \ No newline at end of file