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
|
// 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;
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue