(ré-)ajout de la fonction de déplacement et fix d'un ptit bug lors de la sélectionnn
This commit is contained in:
parent
fea574195e
commit
db5d3c2762
4 changed files with 43 additions and 6 deletions
|
@ -21,17 +21,17 @@ protected:
|
|||
// Couleur de la pièce ou type d'animal pour Safari par ex
|
||||
std::string categorie;
|
||||
|
||||
// Indices où sont placés les pièces sur le plateau (quand elles le sont)
|
||||
// (est-ce que c'est redondant ?)
|
||||
// ---> Je crois que vu qu'on a un plateau qui est une liste 2D on en a pas
|
||||
// besoin
|
||||
// Indices où sont placés les pièces sur le plateau
|
||||
int x;
|
||||
int y;
|
||||
|
||||
public:
|
||||
Piece(const std::string categorie); // constructor
|
||||
Piece(const std::string categorie, const int x, const int y); // constructor
|
||||
virtual ~Piece(); // destructor
|
||||
|
||||
// Fonction de déplacement
|
||||
void moveTo(const int destX, const int destY);
|
||||
|
||||
// Renvoie la couleur de la pièce pour l'affichage
|
||||
virtual sf::Color getScreenColor() const = 0;
|
||||
};
|
||||
|
|
|
@ -31,6 +31,9 @@ public:
|
|||
// Si piece = nullptr alors on retire la pièce du plateau
|
||||
void modifierPlateau(const int x, const int y, Piece *piece) const;
|
||||
|
||||
// Fonction pour bouger une pièce
|
||||
void moveSelection(const int x, const int y);
|
||||
|
||||
// Renvoie une pièce à une position donnnée
|
||||
Piece *getPiece(const int x, const int y) const;
|
||||
|
||||
|
|
|
@ -11,6 +11,18 @@ std::ostream &operator<<(std::ostream &out, const Piece &data) {
|
|||
return out;
|
||||
}
|
||||
|
||||
void Piece::moveTo(const int destX, const int destY) {
|
||||
if (destX < 0 || destY < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Note: On vérifie pas si la pièce sort du plateau par rapport à la taille
|
||||
// du plateau (on a pas l'info ici?)
|
||||
|
||||
x = destX;
|
||||
y = destY;
|
||||
}
|
||||
|
||||
void Piece::changeSelection() {
|
||||
selected = !selected;
|
||||
}
|
||||
|
|
|
@ -132,5 +132,27 @@ void Plateau::modifierSelection(const int x, const int y) {
|
|||
// Si la sélection à changer alors changer l'état de la nouvelle pièce
|
||||
p->changeSelection();
|
||||
selection = p;
|
||||
} else {
|
||||
// Si c'était la même alors on ne sélectionne plus rien
|
||||
selection = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void Plateau::moveSelection(const int x, const int y) {
|
||||
if (selection == nullptr) {
|
||||
// Ne fais rien si on a rien a bouger
|
||||
return;
|
||||
}
|
||||
|
||||
// Retire la pièce de là où elle est pour le plateau
|
||||
plateau[selection->x][selection->y] = nullptr;
|
||||
|
||||
// Déplace la pièce sur le plateau
|
||||
modifierPlateau(x, y, selection);
|
||||
|
||||
// Met à jour les coordonnées de la pièce
|
||||
selection->moveTo(x, y);
|
||||
|
||||
// Déselectionne la pièce
|
||||
modifierSelection(x, y);
|
||||
}
|
||||
|
|
Reference in a new issue