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,8 +58,8 @@ 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);
@ -67,12 +67,14 @@ void Dames::event(const int x, const int y) {
// 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
// Crash ici parce que p = nullptr donc p->getPos() provoque une segfault
if ((joueurCourant == &joueur1 && if ((joueurCourant == &joueur1 &&
posCurseur.first == p->getPos().first + 1) || posCurseur.first == p->getPos().first + 1) ||
(joueurCourant == &joueur2 && (joueurCourant == &joueur2 &&
@ -85,7 +87,6 @@ void Dames::event(const int x, const int y) {
Ecran::printMessage(msgTonTour()); Ecran::printMessage(msgTonTour());
} }
} }
}
break; break;
} }
case Fini: { case Fini: {