ne delete plus une piece quand on la retire + change correctement les positions de la pièce
This commit is contained in:
parent
35e5c5908e
commit
f3970cf3fb
2 changed files with 11 additions and 4 deletions
|
@ -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;
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
Reference in a new issue