diff --git a/src/Butin/Butin.cpp b/src/Butin/Butin.cpp index 1a304dc..6fec466 100644 --- a/src/Butin/Butin.cpp +++ b/src/Butin/Butin.cpp @@ -72,12 +72,13 @@ void Butin::event(const int x, const int y) { switch (etape) { // Clic du J1 case (Etape::ChoixJ1): { + PieceButin *p = getPiece(posCurseur.first, posCurseur.second); // Vérifier que la pièce est jaune - if (getPiece(posCurseur.first, posCurseur.second)->points == - PieceButin::Jaune) { + if (p->points == PieceButin::Jaune) { // Retire la pièce plateau.modifierPlateau(posCurseur.first, posCurseur.second, nullptr); + delete p; // On passe à l'étape suivante etape = ChoixJ2; @@ -96,6 +97,7 @@ void Butin::event(const int x, const int y) { if (p && p->points == PieceButin::Jaune) { // Retire la pièce plateau.modifierPlateau(posCurseur.first, posCurseur.second, nullptr); + delete p; // On passe à l'étape suivante etape = EnJeu; diff --git a/src/Plateau.cpp b/src/Plateau.cpp index 2b9da16..bce07d5 100644 --- a/src/Plateau.cpp +++ b/src/Plateau.cpp @@ -95,10 +95,15 @@ void Plateau::afficherPlateau(std::ostream &out, const bool d) const { void Plateau::modifierPlateau(const int x, const int y, Piece *piece) const { if (x >= 0 && x < taille && y >= 0 && y < taille) { - if (piece == nullptr) { - delete plateau[x][y]; + if (plateau[x][y]) { + plateau[x][y]->moveTo(-1, -1); } + plateau[x][y] = piece; + if (piece) { + piece->moveTo(x, y); + } + } else { throw std::invalid_argument("Coordonnées invalides"); }