From f3970cf3fb75d58ba76425636bf621ef9fb366d5 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Sun, 31 Dec 2023 03:38:37 +0100 Subject: [PATCH] =?UTF-8?q?ne=20delete=20plus=20une=20piece=20quand=20on?= =?UTF-8?q?=20la=20retire=20+=20change=20correctement=20les=20positions=20?= =?UTF-8?q?de=20la=20pi=C3=A8ce?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Butin/Butin.cpp | 6 ++++-- src/Plateau.cpp | 9 +++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) 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"); }