continuation Dames

This commit is contained in:
Emma 2024-01-10 22:33:39 +01:00
parent d9d0596d74
commit c1ce2c4af4
5 changed files with 38 additions and 10 deletions

View file

@ -27,6 +27,7 @@ class Dames : private Jeu {
// Permet de transformer une Piece en PieceDames // Permet de transformer une Piece en PieceDames
const PieceDames *getPiece(const int x, const int y) const; const PieceDames *getPiece(const int x, const int y) const;
PieceDames *getPiece(Piece *) const;
// Message à chaque tour du joueur // Message à chaque tour du joueur
const std::string msgTonTour() const; const std::string msgTonTour() const;

View file

@ -4,12 +4,16 @@
#include "../Plateau.hpp" #include "../Plateau.hpp"
class PlateauDames : public Plateau { class PlateauDames : public Plateau {
Joueur *j1, *j2;
// Vérifie que le déplacement est valide
bool deplacementValide(const int destX, const int destY) const;
public: public:
PlateauDames(Joueur &joueur1, Joueur &joueur2); PlateauDames(Joueur &joueur1, Joueur &joueur2);
virtual ~PlateauDames(); virtual ~PlateauDames();
Joueur *j1, *j2;
// Pareil que deplacementValide mais est utilisable avec des coordonnées
bool deplacementValideCoor(const int x1, const int y1, const int x2,
const int y2) const;
// Vérifie que le déplacement est valide
bool deplacementValide(const int destX, const int destY) const;
}; };

View file

@ -1,5 +1,6 @@
#include "../../includes/Dames/Dames.hpp" #include "../../includes/Dames/Dames.hpp"
#include "../../includes/Dames/PieceDames.hpp" #include "../../includes/Dames/PieceDames.hpp"
#include "../../includes/Ecran.hpp"
Dames::Dames(Joueur &j1, Joueur &j2) Dames::Dames(Joueur &j1, Joueur &j2)
: Jeu(j1), plateau(PlateauDames(j1, j2)), joueur2(j2) { : Jeu(j1), plateau(PlateauDames(j1, j2)), joueur2(j2) {
@ -28,6 +29,10 @@ const PieceDames *Dames::getPiece(const int x, const int y) const {
return dynamic_cast<const PieceDames *>(plateau.getPiece(x, y)); return dynamic_cast<const PieceDames *>(plateau.getPiece(x, y));
} }
PieceDames *Dames::getPiece(Piece *piece) const {
return dynamic_cast<PieceDames *>(piece);
}
const std::string Dames::msgTonTour() const { const std::string Dames::msgTonTour() const {
return "Joueur " + std::to_string(joueurCourant->getNum()) + return "Joueur " + std::to_string(joueurCourant->getNum()) +
", c'est votre tour. "; ", c'est votre tour. ";
@ -57,13 +62,23 @@ void Dames::event(const int x, const int y) {
} }
case EnJeu: { case EnJeu: {
const Piece *p = getPiece(posCurseur.first, posCurseur.second); const Piece *p = getPiece(posCurseur.first, posCurseur.second);
/*if (getPiece(posCurseur.first, posCurseur.second)->getCategory() == if (getPiece(posCurseur.first, posCurseur.second)->getCategory() ==
getPiece(joueurCourant->getPieces().at(0))->getCategory()) { getPiece(joueurCourant->getPieces().at(0))->getCategory()) {
// On sélectionne la pièce // On sélectionne la pièce
plateau.modifierSelection(posCurseur.first, posCurseur.second); plateau.modifierSelection(posCurseur.first, posCurseur.second);
}*/ }
if(prisePossible(*joueurCourant))
Ecran::printMessage("Vous devez forcément faire une prise.");
// Vérifier que le déplacement est correct
if (plateau.deplacementValide(posCurseur.first, posCurseur.second)) {
plateau.moveSelection(posCurseur.first, posCurseur.second);
// Donne la main au joueur suivant
changerJoueurCourant();
Ecran::printMessage(msgTonTour());
}
} }
case Fini: { case Fini: {
break;
} }
} }
} }
@ -102,7 +117,10 @@ bool Dames::prisePossible(Joueur &joueur) const {
throw std::runtime_error("Cette pièce est.. étrange."); throw std::runtime_error("Cette pièce est.. étrange.");
} }
if (!p->getDame()) { if (!p->getDame()) {
// if(plateau.getPiece(pos.first-1, pos.second) == nullptr) //A continuer
if(plateau.getPiece(pos.first-1, pos.second-1) != nullptr){
}
} }
} }
return false; return false;

View file

@ -7,9 +7,9 @@ PieceDames::PieceDames(const enum Categorie cat, const int posX, const int posY)
PieceDames::~PieceDames() {} PieceDames::~PieceDames() {}
/*enum PieceDames::Categorie PieceDames::getCategory() const { enum PieceDames::Categorie PieceDames::getCategory() const {
return _category; return _category;
}*/ }
bool PieceDames::getDame() const { bool PieceDames::getDame() const {
return dame; return dame;

View file

@ -25,6 +25,11 @@ PlateauDames::PlateauDames(Joueur &joueur1, Joueur &joueur2)
PlateauDames::~PlateauDames() {} PlateauDames::~PlateauDames() {}
bool PlateauDames::deplacementValideCoor(const int x1, const int y1,
const int x2, const int y2) const {
return (x2 == x1 || y2 == y1);
}
// Peut-etre utiliser cette fonction pour prisePossible ? // Peut-etre utiliser cette fonction pour prisePossible ?
bool PlateauDames::deplacementValide(const int x, const int y) const { bool PlateauDames::deplacementValide(const int x, const int y) const {
if (!selection) { if (!selection) {
@ -33,5 +38,5 @@ bool PlateauDames::deplacementValide(const int x, const int y) const {
// TODO // TODO
Position posInitiale = selection->getPos(); Position posInitiale = selection->getPos();
return false; return deplacementValideCoor(posInitiale.first, posInitiale.second, x, y);
} }