segfault oue

This commit is contained in:
Mylloon 2024-01-11 23:19:10 +01:00
parent 7b58d615fd
commit 49fe932bae
Signed by: Anri
GPG key ID: A82D63DFF8D1317F

View file

@ -58,32 +58,33 @@ void Dames::event(const int x, const int y) {
switch (etape) { switch (etape) {
case EnJeu: { case EnJeu: {
const Piece *p = getPiece(posCurseur.first, posCurseur.second); const PieceDames *p = getPiece(posCurseur.first, posCurseur.second);
if (getPiece(posCurseur.first, posCurseur.second)->getCategory() == if (p && p->getCategory() ==
getPiece(joueurCourant->getPieces().at(0))->getCategory()) { getPiece(joueurCourant->getPieces().at(0))->getCategory()) {
// On sélectionne la pièce // On sélectionne la pièce
plateau.modifierSelection(posCurseur.first, posCurseur.second); plateau.modifierSelection(posCurseur.first, posCurseur.second);
} }
// Si une prise est possible, le joueur est obligé d'en faire une // Si une prise est possible, le joueur est obligé d'en faire une
if (prisePossible(*joueurCourant)) { if (prisePossible(*joueurCourant)) {
Ecran::printMessage("Vous devez forcément faire une prise."); Ecran::printMessage("Vous devez forcément faire une prise.");
break;
// Quand il ne peux pas faire de prise, il déplace une de ses pieces // Quand il ne peux pas faire de prise, il déplace une de ses pieces
} else { }
// Vérifier que le déplacement est correct // Vérifier que le déplacement est correct
if (plateau.deplacementValide(posCurseur.first, posCurseur.second)) { if (plateau.deplacementValide(posCurseur.first, posCurseur.second)) {
// Test si le déplacement est possible pour un pions : en diagonal en // Test si le déplacement est possible pour un pions : en diagonal en
// direction de l'autre joueur // direction de l'autre joueur
if ((joueurCourant == &joueur1 && // Crash ici parce que p = nullptr donc p->getPos() provoque une segfault
posCurseur.first == p->getPos().first + 1) || if ((joueurCourant == &joueur1 &&
(joueurCourant == &joueur2 && posCurseur.first == p->getPos().first + 1) ||
posCurseur.first == p->getPos().first - 1) && (joueurCourant == &joueur2 &&
(posCurseur.second == p->getPos().second + 1 || posCurseur.first == p->getPos().first - 1) &&
posCurseur.second == p->getPos().second - 1)) { (posCurseur.second == p->getPos().second + 1 ||
plateau.moveSelection(posCurseur.first, posCurseur.second); posCurseur.second == p->getPos().second - 1)) {
// Donne la main au joueur suivant plateau.moveSelection(posCurseur.first, posCurseur.second);
changerJoueurCourant(); // Donne la main au joueur suivant
Ecran::printMessage(msgTonTour()); changerJoueurCourant();
} Ecran::printMessage(msgTonTour());
} }
} }
break; break;