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 "../Jeu.hpp"
|
||||||
#include "PlateauDames.hpp"
|
#include "PlateauDames.hpp"
|
||||||
|
|
||||||
|
struct PieceDames;
|
||||||
|
|
||||||
class Dames : private Jeu {
|
class Dames : private Jeu {
|
||||||
friend std::ostream &operator<<(std::ostream &, const Dames &);
|
friend std::ostream &operator<<(std::ostream &, const Dames &);
|
||||||
|
|
||||||
|
@ -10,7 +12,27 @@ class Dames : private Jeu {
|
||||||
PlateauDames plateau;
|
PlateauDames plateau;
|
||||||
|
|
||||||
// Joueurs
|
// 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:
|
public:
|
||||||
Dames(Joueur &joueur1, Joueur &joueur2); // constructor
|
Dames(Joueur &joueur1, Joueur &joueur2); // constructor
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
class PlateauDames : public Plateau {
|
class PlateauDames : public Plateau {
|
||||||
Joueur *j1, *j2;
|
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();
|
||||||
|
|
|
@ -24,11 +24,47 @@ std::ostream &operator<<(std::ostream &out, const Dames &data) {
|
||||||
return out;
|
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() {
|
void Dames::play() {
|
||||||
plateau.afficherPlateau(std::cout);
|
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 {
|
const Position Dames::getPosition() const {
|
||||||
if (posCurseur.second > plateau.getTaille() - 1) {
|
if (posCurseur.second > plateau.getTaille() - 1) {
|
||||||
|
@ -39,11 +75,20 @@ const Position Dames::getPosition() const {
|
||||||
return posCurseur;
|
return posCurseur;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Dames::changerJoueurCourant() {
|
||||||
|
if (joueurCourant->getNum() == joueur1.getNum()) {
|
||||||
|
joueurCourant = &joueur2;
|
||||||
|
} else {
|
||||||
|
joueurCourant = &joueur1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: A continuer
|
// TODO: A continuer
|
||||||
// Pas très sûre de comment procéder pour cette fonction : il faudrait vérifier
|
// 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 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)
|
// les pièces aient des attributs pour leur position (comme proposé dans Piece)
|
||||||
// ?
|
// ?
|
||||||
|
// UPDATE : utiliser deplacementValide ?
|
||||||
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 x = 1;
|
||||||
|
|
|
@ -23,3 +23,15 @@ PlateauDames::PlateauDames(Joueur &joueur1, Joueur &joueur2)
|
||||||
}
|
}
|
||||||
|
|
||||||
PlateauDames::~PlateauDames() {}
|
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