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) {
|
switch (etape) {
|
||||||
// Clic du J1
|
// Clic du J1
|
||||||
case (Etape::ChoixJ1): {
|
case (Etape::ChoixJ1): {
|
||||||
|
PieceButin *p = getPiece(posCurseur.first, posCurseur.second);
|
||||||
// Vérifier que la pièce est jaune
|
// Vérifier que la pièce est jaune
|
||||||
if (getPiece(posCurseur.first, posCurseur.second)->points ==
|
if (p->points == PieceButin::Jaune) {
|
||||||
PieceButin::Jaune) {
|
|
||||||
|
|
||||||
// Retire la pièce
|
// Retire la pièce
|
||||||
plateau.modifierPlateau(posCurseur.first, posCurseur.second, nullptr);
|
plateau.modifierPlateau(posCurseur.first, posCurseur.second, nullptr);
|
||||||
|
delete p;
|
||||||
|
|
||||||
// On passe à l'étape suivante
|
// On passe à l'étape suivante
|
||||||
etape = ChoixJ2;
|
etape = ChoixJ2;
|
||||||
|
@ -96,6 +97,7 @@ void Butin::event(const int x, const int y) {
|
||||||
if (p && p->points == PieceButin::Jaune) {
|
if (p && p->points == PieceButin::Jaune) {
|
||||||
// Retire la pièce
|
// Retire la pièce
|
||||||
plateau.modifierPlateau(posCurseur.first, posCurseur.second, nullptr);
|
plateau.modifierPlateau(posCurseur.first, posCurseur.second, nullptr);
|
||||||
|
delete p;
|
||||||
|
|
||||||
// On passe à l'étape suivante
|
// On passe à l'étape suivante
|
||||||
etape = EnJeu;
|
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 {
|
void Plateau::modifierPlateau(const int x, const int y, Piece *piece) const {
|
||||||
if (x >= 0 && x < taille && y >= 0 && y < taille) {
|
if (x >= 0 && x < taille && y >= 0 && y < taille) {
|
||||||
if (piece == nullptr) {
|
if (plateau[x][y]) {
|
||||||
delete plateau[x][y];
|
plateau[x][y]->moveTo(-1, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
plateau[x][y] = piece;
|
plateau[x][y] = piece;
|
||||||
|
if (piece) {
|
||||||
|
piece->moveTo(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
throw std::invalid_argument("Coordonnées invalides");
|
throw std::invalid_argument("Coordonnées invalides");
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue