segfault oue
This commit is contained in:
parent
7b58d615fd
commit
49fe932bae
1 changed files with 20 additions and 19 deletions
|
@ -58,32 +58,33 @@ void Dames::event(const int x, const int y) {
|
|||
|
||||
switch (etape) {
|
||||
case EnJeu: {
|
||||
const Piece *p = getPiece(posCurseur.first, posCurseur.second);
|
||||
if (getPiece(posCurseur.first, posCurseur.second)->getCategory() ==
|
||||
getPiece(joueurCourant->getPieces().at(0))->getCategory()) {
|
||||
const PieceDames *p = getPiece(posCurseur.first, posCurseur.second);
|
||||
if (p && p->getCategory() ==
|
||||
getPiece(joueurCourant->getPieces().at(0))->getCategory()) {
|
||||
// On sélectionne la pièce
|
||||
plateau.modifierSelection(posCurseur.first, posCurseur.second);
|
||||
}
|
||||
// Si une prise est possible, le joueur est obligé d'en faire une
|
||||
if (prisePossible(*joueurCourant)) {
|
||||
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
|
||||
} else {
|
||||
// Vérifier que le déplacement est correct
|
||||
if (plateau.deplacementValide(posCurseur.first, posCurseur.second)) {
|
||||
// Test si le déplacement est possible pour un pions : en diagonal en
|
||||
// direction de l'autre joueur
|
||||
if ((joueurCourant == &joueur1 &&
|
||||
posCurseur.first == p->getPos().first + 1) ||
|
||||
(joueurCourant == &joueur2 &&
|
||||
posCurseur.first == p->getPos().first - 1) &&
|
||||
(posCurseur.second == p->getPos().second + 1 ||
|
||||
posCurseur.second == p->getPos().second - 1)) {
|
||||
plateau.moveSelection(posCurseur.first, posCurseur.second);
|
||||
// Donne la main au joueur suivant
|
||||
changerJoueurCourant();
|
||||
Ecran::printMessage(msgTonTour());
|
||||
}
|
||||
}
|
||||
// Vérifier que le déplacement est correct
|
||||
if (plateau.deplacementValide(posCurseur.first, posCurseur.second)) {
|
||||
// Test si le déplacement est possible pour un pions : en diagonal en
|
||||
// direction de l'autre joueur
|
||||
// Crash ici parce que p = nullptr donc p->getPos() provoque une segfault
|
||||
if ((joueurCourant == &joueur1 &&
|
||||
posCurseur.first == p->getPos().first + 1) ||
|
||||
(joueurCourant == &joueur2 &&
|
||||
posCurseur.first == p->getPos().first - 1) &&
|
||||
(posCurseur.second == p->getPos().second + 1 ||
|
||||
posCurseur.second == p->getPos().second - 1)) {
|
||||
plateau.moveSelection(posCurseur.first, posCurseur.second);
|
||||
// Donne la main au joueur suivant
|
||||
changerJoueurCourant();
|
||||
Ecran::printMessage(msgTonTour());
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
Reference in a new issue