1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| /*
** Fichiers et bibliothèques inclus
*/
#include "Glisseur.hxx"
#include "Echiquier.hxx"
//Constructeur
Glisseur :: Glisseur(int colonne_depart, int ligne_depart, int proprietaire) : Piece(colonne_depart,ligne_depart)
{
this->proprietaire = proprietaire;
}
Glisseur::Glisseur() : Piece()
{
}
//Destructeur
Glisseur :: ~Glisseur()// ce destructeur est virtuel car la classe Glisseur est abstraite et que
{ // d'autres classes heritent de Glisseur.
}
bool Glisseur::glisser(int distance, int diff_colonne, int diff_ligne, int colonne_depart,int ligne_depart,int colonne_arrivee,int ligne_arrivee, Echiquier *echiquier)
{
bool deplacement_valide = true;
//on verifie que le mouvement en lui même est bien valide
for (int i = 1; i < distance; i++)//pour chaque ligne qui sépart la piece de la destination sauf la case de destination
{
if (echiquier->get_case(colonne_depart + (diff_colonne*i),ligne_depart + (diff_ligne*i)) != NULL) //si il y a une piece sur le chemin, le deplacement n'est pas valide
{
deplacement_valide = false;
}
}
if (echiquier->get_case(colonne_arrivee,ligne_arrivee) != NULL) //si la case d'arrivée n'est pas nulle, on test qu'elle ne nous appartient pas, sinon le deplacement n'est pas valide
{
if (deplacement_valide
&& (echiquier->get_case(colonne_arrivee,ligne_arrivee)->get_proprietaire()) == (echiquier->get_case(colonne_depart,ligne_depart)->get_proprietaire()))
{
deplacement_valide = false; //impossible de prendre une de ces propres pieces
}
}
return deplacement_valide;
} |
Partager