continuation Dames
This commit is contained in:
parent
d9d0596d74
commit
c1ce2c4af4
5 changed files with 38 additions and 10 deletions
|
@ -27,6 +27,7 @@ class Dames : private Jeu {
|
|||
|
||||
// Permet de transformer une Piece en PieceDames
|
||||
const PieceDames *getPiece(const int x, const int y) const;
|
||||
PieceDames *getPiece(Piece *) const;
|
||||
|
||||
// Message à chaque tour du joueur
|
||||
const std::string msgTonTour() const;
|
||||
|
|
|
@ -4,12 +4,16 @@
|
|||
#include "../Plateau.hpp"
|
||||
|
||||
class PlateauDames : public Plateau {
|
||||
public:
|
||||
PlateauDames(Joueur &joueur1, Joueur &joueur2);
|
||||
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;
|
||||
|
||||
public:
|
||||
PlateauDames(Joueur &joueur1, Joueur &joueur2);
|
||||
virtual ~PlateauDames();
|
||||
};
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "../../includes/Dames/Dames.hpp"
|
||||
#include "../../includes/Dames/PieceDames.hpp"
|
||||
#include "../../includes/Ecran.hpp"
|
||||
|
||||
Dames::Dames(Joueur &j1, Joueur &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));
|
||||
}
|
||||
|
||||
PieceDames *Dames::getPiece(Piece *piece) const {
|
||||
return dynamic_cast<PieceDames *>(piece);
|
||||
}
|
||||
|
||||
const std::string Dames::msgTonTour() const {
|
||||
return "Joueur " + std::to_string(joueurCourant->getNum()) +
|
||||
", c'est votre tour. ";
|
||||
|
@ -57,13 +62,23 @@ void Dames::event(const int x, const int y) {
|
|||
}
|
||||
case EnJeu: {
|
||||
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()) {
|
||||
// On sélectionne la pièce
|
||||
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: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -102,7 +117,10 @@ bool Dames::prisePossible(Joueur &joueur) const {
|
|||
throw std::runtime_error("Cette pièce est.. étrange.");
|
||||
}
|
||||
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;
|
||||
|
|
|
@ -7,9 +7,9 @@ PieceDames::PieceDames(const enum Categorie cat, const int posX, const int posY)
|
|||
|
||||
PieceDames::~PieceDames() {}
|
||||
|
||||
/*enum PieceDames::Categorie PieceDames::getCategory() const {
|
||||
enum PieceDames::Categorie PieceDames::getCategory() const {
|
||||
return _category;
|
||||
}*/
|
||||
}
|
||||
|
||||
bool PieceDames::getDame() const {
|
||||
return dame;
|
||||
|
|
|
@ -25,6 +25,11 @@ PlateauDames::PlateauDames(Joueur &joueur1, Joueur &joueur2)
|
|||
|
||||
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 ?
|
||||
bool PlateauDames::deplacementValide(const int x, const int y) const {
|
||||
if (!selection) {
|
||||
|
@ -33,5 +38,5 @@ bool PlateauDames::deplacementValide(const int x, const int y) const {
|
|||
// TODO
|
||||
|
||||
Position posInitiale = selection->getPos();
|
||||
return false;
|
||||
return deplacementValideCoor(posInitiale.first, posInitiale.second, x, y);
|
||||
}
|
||||
|
|
Reference in a new issue