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) {
|
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;
|
||||||
|
|
Reference in a new issue