cast d'une piece en PieceDames, donc pas besoin de créer une fonction spécifique dans la classe mere

This commit is contained in:
Mylloon 2023-12-27 21:26:02 +01:00
parent cbebb6719c
commit 7f9d100aee
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
4 changed files with 14 additions and 10 deletions

View file

@ -12,7 +12,7 @@ struct PieceDames : public Piece {
virtual ~PieceDames(); virtual ~PieceDames();
// Getter pour la piece (dame ou non) // Getter pour la piece (dame ou non)
bool getDame() const override; bool getDame() const;
// Setter pour la piece (dame ou non) // Setter pour la piece (dame ou non)
void setDame(const bool d); void setDame(const bool d);

View file

@ -9,7 +9,8 @@ protected:
// Couleur de la pièce ou type d'animal pour Safari par ex // Couleur de la pièce ou type d'animal pour Safari par ex
std::string categorie; 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 x;
int y; int y;
@ -20,9 +21,6 @@ public:
Piece(const Piece &); // copy constructor Piece(const Piece &); // copy constructor
const Piece &operator=(const Piece &); // copy assignement 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 // Fonction de déplacement
bool moveTo(const int destX, const int destY); bool moveTo(const int destX, const int destY);

View file

@ -1,4 +1,5 @@
#include "../../includes/Dames/Dames.hpp" #include "../../includes/Dames/Dames.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), : plateau(PlateauDames(j1, j2)), joueur1(j1), joueur2(j2),
@ -44,13 +45,18 @@ void Dames::init() {
} }
// TODO: A continuer // 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 { bool Dames::prisePossible(Joueur &joueur) const {
const std::vector<Piece *> &pieces = joueur.getPieces(); const std::vector<Piece *> &pieces = joueur.getPieces();
int x = 1; int y = 1; int x = 1;
int y = 1;
for (int i = 0; i < pieces.size(); i++) { for (int i = 0; i < pieces.size(); i++) {
if (!pieces[i]->getDame()){ PieceDames *p = dynamic_cast<PieceDames *>(pieces[i]);
//if(plateau[x][y] == nullptr) if (p->getDame()) {
// if(plateau[x][y] == nullptr)
} }
} }
return false; return false;

View file

@ -1,6 +1,6 @@
#include "../includes/Piece.hpp" #include "../includes/Piece.hpp"
Piece::Piece(const std::string cat) { Piece::Piece(const std::string cat) : categorie(cat) {
std::cout << "pièce - " << cat << "\n"; std::cout << "pièce - " << cat << "\n";
} }