continuation Dames encore
This commit is contained in:
parent
13f7df259e
commit
fcb90e5214
1 changed files with 49 additions and 4 deletions
|
@ -72,10 +72,15 @@ void Dames::event(const int x, const int y) {
|
||||||
}
|
}
|
||||||
// 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 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);
|
plateau.moveSelection(posCurseur.first, posCurseur.second);
|
||||||
// Donne la main au joueur suivant
|
// Donne la main au joueur suivant
|
||||||
changerJoueurCourant();
|
changerJoueurCourant();
|
||||||
Ecran::printMessage(msgTonTour());
|
Ecran::printMessage(msgTonTour());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case Fini: {
|
case Fini: {
|
||||||
|
@ -111,17 +116,57 @@ bool Dames::prisePossible(Joueur &joueur) const {
|
||||||
const std::vector<Piece *> &pieces = joueur.getPieces();
|
const std::vector<Piece *> &pieces = joueur.getPieces();
|
||||||
int x = 1;
|
int x = 1;
|
||||||
int y = 1;
|
int y = 1;
|
||||||
|
const PieceDames *pieceAPrendre;
|
||||||
for (uint i = 0; i < pieces.size(); i++) {
|
for (uint i = 0; i < pieces.size(); i++) {
|
||||||
const PieceDames *p = dynamic_cast<const PieceDames *>(pieces[i]);
|
const PieceDames *p = dynamic_cast<const PieceDames *>(pieces[i]);
|
||||||
const Position pos = p->getPos();
|
const Position pos = p->getPos();
|
||||||
if (!p) {
|
if (!p) {
|
||||||
throw std::runtime_error("Cette pièce est.. étrange.");
|
throw std::runtime_error("Cette pièce est.. étrange.");
|
||||||
}
|
}
|
||||||
if (!p->getDame()) {
|
// On regarde si une prise est possible pour chaque coté de la piece
|
||||||
// A continuer
|
if(pos.first>1){
|
||||||
if (plateau.getPiece(pos.first - 1, pos.second - 1) != nullptr) {
|
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first - 1, pos.second));
|
||||||
}
|
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory())
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
if(pos.first>1 && pos.second>1){
|
||||||
|
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first - 1, pos.second - 1));
|
||||||
|
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(pos.first>1 && pos.second<8){
|
||||||
|
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first - 1, pos.second + 1));
|
||||||
|
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(pos.second>1){
|
||||||
|
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first, pos.second -1));
|
||||||
|
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(pos.second<8){
|
||||||
|
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first, pos.second + 1));
|
||||||
|
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(pos.first<8 && pos.second>1){
|
||||||
|
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first + 1, pos.second - 1));
|
||||||
|
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(pos.first<8 && pos.second<8){
|
||||||
|
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first + 1, pos.second + 1));
|
||||||
|
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(pos.first<8){
|
||||||
|
pieceAPrendre = dynamic_cast<const PieceDames *>(plateau.getPiece(pos.first + 1, pos.second));
|
||||||
|
if (pieceAPrendre != nullptr && pieceAPrendre->getCategory()!=p->getCategory())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Cas où la piece est une dame...
|
||||||
|
if (!p->getDame()) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue