From 7f9d100aee8dffa6ee1053c3ad90906840a41261 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Wed, 27 Dec 2023 21:26:02 +0100 Subject: [PATCH] =?UTF-8?q?cast=20d'une=20piece=20en=20PieceDames,=20donc?= =?UTF-8?q?=20pas=20besoin=20de=20cr=C3=A9er=20une=20fonction=20sp=C3=A9ci?= =?UTF-8?q?fique=20dans=20la=20classe=20mere?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- includes/Dames/PieceDames.hpp | 2 +- includes/Piece.hpp | 6 ++---- src/Dames/Dames.cpp | 14 ++++++++++---- src/Piece.cpp | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/includes/Dames/PieceDames.hpp b/includes/Dames/PieceDames.hpp index 5ebeaa2..758f870 100644 --- a/includes/Dames/PieceDames.hpp +++ b/includes/Dames/PieceDames.hpp @@ -12,7 +12,7 @@ struct PieceDames : public Piece { virtual ~PieceDames(); // Getter pour la piece (dame ou non) - bool getDame() const override; + bool getDame() const; // Setter pour la piece (dame ou non) void setDame(const bool d); diff --git a/includes/Piece.hpp b/includes/Piece.hpp index f8ef362..e90d4e2 100644 --- a/includes/Piece.hpp +++ b/includes/Piece.hpp @@ -9,7 +9,8 @@ protected: // Couleur de la pièce ou type d'animal pour Safari par ex std::string categorie; - // Indices où sont placés les pièces sur le plateau (quand elles le sont) (est-ce que c'est redondant ?) + // Indices où sont placés les pièces sur le plateau (quand elles le sont) + // (est-ce que c'est redondant ?) int x; int y; @@ -20,9 +21,6 @@ public: Piece(const Piece &); // copy constructor const Piece &operator=(const Piece &); // copy assignement - // Pour Dames : Fonction virtuelle pour vérifier si une pièce est une dame ou non - virtual bool getDame() const; - // Fonction de déplacement bool moveTo(const int destX, const int destY); diff --git a/src/Dames/Dames.cpp b/src/Dames/Dames.cpp index 7ea2125..d2f00f7 100644 --- a/src/Dames/Dames.cpp +++ b/src/Dames/Dames.cpp @@ -1,4 +1,5 @@ #include "../../includes/Dames/Dames.hpp" +#include "../../includes/Dames/PieceDames.hpp" Dames::Dames(Joueur &j1, Joueur &j2) : plateau(PlateauDames(j1, j2)), joueur1(j1), joueur2(j2), @@ -44,13 +45,18 @@ void Dames::init() { } // TODO: A continuer -// Pas très sûre de comment procéder pour cette fonction : il faudrait vérifier les cases en diagnonale des pièces observées mais est-ce qu'il y a besoin que les pièces aient des attributs pour leur position (comme proposé dans Piece) ? +// Pas très sûre de comment procéder pour cette fonction : il faudrait vérifier +// les cases en diagnonale des pièces observées mais est-ce qu'il y a besoin que +// les pièces aient des attributs pour leur position (comme proposé dans Piece) +// ? bool Dames::prisePossible(Joueur &joueur) const { const std::vector &pieces = joueur.getPieces(); - int x = 1; int y = 1; + int x = 1; + int y = 1; for (int i = 0; i < pieces.size(); i++) { - if (!pieces[i]->getDame()){ - //if(plateau[x][y] == nullptr) + PieceDames *p = dynamic_cast(pieces[i]); + if (p->getDame()) { + // if(plateau[x][y] == nullptr) } } return false; diff --git a/src/Piece.cpp b/src/Piece.cpp index 08c853a..168cbc1 100644 --- a/src/Piece.cpp +++ b/src/Piece.cpp @@ -1,6 +1,6 @@ #include "../includes/Piece.hpp" -Piece::Piece(const std::string cat) { +Piece::Piece(const std::string cat) : categorie(cat) { std::cout << "pièce - " << cat << "\n"; }