modifs Dames
This commit is contained in:
parent
ebf3a4fea6
commit
042f02ef81
4 changed files with 84 additions and 2 deletions
|
@ -3,6 +3,8 @@
|
|||
#include "../Jeu.hpp"
|
||||
#include "PlateauDames.hpp"
|
||||
|
||||
struct PieceDames;
|
||||
|
||||
class Dames : private Jeu {
|
||||
friend std::ostream &operator<<(std::ostream &, const Dames &);
|
||||
|
||||
|
@ -10,7 +12,27 @@ class Dames : private Jeu {
|
|||
PlateauDames plateau;
|
||||
|
||||
// Joueurs
|
||||
const Joueur &joueur2;
|
||||
Joueur &joueur2;
|
||||
|
||||
// Etape du jeu, pour savoir où on en est
|
||||
enum Etape {
|
||||
ChoixJ1 = 0,
|
||||
ChoixJ2,
|
||||
EnJeu,
|
||||
Fini,
|
||||
};
|
||||
|
||||
// Où l'on se trouve dans le jeu, à quelle étape nous sommes
|
||||
enum Etape etape;
|
||||
|
||||
// Permet de transformer une Piece en PieceDames
|
||||
const PieceDames *getPiece(const int x, const int y) const;
|
||||
|
||||
// Message à chaque tour du joueur
|
||||
const std::string msgTonTour() const;
|
||||
|
||||
// Change de joueur courant
|
||||
void changerJoueurCourant();
|
||||
|
||||
public:
|
||||
Dames(Joueur &joueur1, Joueur &joueur2); // constructor
|
||||
|
|
|
@ -6,6 +6,9 @@
|
|||
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:
|
||||
PlateauDames(Joueur &joueur1, Joueur &joueur2);
|
||||
virtual ~PlateauDames();
|
||||
|
|
|
@ -24,11 +24,47 @@ std::ostream &operator<<(std::ostream &out, const Dames &data) {
|
|||
return out;
|
||||
}
|
||||
|
||||
const PieceDames *Dames::getPiece(const int x, const int y) const {
|
||||
return dynamic_cast<const PieceDames *>(plateau.getPiece(x, y));
|
||||
}
|
||||
|
||||
const std::string Dames::msgTonTour() const {
|
||||
return "Joueur " + std::to_string(joueurCourant->getNum()) +
|
||||
", c'est votre tour. ";
|
||||
}
|
||||
|
||||
void Dames::play() {
|
||||
plateau.afficherPlateau(std::cout);
|
||||
}
|
||||
|
||||
void Dames::event(const int, const int) {}
|
||||
void Dames::event(const int x, const int y) {
|
||||
// Update position
|
||||
posCurseur = plateau.trouveCoordonnees(x, y);
|
||||
posCurseur = getPosition();
|
||||
if (posCurseur.first == -1) {
|
||||
// Mauvaise position
|
||||
return;
|
||||
}
|
||||
|
||||
// Texte de debug
|
||||
std::cout << "Clic souris @ (" << x << ", " << y << ") aka ("
|
||||
<< posCurseur.first << ", " << posCurseur.second << ")\n";
|
||||
|
||||
switch(etape){
|
||||
case ChoixJ1: {
|
||||
|
||||
}
|
||||
case ChoixJ2: {
|
||||
|
||||
}
|
||||
case EnJeu: {
|
||||
const Piece *p = getPiece(posCurseur.first, posCurseur.second);
|
||||
}
|
||||
case Fini: {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const Position Dames::getPosition() const {
|
||||
if (posCurseur.second > plateau.getTaille() - 1) {
|
||||
|
@ -39,11 +75,20 @@ const Position Dames::getPosition() const {
|
|||
return posCurseur;
|
||||
}
|
||||
|
||||
void Dames::changerJoueurCourant() {
|
||||
if (joueurCourant->getNum() == joueur1.getNum()) {
|
||||
joueurCourant = &joueur2;
|
||||
} else {
|
||||
joueurCourant = &joueur1;
|
||||
}
|
||||
}
|
||||
|
||||
// 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)
|
||||
// ?
|
||||
// UPDATE : utiliser deplacementValide ?
|
||||
bool Dames::prisePossible(Joueur &joueur) const {
|
||||
const std::vector<Piece *> &pieces = joueur.getPieces();
|
||||
int x = 1;
|
||||
|
|
|
@ -23,3 +23,15 @@ PlateauDames::PlateauDames(Joueur &joueur1, Joueur &joueur2)
|
|||
}
|
||||
|
||||
PlateauDames::~PlateauDames() {}
|
||||
|
||||
|
||||
// Peut-etre utiliser cette fonction pour prisePossible ?
|
||||
bool PlateauDames::deplacementValide(const int x, const int y) const {
|
||||
if (!selection) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Position posInitiale = selection->getPos();
|
||||
|
||||
|
||||
}
|
||||
|
|
Reference in a new issue